Skip to main content
Glama
navidmoazzez

mastodon-mcp

by navidmoazzez

Post a status

post_status
Destructive

Publish a Mastodon status with text, media, alt text, content warnings, polls, replies, and visibility options. Requires explicit confirmation because the post is public immediately.

Instructions

Publish a status. Handles text, media with alt text, a content warning, a poll, a reply, visibility, and native scheduling. The character limit is per instance, so check get_instance_info before drafting anything long: it ranges from 500 to 11,000. Public the moment it runs, so it needs confirm: true.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
mediaNoAttachments, up to whatever the instance allows.
statusYesThe body. Write links and @mentions normally; Mastodon linkifies them.
accountNoWhich connected account to act as. Matches a full handle (alice@example.social), a bare username (alice), or an instance (example.social). Defaults to the first connected account. Call list_accounts to see them.
confirmNoMust be true for this to run. The result is public immediately or cannot be undone, so it is refused without an explicit confirmation.
languageNoISO 639 code. Instances use it to filter timelines. Defaults to en.
sensitiveNoBlur the media until the reader taps it.
visibilityNopublic appears everywhere; unlisted skips the public timelines but is still reachable; private goes to followers only; direct goes only to the accounts mentioned.
poll_optionsNo
scheduled_atNoISO 8601. Mastodon schedules natively, minimum five minutes ahead. Returns a scheduled status, not a published one.
spoiler_textNoContent warning. The body is hidden behind it until the reader expands it. Used far more on Mastodon than on other networks.
poll_multipleNoAllow more than one choice.
in_reply_to_idNoThe status being replied to.
poll_expires_inNoPoll lifetime in seconds. Default 86400.
Install Server

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and non-read-only, and the description adds genuinely useful behavioral context: the status becomes public the moment it runs, the action needs explicit confirmation, and the character limit depends on the instance. It does not contradict the annotations and communicates the irreversible nature beyond what the flags convey.

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 compact and front-loaded, starting with the operation, then summarizing capabilities, then delivering the two most important caveats. The capability list partially mirrors the schema, but the critical warnings are prominent and there is no padding.

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 13-parameter mutation tool with no output schema, the description covers the key selection and safety information: what it does, the high-stakes public/immediate behavior, the confirmation requirement, and a per-instance constraint. It could be stronger by explicitly routing to post_thread for multi-status scenarios, but the schema and annotations fill most remaining gaps.

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

Parameters4/5

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

With 92% schema description coverage the schema carries most parameter meaning, but the description adds real value for the `status` and `confirm` parameters: it warns to check get_instance_info for the per-instance character limit and explains why confirm:true is mandatory. That is more than the schema alone provides, though most other parameters still rely on the schema.

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 description opens with 'Publish a status' and enumerates the supported capability set (text, media with alt text, content warning, poll, reply, visibility, scheduling), making the core operation unmistakable. It does not explicitly distinguish itself from sibling tools like post_thread or edit_status, which keeps it from a 5.

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 provides clear practical context: check get_instance_info before drafting long content because the character limit is per-instance, and confirm:true is required because the result is public and irreversible. It does not name alternatives or state when not to use this tool, so it falls short of explicit routing but is more than a bare prerequisite.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/navidmoazzez/mastodon-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server