Skip to main content
Glama
exileum

meta-mcp

threads_publish_text

Publish text-only posts on Threads with optional attachments like links, polls, or GIFs. Auto-publish combines creation and publishing into one API call to avoid race conditions.

Instructions

Publish a text-only post on Threads. By default publishes in a single API call via auto_publish_text=true (faster and avoids the 4279009 'container not propagated' race condition). Supports optional link attachment, poll, GIF, topic tag, quote post, cross-share to Instagram Stories, geo-gating via allowlisted_country_codes, location tagging via location_id, and text_attachment for long-form content (up to 10,000 chars with optional styling and link). Only one attachment type per post — text_attachment, poll_options, link_attachment, and gif_id+gif_provider are mutually exclusive. Set auto_publish=false to fall back to the legacy two-step create-then-publish flow.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
textYesPost text (max 500 chars)
gif_idNoGIPHY GIF ID. Must be provided together with gif_provider — providing only one returns an error.
alt_textNoReserved — must be omitted. alt_text is only supported on image, video, and carousel posts; passing it here raises a Zod schema error.
topic_tagNoTopic tag for the post (1-50 chars, no periods or ampersands)
is_spoilerNoMark content as spoiler
location_idNoLocation ID for tagging the post. Use threads_search_locations to find IDs. Requires the threads_location_tagging permission on the access token.
auto_publishNoWhen true (default), combine container creation and publishing into a single API call via auto_publish_text=true — one HTTP request instead of two, and no risk of the 4279009 'container not propagated yet' race. Set to false to fall back to the legacy two-step flow (POST /threads, then POST /threads_publish).
gif_providerNoGIF provider. Only GIPHY is currently supported. Must be provided together with gif_id — providing only one returns an error.
poll_optionsNoPoll options (2-4 choices, each 1-25 chars). Creates a poll attachment. Cannot be combined with text_attachment, link_attachment, or gif_id+gif_provider.
quote_post_idNoID of a post to quote
reply_controlNoWho can reply to this post. One of: 'everyone' (default — anyone can reply), 'accounts_you_follow' (only profiles the author follows), 'mentioned_only' (only profiles @-mentioned in the post), 'parent_post_author_only' (only the author of the post being replied to — applies when this post is itself a reply, not a quote), or 'followers_only' (only the author's followers). See https://developers.facebook.com/docs/threads/reply-management/ for the authoritative list.
link_attachmentNoURL to attach as a link preview card (max 5 links per post). Cannot be combined with text_attachment, poll_options, or gif_id+gif_provider.
text_attachmentNoLong-form text attachment (max 10,000 chars). Renders as expandable 'Read more' block beneath the primary text. Cannot be combined with poll_options, link_attachment, or gif_id+gif_provider.
share_to_ig_storyNoCross-share this post to linked Instagram as a Story. 'light' = normal, 'dark' = dark mode. Requires threads_share_to_instagram permission and a linked Instagram account. The Threads post still publishes even if cross-share fails.
text_attachment_linkNoURL to include inside the text attachment card. Requires text_attachment.
text_attachment_stylingNoText formatting for the text attachment. Ranges must not overlap.
allowlisted_country_codesNoISO 3166-1 alpha-2 country codes (e.g., ['US','CA','GB']) restricting post visibility to those countries (geo-gating). Requires the account to be eligible — check `is_eligible_for_geo_gating` via `threads_get_profile`. The creator can always see their own posts regardless. Codes are normalized to uppercase and sent comma-joined (e.g., 'US,CA') as required by the API.
Behavior4/5

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

Annotations are minimal (readOnlyHint=false, etc.), so the description shoulders the burden well. It discloses the write/creation nature, the race condition avoidance, the fallback flow, and constraints like alt_text raising an error. However, it does not explicitly discuss all side effects (e.g., rate limits) beyond what's implied.

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 thorough but slightly verbose. It front-loads the main purpose and auto_publish recommendation, then lists features. While every sentence adds value, it could be tightened without losing clarity. Still, it is well-structured.

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?

Given 17 parameters and no output schema, the description covers all necessary context: parameter behaviors, constraints, prerequisites (permissions), error conditions, and interactions. It even mentions sibling tools for location search. A remarkably complete description for a complex tool.

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?

With 100% schema coverage, the description adds substantial meaning beyond the input schema. It explains the benefit of auto_publish, mutual exclusivity rules, how allowlisted_country_codes are serialized, and the cross-share behavior. This enriches the agent's understanding of parameter interactions.

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 clearly states 'Publish a text-only post on Threads' and distinguishes it from sibling tools like threads_publish_image, threads_publish_video, and threads_publish_carousel by specifying 'text-only'. It also details the auto_publish feature, making the purpose very specific.

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?

Provides explicit guidance on when to use auto_publish=true vs false, explains mutual exclusivity of attachment types, and references sibling tools (threads_search_locations) for location lookup. It also notes required permissions for certain features, leaving no ambiguity about alternatives.

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

Install Server

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/exileum/meta-mcp'

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