Skip to main content
Glama

Post to X

post_to_x
Destructive

Publish a short text post (optionally with a URL) to this company's connected X account under the Freedom Pledge. Operator MCP/chat door — company identity, not a personal account. Returns the post URL. Use when the operator wants this company to post on X. Hired agents must use send_to_user intent publish instead. Pledge blocks porn/illegal and flags brand/ethics. If X is connected without tweet.write, reconnect X.

Routing: Operator wants this company to post on X → use this. Hired/scheduled agents: send_to_user intent publish. Missing tweet.write → request_connector connector="X / Twitter" (FO-native, not Composio).

[outbound-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time. Call it on the first clear ask; the card is the yes — do not re-ask in chat.]

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
textYesExact post text. Include the live URL in the body when the post should point at a page. X-weighted length must fit the company cap (280, or 25,000 if long-form is on).
derivedNoOptional, with source_piece_id. True when the post is RESHAPED from that piece (a thread, a caption, a shorter form) rather than quoted. Every sentence must say only what the piece says — no new fact, number, name, promise or ask. A passing reshaping is scheduled and goes out after 24 hours unless someone holds it (hold_post). A failing one is refused: new words need a person.
companyIdYesFreedomOS company id to act within (you must be a member). Required for company-scoped tools.
source_piece_idNoOptional. The piece these words are taken from, when the post is an excerpt of something this company already put out: output:<pipeline output id> (a published post) or hub-letter:<slug> (a released letter). The words must be one unbroken passage of that piece, trimmed at the ends only — no changed, dropped or added word — and any link must be in the piece or be its own page. A matching excerpt posts on its own; anything else is refused. Leave it out for new words — those ask a person.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, and openWorldHint=true; the description adds substantial context beyond them: the return value ('Returns the post URL'), the Freedom Pledge content constraints (blocks porn/illegal, flags brand/ethics), the outbound-tier approval behavior (from-now-on vs just-once), and the operational instruction 'Call it on the first clear ask; the card is the yes — do not re-ask in chat.'

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 description is long but every block carries operational value: routing, approval flow, pledge constraints, and connector troubleshooting. It loses a point for redundancy — the hired-agent routing to send_to_user appears in both the first paragraph and the Routing section.

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?

Complete for a destructive open-world publish tool: return value, approval behavior, connector prerequisite, content constraints, and role-based routing are all covered. Parameter-level details and failure semantics live in the 100%-coverage schema, which is acceptable, and there is no output schema to duplicate the return-URL statement.

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 schema's per-parameter descriptions are already unusually rich (character caps, reshaping vs quoting rules, refusal conditions, unbroken-passage excerpt integrity). The description contributes only marginally ('optionally with a URL' and the return-URL note), so the baseline 3 for full schema coverage applies.

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 states a specific action — 'Publish a short text post (optionally with a URL) to this company's connected X account under the Freedom Pledge' — and scopes it to company identity rather than a personal account. It distinguishes itself from numerous X-related siblings by explicitly routing hired agents to send_to_user intent publish and by contrast with ad, metric, and ingest tools.

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?

Explicit when-to-use ('Use when the operator wants this company to post on X'), when-not-to-use ('Hired agents must use send_to_user intent publish instead'), and named alternatives. The Routing section reinforces this and extends it to a degraded prerequisite case: 'Missing tweet.write → request_connector connector="X / Twitter" (FO-native, not Composio).'

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