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.

Get your API key

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_search Advanced search with operators, filters, and date ranges
  • twitter_tweet_detail Look up a single tweet by ID with full metadata
  • twitter_tweet_replies Pull the replies under a tweet with pagination
  • twitter_tweet_retweeters List the accounts that retweeted a tweet
  • twitter_tweet_thread Reconstruct a full self-thread from a tweet ID

User and graph tools

TWITTERAPIS_KEY only

  • twitter_user_info Profile, bio, follower and following counts for a handle
  • twitter_user_tweets Pull a handle's recent posts
  • twitter_user_mentions Read an account's mentions (a to:username search)
  • twitter_user_followers List an account's followers with pagination
  • twitter_user_following List the accounts a handle follows
  • twitter_user_verified_followers List an account's verified followers

Additional read tools

TWITTERAPIS_KEY only

  • twitter_user_search Search for users by display name or handle
  • twitter_user_info_by_id Look up a user profile by numeric user ID
  • twitter_user_tweets_and_replies Pull a handle's tweets and replies together
  • twitter_user_media List a user's media (images and video) tweets
  • twitter_list_members List the members of an X list by list ID

Write actions

Linked X session

  • twitter_create_tweet Post a tweet, reply, or quote
  • twitter_favorite_tweet Like a tweet (undo with twitter_unfavorite_tweet)
  • twitter_retweet Retweet a post (undo with twitter_unretweet)
  • twitter_follow_user Follow an account (undo with twitter_unfollow_user)
  • twitter_dm_send Send 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.

ToolWhat it doesPrice per call
Tweets and threads (6)
twitter_advanced_searchSearch recent tweets using X's advanced-search operators.$0.0008
twitter_tweet_detailGet 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_repliesGet replies to a specific tweet.$0.0008
twitter_tweet_threadGet 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_retweetersList the accounts that retweeted a specific tweet.$0.0008
twitter_tweet_quotesList 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_searchSearch 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_infoGet 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_idGet a user's complete public profile by their numeric user id.$0.0008
twitter_user_statusCheck whether a Twitter/X account is alive, suspended, or deleted.$0.0008
twitter_user_aboutGet 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_batchGet 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_affiliatesList 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_relationshipCheck 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_batchCheck one account against up to 100 others in ONE call.$0.0008 per item
twitter_audience_summarySummarise 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_tweetsGet a user's recent posting timeline.$0.0008
twitter_user_tweets_and_repliesGet a user's full activity timeline: their original tweets AND replies to others.$0.0008
twitter_user_tweets_completeGet a large batch of a user's tweet history in one call, auto-paginating server-side across upstream pages.$0.0024
twitter_user_mediaGet the images and videos a user has posted.$0.0008
twitter_user_mentionsGet recent public tweets that mention (@ tag) a user.$0.0008
twitter_user_likesGet the tweets a user has liked (their public Likes tab), most recent first.$0.0008
twitter_user_followersList the accounts that follow a given user.$0.0008
twitter_user_followingList the accounts that a given user follows.$0.0008
twitter_user_followers_v2List a user's followers using the v2 response shape (richer profile fields and more reliable cursoring for large audiences).$0.0008
twitter_user_following_v2List the accounts a user follows using the v2 response shape (richer profile fields and more reliable cursoring).$0.0008
twitter_user_verified_followersList a user's followers who have a verified account (checkmark).$0.0008
Lists, Spaces, Communities and trends (14)
twitter_list_membersList the members of a Twitter/X List by its numeric list id.$0.0008
twitter_list_followersFetch a public List's followers by its numeric id, cursor-paginated.$0.0008
twitter_list_tweetsRead the posts written by the members of a public Twitter/X List, newest first, through X's search index.$0.0008
twitter_list_timelineRead 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_infoGet 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_searchFind X Communities by keyword, cursor-paginated.$0.0008
twitter_community_infoGet 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_aboutThe 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_membersList 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_moderatorsList 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_tweetsRead 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_membershipsThe INVERSE community lookup: given a numeric X USER id, list the communities that account belongs to, cursor-paginated.$0.0008
twitter_trendsGet the current top trends for a location.$0.0008
twitter_trends_locationsList 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_knowList 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_chatAsk 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_configCheck whether the authenticated account can use Grok, and which models it may pick.Free
twitter_home_timelineGet YOUR authenticated account's Home timeline (the 'Following'/'For you' feed), most recent first.$0.0008
twitter_bookmarksList YOUR authenticated account's bookmarked tweets, most recent first.$0.0008
twitter_blockingList the accounts YOUR authenticated account has BLOCKED, as full user objects, cursor-paginated.$0.0008
twitter_mutingList the accounts YOUR authenticated account has MUTED, as full user objects, cursor-paginated.$0.0008
twitter_bookmark_searchFull-text search within YOUR authenticated account's bookmarks.$0.0008
twitter_bookmark_foldersList 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_timelineRead the tweets inside ONE of your authenticated account's bookmark folders, identified by folder_id (from twitter_bookmark_folders).$0.0008
twitter_dm_listList 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_conversationGet the messages in one Direct Message conversation by its conversation_id (from twitter_dm_list).$0.0016
twitter_draft_listList the PRIVATE drafts saved on your authenticated account.$0.0016
twitter_scheduled_listList the posts QUEUED to publish on your authenticated account.$0.0016
twitter_media_statusCheck whether an uploaded media_id has finished processing on X, before you attach it to a tweet.$0.0008
twitter_article_getRead an article's full content (title, content_state, cover media, author, timestamps, public_url).$0.0008
twitter_article_listList YOUR OWN articles (drafts or published) AS your authenticated account, most recent first.$0.0008
Write actions (linked session) (30)
twitter_dm_sendSend a Direct Message AS your authenticated account.$0.0016
twitter_create_tweetPost a new tweet AS your authenticated account.$0.0016
twitter_delete_tweetDelete a tweet AS your authenticated account.$0.0008
twitter_update_profileChange the display name, bio, location or link on your authenticated account's own X profile.$0.0016
twitter_update_avatarReplace the profile picture on your authenticated account's own X profile.$0.0016
twitter_update_bannerReplace the wide header image on your authenticated account's own X profile.$0.0016
twitter_draft_createSave a PRIVATE draft tweet on your authenticated account.$0.0016
twitter_draft_editReplace the contents of one existing PRIVATE draft on your authenticated account.$0.0016
twitter_draft_deleteDelete one PRIVATE draft from your authenticated account by id.$0.0008
twitter_scheduled_createSchedule a tweet to POST PUBLICLY at a future instant from your authenticated account.$0.0016
twitter_scheduled_deleteCancel one PENDING scheduled post on your authenticated account so it never publishes.$0.0008
twitter_favorite_tweetLike (favorite) a tweet AS your authenticated account.$0.0008
twitter_unfavorite_tweetRemove a like (unfavorite) from a tweet AS your authenticated account.$0.0008
twitter_retweetRetweet a tweet AS your authenticated account.$0.0008
twitter_unretweetUndo a retweet AS your authenticated account.$0.0008
twitter_bookmark_tweetBookmark a tweet to YOUR authenticated account's private bookmarks.$0.0008
twitter_unbookmark_tweetRemove a tweet from YOUR authenticated account's bookmarks.$0.0008
twitter_follow_userFollow a user AS your authenticated account, by numeric user_id or by @handle (provide exactly one).$0.0008
twitter_unfollow_userUnfollow a user AS your authenticated account, by numeric user_id or by @handle (provide exactly one).$0.0008
twitter_list_add_memberAdd 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_memberRemove 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_createCreate 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_uploadUpload 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_createStart a new DRAFT article ('Note') AS your authenticated account.$0.0016
twitter_article_update_cover_mediaAttach an ALREADY-UPLOADED image as the cover of a DRAFT or PUBLISHED article, AS your authenticated account.$0.0016
twitter_article_update_titleSet or replace the title of a DRAFT or PUBLISHED article AS your authenticated account.$0.0016
twitter_article_update_contentReplace the body content of a DRAFT or PUBLISHED article AS your authenticated account.$0.0016
twitter_article_publishPublish 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_unpublishRevert a PUBLISHED article back to Draft AS your authenticated account.$0.0016
twitter_article_deleteDelete an article AS your authenticated account.$0.0008
Monitors and webhooks (15)
twitter_monitor_createStart watching an X account for new posts.Free
twitter_monitor_listList 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_updatePartially 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_deleteStop and remove a monitor by id.Free
twitter_monitor_healthRead 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_healthAccount-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_deliveriesList 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_userCompat 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_userCompat drop-in for twitter_monitor_delete using an x_user_stream-shaped envelope: stop watching an account.Free
twitter_x_user_stream_list_usersCompat 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_createRegister an HTTPS endpoint to receive signed monitor events.Free
twitter_monitor_webhook_listList 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_deleteSoft-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_testSend 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_redriveReplay deliveries that dead-lettered while your endpoint was down.Free
Credits, session and feedback (9)
twitter_account_meGet YOUR twitterapis.com account details: email, name, credits remaining, credits used, total requests made, and account creation date.Free
twitter_account_paymentsGet YOUR twitterapis.com payment history: the list of top-ups and charges on your account.Free
twitter_feedback_sendReport 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_getCheck 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_listList the feedback reports this account has already SENT to twitterapis.com, newest first.Free
twitter_customer_sessionRegister 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_statusRead back the X account session you registered with twitter_customer_session, without changing it.Free
twitter_customer_session_deleteRevoke the X account session you registered with twitter_customer_session, deleting the stored auth_token and ct0 from twitterapis.com.Free
twitter_user_loginLog 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.

PathHow to add itWhere it winsWhat it asks of you
Hosted (recommended) https://api.twitterapis.com/mcpAdd 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/mcpAdd 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.

ClientHosted URLnpxWhat to know
Claude desktop appYesYesAdd the hosted URL as a connector and approve the sign-in once, or add npx as a local server.
Claude on the webYesNoA 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 CodeYesYesclaude mcp add takes either a URL or a command.
CursorYesYesBoth forms go in the MCP settings file.
An agent you wroteDepends on your SDKYesAny MCP client library speaks stdio; remote needs one that implements the HTTP transport and an OAuth flow.
CI, a container, a headless boxNoYesThe 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.

WhatHow it worksCost
Read toolsSearch, tweets, users, the follower graph, lists, Spaces, Communities, trends.$0.0008 per call
Full thread and full historytwitter_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 actionsPost, reply, like, retweet, follow, DM, drafts and scheduled posts, as your linked X session.From $0.0008; tweet creation $0.0016
Monitors and webhooksWatch 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 feedbacktwitter_account_me, payment history and the feedback tools are never metered.Free
Signup creditEvery 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.

LimitValue
Requests per minute600 per API key
Concurrent requests in flight20 per API key
Over either limitHTTP 429 with a Retry-After header
Headers on every responseX-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.

QuestionTwitterAPIs MCPX MCP (api.x.com/mcp)
What you need before the first callOne API key from signupYour own X developer app, created in the X Developer Portal
How it authenticatesA bearer key in the env block (npx), or a TwitterAPIs sign-in for the hosted serverOAuth 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 registrationNot neededNo dynamic client registration; the bridge owns your app identity
How reads are billed$0.0008 per call, up to 20 tweets per pagePay-per-usage from a balance you prepay: $0.005 per post read, $0.010 per user read
Volume ceiling600 requests a minute per keyPay-per-usage plans capped at 3 million post reads per monthly billing cycle
Webhook endpointsMonitors and signed webhooks as MCP toolsX's open-source xmcp server excludes streaming and webhook endpoints
Starting cost$0.50 free credit, no cardA 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.

SymptomFix
The twitter_* tools never appearCheck 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 -yPut 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 401TWITTERAPIS_KEY is missing or wrong in the env block. Copy the key again from the dashboard and restart the client.
HTTP 402The credit balance is spent. Top up on the pricing page; twitter_account_me shows the balance for free.
A write tool says no sessionWrite actions act as an X account. Link one with twitter_customer_session, then check it with twitter_customer_session_status.
HTTP 429You 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 forSearch 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.

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.