Skip to main content
Glama

Check a post without saving it

preview_post
Read-onlyIdempotent

Takes the same arguments as create_post and saves nothing. Per account: the text exactly as it would go out (its own text, the signature, short links), its length against the limit (over_by), the files, the format, thread parts and first comment; every problem and warning; the resolved time; whether it would wait for the owner's approval; and in refusal what create_post would answer instead. Use it to fix everything in one turn and to show the user each network's version.

Input Schema

NameRequiredDescriptionDefault
tagsNoTag names or ids (a new name is made). On update_post it replaces the post's tags
textNoThe post text (the same for every account unless overrides says otherwise)
whenNodraft = saved, not sent. schedule = at scheduled_at. queue = the next free slot of the posting schedule. now = right away.
redditNoRequired when one of the accounts is Reddit: subreddit and title; flair where the subreddit needs one. On update_post the keys you send change only those (a new title keeps nsfw); reddit: null removes the Reddit details, as on REST
optionsNoPer-platform settings, the same shape the app saves: thread {parts: [{text, media, delay}]} (parts 2..n), follow_up {text, delay (minutes), accounts}, targets {"<account id or platform>": {format (reel, story, short...), title, privacy, kids, TikTok flags, reply, poll, cover, board, playlist (YouTube), page (LinkedIn), mentions (LinkedIn / Facebook tags from search_mentions), link (Pinterest), collaborators and trial (Instagram: trial "manual" or "auto" makes a Reel a trial reel, shown at first only to people who do not follow the account), background (Facebook text background id from get_account_options), topic (Google Business: standard, event or offer) with title, start, end, coupon, offer_url, terms, and cta (book, order, shop, learn_more, sign_up, call) with cta_url}}, alt {"<media id>": "alt text"}, media {"<media id>": {only | skip: [account ids or platforms]}}, repeat {every, until, count}, shorten {on, comments}, plugs [{on (account id or platform of this post), action: repost | comment, likes (fire at N likes) | after (5 to 1440 minutes after it is live), text}] (Team plan and up; repost on X and LinkedIn, comment by the account that posted on Instagram, Facebook, LinkedIn, YouTube, TikTok, Reddit, Threads, Mastodon and Bluesky; left out on a new post = the account defaults, [] = none). get_account_options shows what each account takes. TikTok and YouTube need a privacy for each of their accounts (TikTok: everyone, friends, followers, self; YouTube: public, unlisted, private); a missing or invalid value is refused and nothing is saved. On update_post the targets merge per account: an account you name changes only the keys you send (a key set to null removes it, the account set to null removes all its options) and every other account keeps all of its options. reddit, follow_up, repeat, shorten, media and alt merge the same way (a new Reddit title keeps nsfw); plugs and any other value replace the saved one; a key sent as null removes it.
media_idsNoIds from upload_media: up to 10 images, or 1 video
overridesNoDifferent text for some accounts: {"<account_id>": "text"}
account_idsNoAccount ids from list_accounts
template_idNoA template from list_templates: fills accounts, text, first comment and "queue" when you leave them out, and each account's saved settings (privacy, made for kids, disclosure, format, Reddit NSFW) under the options you send (yours win per account and key; another account on the same platform gets that platform's settings)
scheduled_atNoFor when=schedule. Use ISO 8601, for example 2026-11-03T09:30 (read in the workspace timezone) or 2026-11-03T09:30:00+01:00, or unix seconds.
first_commentNoPosted as the first comment where the platform allows it

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description goes well beyond them by enumerating what the preview returns per account: rendered text with signature and short links, length vs. limit with over_by, media, format, thread parts, first comment, problems and warnings, resolved time, approval wait, and the refusal payload. This is unusually rich behavioral disclosure for a no-side-effect tool.

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 key fact — same args as create_post, saves nothing — is front-loaded, and the long enumeration of returned fields is information-dense rather than padded. The middle sentence is a run-on list that could be broken up, but no clause is filler.

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?

With 11 parameters, nested objects, and no output schema, the description compensates well by describing the return contents in detail. Remaining gaps are minor: nothing about authentication or what happens when no accounts or media are supplied, but an agent has enough to call it correctly.

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 description coverage is 100% and the nested options object is documented exhaustively, so the schema carries the parameter burden. The description adds only that the argument set is identical to create_post and that values are resolved per account (signature, short links, resolved time), which is useful but not substantive parameter-level clarification beyond the schema.

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 opening sentence states a specific behavior: it takes the same arguments as create_post and saves nothing, which is a dry-run verb+resource an agent can immediately distinguish from create_post and from the read siblings like get_post. The title reinforces it without being the only signal.

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?

"Use it to fix everything in one turn and to show the user each network's version" gives an explicit when-to-use and an intended workflow. The create_post relationship ("what create_post would answer instead") implicitly defines the alternative, but there is no explicit statement of when not to use it or of prerequisites such as needing accounts/media already uploaded.

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