Skip to main content
Glama

Edit a Post

postnitro_edit_post

Edit a post made through the API: its slides replaced as import takes them. It replaces ALL the slides, in place: the post's design keeps its designId and name, its template's look and size and its brand unless templateId or brandId gives new ones, and a video its style and audio unless videoSettings says otherwise, so scheduled posts using it show the edit. Read it first with postnitro_get_post and send back every slide you want kept. Only posts made through the API can be edited. Costs 1 credit per slide sent. Returns an embedPostId: postnitro_check_status, then postnitro_get_output. Or use postnitro_edit_post_and_wait.

Input Schema

NameRequiredDescriptionDefault
slideNoFor an IMAGE: its new slide object
slidesNoFor a CAROUSEL or VIDEO: all its new slides, as import takes them
brandIdNoA new brand for the design (postnitro_list_brands). Omit to keep the design's; saved defaults don't apply to an edit
templateIdNoA new template for the design (postnitro_list_templates): the slides take its look and size. Omit to keep the design's; saved defaults don't apply to an edit
embedPostIdYesThe post to edit: the embedPostId its generate or import tool returned, or one an earlier edit returned
requestorIdNoOptional custom tracking ID
responseTypeNo'DESIGN' (default), 'PDF' or 'PNG'; a video takes 'MP4' or 'DESIGN'
videoSettingsNoA video's motion, music and voiceover, all optional: without it the video is still animated. It runs as long as its motion and narration take, up to 2:00. When it's later scheduled as a reel, the API reuses its music.
generateImagesNoOptional AI image generation — include this object to enable it, omit it for no images. When included, `context` is required and you (the agent) must author it from the post. Best-effort: the post still COMPLETES if images fail or aren't permitted (free plan / exhausted AI-image quota); check the GENERATE_IMAGES step via postnitro_check_status. Requires a paid plan, consumes the org's AI-image quota (separate from post credits), and adds latency.
idempotencyKeyNoOptional key that makes this call safe to retry. Generate a new one (e.g. a UUID) for each new action. If the call times out, fails with a network or 5xx error, or you are unsure it went through, call again with the SAME key and the same arguments: PostNitro returns the first call's result instead of creating a second post, charging credits again or scheduling a duplicate. Only a successful call is remembered, so after an error you can fix the arguments and retry with the same key; reusing a successful call's key with different arguments is rejected (422).

Output Schema

NameRequiredDescriptionDefault
statusYes
successYes
designIdYesThe post's design, edited in place: its id unchanged, the one scheduling takes
nextStepYes
embedPostIdYesThe edit's job ID, for postnitro_check_status and postnitro_get_output

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / idempotencyKey
      Added value: +{
      +  "description": "Optional key that makes this call safe to retry. Generate a new one (e.g. a UUID) for each new action. If the call times out, fails with a network or 5xx error, or you are unsure it went through, call again with the SAME key and the same arguments: PostNitro returns the first call's result instead of creating a second post, charging credits again or scheduling a duplicate. Only a successful call is remembered, so after an error you can fix the arguments and retry with the same key; reusing a successful call's key with different arguments is rejected (422).",
      +  "pattern": "^[\\x21-\\x7E]{1,200}$",
      +  "type": "string"
      +}
  2. Added

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations, it discloses the full-replacement semantics (which is important given destructiveHint=false), that the edit propagates to scheduled posts, the 1-credit-per-slide cost, and the async result flow via postnitro_check_status then postnitro_get_output. This is rich behavioral context the structured fields do not carry.

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

Conciseness3/5

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

Purpose and routing are front-loaded, but the body is one dense run-on chain with cryptic clauses like 'its slides replaced as import takes them.' Every clause carries information, yet the compression and length make it harder to parse than necessary.

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 annotations, an output schema, and full schema descriptions present, the description fills the remaining gaps: replacement semantics, cost, API-post restriction, async flow, and the waiting sibling. Nothing an agent needs to invoke it correctly is missing.

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 coverage is 100%, so the schema already documents all ten parameters. The description adds only high-level keep-vs-replace logic for templateId/brandId and videoSettings, largely mirroring what the schema states verbatim, so it does not meaningfully exceed the schema baseline.

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?

States a specific verb and resource (edit a post made through the API) and immediately scopes it: it replaces ALL slides in place while preserving designId, name, template look/size, brand and video style. The final sentence names the sibling it is not (postnitro_edit_post_and_wait), so an agent can route correctly without opening the schema.

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?

Explicitly says to read first with postnitro_get_post and send back every slide to keep, restricts usage to API-created posts, and names the alternative postnitro_edit_post_and_wait. Both the precondition and the sibling alternative are stated, not inferred.

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.

Resources