Back to Tool Reference
MCP

content.generate

Dispatch a multi-format social-content generation pipeline.

EffectwritesReachesoutside VaybelScopecontent:writePlanGrowthRate limit5/minIdempotent

The same short row covers every output format — the difference is what the worker produces (AI video, slideshow MP4, multi-image post, or single still). Each format bills against a different credit action on success (social_video 40 / social_slideshow 12 / social_carousel 4 / social_single 1).

Parameters

listing_idstringRequired

UUID of a TikTok Shop, Etsy, or Shopify listing.

archetypestringDefault: "graphic_led"

Video archetype. Must be one of the values defined in video archetype (e.g. "graphic_led", "try_on", "lifestyle", "unboxing", ...). Used by the video / slideshow pipelines; carousel / single ignore it but still validate it.

scene_typestringDefault: "lifestyle"

One of "lifestyle" or "studio". Drives scene staging for video / slideshow; carousel / single ignore it.

formatstringDefault: "video"

One of "video" (default, AI shoppable video), "slideshow" (Ken Burns over stills + music), "carousel" (multi-image post), or "single" (one image).

image_urlsstring[]

Source image CDN URLs. Required (≥1) for carousel/single; single accepts at most one. Allowed (and used as slideshow inputs) for slideshow; allowed but unused for video.

target_sales_channelstring

Optional override for the primary CTA sales channel ("tiktok_shop" / "etsy" / "shopify" / "storefront"). Blank/None defers to runtime resolution at publish time.

idempotency_keystring

Send the same key when retrying this exact call. A completed request replays for 24 hours without running or billing again.

callback_urlstring

An https URL that receives a signed completion event when the work finishes, so you can skip polling. See Webhooks.

Returns

handlestring

The content id — pass to content.get and the social_post.* tools.

status"pending"
listing_idstring
formatstring

Content format the worker will produce.

messagestring

Describes the content.get(..., wait_sec=...) contract.

Request
json
{
  "name": "content.generate",
  "arguments": {
    "listing_id": "328a1311-6524-54d1-861c-a3a338195ec4"
  }
}