Skip to main content
Glama

update_post

Destructive

Update a scheduled or draft post. You can change the caption, schedule time, accounts, or media.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "id": "<id>"
    },
    "name": "update_post"
  }
}

Input Schema

NameRequiredDescriptionDefault
idYesThe post ID to update
mediaNoNew array of media IDs
captionNoNew caption text
is_draftNoSet draft status
media_urlsNoNew array of public media URLs
scheduled_atNoNew scheduled datetime (ISO 8601)
social_accountsNoNew array of social account IDs
account_configurationsNo
platform_configurationsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / platform_configurations / properties / instagram / properties / is_ai_generated
      Added value: +{
      +  "description": "true adds Instagram's \"AI info\" label, disclosing the photo, carousel or reel was made or edited with AI. Set at publish time, cannot be changed afterwards. Ignored for stories.",
      +  "type": "boolean"
      +}
  2. Changed3 schema fields changed
    • changedInput schema / properties / platform_configurations / properties / threads / description
      Previous value: -"Threads overrides. Supports location, first_comment and thread (multi-post thread chains)."New value: +"Threads overrides. Supports location, first_comment, thread (multi-post thread chains), quote_post_id (native quote post) and reply_to_id (reply under an existing post)."
    • addedInput schema / properties / platform_configurations / properties / threads / properties / quote_post_id
      Added value: +{
      +  "description": "Makes this a native Threads quote post (the quoted post shows as a card). Use this instead of pasting a Threads post link in the caption, which only shows as a plain link. A numeric post id (platform_id from an earlier result) or a threads.com post URL; URLs only resolve for the account's own recent posts, so use the id for someone else's post. Works with text, image, carousel and video. Fails the post if the quoted post is deleted, private or can't be quoted.",
      +  "type": "string"
      +}
    • addedInput schema / properties / platform_configurations / properties / threads / properties / reply_to_id
      Added value: +{
      +  "description": "Publishes the post as a reply under an existing Threads post (e.g. adding to a launch thread after it went out). A numeric post id or a threads.com post URL of the account's own post or reply. Fails the post if the target can't be found or replied to.",
      +  "type": "string"
      +}
  3. Changed2 schema fields changed
    • changedInput schema / properties / platform_configurations / properties / twitter / description
      Previous value: -"Twitter/X overrides. Put links in first_comment or thread (they are stripped from the main tweet). thread posts a multi-tweet thread."New value: +"Twitter/X overrides. Put links in first_comment or thread (they are stripped from the main tweet unless the user has the Links in X posts add-on; the response warns when a link will be stripped). thread posts a multi-tweet thread."
    • changedInput schema / properties / platform_configurations / properties / twitter / properties / first_comment / description
      Previous value: -"Optional reply posted to the tweet immediately after it publishes (a 'first comment'). Links ARE allowed here, unlike the main tweet/caption where X strips URLs to avoid its ~13x surcharge — so put any link/CTA in first_comment. Trimmed to 280 chars (2200 for premium accounts). A failed reply won't fail the post."New value: +"Optional reply posted to the tweet immediately after it publishes (a 'first comment'). Links ARE allowed here, unlike the main tweet/caption where X strips URLs to avoid its ~13x surcharge (unless the user has the $10/month Links in X posts add-on) — so put any link/CTA in first_comment. Trimmed to 280 chars (2200 for premium accounts). A failed reply won't fail the post."
  4. Changed2 schema fields changed
    • changedInput schema / properties / platform_configurations / properties / youtube / description
      Previous value: -"YouTube overrides. title sets the video title; thumbnail sets a custom thumbnail (Shorts and long-form)."New value: +"YouTube overrides. title sets the video title; thumbnail sets a custom thumbnail (Shorts and long-form); publish_at uploads early as private and lets YouTube make it public at that time."
    • addedInput schema / properties / platform_configurations / properties / youtube / properties / publish_at
      Added value: +{
      +  "description": "ISO 8601 datetime when the video goes public on YouTube. The video uploads at the post time (now, or scheduled_at) as private, YouTube processes it, and YouTube makes it public at publish_at (native YouTube scheduling). Use it to upload early so the video is processed and ready before launch. Must be after the upload time. Members-first / early access is not in YouTube's API; the user sets that in YouTube Studio after the upload.",
      +  "type": "string"
      +}
  5. Changed2 schema fields changed
    • changedInput schema / properties / platform_configurations / properties / youtube / description
      Previous value: -"YouTube overrides. title sets the video title; thumbnail applies to long-form videos only."New value: +"YouTube overrides. title sets the video title; thumbnail sets a custom thumbnail (Shorts and long-form)."
    • changedInput schema / properties / platform_configurations / properties / youtube / properties / thumbnail / description
      Previous value: -"Media ID of an uploaded image to use as the video thumbnail. Upload the image first (upload_media), then pass its ID here. Regular/long-form videos only — YouTube ignores custom thumbnails on Shorts. The channel must be verified; image should be JPEG/PNG, 1280x720, under 2MB. A thumbnail that fails to apply won't fail the post."New value: +"Media ID of an uploaded image to use as the video thumbnail. Upload the image first (upload_media), then pass its ID here. Works on Shorts and long-form videos. The channel must be verified; image should be JPEG/PNG, 1280x720, under 2MB. A thumbnail that fails to apply won't fail the post."
  6. Changed3 schema fields changed
    • changedInput schema / properties / platform_configurations / properties / threads / properties / thread / description
      Previous value: -"Turns the post into a multi-post thread: each string is published as a reply to the one before it, in order, under the main post. Text only, up to 25 entries, each trimmed to 500 chars. Links are allowed in thread entries. If an entry fails the chain stops there; the main post still publishes."New value: +"Turns the post into a multi-post thread: each entry is published as a reply to the one before it, in order, under the main post. An entry is a string, or { text, media } to attach media IDs (up to 20 images or videos) to that post. Up to 25 entries, each trimmed to 500 chars. Links are allowed in thread entries. If an entry fails the chain stops there; the main post still publishes."
    • addedInput schema / properties / platform_configurations / properties / threads / properties / thread / items / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "media": {
      +        "description": "Media IDs for this post: up to 20 images or videos (2+ post as a carousel).",
      +        "items": {
      +          "type": "string"
      +        },
      +        "maxItems": 20,
      +        "type": "array"
      +      },
      +      "text": {
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  }
      +]
    • removedInput schema / properties / platform_configurations / properties / threads / properties / thread / items / type
      Removed value: -"string"
  7. Changed3 schema fields changed
    • changedInput schema / properties / platform_configurations / properties / twitter / properties / thread / description
      Previous value: -"Turns the post into a multi-post thread: each string is published as a reply to the one before it, in order, under the main post. Text only, up to 25 entries, each trimmed to 280 chars (25,000 for X Premium accounts). Links are allowed in thread entries. If an entry fails the chain stops there; the main post still publishes."New value: +"Turns the post into a multi-post thread: each entry is published as a reply to the one before it, in order, under the main post. An entry is a string, or { text, media } to attach media IDs (up to 4 images or 1 video) to that tweet. Up to 25 entries, each trimmed to 280 chars (25,000 for X Premium accounts). Links are allowed in thread entries. If an entry fails the chain stops there; the main post still publishes."
    • addedInput schema / properties / platform_configurations / properties / twitter / properties / thread / items / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "media": {
      +        "description": "Media IDs for this tweet: up to 4 images, or 1 video.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "maxItems": 4,
      +        "type": "array"
      +      },
      +      "text": {
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  }
      +]
    • removedInput schema / properties / platform_configurations / properties / twitter / properties / thread / items / type
      Removed value: -"string"
  8. Changed1 schema field changed
    • changedInput schema / properties / platform_configurations / properties / instagram / properties / audio_id / description
      Previous value: -"Reels only. Attach a track from Instagram's music library (or an original sound) to the reel: an audio_id from search_instagram_audio. ONLY works for Instagram accounts connected through Facebook login (supports_instagram_music: true in list_social_accounts); accounts connected with Instagram login are rejected with a clear error, because Meta only offers music on the Facebook-login API. Ignored for photos, carousels and stories. Reels with music cannot be previewed before they publish."New value: +"Reels only. Attach a track from Instagram's music library (or an original sound) to the reel: an audio_id from search_instagram_audio. ONLY works for Instagram accounts connected through Facebook login (supports_instagram_music: true in list_social_accounts); accounts connected with Instagram login are rejected with a clear error, because Meta only offers music on the Facebook-login API. Reels only (exactly one video): photos and carousels/slideshows are rejected, because Meta does not allow music on them through the API. For a slideshow with music, turn the slides into one video and post it as a reel. Ignored for stories. Reels with music cannot be previewed before they publish."
  9. Changed3 schema fields changed
    • addedInput schema / properties / platform_configurations / properties / instagram / properties / audio_id
      Added value: +{
      +  "description": "Reels only. Attach a track from Instagram's music library (or an original sound) to the reel: an audio_id from search_instagram_audio. ONLY works for Instagram accounts connected through Facebook login (supports_instagram_music: true in list_social_accounts); accounts connected with Instagram login are rejected with a clear error, because Meta only offers music on the Facebook-login API. Ignored for photos, carousels and stories. Reels with music cannot be previewed before they publish.",
      +  "type": "string"
      +}
    • addedInput schema / properties / platform_configurations / properties / instagram / properties / audio_volume
      Added value: +{
      +  "description": "Volume of the audio_id track, 0-100 (default 100). Only with audio_id.",
      +  "maximum": 100,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / platform_configurations / properties / instagram / properties / video_volume
      Added value: +{
      +  "description": "Volume of the video's own sound under the track, 0-100 (default 100). 0 = music only. Only with audio_id.",
      +  "maximum": 100,
      +  "minimum": 0,
      +  "type": "integer"
      +}
  10. Changed6 schema fields changed
    • changedInput schema / properties / platform_configurations / properties / facebook / description
      Previous value: -"Facebook overrides. Supports feed posts, Page Stories (placement), and first_comment."New value: +"Facebook overrides. Supports feed posts, Page Stories (placement), first_comment and a custom video thumbnail."
    • addedInput schema / properties / platform_configurations / properties / facebook / properties / thumbnail
      Added value: +{
      +  "description": "Media ID of an uploaded image to use as the video thumbnail. Upload the image first (upload_media), then pass its ID here. Single-video feed posts only (ignored for stories). JPEG or PNG. A thumbnail that fails to apply won't fail the post.",
      +  "type": "string"
      +}
    • changedInput schema / properties / platform_configurations / properties / threads / description
      Previous value: -"Threads overrides. Supports location and first_comment."New value: +"Threads overrides. Supports location, first_comment and thread (multi-post thread chains)."
    • addedInput schema / properties / platform_configurations / properties / threads / properties / thread
      Added value: +{
      +  "description": "Turns the post into a multi-post thread: each string is published as a reply to the one before it, in order, under the main post. Text only, up to 25 entries, each trimmed to 500 chars. Links are allowed in thread entries. If an entry fails the chain stops there; the main post still publishes.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 25,
      +  "type": "array"
      +}
    • changedInput schema / properties / platform_configurations / properties / twitter / description
      Previous value: -"Twitter/X overrides. Put links in first_comment (they are stripped from the main tweet)."New value: +"Twitter/X overrides. Put links in first_comment or thread (they are stripped from the main tweet). thread posts a multi-tweet thread."
    • addedInput schema / properties / platform_configurations / properties / twitter / properties / thread
      Added value: +{
      +  "description": "Turns the post into a multi-post thread: each string is published as a reply to the one before it, in order, under the main post. Text only, up to 25 entries, each trimmed to 280 chars (25,000 for X Premium accounts). Links are allowed in thread entries. If an entry fails the chain stops there; the main post still publishes.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 25,
      +  "type": "array"
      +}
  11. Changed1 schema field changed
    • addedInput schema / properties / platform_configurations / properties / instagram / properties / share_to_feed
      Added value: +{
      +  "description": "Reels only. false keeps the reel off the profile grid: it still publishes and shows in the Reels tab, just not in the main grid. Omit for Instagram's default (grid and Reels tab). Ignored for photos, carousels and stories.",
      +  "type": "boolean"
      +}
  12. Changed2 schema fields changed
    • changedInput schema / properties / platform_configurations / properties / linkedin / description
      Previous value: -"LinkedIn overrides. document_title only matters for PDF (document) posts."New value: +"LinkedIn overrides. Supports first_comment; document_title only matters for PDF (document) posts."
    • addedInput schema / properties / platform_configurations / properties / linkedin / properties / first_comment
      Added value: +{
      +  "description": "Optional comment posted on the LinkedIn post immediately after it publishes (a 'first comment'), as the same person or page. A good spot for a link. Trimmed to 1,250 characters. A failed comment won't fail the post.",
      +  "type": "string"
      +}
  13. Changed2 schema fields changed
    • changedInput schema / properties / platform_configurations / properties / linkedin / description
      Previous value: -"LinkedIn overrides. Supports first_comment; document_title only matters for PDF (document) posts."New value: +"LinkedIn overrides. document_title only matters for PDF (document) posts."
    • removedInput schema / properties / platform_configurations / properties / linkedin / properties / first_comment
      Removed value: -{
      -  "description": "Optional comment posted on the LinkedIn post immediately after it publishes (a 'first comment'), as the same person or page. A good spot for a link. Trimmed to 1,250 characters. A failed comment won't fail the post.",
      -  "type": "string"
      -}
  14. Changed2 schema fields changed
    • changedInput schema / properties / platform_configurations / properties / linkedin / description
      Previous value: -"LinkedIn overrides. document_title only matters for PDF (document) posts."New value: +"LinkedIn overrides. Supports first_comment; document_title only matters for PDF (document) posts."
    • addedInput schema / properties / platform_configurations / properties / linkedin / properties / first_comment
      Added value: +{
      +  "description": "Optional comment posted on the LinkedIn post immediately after it publishes (a 'first comment'), as the same person or page. A good spot for a link. Trimmed to 1,250 characters. A failed comment won't fail the post.",
      +  "type": "string"
      +}
  15. Changed1 schema field changed
    • addedInput schema / properties / platform_configurations / properties / youtube / properties / has_paid_product_placement
      Added value: +{
      +  "description": "Set true when the video includes paid product placement, a sponsorship or an endorsement. YouTube shows viewers an \"Includes paid promotion\" label. Maps to the YouTube Data API paidProductPlacementDetails.hasPaidProductPlacement field.",
      +  "type": "boolean"
      +}
  16. Changed10 schema fields changed
    • changedInput schema / properties / platform_configurations / properties / bluesky / properties / caption / description
      Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
    • changedInput schema / properties / platform_configurations / properties / facebook / properties / caption / description
      Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
    • changedInput schema / properties / platform_configurations / properties / google_business / properties / caption / description
      Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
    • changedInput schema / properties / platform_configurations / properties / instagram / properties / caption / description
      Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
    • changedInput schema / properties / platform_configurations / properties / linkedin / properties / caption / description
      Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
    • changedInput schema / properties / platform_configurations / properties / pinterest / properties / caption / description
      Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
    • changedInput schema / properties / platform_configurations / properties / threads / properties / caption / description
      Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
    • changedInput schema / properties / platform_configurations / properties / tiktok / properties / caption / description
      Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
    • changedInput schema / properties / platform_configurations / properties / twitter / properties / caption / description
      Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
    • changedInput schema / properties / platform_configurations / properties / youtube / properties / caption / description
      Previous value: -"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption."New value: +"Platform-specific caption. Overrides the top-level caption for this platform only. Omit to use the shared caption. Write one whenever the shared caption is longer than this platform allows (Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500 characters; X 280 unless has_x_premium is true on the account) so nothing gets cut."
  17. First observed

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true, so the agent knows this mutates live state, but the description adds no behavioral context about what is actually destroyed. It never says whether passing media or social_accounts replaces the existing arrays, whether omitted fields are preserved, or what happens if the post is no longer a draft — critical ambiguities for an update call carrying destructiveHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero filler, and the scope constraint (scheduled/draft) is front-loaded ahead of the mutable fields. It is efficient, though the extreme brevity leaves the heaviest parts of the schema unaddressed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a high-complexity tool: 9 top-level parameters, a deep platform_configurations object spanning ten networks, no output schema, and a destructive annotation. Two sentences covering four top-level fields do not prepare an agent for the per-platform override structure or for the replace-vs-merge semantics that determine a correct call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 78%, so the schema already does most of the work; the description only names caption, schedule time, accounts and media, leaving is_draft, media_urls, account_configurations and the entire platform_configurations override structure unmentioned. It adds a light orientation but no meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ("Update a ... post") and narrows scope to scheduled or draft posts, which distinguishes it from create_post, delete_post and get_post without naming them. It stops short of explicitly naming a sibling or stating that published posts are out of scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Update a scheduled or draft post" implies when to use it (mutable posts only) but never says what to do for an already-published post, nor points at any alternative such as get_post to inspect before editing. Usage is inferable rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.