Skip to main content
Glama

Edit post

posts_edit
DestructiveIdempotent

Change a draft, scheduled, missed or failed post. Fields you pass replace the old ones. Published posts can’t be edited. Moving --at into the past publishes on the next tick.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "id": "<id>"
    },
    "name": "posts_edit"
  }
}

Input Schema

NameRequiredDescriptionDefault
atNoWhen to publish: ISO time or plain words ("tomorrow 9am", "fri 17:30"). Empty string: no date, for a draft (with --draft)
idYes
toNoAccount id, handle or platform name (x, bluesky, mastodon, linkedin, reddit = its default account). Default: every default account
orgNoOrg id (default: your first org)
linkNoThe first post's link card, shown even when the text doesn't have the URL (X and Mastodon get the URL added at the end). Default: the first link in the text. Empty string: no card. On an edit, a card whose link --text changes or removes goes with it
nsfwNoReddit: mark the post Not Safe For Work
textNoReplace the thread text
draftNotrue parks it as a draft; false schedules it again
flairNoReddit: a flair id for the subreddit (see `accounts flairs`). Empty string clears a previously set one, on an edit
mediaNo
quoteNoURL of a post to quote (X, Bluesky)
titleNoPost title; Reddit needs one, and with --title-first X, Bluesky, Mastodon and LinkedIn open with it. Empty string: no title
threadNo
spoilerNoReddit: mark the post a spoiler
timezoneNoIANA time zone for --at words (default: this machine's; on Statuz Cloud, the org's)
subredditNoReddit: the subreddit, without r/ (default: the account’s own profile). Empty string clears a previously set one, on an edit
watermarkNoStatuz Cloud: stamp the org's logo on the images and videos (default: the org's setting)
titleFirstNoX, Bluesky, Mastodon and LinkedIn open with the title too: it, a blank line, then the text
ifUpdatedAtNoOnly if the post is unchanged since then (its updatedAt): a newer one is a conflict, never written over

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / title / description
      Previous value: -"Post title; Reddit needs one. Without it a post skips a default Reddit account, and fails when --to names Reddit"New value: +"Post title; Reddit needs one, and with --title-first X, Bluesky, Mastodon and LinkedIn open with it. Empty string: no title"
    • removedInput schema / properties / title / minLength
      Removed value: -1
    • addedInput schema / properties / titleFirst
      Added value: +{
      +  "description": "X, Bluesky, Mastodon and LinkedIn open with the title too: it, a blank line, then the text",
      +  "type": "boolean"
      +}
  2. Changed3 schema fields changed
    • changedInput schema / properties / at / description
      Previous value: -"When to publish: ISO time or plain words (\"tomorrow 9am\", \"in 2 hours\", \"fri 17:30\"). Without it the post goes out now"New value: +"When to publish: ISO time or plain words (\"tomorrow 9am\", \"fri 17:30\"). Empty string: no date, for a draft (with --draft)"
    • removedInput schema / properties / at / minLength
      Removed value: -1
    • addedInput schema / properties / ifUpdatedAt
      Added value: +{
      +  "description": "Only if the post is unchanged since then (its updatedAt): a newer one is a conflict, never written over",
      +  "format": "date-time",
      +  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
      +  "type": "string"
      +}
  3. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already flag destructive=true and idempotent=true; the description adds real substance on top: replace semantics for passed fields, the published-post hard block, and the side effect that a past --at republishes on the next tick. It still leaves ambiguous whether omitted fields are preserved or cleared, which matters for a destructive edit.

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?

Three dense sentences, front-loaded with the editable-state constraint before the mechanical rules. Minor friction from CLI-flag phrasing ("--at", "--draft") that an agent must map back to schema property names.

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

Completeness4/5

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

For a 19-parameter destructive mutation, the description covers the three things structured fields cannot: which states are editable, what replace semantics mean, and one non-obvious side effect. With no output schema the return shape is unexplained, but annotations and the 84%-covered schema carry most remaining weight.

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 84%, so the schema already documents the 19 parameters in detail. The description only adds framing on --at timing; it contributes nothing about thread, media, quote, or the ifUpdatedAt concurrency guard, which the schema covers on its own.

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?

"Change a draft, scheduled, missed or failed post" gives a specific verb plus resource and, crucially, scopes it to four editable states, which separates it from posts_create and posts_publish without requiring a schema comparison.

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

Usage Guidelines4/5

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

States an explicit exclusion ("Published posts can't be edited") and implies the state machine an agent must check before calling. It stops short of naming the sibling to use instead for published posts, so the routing is clear but not fully closed.

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