Skip to main content
Glama

Edit post

update_post
Idempotent

Edits an existing post's caption, picture or platforms; pass only what changes. scheduledAt places a draft on a day in the plan (draft_scheduled) without scheduling it; a scheduled post's time is changed with schedule_post, and unschedule_post takes it back to a draft. A post that already went out, or is going out right now, cannot be edited. Editing a scheduled post changes what will be published at its time, so ask the user first and pass confirm: true. A carousel's pictures are its slides and cannot be replaced here, and a carousel posts to Instagram only. A video post's picture is its cover; replace its video with videoUrl, or pass only coverAt to take the cover from another second: the cover is the picture Instagram shows on the profile grid, so a video that opens on an empty or animating frame needs the second that shows what the post is about. A local file goes through create_upload_link and is passed as uploadId. A video post cannot go to X. Adding TikTok to a video post without passing a caption rewrites its caption for TikTok (short, its own hashtags; COSTS one credit); pass caption to keep your own.

Input Schema

NameRequiredDescriptionDefault
postIdYes
captionNoFull new caption, including hashtags
confirmNoMust be true to edit a scheduled post — confirms the user approved the new content going out
coverAtNoVideo posts only: the second the cover is taken from (0 to under the video's length, hundredths); changes only the cover
imageUrlNoA hosted image URL, e.g. from generate_image
timeZoneNoThe user's IANA time zone, e.g. America/Edmonton. Needed with localTime; with scheduledAt it only sets the zone scheduledLocal is shown in. The answer's scheduledLocal says how the saved time reads there: check it against what the user asked for
uploadIdNoFrom create_upload_link, once the file was sent: a new picture, or a video post's new video
videoUrlNoA public video URL (MP4 or MOV) to replace a video post's video
localTimeNoThe time as the user's clock shows it, YYYY-MM-DDTHH:MM with no offset (e.g. 2026-11-09T12:00), with timeZone. Preferred over scheduledAt: Simplo works out the UTC offset in force on that date. Not together with scheduledAt
platformsNo
projectIdYesSimplo project id (from list_projects)
aiGeneratedNoWhether the post is AI-made (use it for AI-made video or voices): true shows it on TikTok with its "AI-generated content" label and marks a YouTube video as altered or synthetic content, false does neither. Omit to follow the defaults: on TikTok the brand's "Label TikTok posts as AI-generated" setting when on, else pictures are labelled and videos are not; on YouTube the brand's own synthetic content setting. get_post shows the TikTok result as tiktokAiLabel. null puts the post back on the default
scheduledAtNoDrafts only: ISO 8601 time with offset, the day the draft sits on in the plan. localTime with timeZone is safer
youtubeTitleNoVideo posts going to YouTube only: the video's title on YouTube, at most 100 characters, no < or >. Without it the title is the caption's first line with its hashtags dropped, and the whole caption is the description either way. null goes back to the caption's first line
tiktokSettingsNoTikTok accounts connected directly (not through Simplo's posting partner) need these on every post that goes to TikTok, or TikTok fails with "Choose who can see this TikTok post". Ask the user who can see it and whether comments are allowed; never choose for them. null clears them

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / localTime
      Added value: +{
      +  "description": "The time as the user's clock shows it, YYYY-MM-DDTHH:MM with no offset (e.g. 2026-11-09T12:00), with timeZone. Preferred over scheduledAt: Simplo works out the UTC offset in force on that date. Not together with scheduledAt",
      +  "type": "string"
      +}
    • changedInput schema / properties / scheduledAt / description
      Previous value: -"Drafts only: ISO 8601 time with offset, the day the draft sits on in the plan"New value: +"Drafts only: ISO 8601 time with offset, the day the draft sits on in the plan. localTime with timeZone is safer"
    • addedInput schema / properties / timeZone
      Added value: +{
      +  "description": "The user's IANA time zone, e.g. America/Edmonton. Needed with localTime; with scheduledAt it only sets the zone scheduledLocal is shown in. The answer's scheduledLocal says how the saved time reads there: check it against what the user asked for",
      +  "type": "string"
      +}
  2. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only cover the generic safety profile (readOnly=false, idempotent=true, destructive=false), and the description goes far past them: edits to a scheduled post change what will publish, carousel slides cannot be replaced here and carousels are Instagram-only, video posts cannot go to X, and adding TikTok to a video post without a caption silently rewrites the caption and costs one credit. These are non-obvious side effects and cost implications that annotations cannot express.

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 most important constraint (partial update) is front-loaded and every sentence carries a distinct rule, so there is little filler. The downside is that it is one dense paragraph of long compound sentences, where bullets for the carousel/video/TikTok branches would have been faster to parse for a 15-parameter tool.

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?

For a 15-parameter mutation tool with no output schema, the description covers the failure modes an agent would otherwise hit: editability limits, carousel and video media rules, the confirm gate, the TikTok caption rewrite, and the create_upload_link path for local files. Nothing material needed to call it correctly is missing.

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 already 87%, so the baseline is 3; the description still adds real meaning for the ambiguous params — confirm as the user-approval gate, coverAt as the Instagram profile-grid cover second, uploadId as the create_upload_link handoff, and the caption/TikTok interaction. It does not add much for timeZone, youtubeTitle, tiktokSettings or aiGenerated, which are left to their already-detailed schema text.

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 first clause gives a specific verb and resource ("Edits an existing post's caption, picture or platforms") plus the partial-update rule ("pass only what changes"). It then explicitly separates itself from create_post, schedule_post and unschedule_post, so an agent can pick the right tool without opening any 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?

Routing is explicit: scheduledAt is for drafts sitting on a plan day, a scheduled post's time goes through schedule_post, unschedule_post returns it to draft, and published/live posts cannot be edited at all. It also states a hard prerequisite — ask the user first and pass confirm: true for scheduled posts — which is exactly the kind of conditional an agent needs before calling.

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