TwitterAPIs
MCP server for the Twitter/X API: 51 tools covering tweet and user search, profiles, timelines, followers, threads, lists, mentions, likes, bookmarks and DMs, plus write actions.
Documentation
Twitter / X MCP Server for Claude, Cursor, and Any MCP Client
Works in Claude Desktop, Cursor, and any MCP client.
No key to paste: in Claude Code, add the hosted server and sign in with your TwitterAPIs account.
$0.50 in free credit at signup, no card. That covers about 625 read calls at $0.0008 each before you pay anything.
What is the Twitter (X) MCP server?
The TwitterAPIs MCP Server is a Model Context Protocol server that gives Claude Desktop, Cursor, Cline, and any MCP-compatible agent native access to the Twitter/X API. Search tweets, read profiles, followers, threads, and lists, and post, reply, like, retweet, or follow from a linked account, all with a single bearer token. Read calls cost $0.0008; write actions bill from $0.0008 (tweet creation $0.0016), the same rates as the direct REST API.
Every rate here is the pricing TwitterAPIs publishes. The billed rate is $0.0008 per read call; $0.04 per 1,000 tweets is derived from it at a full 20-tweet page, the default page size rather than a guaranteed yield. Per our own spec, 65 of 112 endpoints bill that rate (source: twitterapis.com/pricing).
What the server gives an agent
Every figure below is read from the system that emits it: the tool count from the published npm package, the endpoint count from the REST router, and the prices from the rate card the biller charges. When one of those moves, the number on this page moves with it at the next build.
112
MCP tools
68 reads and 44 write actions, one tool per REST endpoint.
112
REST endpoints behind them
Call any of them directly over HTTPS with the same key.
$0.0008
Per read call
About $0.04 per 1,000 tweets at a full 20-tweet page. X's own API bills $0.005 per post read.
$0.50
Free credit to start
About 625 read calls before any charge, and no X developer app to create.
Setup for Claude Desktop, Claude Code, Cursor, VS Code, Windsurf, Cline
The server is the same in every client: npx starts @twitterapis/mcp and every read tool needs only your TWITTERAPIS_KEY, no X OAuth screen and no X developer account. What changes per client is the config file and the key the servers live under. Pick your client, paste the block, restart it, and the twitter_* tools appear in its tool list.
claude_desktop_config.json
{
"mcpServers": {
"twitterapis": {
"command": "npx",
"args": ["-y", "@twitterapis/mcp@latest"],
"env": { "TWITTERAPIS_KEY": "YOUR_API_KEY" }
}
}
}
What you can build with six lines of config
The TwitterAPIs read endpoints become native tools inside your MCP client. No glue code, no X OAuth app, no scope review.
Ask Claude to find tweets on any topic
Type "find recent posts about MCP servers" in Claude Desktop and the agent calls the advanced search endpoint and summarizes the results in-line.
twitter_advanced_search
Pull a handle's recent posts into Cursor
Wire a slash command in Cursor that hands a handle to the twitter_user_tweets tool. The MCP layer fetches the latest posts and returns them for drafting or analysis.
twitter_user_tweets
Reconstruct a full thread with a Claude agent
Hand Claude a tweet ID and have it pull the entire conversation. The twitter_tweet_thread and twitter_tweet_replies tools return the full reply tree for summarization.
twitter_tweet_thread, twitter_tweet_replies
Build a Twitter analytics dashboard with Claude Artifacts
Hand Claude a handle and a date range. The agent calls twitter_user_info, twitter_user_followers, and twitter_user_tweets, then renders a Recharts dashboard in an Artifact.
twitter_user_info, twitter_user_followers
Sync followers to Notion through Claude
Schedule a Claude agent to call twitter_user_followers, dedupe against your Notion DB, and append new rows. No glue code, no Zapier middleware.
twitter_user_followers
Mention monitor that drafts replies
Run a Cursor or Claude agent that watches mentions every 30 minutes, ranks by signal, and drafts a reply you can review before sending.
twitter_user_mentions
The tools the server exposes
The server maps the TwitterAPIs Twitter/X API onto MCP tools. Below are the ones agents reach for most. Read tools run on your TwitterAPIs key or hosted sign-in alone, no X OAuth screen and no X developer account; write actions act as a linked X account. Each one wraps an endpoint you can also call over REST directly.
Search and tweet tools
TWITTERAPIS_KEY only
twitter_advanced_searchAdvanced search with operators, filters, and date rangestwitter_tweet_detailLook up a single tweet by ID with full metadatatwitter_tweet_repliesPull the replies under a tweet with paginationtwitter_tweet_retweetersList the accounts that retweeted a tweettwitter_tweet_threadReconstruct a full self-thread from a tweet ID
User and graph tools
TWITTERAPIS_KEY only
twitter_user_infoProfile, bio, follower and following counts for a handletwitter_user_tweetsPull a handle's recent poststwitter_user_mentionsRead an account's mentions (a to:username search)twitter_user_followersList an account's followers with paginationtwitter_user_followingList the accounts a handle followstwitter_user_verified_followersList an account's verified followers
Additional read tools
TWITTERAPIS_KEY only
twitter_user_searchSearch for users by display name or handletwitter_user_info_by_idLook up a user profile by numeric user IDtwitter_user_tweets_and_repliesPull a handle's tweets and replies togethertwitter_user_mediaList a user's media (images and video) tweetstwitter_list_membersList the members of an X list by list ID
Write actions
Linked X session
twitter_create_tweetPost a tweet, reply, or quotetwitter_favorite_tweetLike a tweet (undo with twitter_unfavorite_tweet)twitter_retweetRetweet a post (undo with twitter_unretweet)twitter_follow_userFollow an account (undo with twitter_unfollow_user)twitter_dm_sendSend a direct message to a user
Want the read tools without the MCP layer? They wrap the same endpoints behind our Twitter search API and Twitter scraper, callable over plain HTTP. Every tool call bills at the standard pricing of $0.0008 per read, and you only need a Twitter API key in the env block to get started.
ALL TOOLS
All 112 tools, what each does and costs
This table is generated from the published @twitterapis/mcp package, and a preflight check fails the build if it ever disagrees with the package, so a tool added or removed in a release shows up here or blocks the change. Read tools need only your key; tools marked as your account act as the X session you link.
| Tool | What it does | Price per call |
|---|---|---|
| Tweets and threads (6) | ||
twitter_advanced_search | Search recent tweets using X's advanced-search operators. | $0.0008 |
twitter_tweet_detail | Get the full detail of a single tweet: text, author profile, post timestamp, like/retweet/reply/quote counts, attached media, referenced quoted tweet, and parent... | $0.0008 |
twitter_tweet_replies | Get replies to a specific tweet. | $0.0008 |
twitter_tweet_thread | Get all tweets in a thread: the connected chain of tweets posted by the SAME author in sequence (a tweetstorm or numbered thread). | $0.004 |
twitter_tweet_retweeters | List the accounts that retweeted a specific tweet. | $0.0008 |
twitter_tweet_quotes | List the tweets that QUOTE a specific tweet, cursor-paginated as full tweet objects, so you get the commentary people attached rather than just a number. | $0.0008 |
| Users and the follower graph (21) | ||
twitter_user_search | Search for Twitter/X user accounts by display name or handle (X's People search; bio text is NOT searched, so a word that appears only in a bio returns no match). | $0.0008 |
twitter_user_info | Get a user's complete public profile by their @handle: display name, bio, follower count, following count, verification status, location, website, account creation... | $0.0008 |
twitter_user_info_by_id | Get a user's complete public profile by their numeric user id. | $0.0008 |
twitter_user_status | Check whether a Twitter/X account is alive, suspended, or deleted. | $0.0008 |
twitter_user_about | Get a user's full 'About' object: the structured profile facts X surfaces beyond the bio, including account category and professional/business labels, verification... | $0.0008 |
twitter_user_about_batch | Get the 'About' object (account country, how the account was created, username-change history, verification and the rest of twitter_user_about) for up to 100 accounts... | $0.0008 per item |
twitter_user_affiliates | List the affiliated accounts of an organization profile (the smaller accounts X displays under a company's 'Affiliated' badge, e.g. | $0.0008 |
twitter_check_follow_relationship | Check the follow relationship between two accounts: whether the source follows the target, whether the target follows the source, blocking/muting flags where available. | $0.0008 |
twitter_check_follow_relationship_batch | Check one account against up to 100 others in ONE call. | $0.0008 per item |
twitter_audience_summary | Summarise who an audience is in ONE call: samples up to 100 followers of an account (username or user_id) or retweeters of a tweet (tweet_id), reads each sampled... | $0.0008 per item |
twitter_user_tweets | Get a user's recent posting timeline. | $0.0008 |
twitter_user_tweets_and_replies | Get a user's full activity timeline: their original tweets AND replies to others. | $0.0008 |
twitter_user_tweets_complete | Get a large batch of a user's tweet history in one call, auto-paginating server-side across upstream pages. | $0.0024 |
twitter_user_media | Get the images and videos a user has posted. | $0.0008 |
twitter_user_mentions | Get recent public tweets that mention (@ tag) a user. | $0.0008 |
twitter_user_likes | Get the tweets a user has liked (their public Likes tab), most recent first. | $0.0008 |
twitter_user_followers | List the accounts that follow a given user. | $0.0008 |
twitter_user_following | List the accounts that a given user follows. | $0.0008 |
twitter_user_followers_v2 | List a user's followers using the v2 response shape (richer profile fields and more reliable cursoring for large audiences). | $0.0008 |
twitter_user_following_v2 | List the accounts a user follows using the v2 response shape (richer profile fields and more reliable cursoring). | $0.0008 |
twitter_user_verified_followers | List a user's followers who have a verified account (checkmark). | $0.0008 |
| Lists, Spaces, Communities and trends (14) | ||
twitter_list_members | List the members of a Twitter/X List by its numeric list id. | $0.0008 |
twitter_list_followers | Fetch a public List's followers by its numeric id, cursor-paginated. | $0.0008 |
twitter_list_tweets | Read the posts written by the members of a public Twitter/X List, newest first, through X's search index. | $0.0008 |
twitter_list_timeline | Read a public Twitter/X List's NATIVE feed, the same posts and the same ordering the List shows on x.com, including members' retweets. | $0.0008 |
twitter_spaces_info | Get metadata and the participant roster for one X Space by id, live or ended: title, lifecycle state (Scheduled, NotStarted, Running or Ended), host, topics,... | $0.0008 |
twitter_community_search | Find X Communities by keyword, cursor-paginated. | $0.0008 |
twitter_community_info | Get the metadata for one X Community by its numeric id: name, description, member_count, moderator_count, join_policy, invites_policy, the join question, primary... | $0.0008 |
twitter_community_about | The About tab for one X Community: its moderators, and a preview of its members, both returned as FULL user profiles with bio, follower and following counts, tweet... | $0.0008 |
twitter_community_members | List the member roster of an X Community, cursor-paginated, with each row carrying that member's own role in the community: 'Admin', 'Moderator' or 'Member'. | $0.0008 |
twitter_community_moderators | List the moderators and admins of an X Community, cursor-paginated, in the same { user, role } row shape twitter_community_members returns (the array is also called... | $0.0008 |
twitter_community_tweets | Read an X Community's own post timeline, cursor-paginated as full tweet objects, with the community's PINNED post returned as its own separate 'pinned' field rather... | $0.0008 |
twitter_community_memberships | The INVERSE community lookup: given a numeric X USER id, list the communities that account belongs to, cursor-paginated. | $0.0008 |
twitter_trends | Get the current top trends for a location. | $0.0008 |
twitter_trends_locations | List every location X publishes trends for, each with the numeric WOEID to pass back to twitter_trends as woeid. | $0.0008 |
| Your own X account (linked session) (17) | ||
twitter_followers_you_know | List the 'Followers you know' for a target user id: the followers of that account that YOUR authenticated account also follows (mutual-connection overlap). | $0.0008 |
twitter_grok_chat | Ask X's own Grok a question AS your authenticated account, and get ONE complete JSON reply with the answer plus the sources it cited. | $0.004 |
twitter_grok_config | Check whether the authenticated account can use Grok, and which models it may pick. | Free |
twitter_home_timeline | Get YOUR authenticated account's Home timeline (the 'Following'/'For you' feed), most recent first. | $0.0008 |
twitter_bookmarks | List YOUR authenticated account's bookmarked tweets, most recent first. | $0.0008 |
twitter_blocking | List the accounts YOUR authenticated account has BLOCKED, as full user objects, cursor-paginated. | $0.0008 |
twitter_muting | List the accounts YOUR authenticated account has MUTED, as full user objects, cursor-paginated. | $0.0008 |
twitter_bookmark_search | Full-text search within YOUR authenticated account's bookmarks. | $0.0008 |
twitter_bookmark_folders | List YOUR authenticated account's bookmark FOLDERS (X's internal name: collections), the named groups you can organize saved tweets into, separate from your flat... | $0.0008 |
twitter_bookmark_folder_timeline | Read the tweets inside ONE of your authenticated account's bookmark folders, identified by folder_id (from twitter_bookmark_folders). | $0.0008 |
twitter_dm_list | List YOUR authenticated account's Direct Message conversations (inbox), each with the participant and a conversation_id you can pass to twitter_dm_conversation. | $0.0016 |
twitter_dm_conversation | Get the messages in one Direct Message conversation by its conversation_id (from twitter_dm_list). | $0.0016 |
twitter_draft_list | List the PRIVATE drafts saved on your authenticated account. | $0.0016 |
twitter_scheduled_list | List the posts QUEUED to publish on your authenticated account. | $0.0016 |
twitter_media_status | Check whether an uploaded media_id has finished processing on X, before you attach it to a tweet. | $0.0008 |
twitter_article_get | Read an article's full content (title, content_state, cover media, author, timestamps, public_url). | $0.0008 |
twitter_article_list | List YOUR OWN articles (drafts or published) AS your authenticated account, most recent first. | $0.0008 |
| Write actions (linked session) (30) | ||
twitter_dm_send | Send a Direct Message AS your authenticated account. | $0.0016 |
twitter_create_tweet | Post a new tweet AS your authenticated account. | $0.0016 |
twitter_delete_tweet | Delete a tweet AS your authenticated account. | $0.0008 |
twitter_update_profile | Change the display name, bio, location or link on your authenticated account's own X profile. | $0.0016 |
twitter_update_avatar | Replace the profile picture on your authenticated account's own X profile. | $0.0016 |
twitter_update_banner | Replace the wide header image on your authenticated account's own X profile. | $0.0016 |
twitter_draft_create | Save a PRIVATE draft tweet on your authenticated account. | $0.0016 |
twitter_draft_edit | Replace the contents of one existing PRIVATE draft on your authenticated account. | $0.0016 |
twitter_draft_delete | Delete one PRIVATE draft from your authenticated account by id. | $0.0008 |
twitter_scheduled_create | Schedule a tweet to POST PUBLICLY at a future instant from your authenticated account. | $0.0016 |
twitter_scheduled_delete | Cancel one PENDING scheduled post on your authenticated account so it never publishes. | $0.0008 |
twitter_favorite_tweet | Like (favorite) a tweet AS your authenticated account. | $0.0008 |
twitter_unfavorite_tweet | Remove a like (unfavorite) from a tweet AS your authenticated account. | $0.0008 |
twitter_retweet | Retweet a tweet AS your authenticated account. | $0.0008 |
twitter_unretweet | Undo a retweet AS your authenticated account. | $0.0008 |
twitter_bookmark_tweet | Bookmark a tweet to YOUR authenticated account's private bookmarks. | $0.0008 |
twitter_unbookmark_tweet | Remove a tweet from YOUR authenticated account's bookmarks. | $0.0008 |
twitter_follow_user | Follow a user AS your authenticated account, by numeric user_id or by @handle (provide exactly one). | $0.0008 |
twitter_unfollow_user | Unfollow a user AS your authenticated account, by numeric user_id or by @handle (provide exactly one). | $0.0008 |
twitter_list_add_member | Add one account to a Twitter/X List that YOUR registered X session owns, by numeric list id and numeric user id. | $0.0008 |
twitter_list_remove_member | Remove one account from a Twitter/X List that YOUR registered X session owns, by numeric list id and numeric user id. | $0.0008 |
twitter_list_create | Create a new Twitter/X List owned by YOUR registered X session, with a name and an optional description and privacy flag. | $0.0016 |
twitter_media_upload | Upload an image to X and get a media_id to attach to a tweet via twitter_create_tweet's media_ids. | $0.0008 |
twitter_article_create | Start a new DRAFT article ('Note') AS your authenticated account. | $0.0016 |
twitter_article_update_cover_media | Attach an ALREADY-UPLOADED image as the cover of a DRAFT or PUBLISHED article, AS your authenticated account. | $0.0016 |
twitter_article_update_title | Set or replace the title of a DRAFT or PUBLISHED article AS your authenticated account. | $0.0016 |
twitter_article_update_content | Replace the body content of a DRAFT or PUBLISHED article AS your authenticated account. | $0.0016 |
twitter_article_publish | Publish a DRAFT article AS your authenticated account, transitioning it to Published and posting a REAL, PUBLIC announcement tweet that your followers and anyone with... | $0.0016 |
twitter_article_unpublish | Revert a PUBLISHED article back to Draft AS your authenticated account. | $0.0016 |
twitter_article_delete | Delete an article AS your authenticated account. | $0.0008 |
| Monitors and webhooks (15) | ||
twitter_monitor_create | Start watching an X account for new posts. | Free |
twitter_monitor_list | List every monitor on your account: id, subject (its from:<handle> query), kind, status ('active' or 'paused'), degraded flag, events_possibly_missed, webhook_ids... | Free |
twitter_monitor_update | Partially update an existing monitor: pause or resume it via status, change which webhooks receive its events via webhook_ids, change or clear its domain_filter, or... | Free |
twitter_monitor_delete | Stop and remove a monitor by id. | Free |
twitter_monitor_health | Read one monitor's current status, degradation flag, poll interval, possibly-missed-event count, and cursor position (last_tweet_id, last_poll_at), for building your... | Free |
twitter_monitor_account_health | Account-wide monitoring rollup in ONE call, distinct from twitter_monitor_health (which needs an id and reports one monitor's cursor): service status ('operational'... | Free |
twitter_monitor_deliveries | List your most recent monitor delivery events across every monitor, most recent first: id, monitor_id, tweet_id, status, tweet_created_at, and the real measured... | Free |
twitter_x_user_stream_add_user | Compat drop-in for twitter_monitor_create using an x_user_stream-shaped request/response envelope: watch an X account for new posts, translated onto the same... | Free |
twitter_x_user_stream_remove_user | Compat drop-in for twitter_monitor_delete using an x_user_stream-shaped envelope: stop watching an account. | Free |
twitter_x_user_stream_list_users | Compat drop-in for twitter_monitor_list using an x_user_stream-shaped envelope: list every account you are currently tweet-monitoring. | Free |
twitter_monitor_webhook_create | Register an HTTPS endpoint to receive signed monitor events. | Free |
twitter_monitor_webhook_list | List every webhook registered on your account: id, url, status ('active' delivers, 'disabled' means the endpoint returned a 410 Gone and needs re-registering to... | Free |
twitter_monitor_webhook_delete | Soft-delete a webhook by id: it stops receiving deliveries immediately and disappears from twitter_monitor_webhook_list, but delivery history referencing it is... | Free |
twitter_monitor_webhook_test | Send one HMAC-signed test event to this webhook's URL right now and return the outcome synchronously: delivered (true if your endpoint returned a 2xx within the... | Free |
twitter_monitor_webhook_redrive | Replay deliveries that dead-lettered while your endpoint was down. | Free |
| Credits, session and feedback (9) | ||
twitter_account_me | Get YOUR twitterapis.com account details: email, name, credits remaining, credits used, total requests made, and account creation date. | Free |
twitter_account_payments | Get YOUR twitterapis.com payment history: the list of top-ups and charges on your account. | Free |
twitter_feedback_send | Report a product problem or gap in twitterapis.com to its team from inside this session, the way Claude Code's own feedback tool works: a report is DRAFTED to a local... | Free |
twitter_feedback_get | Check the status of a feedback report this account sent earlier (the server id returned by twitter_feedback_send action "send"): status new, triaged, shipped or... | Free |
twitter_feedback_list | List the feedback reports this account has already SENT to twitterapis.com, newest first. | Free |
twitter_customer_session | Register YOUR OWN X account session against your API key, so the authenticated-account tools (twitter_home_timeline, twitter_bookmarks, twitter_dm_list,... | Free |
twitter_customer_session_status | Read back the X account session you registered with twitter_customer_session, without changing it. | Free |
twitter_customer_session_delete | Revoke the X account session you registered with twitter_customer_session, deleting the stored auth_token and ct0 from twitterapis.com. | Free |
twitter_user_login | Log in to X with a username and password (plus totp_secret if the account has 2FA) and store the resulting session against your API key, so the authenticated-account... | $0.01 |
Generated from @twitterapis/mcp@0.19.0.
TRY IT
Example prompts that work on day one
You do not call the tools yourself. Ask in plain language and the client picks the tool, fills in the arguments and pages with the returned cursor. These prompts are written against the tools as they exist in the current release, and each names the tools the model usually reaches for, so the cost of a request is easy to read.
“Find posts from the last 24 hours about MCP servers with more than 50 likes and summarise the arguments.”
twitter_advanced_search
“Pull @vercel's last 50 posts and tell me which topics got the most replies.”
twitter_user_tweets, twitter_tweet_detail
“Reconstruct this thread and list every reply that disagrees with the author.”
twitter_tweet_thread, twitter_tweet_replies
“Which accounts both follow @openai and are verified? Give me the top 20 by followers.”
twitter_user_verified_followers, twitter_user_info
“Watch @stripe for new posts and send each one to my webhook.”
twitter_monitor_webhook_create, twitter_monitor_create
“Draft a reply to this post and save it as a private draft, do not publish it.”
twitter_draft_create
“How much credit is left on this key before I start a long research run?”
twitter_account_me
CONNECT
Two ways to attach the server
The hosted server needs nothing installed: point your client at the URL and sign in when it asks. The npx server runs on your own machine and takes your key from an env block. Both expose the same tools; pick on where you want the process and the key to live.
| Path | How to add it | Where it wins | What it asks of you |
|---|---|---|---|
| Hosted (recommended) https://api.twitterapis.com/mcp | Add the URL as a remote MCP server in your client. It answers the first call with a sign-in prompt, you approve once, and the client holds the session from then on. | Nothing to install, no Node, no key pasted into a config file, and nothing to keep running. | Needs a browser for the one-time sign-in, and a client that supports remote MCP servers. |
| Local (npx) npx -y @twitterapis/mcp | Add it as a command-type server with TWITTERAPIS_KEY in the env block. The client starts the process and talks to it over stdin and stdout. | Works in any MCP client with no browser, so CI runners and headless boxes can use it. The key stays in your own environment. | Needs Node 18 or newer (the package declares engines >=18), and the key sits in your client config in plaintext. |
The hosted server authenticates you, so there is no key to paste, but it is not anonymous: you still sign in to a TwitterAPIs account and calls bill to it exactly as they do over npx.
Which client can use which path
Remote MCP over HTTP with a sign-in is newer than the local stdio transport, so support is not even across clients. The npx path is the one that works everywhere; pick on what your client supports today, not on which is newer.
| Client | Hosted URL | npx | What to know |
|---|---|---|---|
| Claude desktop app | Yes | Yes | Add the hosted URL as a connector and approve the sign-in once, or add npx as a local server. |
| Claude on the web | Yes | No | A browser tab cannot start a local process, so the hosted URL is the only path. Custom connector availability depends on your Claude plan; check yours before relying on it. |
| Claude Code | Yes | Yes | claude mcp add takes either a URL or a command. |
| Cursor | Yes | Yes | Both forms go in the MCP settings file. |
| An agent you wrote | Depends on your SDK | Yes | Any MCP client library speaks stdio; remote needs one that implements the HTTP transport and an OAuth flow. |
| CI, a container, a headless box | No | Yes | The sign-in needs a browser once, so the hosted path is out. npx still needs network access to the API; what it removes is the browser, not the network. |
AUTH AND PRICING
One key, billed per call
Every read tool authenticates with your TwitterAPIs account and nothing else: the bearer key in TWITTERAPIS_KEY when you run the server with npx, or a sign-in when you add the hosted server. No X developer app, no X OAuth screen, no scope review. Tools that act as an X account use a session you link once, either by pasting cookies from your own browser or by the login tool. Billing is per call from your credit balance.
| What | How it works | Cost |
|---|---|---|
| Read tools | Search, tweets, users, the follower graph, lists, Spaces, Communities, trends. | $0.0008 per call |
| Full thread and full history | twitter_tweet_thread expands a whole thread; twitter_user_tweets_complete paginates an account's history server-side. | $0.004 and $0.0024 per call |
| Write actions | Post, reply, like, retweet, follow, DM, drafts and scheduled posts, as your linked X session. | From $0.0008; tweet creation $0.0016 |
| Monitors and webhooks | Watch accounts for new posts and deliver signed events to your endpoint. One monitored account is free; more accounts are a monthly monitoring plan. | Free per call; plans from $15 a month |
| Credits and feedback | twitter_account_me, payment history and the feedback tools are never metered. | Free |
| Signup credit | Every new account, no card on file. | $0.50 free |
Full rate card: pricing. Estimate a workload first with the cost calculator.
RATE LIMITS
Rate limits, and what a 429 means
There is one ceiling per API key, and it is the same for the MCP tools and the REST endpoints because they are the same calls. There are no 15-minute or 24-hour windows per endpoint to track. Every response carries the headers an agent needs to pace itself before it ever sees a refusal.
| Limit | Value |
|---|---|
| Requests per minute | 600 per API key |
| Concurrent requests in flight | 20 per API key |
| Over either limit | HTTP 429 with a Retry-After header |
| Headers on every response | X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset |
Need a higher ceiling for a batch agent? Email emma@twitterapis.com. Full detail on the rate limits page.
VERSUS X'S OFFICIAL MCP
Beyond X's own MCP server at api.x.com/mcp
X runs a hosted MCP server at api.x.com/mcp, and it is the right choice if you already build on the official X API. Every statement about it in this table was read from X's own documentation on 2026-09-24, with the source linked underneath. Anything we could not confirm there is left out.
| Question | TwitterAPIs MCP | X MCP (api.x.com/mcp) |
|---|---|---|
| What you need before the first call | One API key from signup | Your own X developer app, created in the X Developer Portal |
| How it authenticates | A bearer key in the env block (npx), or a TwitterAPIs sign-in for the hosted server | OAuth 2.0 PKCE through the local xurl bridge, with a browser login on first run, or an app-only bearer token for read endpoints with no user context |
| Client registration | Not needed | No dynamic client registration; the bridge owns your app identity |
| How reads are billed | $0.0008 per call, up to 20 tweets per page | Pay-per-usage from a balance you prepay: $0.005 per post read, $0.010 per user read |
| Volume ceiling | 600 requests a minute per key | Pay-per-usage plans capped at 3 million post reads per monthly billing cycle |
| Webhook endpoints | Monitors and signed webhooks as MCP tools | X's open-source xmcp server excludes streaming and webhook endpoints |
| Starting cost | $0.50 free credit, no card | A prepaid balance bought in the X Developer Console |
Sources, read 2026-09-24: docs.x.com/tools/mcp, X API pricing, xdevplatform/xmcp README. Also true on X's side, and worth knowing: its server searches the full post archive and supports bookmark and Article writes when you use the OAuth route.
Build your own MCP server, or use ours
Most Twitter MCP servers on GitHub are thin wrappers over the official X API. They work, but you inherit the X API setup and its limits. Here is the honest trade-off against the TwitterAPIs server.
Roll your own on the official X API
- Create an X developer app in the Developer Console before the first call.
- Set up OAuth 1.0a or OAuth 2.0 with PKCE, manage token refresh, and store secrets per user.
- Prepay an X API balance: $0.005 per post read and $0.010 per user read, with pay-per-usage capped at 3 million post reads a month (X pricing docs, checked 2026-09-24).
- Maintain rate-limit handling and the v1.1 to v2 fallbacks yourself.
The TwitterAPIs MCP server (live on npm)
- One line to install and one API key in the env block, no developer-account review.
- Read tools work with just your TwitterAPIs key or hosted sign-in. No X OAuth screen to wire up for search, profiles, and followers.
- Write actions (post, like, retweet, follow, DM) act as a linked X account, billed from $0.0008.
- Pay per call from $0.0008, no monthly subscription and no tier gate on read endpoints.
- Open-sourced on GitHub. The same read endpoints are also callable over REST with the same key.
TROUBLESHOOTING
Symptom, cause and fix
Most setup problems come down to a handful of causes: invalid config, a missing or wrong key, an empty balance, a write tool called without a linked session, or a burst past the per-key ceiling. Match what you see in the left column. For anything not listed, the server can draft a feedback report you review before it is sent.
| Symptom | Fix |
|---|---|
| The twitter_* tools never appear | Check the config is valid JSON, that npx is on your PATH and Node.js is 18 or newer, then fully restart the client. In Claude Code, run claude mcp list to see the server's status. |
| claude mcp add fails on -y | Put every option before the server command and the command after a bare --: claude mcp add twitterapis --env TWITTERAPIS_KEY=... -- npx -y @twitterapis/mcp@latest. |
| HTTP 401 | TWITTERAPIS_KEY is missing or wrong in the env block. Copy the key again from the dashboard and restart the client. |
| HTTP 402 | The credit balance is spent. Top up on the pricing page; twitter_account_me shows the balance for free. |
| A write tool says no session | Write actions act as an X account. Link one with twitter_customer_session, then check it with twitter_customer_session_status. |
| HTTP 429 | You passed 600 requests a minute or 20 in flight. Wait for the Retry-After value and cap concurrency in the agent. |
| Fewer tweets than asked for | Search pages return about 20 tweets each. Pass the returned cursor back to read the next page. |
DOCS
Docs, llms.txt and the source
If your agent reads documentation before it acts, point it at llms.txt: it lists every public page and endpoint in plain text. The API reference documents the endpoint behind each tool with its parameters and response fields, and the npm package and GitHub repository carry the catalog and changelog for the exact version you run.
- llms.txt, the site index for agents
- llms-full.txt, the full-text version
- API reference, every endpoint behind the tools
- @twitterapis/mcp on npm, README, catalog and releases
- Source on GitHub, the open-source server
- Twitter MCP server guide, the long-form walkthrough
FAQ
Everything developers ask before they switch their X API stack to MCP.
What is the Model Context Protocol (MCP)?
MCP is an open protocol from Anthropic for connecting AI assistants to external tools and data. An MCP server exposes a set of tools (with typed inputs and outputs) that any compliant client (Claude Desktop, Cursor, Cline, Continue, others) can call during a conversation. The TwitterAPIs MCP server turns the TwitterAPIs Twitter/X API into MCP tools so Claude can search tweets, fetch profiles, list followers, read threads, post, and more.
How does the TwitterAPIs MCP server compare to the official X API?
The official X (Twitter) API bills pay-per-usage from a balance you prepay ($0.005 per post read on X's own rate card) and needs your own X developer app and an OAuth flow per user. TwitterAPIs is pay-per-call from $0.0008 per request, with no subscriptions and no developer-account review. The MCP server adds zero overhead beyond your existing TwitterAPIs API key. Same endpoints and pricing as calling TwitterAPIs directly, just exposed as MCP tools.
What does it cost to use the MCP server?
Nothing extra for the server itself. Every tool call hits the underlying TwitterAPIs endpoint and is billed at the standard rate of $0.0008 per read call (search, profile, followers, threads). Your first $0.50 in calls are on the house.
Which MCP clients does this work with?
Any client that implements the MCP spec: Claude Desktop, Claude Code, Cursor, VS Code (Copilot agent mode), Windsurf, Cline, Continue, and any MCP-compatible runtime, including custom agents built on the Anthropic SDK with the MCP transport layer.
Can the MCP server post tweets or write to X?
Yes. Alongside the read tools, the server exposes write actions: create a tweet (reply or quote), like, retweet, bookmark, follow, and send a DM. Write actions act as a linked X account (or per-call inline credentials) rather than just your API key, and because X soft-blocks writes from datacenter IPs they run through a residential proxy. Tweet creation is $0.0016 per call and the simpler write actions are $0.0008.
How can I give Claude Twitter access today?
Install the MCP server with npx -y @twitterapis/mcp@latest, add the config block to your MCP client (Claude Desktop, Cursor, or Cline), and restart the client. The tools appear automatically. You can also call the TwitterAPIs REST endpoints directly: each one is a single HTTP GET with an Authorization: Bearer TWITTERAPIS_KEY header, no X developer account and no X OAuth screen.
How do I get started?
Sign up at twitterapis.com/signup, generate an API key from the dashboard, and run npx -y @twitterapis/mcp@latest. Drop your key into the TWITTERAPIS_KEY env var in your MCP client config. Email emma@twitterapis.com if you have questions.
Is the TwitterAPIs MCP server available yet?
Yes. The MCP server is published on npm as @twitterapis/mcp and open-sourced on GitHub. Install it with npx -y @twitterapis/mcp@latest and drop a small config block into your MCP client. You can also call every endpoint directly over plain HTTP with your bearer key; see the Twitter search API and Twitter scraper pages.
How is the TwitterAPIs MCP server different from X's official MCP server?
X shipped its own hosted MCP server at api.x.com/mcp in June 2026, and it is a good fit if you already run on the official X API: it authenticates through your own X developer app over OAuth 2.0 and bills on X's pay-per-usage API pricing from a balance you prepay (both checked against X's own docs on 2026-09-24). The TwitterAPIs MCP server is built for the case where you do not want that setup. It authenticates with your TwitterAPIs account (a bearer key from signup, or a sign-in on the hosted server at api.twitterapis.com/mcp), needs no X developer account and no X OAuth app, exposes the full read and write toolset (search, profiles, the follower graph, threads, plus post, like, retweet, and DM), and bills pay-per-call from $0.0008 per request, which is about $0.04 per 1,000 tweets when a call returns a full 20-tweet page, with a $0.50 starting credit. Use X's server if you want the platform-native option and already pay for the X API; use this one for the cheapest pay-as-you-go path to Twitter and X data inside an agent without a developer-account review.
Do I need a TwitterAPIs API key?
Yes. Sign up at twitterapis.com/signup (Google or email), generate an API key from the dashboard, then drop it into the env block of your MCP client config (TWITTERAPIS_KEY). The MCP server reads the key at startup and forwards it on every tool call. The same key works against the REST endpoints too.
What can I read through the MCP server?
The server exposes the TwitterAPIs read surface as MCP tools: advanced tweet search (twitter_advanced_search), single-tweet detail (twitter_tweet_detail), replies, retweeters, threads, user info and search, user timelines, mentions, the follower and following graph, verified followers, and list members. Every call is gated by your TwitterAPIs API key.
Is there a rate limit on the MCP server?
The MCP server itself adds no limit of its own. The underlying TwitterAPIs API allows 600 requests a minute and 20 concurrent requests per API key, well above what an interactive Claude or Cursor session can hit; past either one you get a 429 with a Retry-After header. If you are running a high-throughput batch agent, email emma@twitterapis.com and we will raise the ceiling.
Is there a free Twitter MCP server?
The TwitterAPIs MCP server is free to install. Calls are billed per request from $0.0008, and your first $0.50 in usage is free, which covers about 625 read calls before you add a cent. Most open-source Twitter MCP servers are free to run but sit on top of the official X API, where every read is billed from a balance you prepay, $0.005 per post read on X's own rate card (checked 2026-09-24). TwitterAPIs bills $0.0008 per call and has no tier gates on read endpoints.
Where to find us
TwitterAPIs is listed across developer marketplaces and covered in the community. The MCP server is published on npm as @twitterapis/mcp and open-sourced on GitHub.
Ready to give Claude a Twitter/X brain?
Install the MCP server with one command, or call the read endpoints over REST directly. $0.50 free credits cover the first 625 calls.