update_post
Change a draft or scheduled post; returns it as saved, with its links.
On a published post, text alone changes the live post on LinkedIn,
Facebook, Mastodon, Telegram, Discord, Google Business Profile, Pinterest
and Slack (needs the publish scope). People already see it: show the user
the new text and get their yes first. Other platforms cannot edit a live post.
account_id moves the post to another account (its platform follows).
The same idea on another account with its own copy is a new draft.
post_ids makes the same change on up to 50 posts in one call (e.g.
status: "draft" unschedules them all): only status, hashtags, goal,
campaign_id, pinterest_board_id, slack_channel and platform_options; each post answers
in posts, and one that fails does not stop the rest. updates changes
up to 50 posts each its own way (new text, a new time) in one call; to
schedule drafts each at its own time, schedule_post(schedules=...).
Args:
post_id: The post ID to update.
text: New post text.
account_id: A different social account id to publish to.
hashtags: Appended to the text as #tags, counted in its limit (YouTube: video tags, unless platform_options.tags). A list, or a string split on commas (on spaces if it has none).
goal: Updated goal.
status: "draft" or "scheduled". "draft" on a scheduled post unschedules it. "scheduled" sends it as schedule_post does (approval workspaces: pending_approval), so only once the user approved it; to propose a time, send scheduled_for alone.
scheduled_for: ISO 8601 datetime. On a draft it only proposes the time (it stays a draft); it moves a scheduled post, or schedules with status "scheduled", which needs the publish scope.
campaign_id: Grouping id shared by related drafts.
pinterest_board_id: Pinterest only, an id from boards in get_post_context.
slack_channel: Slack only, a channel id or #name from slackChannels in get_post_context.
platform_options: Settings to change, merged into the post's own (keys as in create_post); null resets one to the platform default. Pinterest also takes newBoardName, which creates that board and sets it. TikTok settings are set by the user at settingsUrl.
workspace_id: Workspace ID or name. Optional if user has only one workspace.
post_ids: Several posts to change the same way, instead of post_id.
repeat: Make a scheduled or published post again on a rhythm: {"every": 2, "unit": "week", "count"?: 5, "until"?: ISO}. "pause", "resume" or "stop" change an existing repeat or evergreen post. Paid plans; not TikTok. Each post made goes through every scheduling check; a refused one is skipped (lastSkip).
evergreen: true puts the post in its account's evergreen queue, re-sent into empty posting slots (posting.slots), least recently sent first; false takes it out.
evergreen_per_week: Evergreen posts per week on that account (default 3).
variants: Alternate texts rotated per repeat, so X and Threads' duplicate rule does not skip them.
updates: One entry per post instead of post_id/post_ids: {post_id, text?, scheduled_for?, account_id?, hashtags?, goal?, status?, campaign_id?, pinterest_board_id?, slack_channel?, platform_options?}, each checked as a one-post call; no repeat or evergreen.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "update_post"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| goal | No | ||
| text | No | ||
| repeat | No | ||
| status | No | ||
| context | No | The user's underlying goal for this call, in one sentence without personal details. Used for product analytics only. | |
| post_id | No | ||
| updates | No | ||
| hashtags | No | ||
| post_ids | No | ||
| variants | No | ||
| evergreen | No | ||
| llm_model | No | The model identifier of the calling assistant, or "unknown". Used for product analytics only. | |
| account_id | No | ||
| campaign_id | No | ||
| workspace_id | No | ||
| scheduled_for | No | ||
| slack_channel | No | ||
| conversation_id | No | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request. | |
| platform_options | No | ||
| evergreen_per_week | No | ||
| pinterest_board_id | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| _mcp_instructions | No | Server-issued metadata for this conversation. |