Skip to main content
Glama

Edit a scheduled or draft post

update_post

Change a scheduled or draft post before it goes out: content, mediaIds, accountIds, Naver Blog caps how many posts one ID publishes; when it does, this returns 429 naver_rate_limited with retryAfterSeconds. Do not call again before that, the draft is already in Naver. Naver Blog asks which form to publish with, every post: if options.naver_blog.form is missing this returns 400 naver_form_required with forms (id, name, when). The form is the house style to use when the person has no style of their own, so read the conversation first. If they dictated the structure or you laid it out yourself, pass options.naver_blog.layout: "as-is" and the markdown goes out unchanged. Otherwise show them the forms (naver_layout with forms: "all" lays every one out side by side) and call again with the one they pick. Do not pick for them. If the Naver editor shows a "missing image" error when you open an already-published post for editing, calling update_post on that post rewrites it in place and fixes it; the URL stays the same. options, scheduledAt or draft. Fields you leave out keep their current value; options you pass replace the whole options object. scheduledAt moves the send time (same rules as publish), null turns it into a draft, and draft: true does the same. A thread only takes schedule changes. Posts that already went out return post_not_editable, except Naver Blog: a published Naver post is rewritten in place (same URL, same logNo) when you pass content, mediaIds or options — list the media ids again to keep the photos.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesA publish id (post_…), the post's own id on the channel, or a post link (the URL you would open in a browser to see it). Links work for posts written in the channel's own app too, as long as the account is connected here.
draftNotrue turns a scheduled post back into a draft.
contentNoNew post text.
optionsNoPer-channel settings, same shape as on publish. Replaces the whole object.
mediaIdsNoNew media, in order. Replaces the current set.
accountIdsNoNew target accounts, from select_channels. Replaces the current set.
scheduledAtNoNew send time (ISO 8601 with offset, 10 minutes to 365 days out), or null to keep the post as a draft instead.
workspaceIdNoWhich workspace this is for. Only needed when the account has more than one — the error tells you the ids when it matters. Leave it out if it is already decided; do not ask the person again.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=false and destructiveHint=false, leaving safety profile minimal. The description goes far beyond this: it discloses the 429 naver_rate_limited retry behavior, the 400 naver_form_required condition, the in-place rewrite of published Naver posts (same URL/logNo), and the field-level semantics (left-out fields keep value, options replaces whole object). It also explains the 'missing image' fix. No contradictions with annotations.

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?

The description is very long and not front-loaded; the first sentence leaps from general purpose to Naver rate limiting before explaining core behavior. Multiple topics (rate limits, form handling, layout, published posts, parameter semantics) are interleaved, making it harder to parse. While nearly every sentence carries unique information, the lack of organization and excessive length pull the score down.

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 tool with 8 params, nested objects, and no output schema, the description covers a large range of edge cases: rate limiting, form requirements, layout options, thread limitations, and non-editable post errors. It omits only an explicit statement of the success return value, which is a minor gap given the focus on invocation. Overall it is sufficient for correct usage.

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

Parameters5/5

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

Although schema coverage is 100%, the description adds critical semantics not present in the schema: concrete behavior when fields are omitted (keep current), options replacement semantics, scheduledAt null/draft behavior, thread-only schedule changes, and the need to relist mediaIds to keep photos on Naver published posts. It also explains the layout option ('as-is') and form selection flow, which massively benefits the agent.

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 'Change a scheduled or draft post before it goes out' and specifies the mutable fields (content, mediaIds, accountIds), clearly distinguishing this from sibling tools like publish (create) and delete_post (remove). It also clarifies the scope by noting that already-published posts are generally not editable except for Naver Blog's in-place rewrite, which further defines the tool's purpose.

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?

While it doesn't name alternative tools explicitly, it provides strong when-not guidance: 'Posts that already went out return post_not_editable' and 'A thread only takes schedule changes.' It also gives conditional instructions like not calling again before retryAfterSeconds, and how to handle the Naver form selection. Missing explicit pointer to siblings like 'use publish for new posts' keeps it just below a 5.

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