Skip to main content
Glama

Edit a queued post or draft

chirpie_update_post
Destructive

Edit a post that has not published yet, or finish a draft. Only a post still waiting to publish can be edited; one that is publishing, published, failed or deleted is refused with 409 post_not_editable. Leaving schedule_at out keeps the time a queued post already has, so editing a queued post never publishes it and never turns it into an immediate one, and costs nothing, since it spent its quota when it was created. Rescheduling a post that belongs to a thread moves every part of that thread, and the response lists them in rescheduled_post_ids. A draft is different: it is held to far less, so an edit that leaves it too long or with no text at all is saved and answers with a warnings array instead of an error. Promoting a draft is the one thing this call does publish: schedule_at queues it, publish: true sends it now, both run every rule a create runs and spend the quota the draft never spent, and the answer carries the new post plus promoted_from_draft_id. draft: true alongside schedule_at changes only the time the draft remembers.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesPost ID to edit
textNoReplacement text. The same per-platform character limits apply as when creating a post.
draftNoKeep this a draft, whatever else changes. Only meaningful on a post that is already a draft, where it is the difference between remembering a new time and queueing the post for it.
mediaNoReplacement media, following the same per-platform rules as creating a post. Pass an empty array to remove the media.
publishNoPublish this draft now. Only valid on a draft, and never together with schedule_at. The draft is checked in full and charged as a post, then sent.
timezoneNoThe IANA timezone a schedule_at with no offset is read in, such as 'America/New_York'. Daylight saving is worked out for the date named. Ignored when schedule_at already carries an offset. Leave it out to use the timezone saved on the account.
media_urlsNoReplacement public image or video URLs, for a post that needs no alt text. Pass an empty array to remove the media.
schedule_atNoNew ISO 8601 publish time, in the future. Either an absolute instant carrying a timezone, such as '2027-04-01T14:00:00Z', or a local time with no offset, such as '2027-04-01T09:30:00', which is read in the timezone parameter or the one saved on the account. Omit it to keep the time the post already has. On a draft this promotes it to scheduled, unless draft: true is sent too.
configurationNoNew publishing options, or an empty object to put the post back to a plain feed post. Leaving it out keeps the options the post already carries, and sending a block replaces them outright rather than merging into them. The same rules a create runs apply, so a placement the post's media or text does not suit is refused with 400 configuration_unsupported.
first_commentNoA new first comment, or an empty string to remove the one the post carries. This is also how a first comment is added to a post that never had one, as long as it has not published yet. On a thread it belongs to the thread, so it applies whichever part you addressed.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / configuration / properties / facebook / description
      Previous value: -"How a Facebook Page (coming soon) publishes this post."New value: +"How a Facebook Page publishes this post."
    • changedInput schema / properties / configuration / properties / instagram / description
      Previous value: -"How an Instagram account (coming soon) publishes this post. A story carries no caption (send empty text), no first comment and no collaborators. A reel takes one video, collaborators, user tags, a cover, share_to_feed and trial_reel."New value: +"How an Instagram account publishes this post. A story carries no caption (send empty text), no first comment and no collaborators. A reel takes one video, collaborators, user tags, a cover, share_to_feed and trial_reel."
  2. Changed2 schema fields changed
    • changedInput schema / properties / configuration / properties / facebook / description
      Previous value: -"How a Facebook Page publishes this post."New value: +"How a Facebook Page (coming soon) publishes this post."
    • changedInput schema / properties / configuration / properties / instagram / description
      Previous value: -"How an Instagram account publishes this post. A story carries no caption (send empty text), no first comment and no collaborators. A reel takes one video, collaborators, user tags, a cover, share_to_feed and trial_reel."New value: +"How an Instagram account (coming soon) publishes this post. A story carries no caption (send empty text), no first comment and no collaborators. A reel takes one video, collaborators, user tags, a cover, share_to_feed and trial_reel."
  3. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only flag the mutation profile (destructiveHint=true, idempotentHint=false, openWorldHint=true). The description goes well beyond them by disclosing the 409 error code, the quota semantics ('costs nothing, since it spent its quota when it was created'), thread-wide rescheduling via rescheduled_post_ids, draft warnings behavior, and the create-equivalent validation on promotion.

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?

The opening sentence is correctly front-loaded with the core action and scope. The remainder is information-dense with little waste, but it is delivered as one long unbroken paragraph, which hurts scannability for a tool with this many conditional behaviors.

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

Completeness5/5

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

With no output schema, the description correctly takes on return-value disclosure: it names rescheduled_post_ids, the warnings array, and promoted_from_draft_id. Combined with the error code and quota/thread behavior, an agent has everything needed to call it correctly.

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

Parameters4/5

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

Schema coverage is 100% and each parameter is richly documented, so the baseline is 3. The description still adds cross-parameter semantics the schema states only piecemeal: omitting schedule_at preserves the existing time and never publishes, publish and schedule_at are mutually exclusive, and draft:true alongside schedule_at changes only the remembered time.

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

Purpose5/5

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

The description opens with a specific verb and resource plus a hard scope constraint: 'Edit a post that has not published yet, or finish a draft.' It clearly distinguishes the two modes (editing a queued post vs. finishing/promoting a draft) and reads differently from siblings like chirpie_post, chirpie_delete_post, or chirpie_get_post.

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

Usage Guidelines5/5

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

It gives explicit when-to-use and when-not-to-use conditions: a post can only be edited while still waiting to publish, and 'publishing, published, failed or deleted is refused with 409 post_not_editable.' It further spells out the mode-selecting conditions for schedule_at, draft:true, and publish:true, so the agent knows which parameters apply to which state.

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.