Skip to main content
Glama

Create post

posts_create

Write a post or thread; publish now, schedule it or keep a draft. Each --text is one post of a thread. --media takes file paths or media ids and attaches to the first post; use --input with a thread array to put media on later posts. Text is checked against every destination before anything is saved, so a post never fails later for being too long. Without --at it publishes right away and returns the links.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

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

Input Schema

NameRequiredDescriptionDefault
atNoWhen to publish: ISO time or plain words ("tomorrow 9am", "in 2 hours", "fri 17:30"). Without it the post goes out now
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
textNoPost text; repeat for a thread
draftNoSave without publishing or scheduling
flairNoReddit: a flair id for the subreddit (see `accounts flairs`). Empty string clears a previously set one, on an edit
groupNoJoins this post to its other halves in other homes (the Mac app sends one per home)
mediaNoImage or video path, or a media id, for the first post
quoteNoURL of a post to quote (X, Bluesky)
titleNoPost title; Reddit needs one. Without it a post skips a default Reddit account, and fails when --to names Reddit. With --title-first, X, Bluesky, Mastodon and LinkedIn open with it too
threadNoThe whole thread with media (and a `link` card) per post (instead of --text)
replyToNoSomeone's post to answer: a reply on X, Bluesky and Mastodon, a comment on Reddit. Needs one --to account on that network. X takes it only when their post mentions or quotes the account (else the post fails with reply_not_allowed)
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
idempotencyKeyNoYour key for this post: creating again with the same key returns the first post instead of a second one

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 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. Without it a post skips a default Reddit account, and fails when --to names Reddit. With --title-first, X, Bluesky, Mastodon and LinkedIn open with it too"
    • 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. First observed

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely new behavior: text is validated against every destination before anything is saved, and a successful publish returns links. It does not describe partial-failure behavior across multiple destinations or error modes beyond length.

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?

Four sentences, no filler, and the most consequential facts (modes, thread semantics, validation, immediate publish) are front-loaded. The flag-style notation (--at, --media, --input) is slightly inconsistent with the actual schema keys but remains readable.

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 20-parameter creation tool with no output schema, the description covers the decisions an agent must make: text vs thread shape, media placement, timing vs draft, and that publishing returns links. Gaps are the org/account targeting behavior and multi-destination failure semantics, which the schema partially handles.

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 baseline is 3 even though the description adds real meaning about parameter relationships: each --text is one thread post and --media attaches only to the first post. It still uses CLI-style flag names (--text, --media, --input) that do not match the JSON property names (text, media, thread), which is a small translation cost.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening 'Write a post or thread; publish now, schedule it or keep a draft' gives a specific verb, resource, and the three operating modes in one clause. It does not name sibling tools such as posts_publish or posts_edit, so the boundary with those remains for the agent to infer.

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?

It clearly conditions the modes: without --at it publishes immediately, --draft saves without publishing, and it tells you to switch from --media to the thread array when media belongs on later posts. What is missing is when to prefer this tool over posts_publish or posts_edit, and any explicit when-not-to-use guidance.

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