Back to Tool Reference
MCP

social_post.publish

Publish persisted social posts to the per-channel publishers.

Effectoverwrites or deletesReachesoutside VaybelScopesocial_post:writePlanGrowthRate limit10/minIdempotent

For each channel, runs the format-aware guardrail (e.g. YouTube has no carousel surface) and the atomic pending/failed → publishing transition, then saves the requested payload for background publication. A TikTok or YouTube submission with a saved receipt resumes status checks without uploading again. A publishing response is not a completed post; follow action_required when present and use social_post.get to check the saved submission.

When action_required asks the user to check their account, the outcome of the earlier submission is unknown. Ask the user what they found, then call this tool again for that channel with confirm_published or confirm_unpublished. Never set either on your own judgement: publishing again a post that is live duplicates it.

Parameters

content_idstringRequired

UUID returned from content.generate.

channelsstring[]Required

Subset of ["tiktok", "instagram", "youtube", "x"]. Each channel must have a persisted social post (created via social_post.generate).

tiktok_settingsobject

Optional TikTok post settings (privacy_level, disable_comment, disable_duet, ...). Required fields when present: privacy_level.

confirm_publishedstring[]

Channels where the user checked their account and found the post live. Records it as published; nothing is uploaded.

confirm_unpublishedstring[]

Channels where the user checked their account and found the post absent. Publishes it again. Ignored for a post the channel already acknowledged.

idempotency_keystring

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

Returns

content_idstring
resultsobject[]

One entry per requested channel: channel, post_id, status, publish_url, external_id, action_required, error.

Request
json
{
  "name": "social_post.publish",
  "arguments": {
    "content_id": "672c2649-022b-5ae9-b10a-5b0b1cd57c81",
    "channels": [
      "tiktok",
      "instagram"
    ]
  }
}