MCP tool
update_post
Edit a post
Creates or changes something · and, like everything an agent creates, it waits for a human in the approval queue.
What it does
Change a post that has not gone out — its caption, its pictures, its time, its per-platform options. Use this for "make it shorter", "swap the photo", "move it to Friday": deleting and writing a new post loses its place in the queue and its approval link. Anything you leave out is kept as it was.
Works on any post in the project that has not gone out — the person's own posts as well as yours — while it is a draft, pending approval, scheduled or rejected. A post that came back REJECTED is fixed the same way: read its rejectionReason in list_posts first, change what that reason actually named, and send it again through this tool — rather than guessing at the objection, or writing a second post and leaving the turned-down one behind. Editing a post a human already approved (or rejected) puts it back in the queue and the reply carries a fresh approval_link, so print that one and stop offering the old. Say plainly which of the two happened: the reply's message is written for the rejected case, and a person whose "no" has just been reopened deserves to be told so rather than reading "edited".
The reply's timing fields work like create_post's: a null scheduled_at means the post has no time, and publishes says whether it waits on a person ("on_approval") or on nothing ("now"). Leaving scheduled_at out of your call changes nothing about the timing — and a slot that has already PASSED is dropped rather than carried forward, because a dead time is not a plan.
A post that has already been TRIED is not editable, and rewriting it would send a second copy to the accounts that worked: use retry_delivery on the delivery that failed.
Arguments
| Name | Type | Required | What it is |
|---|---|---|---|
| post_id | string | Yes | The post to change |
| caption | string | No | — |
| media_ids | array | No | Replaces the attachments; omit to keep them |
| scheduled_at | string | No | New time (Z or a UTC offset); null clears it (goes out once approved) |
| platform_configurations | record | No | Replaces the per-platform options; omit to keep them |
Calling it
Any MCP client calls this by name once the connector is added. The address is the same for every tool:
https://xpost.to/api/mcp
A client that has signed in sends the tool name and its arguments:
{
"name": "update_post",
"arguments": {
"post_id": "…"
}
}The other tools
Back to the MCP connector · What the MCP server is · Connect your assistant