MCP server for Meta's Threads API. Two-step publishing, byte-accurate chain splitting, and a long-lived credential that refreshes itself onto a durable volume.
Threads server demonstrates solid tool design with clear naming conventions (verb_noun pattern), comprehensive parameter schemas, and good descriptions. All 14 tools have explicit descriptions and input schemas with type definitions. However, output schemas are not documented in the source, parameter descriptions lack constraint details (ranges, enums, formats), and error handling guidance is minimal. Tool composition is clean, each tool has a single responsibility. Naming is consistent and action-oriented (get_*, post_*, delete_*). The server follows production patterns for credential management and HTTP transport.
Delete a post or reply by media ID.
Fetch insights for the authenticated user account (views, likes, replies, reposts, quotes, clicks, followers_count, follower_demographics).
Fetch insights for a specific media post (views, likes, replies, reposts, quotes, shares).
Fetch a single post by media ID.
Check the 24-hour publishing quota for posts, replies, and deletes.
Fetch replies to a post.
Fetch the authenticated user's profile.
Output schemas not documented. Tools return data but LLMs cannot see what fields to expect, forcing them to infer structure and risking downstream tool chaining failures.
Parameter descriptions lack constraint details. 'limit' parameters mention defaults and max but no minimum; 'metrics' accepts comma-separated strings with no enum or pattern; 'breakdown' has no enum despite being one-of constraint.
No error handling guidance. Tools lack recovery hints (e.g., 'If quota exceeded, try again in 24 hours' or 'If media_id invalid, call get_user_posts() to find valid IDs'). LLMs cannot self-correct on failures.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | <=2025-11-25 | v2 |
Fetch the authenticated user's posts.
Hide a reply from the public view on a post.
Publish a long text post as a reply chain, automatically split at Threads' 500-character limit.
Publish an image post to Threads.
Publish a text post to Threads.
Publish a reply to an existing post.
Check the Threads credential's expiry and refresh history.
Destructive operations lack confirmation step. delete_post and hide_reply have no dry-run or confirmation mechanism. Agents can irreversibly delete content without user approval.
No tool annotations. Tools lack readOnlyHint, destructiveHint, or idempotentHint metadata. Clients cannot determine which tools are safe to retry or which modify state without reading descriptions.