Skip to main content
Complete reference for all 25 tools exposed by Postzee’s MCP server. These tools are available to any MCP-compatible AI agent (Claude Code, OpenClaw, Hermes Agent, or direct MCP clients).
All tools accept the API key embedded in your MCP URL. They are scoped to a single organization. Costs for AI generation are always returned in credits, never in USD. ($1 USD = 1,000 credits.)

Quick reference


Context & Discovery

POSTZEE_GET_CONTEXT

Single-shot context aggregation. Recommended first call of every session. Returns plan, credits, storage, channels, features, and skill version in one round-trip. Parameters: None Returns:
features.* flags reflect what the MCP can drive right now — agents should only suggest features where the corresponding flag is true.

POSTZEE_LIST_PLANS

List the 5 subscription tiers with pricing and limits. Parameters: None Returns:

POSTZEE_LIST_CREDIT_PACKAGES

List one-time credit packages (eternal — never expire). Parameters: None Returns:

Models & Specs

POSTZEE_LIST_MODELS_DETAILED

Capability matrix for all available image and video models — durations, resolutions, audio capabilities, accepted custom params, and a relative cost tier. Parameters: Returns (per model):
costTier is one of very-low, low, mid, high, premium — the absolute credit cost is intentionally not exposed; use POSTZEE_ESTIMATE_GENERATION_COST instead. The synthetic heygen-avatar-video entry has costTier: "external" and a billingNote indicating that HeyGen bills on the user’s HeyGen account, not Postzee credits.

POSTZEE_LIST_PLATFORM_SPECS

Per-platform specs (aspect ratios, max slides for carousels, caption character limits, hashtag recommendations). Parameters: Covered platforms: instagram, facebook, linkedin, x, tiktok, youtube, pinterest, threads, bluesky, reddit.

POSTZEE_GET_BEST_POSTING_TIMES

Curated heuristic best-posting-time windows per channel, returned in the organization’s timezone. Parameters: Returns:
Channels with disabled or requiresReauth status are filtered out — recommendations are only returned for channels that can actually post.

Cost & Validation

POSTZEE_ESTIMATE_GENERATION_COST

Single source of truth for cost estimates. Always returns credits, never USD. Parameters: Returns:

POSTZEE_VALIDATE_GENERATION

Pre-flight validation — catches param errors, insufficient credits, storage issues, and plan blocks before burning credits. Parameters: Returns:
When valid: false, the errors[] array contains human-readable problems — e.g. duration not in the model’s allowed set, missing imageUrl for an i2v model, storage 100%, or a model that’s registered but not yet driveable through MCP.

Channels & Credits

POSTZEE_LIST_CHANNELS

List connected social media channels with explicit action flags. Parameters: None Returns:
actionRequired is one of "none" (ready to post), "reconnect" (token expired — user reconnects), or "reenable" (admin/billing — user re-enables, not the same as reconnect). statusMessage is a human-readable explanation when the channel requires action (e.g., "Channel token expired. Reconnect to keep posting."). It is null when actionRequired is "none".

POSTZEE_GET_CREDITS

Lightweight credit balance. Subset of POSTZEE_GET_CONTEXT.credits — prefer the latter for new code. Parameters: None Returns:
All values in credits ($1 USD = 1,000 credits).

Media Memory

The two tools below let an agent recall and reuse media assets — both AI-generated and user-uploaded — across turns and across sessions, instead of asking the user to paste URLs again.

POSTZEE_LIST_MEDIA

Recent media list, scoped to the organization. Returns the newest items first. Parameters: Returns (per item):
Returns (failure):
Soft-deleted media is automatically excluded. Media used as a user profile picture is also excluded.

POSTZEE_UPLOAD_MEDIA

Import a public URL into Postzee’s storage. Returns a stable mediaId and CDN URL for reuse across GENERATE_*, CREATE_POST, and LIST_MEDIA calls. Parameters: Returns (success):
Returns (failure):
Validation order (each step rejects before the next):
  1. URL is parseable and uses http/https
  2. Hostname is not localhost / private IP / cloud-metadata endpoint (SSRF defense)
  3. HEAD probe succeeds (or ranged GET fallback)
  4. Content-Type matches the configured allowlist (default: image/jpeg, image/png, image/webp, image/gif / video/mp4, video/quicktime, video/webm)
  5. Size within the per-kind cap (default: 25 MB image, 500 MB video)
  6. Organization storage quota has room
Default upload limits (configurable via SystemConfig): Limits and accepted formats can be tuned at runtime by updating the corresponding UPLOAD_* keys in SystemConfig. Both this MCP tool and the REST upload endpoints share the same source of truth — change once, applies everywhere within ~5 minutes (cache TTL).
For privacy and security, the tool never accepts authentication headers or auth tokens. URLs that require a Bot Token (e.g. Telegram getFile URLs) must be re-hosted by the chat client to a public URL first. For base64 / direct file uploads, use the existing REST /media/upload-server endpoint instead — the MCP tool handles URL imports only.
After a successful import, the media appears in POSTZEE_LIST_MEDIA with source: "uploaded".

Prompt Enhancement

POSTZEE_ENHANCE_PROMPT

Optimize a user prompt for better AI generation results. Free — no credit cost. Parameters: Returns:

Generation

POSTZEE_GENERATE_IMAGE

Generate an AI image from a text prompt. Async operation — returns a job id to poll with POSTZEE_CHECK_JOB. Parameters: Returns (success):
Returns (failure):

POSTZEE_GENERATE_VIDEO

Generate an AI video from a text prompt or reference image. Async operation. Parameters: Returns: same shape as POSTZEE_GENERATE_IMAGE.
Tier-specific model ids returned by POSTZEE_LIST_MODELS_DETAILED (e.g. ideogram-v3-turbo, gpt-image-2-high, sora-2-t2v-pro-1080p, recraft-v4-vector) can be passed directly to model. The MCP translates them to the right backend payload automatically — no separate tier or quality param required for tier selection.
A few model ids in the catalog are not yet driveable through MCP and will be rejected upfront (Sora 2 storyboard variants, some Veo 3.1 paths). The error response includes a suggestions[] array with up to three close alternatives — pick one of those.

POSTZEE_CHECK_JOB

Poll the status of an async image or video generation job. Parameters: Returns (processing):
Returns (success):
Returns (failed):
Returns (not found):

Images & Carousels

The image and carousel pipeline lets the agent compose editorial slides with pixel-perfect typography, consistent fonts, and no hallucinated words. The agent submits the composed slide(s); Postzee renders and returns the final media ready to publish. Four tools cover the lifecycle: a single-image render for standalone posts with editorial typography, a full carousel render for the initial batch, surgical replacement for fixes, and incremental append for iterative authoring.

POSTZEE_RENDER_IMAGE

Render ONE HTML document to a single PNG Media. The single-image counterpart to POSTZEE_RENDER_CAROUSEL, for standalone editorial posts (text-heavy single images, magazine-style covers, hero quote cards) where the value is in the layout + typography rather than in a swipeable sequence. Parameters: Same hard limits as POSTZEE_RENDER_CAROUSEL: 7 MB max payload, 256-2160 px per dimension, 45 s render timeout. Returns (success):
mediaGroupId is exposed for advanced callers but typical use is to pass mediaUrl directly to POSTZEE_CREATE_POST as a single-element mediaUrls array. Returns (failure):
Same idempotency cache as the carousel render: identical payloads inside a 1-hour window return the cached mediaId instead of re-rendering.
Render N HTML slides to PNG and atomically group them as one carousel MediaGroup. Synchronous — blocks until all slides finish. Parameters: Hard limits enforced server-side:
  • Max 15 slides per call
  • Min 256 / max 2160 px per dimension
  • 7 MB max HTML per slide
  • 50 MB max total payload per call (sum of all slides)
  • 45 s timeout per slide
Platform-aware publish guards. Rendering accepts up to 15 slides, but publishing is bound by each social network’s native limit (Instagram/Facebook ≤ 10, LinkedIn ≤ 20, TikTok ≤ 35, Threads/Reddit ≤ 20, Pinterest ≤ 5, X ≤ 4, Bluesky/Mastodon ≤ 4, Telegram/VK ≤ 10). When POSTZEE_CREATE_POST is called with mediaUrls exceeding the destination limit, Postzee rejects the post before calling the platform API, with an error message translated to the user’s language. Call POSTZEE_LIST_PLATFORM_SPECS for the live table. Partial-tolerant failure model. If a slide errors out or the dispatcher times out before all slides settle, the group is preserved with renderStatus: "partial" in aiMetadata (instead of being rolled back). Retry missing slides via POSTZEE_REPLACE_CAROUSEL_SLIDE or POSTZEE_APPEND_CAROUSEL_SLIDE. Slides that DID render are never destroyed — the user keeps their work even on partial failure. Order is structural, not temporal. The array index = orderInGroup, assigned BEFORE any worker runs. Slides may render in parallel but order is preserved deterministically. Security model. Slide compositions are rendered as static content — interactive scripts are inert. Network requests for referenced assets are restricted to public hosts (private/internal addresses are blocked). Returns:
mediaUrls is already in display order — pass it straight to POSTZEE_CREATE_POST. Failure response:
Surgically replace ONE slide in an existing carousel without touching the others. Use when the user says “change slide N” — saves time and credits, and preserves slide identity (other slides keep their URLs and IDs). Parameters: The replaced slide is soft-deleted after the new render uploads successfully; the new slide takes the same orderInGroup. If orderInGroup === 0, the carousel’s cover thumbnail is updated automatically. Returns:
Append ONE new slide to the end of an existing carousel. Use for iterative authoring — when the user wants to build the carousel slide-by-slide (“show me slide 1… ok now slide 2…”), this keeps every new slide landing in the SAME MediaGroup instead of producing N orphan single-slide groups in the gallery. Parameters: The new slide is appended at the next available orderInGroup (gap-safe — if intermediate slides were deleted, this picks max(orderInGroup) + 1, never reuses a free slot). Cover thumbnail is unchanged. Iterative authoring pattern. First slide should still go through POSTZEE_RENDER_CAROUSEL (it’s what creates the MediaGroup). Every subsequent slide goes through APPEND_CAROUSEL_SLIDE with the same mediaGroupId. Calling RENDER_CAROUSEL a second time for the same logical carousel produces a new group and breaks the iterative flow — don’t. Returns:
There is no insert-in-the-middle, reorder, or delete primitive in v1. APPEND_CAROUSEL_SLIDE only adds to the END. If the user asks to insert at a specific position, swap two slides, or remove one, fall back to POSTZEE_RENDER_CAROUSEL with a fresh script.

HeyGen

HeyGen tools require a HeyGen API key configured in your Postzee account. Connect at Settings → HeyGen integration. HeyGen video generation bills on your HeyGen account, not Postzee credits.

POSTZEE_LIST_HEYGEN_AVATARS

List available HeyGen avatars (filter by gender, age, style, etc. on the client side). Parameters: None Returns: Array of avatars from your HeyGen account.

POSTZEE_LIST_HEYGEN_VOICES

List available HeyGen voices. Parameters: None Returns: Array of voices from your HeyGen account, with language and gender info.

POSTZEE_GENERATE_HEYGEN_VIDEO

Create an avatar video with HeyGen. Async operation — poll with POSTZEE_CHECK_JOB. Parameters: Returns: same shape as POSTZEE_GENERATE_IMAGEjobId + status: "processing". The response also notes that HeyGen credits (not Postzee) will be consumed.

Posting

POSTZEE_CREATE_POST

Create, schedule, or publish a post to a social media channel. Parameters: Returns (success):
Publishing is asynchronous: POSTZEE_CREATE_POST returns a postId immediately, but the post is not live yet. Poll POSTZEE_GET_POST with that postId until state is "PUBLISHED" to obtain the platform post id (releaseId) and permalink (releaseURL). Returns (failure):
Possible error codes:

POSTZEE_GET_POST

Get a single post’s publication status — poll this after POSTZEE_CREATE_POST to obtain the platform post id and permalink once the post goes live. Parameters: Returns (success):
While the post is still publishing, state is "QUEUE" and releaseId/releaseURL are null — keep polling until state is "PUBLISHED" (or "ERROR" if publishing failed). Returns (failure):

Legacy tools (deprecated)

The following tools still work but are superseded:
  • POSTZEE_LIST_IMAGE_MODELS → use POSTZEE_LIST_MODELS_DETAILED({ type: "image" })
  • POSTZEE_LIST_VIDEO_MODELS → use POSTZEE_LIST_MODELS_DETAILED({ type: "video" })
They will be kept for at least 90 days for backwards compatibility, then removed in a future major version.

Async workflow pattern

Image, video, and HeyGen generation are async. The recommended workflow:
  1. Validate first — POSTZEE_VALIDATE_GENERATION to catch param errors and insufficient-credit cases without burning credits
  2. Estimate cost — POSTZEE_ESTIMATE_GENERATION_COST if you need the precise number to show the user
  3. Enhance the prompt — POSTZEE_ENHANCE_PROMPT (free)
  4. Generate — POSTZEE_GENERATE_IMAGE / POSTZEE_GENERATE_VIDEO / POSTZEE_GENERATE_HEYGEN_VIDEO → returns jobId
  5. Poll — POSTZEE_CHECK_JOB every few seconds. Typical latencies: 10-60s for images, 30-180s for videos, up to 5 min for HeyGen
  6. On success — use mediaUrl in POSTZEE_CREATE_POST

Standard error format

All write/generate tools return:
Branch on the error machine code for logic; use message to narrate to the user (translated to their language).

Rate limits

Claude Code

Connect Postzee to Claude Code.

OpenClaw

Connect Postzee to OpenClaw.

Hermes Agent

Connect Postzee to Hermes Agent.

MCP Overview

Back to MCP overview.