MCP SERVER
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.
Get your API keyWhat 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, 70 of 121 endpoints bill that rate (source: twitterapis.com/pricing).
BY THE NUMBERS
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.
116
MCP tools
70 reads and 46 write actions, one tool per REST endpoint.
121
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, Codex, 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" }
}
}
}terminal
claude mcp add twitterapis --scope user \
--env TWITTERAPIS_KEY=YOUR_API_KEY \
-- npx -y @twitterapis/mcp@latest~/.cursor/mcp.json (or .cursor/mcp.json)
{
"mcpServers": {
"twitterapis": {
"command": "npx",
"args": ["-y", "@twitterapis/mcp@latest"],
"env": { "TWITTERAPIS_KEY": "YOUR_API_KEY" }
}
}
}~/.codex/config.toml (or .codex/config.toml)
[mcp_servers.twitterapis]
command = "npx"
args = ["-y", "@twitterapis/mcp@latest"]
[mcp_servers.twitterapis.env]
TWITTERAPIS_KEY = "YOUR_API_KEY"
# Or register it from a terminal instead of editing the file:
# codex mcp add twitterapis --env TWITTERAPIS_KEY=YOUR_API_KEY -- npx -y @twitterapis/mcp@latest.vscode/mcp.json (Copilot agent mode)
{
"servers": {
"twitterapis": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@twitterapis/mcp@latest"],
"env": { "TWITTERAPIS_KEY": "YOUR_API_KEY" }
}
}
}~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"twitterapis": {
"command": "npx",
"args": ["-y", "@twitterapis/mcp@latest"],
"env": { "TWITTERAPIS_KEY": "YOUR_API_KEY" }
}
}
}cline_mcp_settings.json
{
"mcpServers": {
"twitterapis": {
"command": "npx",
"args": ["-y", "@twitterapis/mcp@latest"],
"env": { "TWITTERAPIS_KEY": "YOUR_API_KEY" }
}
}
}stdio server fields
command: npx
args: -y @twitterapis/mcp@latest
env: TWITTERAPIS_KEY=YOUR_API_KEY
node: 18 or newer on the PATHWhat 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_searchPull 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_tweetsReconstruct 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_repliesBuild 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_followersSync 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_followersMention 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_mentionsThe 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 onlytwitter_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 onlytwitter_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 onlytwitter_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 sessiontwitter_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 116 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 (7) | ||
twitter_advanced_search | Searches recent tweets with X's advanced-search operators: from:, to:, since:YYYY-MM-DD, until:YYYY-MM-DD, min_faves:N, min_retweets:N, filter:links, -filter:replies,... | $0.0008 |
twitter_tweet_detail | Returns the full detail of a single tweet: text, author profile, post timestamp, like/retweet/reply/quote counts (quote_count is X's own total of quote tweets),... | $0.0008 |
twitter_tweet_replies | Returns replies to a specific tweet, each with author, text and metrics, cursor-paginated. | $0.0008 |
twitter_tweet_replies_complete | Returns every direct reply under a tweet in one call, walking the reply pages server-side: { count, next_cursor, has_more, is_complete, pages_fetched, sort, tweets }. | $0.0024 |
twitter_tweet_thread | Returns 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 | Lists the accounts that retweeted a specific tweet, with profile data for each retweeter, cursor-paginated. | $0.0008 |
twitter_tweet_quotes | Lists the tweets that QUOTE a specific tweet, cursor-paginated as full tweet objects, so each carries the commentary attached rather than just a number. | $0.0008 |
| Users and the follower graph (22) | ||
twitter_user_search | Searches Twitter/X user accounts by display name or handle (X's People search). | $0.0008 |
twitter_user_info | Returns a user's complete public profile by @handle: display name, bio, follower count, following count, verification status, location, website, account creation... | $0.0008 |
twitter_user_info_by_id | Returns a user's complete public profile by numeric user id: display name, bio, follower and following counts, verification status, location, website, account... | $0.0008 |
twitter_user_status | Reports whether a Twitter/X account is alive, suspended, or deleted. | $0.0008 |
twitter_user_about | Returns a user's full 'About' object: the structured profile facts X surfaces beyond the bio, including account category and professional/business labels,... | $0.0008 |
twitter_user_about_batch | Returns the 'About' object (account country, how the account was created, username-change history, verification and the other About fields) for up to 100 accounts in... | $0.0008 per item |
twitter_user_affiliates | Lists 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 | Returns the follow relationship between two accounts: whether the source follows the target, whether the target follows the source, and blocking/muting flags where... | $0.0008 |
twitter_check_follow_relationship_batch | Checks one account against up to 100 others in one call. | $0.0008 per item |
twitter_audience_summary | Summarises an audience 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 account's... | $0.0008 per item |
twitter_user_tweets | Returns a user's recent posting timeline, cursor-paginated further back. | $0.0008 |
twitter_user_tweets_and_replies | Returns a user's full activity timeline: their original tweets and their replies to others, cursor-paginated. | $0.0008 |
twitter_user_tweets_complete | Returns a large batch of a user's tweet history in one call, auto-paginating server-side across upstream pages: { count, next_cursor, has_more, tweets }. | $0.0024 |
twitter_user_media | Returns the images and videos a user has posted: media-containing tweets with URLs to the media files, dimensions, and type (photo/video/animated_gif), cursor-paginated. | $0.0008 |
twitter_user_mentions | Returns recent public tweets that mention (@ tag) a user, found with the to: search operator, with author info and metrics, cursor-paginated. | $0.0008 |
twitter_user_likes | Returns the tweets a user has liked (their public Likes tab), most recent first, each with author and metrics, plus a pagination cursor. | $0.0008 |
twitter_user_followers | Lists the accounts that follow a given user, with profile data for each follower (username, display name, bio, follower count), cursor-paginated for large audiences. | $0.0008 |
twitter_user_following | Lists the accounts a given user follows, with profile data for each account followed, cursor-paginated. | $0.0008 |
twitter_user_followers_v2 | Lists a user's followers in the v2 response shape: richer profile fields and more reliable cursoring for deep follower lists. | $0.0008 |
twitter_user_following_v2 | Lists the accounts a user follows in the v2 response shape: richer profile fields and more reliable cursoring for deep following lists. | $0.0008 |
twitter_user_verified_followers | Lists a user's followers that have a verified account (checkmark), cursor-paginated: the follower list filtered to verified accounts, which surfaces notable or... | $0.0008 |
twitter_creator_commentary_video | Ranks the accounts posting native video about a topic. | $0.0008 |
| Lists, Spaces, Communities and trends (14) | ||
twitter_list_members | Lists the members of a Twitter/X List by its numeric list id, with profile data for each member, cursor-paginated. | $0.0008 |
twitter_list_followers | Lists a public List's followers by its numeric id, cursor-paginated. | $0.0008 |
twitter_list_tweets | Returns the posts written by the members of a public Twitter/X List, newest first, through X's search index. | $0.0008 |
twitter_list_timeline | Returns 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 | Finds X Communities by keyword, cursor-paginated, returning each community's id. | $0.0008 |
twitter_community_info | Returns 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 | Lists 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 | Lists the moderators and admins of an X Community, cursor-paginated, in { user, role } rows (the array is named members). | $0.0008 |
twitter_community_tweets | Returns an X Community's own post timeline, cursor-paginated as full tweet objects, with the community's PINNED post in its own separate 'pinned' field rather than as... | $0.0008 |
twitter_community_memberships | The INVERSE community lookup: given a numeric X USER id, lists the communities that account belongs to, cursor-paginated. | $0.0008 |
twitter_trends | Returns the current top trends for a location, or for one of X's Explore topic tabs. | $0.0008 |
twitter_trends_locations | Lists every location X publishes trends for, each with its name and numeric WOEID. | $0.0008 |
| Your own X account (linked session) (17) | ||
twitter_followers_you_know | Lists the 'Followers you know' for a target user id: the followers of that account that the authenticated account also follows (mutual-connection overlap). | $0.0008 |
twitter_grok_chat | Asks X's own Grok a question as the authenticated account and returns ONE complete JSON reply: the answer text, citations (url, domain, title, snippet) merged and... | $0.004 |
twitter_grok_config | Reports whether the authenticated account can use Grok, and which models it may pick: eligibility, X's own reasons when it is NOT eligible (passed through verbatim,... | Free |
twitter_home_timeline | Returns the authenticated account's Home timeline (the 'Following'/'For you' feed), most recent first: what that account sees when it opens X. | $0.0008 |
twitter_bookmarks | Lists the authenticated account's bookmarked tweets, most recent first. | $0.0008 |
twitter_blocking | Lists the accounts the authenticated account has BLOCKED, as full user objects, cursor-paginated. | $0.0008 |
twitter_muting | Lists the accounts the authenticated account has MUTED, as full user objects, cursor-paginated. | $0.0008 |
twitter_bookmark_search | Full-text search within the authenticated account's bookmarks. | $0.0008 |
twitter_bookmark_folders | Lists the authenticated account's bookmark FOLDERS (X's internal name: collections), the named groups saved tweets can be organised into, separate from the flat... | $0.0008 |
twitter_bookmark_folder_timeline | Returns the tweets inside ONE of the authenticated account's bookmark folders, identified by folder_id. | $0.0008 |
twitter_dm_list | Lists the authenticated account's Direct Message conversations (inbox), each with the participant and its conversation_id. | $0.0016 |
twitter_dm_conversation | Returns the messages in one Direct Message conversation by its conversation_id. | $0.0016 |
twitter_draft_list | Lists the PRIVATE drafts saved on the authenticated account, the source of draft ids for an edit or a delete. | $0.0016 |
twitter_scheduled_list | Lists the posts QUEUED to publish on the authenticated account: the source of scheduled ids for a cancel, and a record of what is already queued. | $0.0016 |
twitter_media_status | Reports whether an uploaded media_id has finished processing on X. | $0.0008 |
twitter_article_get | Returns an article's full content (title, content_state, cover media, author, timestamps, public_url). | $0.0008 |
twitter_article_list | Lists the authenticated account's own articles (drafts or published), most recent first. | $0.0008 |
| Write actions (linked session) (32) | ||
twitter_dm_send | Sends a Direct Message as the authenticated account to a recipient's numeric user id (recipient_id) with the message text. | $0.0016 |
twitter_create_tweet | Posts a new tweet as the authenticated account. | $0.0016 |
twitter_delete_tweet | Deletes a tweet as the authenticated account. | $0.0008 |
twitter_update_profile | Changes the display name, bio, location or link on the authenticated account's own X profile. | $0.0016 |
twitter_update_avatar | Replaces the profile picture on the authenticated account's own X profile. | $0.0016 |
twitter_update_banner | Replaces the wide header image on the authenticated account's own X profile. | $0.0016 |
twitter_draft_create | Saves a PRIVATE draft tweet on the authenticated account. | $0.0016 |
twitter_draft_edit | Replaces the contents of one existing PRIVATE draft on the authenticated account. | $0.0016 |
twitter_draft_delete | Deletes one PRIVATE draft from the authenticated account by id. | $0.0008 |
twitter_scheduled_create | Schedules a tweet to POST PUBLICLY at a future instant from the authenticated account. | $0.0016 |
twitter_scheduled_delete | Cancels one PENDING scheduled post on the authenticated account so it does not publish. | $0.0008 |
twitter_favorite_tweet | Likes (favorites) a tweet as the authenticated account. | $0.0008 |
twitter_unfavorite_tweet | Removes a like (unfavorite) from a tweet as the authenticated account. | $0.0008 |
twitter_retweet | Retweets a tweet as the authenticated account. | $0.0008 |
twitter_unretweet | Undoes a retweet as the authenticated account. | $0.0008 |
twitter_bookmark_tweet | Bookmarks a tweet to the authenticated account's private bookmarks. | $0.0008 |
twitter_unbookmark_tweet | Removes a tweet from the authenticated account's bookmarks. | $0.0008 |
twitter_follow_user | Follows a user as the authenticated account, by numeric user_id or by @handle (exactly one of the two). | $0.0008 |
twitter_unfollow_user | Unfollows a user as the authenticated account, by numeric user_id or by @handle (exactly one of the two). | $0.0008 |
twitter_list_add_member | Adds one account to a Twitter/X List that the registered X session owns, by numeric list id and numeric user id. | $0.0008 |
twitter_list_remove_member | Removes one account from a Twitter/X List that the registered X session owns, by numeric list id and numeric user id. | $0.0008 |
twitter_list_create | Creates a new Twitter/X List owned by the registered X session, with a name and an optional description and privacy flag. | $0.0016 |
twitter_community_join | Joins an X Community as the authenticated account, by numeric community id. | $0.0008 |
twitter_community_leave | Leaves an X Community as the authenticated account, by numeric community id. | $0.0008 |
twitter_media_upload | Uploads an image to X and returns a media_id for a tweet's media_ids. | $0.0008 |
twitter_article_create | Starts a new DRAFT article ('Note') as the authenticated account. | $0.0016 |
twitter_article_update_cover_media | Attaches an ALREADY-UPLOADED image as the cover of a DRAFT or PUBLISHED article, as the authenticated account. | $0.0016 |
twitter_article_update_title | Sets or replaces the title of a DRAFT or PUBLISHED article as the authenticated account. | $0.0016 |
twitter_article_update_content | Replaces the body content of a DRAFT or PUBLISHED article as the authenticated account. | $0.0016 |
twitter_article_publish | Publishes a DRAFT article as the authenticated account, transitioning it to Published and posting a REAL, PUBLIC announcement tweet that followers and anyone with the... | $0.0016 |
twitter_article_unpublish | Reverts a PUBLISHED article back to Draft as the authenticated account. | $0.0016 |
twitter_article_delete | Deletes an article as the authenticated account. | $0.0008 |
| Monitors and webhooks (15) | ||
twitter_monitor_create | Starts 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 updates 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 | Stops and removes a monitor by id. | Free |
twitter_monitor_health | Returns one monitor's current status, degradation flag, poll interval, possibly-missed-event count, and cursor position (last_tweet_id, last_poll_at), for a health... | Free |
twitter_monitor_account_health | Account-wide monitoring rollup in ONE call, with no monitor id: service status ('operational' or 'degraded'), active/paused/total counts across every monitor on the... | Free |
twitter_monitor_deliveries | Lists the 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 | Compatibility endpoint with an x_user_stream-shaped request/response envelope: watches an X account for new posts, translated onto the same underlying monitor system. | Free |
twitter_x_user_stream_remove_user | Compatibility endpoint with an x_user_stream-shaped envelope: stops watching an account. | Free |
twitter_x_user_stream_list_users | Compatibility endpoint with an x_user_stream-shaped envelope: lists every account currently tweet-monitored. | Free |
twitter_monitor_webhook_create | Registers an HTTPS endpoint to receive signed monitor events. | Free |
twitter_monitor_webhook_list | Lists every webhook registered on the 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-deletes a webhook by id: it stops receiving deliveries immediately and disappears from the webhook list, but delivery history referencing it is retained rather... | Free |
twitter_monitor_webhook_test | Sends one HMAC-signed test event to this webhook's URL right now and returns the outcome synchronously: delivered (true if the endpoint returned a 2xx within the... | Free |
twitter_monitor_webhook_redrive | Replays deliveries that dead-lettered while the endpoint was down. | Free |
| Credits, session and feedback (9) | ||
twitter_account_me | Returns your twitterapis.com account details: email, name, credits remaining, credits used, total requests made, and account creation date. | Free |
twitter_account_payments | Returns your twitterapis.com payment history: the list of top-ups and charges on the account. | Free |
twitter_feedback_send | Reports a product problem or gap in twitterapis.com to its team from inside this session. | Free |
twitter_feedback_get | Returns the status of a feedback report this account sent earlier, by its server id: status new, triaged, shipped or declined, the team's response text if any, and... | Free |
twitter_feedback_list | Lists the feedback reports this account has already SENT to twitterapis.com, newest first: server-side reports, not local drafts that are still unsent. | Free |
twitter_customer_session | Registers your own X account session against the API key, so the authenticated-account reads (home timeline, bookmarks, DMs, likes, articles) and the write actions... | Free |
twitter_customer_session_status | Reads back the X account session registered against this API key, without changing it. | Free |
twitter_customer_session_delete | Revokes the X account session registered against this API key, deleting the stored auth_token and ct0 from twitterapis.com. | Free |
twitter_user_login | Logs in to X with a username and password (plus totp_secret if the account has 2FA) and stores the resulting session against the API key, so the authenticated-account... | $0.01 |
Generated from @twitterapis/mcp@0.25.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_meCONNECT
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.
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.
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.
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.
Any client that implements the MCP spec: Claude Desktop, Claude Code, Cursor, OpenAI Codex, 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.