Developers
Threads for Claude is a remote MCP server. Any MCP client that supports streamable HTTP and OAuth can use it to act on a user's Threads account. There is no REST API and no API key: each user connects their own account.
Quickstart
- Point your MCP client at
https://threads-mcp.app/mcp
- Claude Code:
claude mcp add --transport http threads https://threads-mcp.app/mcp
then run/mcpand choose Authenticate. Or install the Claude Code plugin, which adds the server and the prompts below as slash commands:/plugin marketplace add pawlek/threads-plugin /plugin install threads@threads-for-claude
- MCP Inspector:
npx @modelcontextprotocol/inspector
choose Streamable HTTP, paste the URL and click Connect; the OAuth flow opens in the browser. - Call
threads_get_profileto check the connection.
Authentication
OAuth 2.1 authorization code with PKCE (S256) and dynamic client registration, discovered from the 401 WWW-Authenticate header of the MCP endpoint. The user signs in with Threads and approves the client; access tokens are short-lived JWTs with refresh tokens. Step by step: auth.md.
Users can see, switch or disconnect the connected account on their connection page.
Testing
There is no separate sandbox: Threads has no test mode, so posts are real. Connect a spare Threads account while developing, use the read-only tools first, and check threads_get_publishing_limit before bulk tests (250 posts and 1,000 replies per 24 hours).
Tools
threads_list_accounts
Lists the Threads accounts linked to this connector and which one this app currently acts as. Posts, replies and insights always use the account marked acting.threads_use_account— writes
Makes this app act as another linked Threads account from now on (other apps keep theirs). Only switch when the user asks for it, and name the account you switched to.threads_get_profile
Returns the connected Threads account: username, name, bio, profile picture, verification.threads_list_posts
Lists the connected account's own posts, newest first. Use `after` from the previous response to paginate.threads_get_post
Returns one post by its media id.threads_check_draft
Checks a draft before publishing: strips invisible characters, em dashes, curly quotes and stock AI phrases, flags structures to rewrite by hand, enforces Threads limits (500 chars, 5 links, placeholders) and scores the text with local style heuristics (not an AI detector). Returns cleaned_text. It never publishes. Call it on every post, reply and thread part before showing the final text to the user for confirmation, and publish the cleaned text only after the user approves it.threads_create_post— writes
Publishes a post on the user's Threads account: text (≤ 500 chars, ≤ 5 links), optionally with one image or video, or quoting another post. Publishes publicly and immediately — show the user the final text and get confirmation first. For longer text use threads_create_thread; for several images use threads_create_carousel. Run threads_check_draft on the text first.threads_create_carousel— writes
Publishes a carousel of 2–20 images and/or videos with optional text. Publishes publicly — confirm with the user first. Run threads_check_draft on the text first.threads_create_thread— writes
Publishes a chain of 2–10 text posts where each post replies to the previous one (for text longer than 500 chars). Each part must be ≤ 500 chars. Publishes publicly — confirm with the user first. Run threads_check_draft on the text first.threads_reply— writes
Publishes a reply (text and optional media) to any post or reply by id. Publishes publicly — confirm with the user first. Run threads_check_draft on the text first.threads_repost— writes
Reposts an existing post to the user's profile.threads_publish_container— writes
Checks a media container returned with status 'processing' and publishes it once ready.threads_delete_post— writes
Permanently deletes one of the user's own posts or replies. Cannot be undone — confirm with the user first.threads_get_replies
Returns replies to a post. mode 'replies' = top-level replies only; 'conversation' = all nested replies flattened.threads_hide_reply— writes
Hides (or unhides) a top-level reply on one of the user's posts. Nested replies under it are hidden too.threads_get_mentions
Lists public posts where the user was @mentioned. When a mention is a reply, replied_to and root_post hold the ids of the post it answers and of the top post of that thread.threads_get_activity— writes
Replies to the user's posts and @mentions that Threads pushed since the user last checked (last 30 days), newest first. Use it for 'what's new on Threads?'. By default returns only unseen items and marks them as seen. To answer or hide an item, use threads_reply or threads_hide_reply with its media_id after the user confirms.threads_keyword_search
Searches public Threads posts by keyword or topic tag. Returns text, author, date, link and whether a post has replies — Threads does not expose likes/views of other people's posts. Until the app is approved for keyword search, results only include the user's own posts. Limit: 2,200 searches per 24 h (empty results don't count).threads_profile_lookup
Returns a public Threads profile by exact username: name, bio, verification, followers and totals of likes, replies, quotes, reposts and views over the last 7 days. Only public profiles with 100+ followers are returned. Until the app is approved for profile discovery, only official Meta accounts (@meta, @threads, @instagram, @facebook) can be looked up. Limit: 1,000 lookups per 24 h.threads_get_profile_posts
Lists recent public posts of another Threads profile by exact username (text, type, date, link, whether it has replies, quoted/reposted post). Threads does not expose likes or views of other people's posts. Same access limits as threads_profile_lookup.threads_get_post_insights
Returns views, likes, replies, reposts, quotes and shares for one post. For many posts or a period use threads_get_posts_insights.threads_get_posts_insights
Lists the user's own posts published in a date range together with views, likes, replies, reposts, quotes and shares for each, plus totals, average/median views and engagement rate — in one call. Use it for reports and "what performed best" questions instead of calling threads_get_post_insights per post. Dates are YYYY-MM-DD (UTC, inclusive); defaults to the last 30 days. For "all time" pass since=2023-07-05; if the result has a `note` about the limit, call again with `until` set to the oldest date seen to cover older posts.threads_get_account_insights
Returns account metrics (views, likes, replies, reposts, quotes, clicks, followers_count) for a date range. Dates are YYYY-MM-DD; data is available from 2024-04-13. follower_demographics needs ≥ 100 followers and a breakdown.threads_audit_posts
Post-mortem of the user's own published posts. Ranks posts by engagement rate ((likes+replies+reposts+quotes)/views) and reach multiple (views/followers) rather than raw views, then compares groups — format (text/image/video/carousel), length, ending in a question, links, topic tags and, last, posting weekday/hour — with sample sizes and a confidence level, and returns plain-English findings. Use it for "what's working", "why did this flop", "what should I post more of"; it is the evidence base for planning next posts. Fewer than 6 posts with views gives no reliable patterns. For a plain metrics table use threads_get_posts_insights. Dates are YYYY-MM-DD (UTC, inclusive); defaults to the last 90 days.threads_get_publishing_limit
Shows how many posts and replies the account has used in the last 24 hours and the limits (250 posts / 1000 replies).
Tools that write act publicly as the user. Show the exact text and get explicit confirmation before calling them.
Writing and audit tools
threads_check_draft checks a draft locally before publishing: it strips invisible characters, em dashes, curly quotes and stock AI phrases, flags structures to rewrite by hand, enforces Threads limits (500 characters, 5 links, unfilled placeholders) and returns cleaned_text with a 0–100 score. It never publishes and is a heuristic check, not an AI detector. threads_audit_posts ranks the user's own posts by engagement rate, reply ratio and reach (views per follower), compares formats, length, questions, links, topic tags and timing with sample sizes, and declines to name patterns from fewer than 6 posts.
Prompts
write_post(idea, format)
Turn a raw idea into a Threads post or thread in the user's own voice: hook options, a humanized draft checked with threads_check_draft, and publishing only after an explicit yes.reply_to_replies(post)
Triage the replies under the user's posts (lead, substance, peer, support, noise), draft answers in their voice, check each with threads_check_draft, and post only the ones the user approves.audit_posts(period, since, until)
Post-mortem on what the user already published: ranks posts by engagement rate and reach multiple and says what works, what to stop, and how confident the evidence is.plan_week(themes, this_week)
Build next week's Threads plan from the user's own evidence: 4-5 post angles with hooks, honest timing notes and a list of accounts worth replying to. Nothing is scheduled.
Not every client shows MCP prompts. Those that do list them in a prompt menu; the Claude Code CLI lists them as /mcp__<server>__write_post, where the middle part is the name you chose in claude mcp add. Elsewhere the same flows run from a plain request.
MCP Apps
ui://threads/posts-insights.html— Interactive table of per-post Threads metrics for threads_get_posts_insights.
Discovery
- MCP manifest: https://threads-mcp.app/.well-known/mcp.json
- MCP server card: https://threads-mcp.app/.well-known/mcp/server-card.json
- OAuth protected resource metadata: https://threads-mcp.app/.well-known/oauth-protected-resource/mcp
- OAuth authorization server metadata: https://threads-mcp.app/.well-known/oauth-authorization-server
- Agent Skills index: https://threads-mcp.app/.well-known/agent-skills/index.json
- Authentication guide: https://threads-mcp.app/auth.md
- llms.txt: https://threads-mcp.app/llms.txt
- OpenAPI spec: https://threads-mcp.app/openapi.json
- Agentic Resource Discovery catalog: https://threads-mcp.app/.well-known/ard.json
- API catalog (RFC 9727): https://threads-mcp.app/.well-known/api-catalog
- Official MCP Registry: app.threads-mcp/threads