Skip to content

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 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, 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" }
    }
  }
}

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 ranges
  • twitter_tweet_detailLook up a single tweet by ID with full metadata
  • twitter_tweet_repliesPull the replies under a tweet with pagination
  • twitter_tweet_retweetersList the accounts that retweeted a tweet
  • twitter_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 handle
  • twitter_user_tweetsPull a handle's recent posts
  • twitter_user_mentionsRead an account's mentions (a to:username search)
  • twitter_user_followersList an account's followers with pagination
  • twitter_user_followingList the accounts a handle follows
  • twitter_user_verified_followersList an account's verified followers

Additional read tools

TWITTERAPIS_KEY only
  • twitter_user_searchSearch for users by display name or handle
  • twitter_user_info_by_idLook up a user profile by numeric user ID
  • twitter_user_tweets_and_repliesPull a handle's tweets and replies together
  • twitter_user_mediaList a user's media (images and video) tweets
  • twitter_list_membersList the members of an X list by list ID

Write actions

Linked X session
  • twitter_create_tweetPost a tweet, reply, or quote
  • twitter_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.

ToolWhat it doesPrice per call
Tweets and threads (7)
twitter_advanced_searchSearches 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_detailReturns 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_repliesReturns replies to a specific tweet, each with author, text and metrics, cursor-paginated.$0.0008
twitter_tweet_replies_completeReturns 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_threadReturns 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_retweetersLists the accounts that retweeted a specific tweet, with profile data for each retweeter, cursor-paginated.$0.0008
twitter_tweet_quotesLists 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_searchSearches Twitter/X user accounts by display name or handle (X's People search).$0.0008
twitter_user_infoReturns 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_idReturns 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_statusReports whether a Twitter/X account is alive, suspended, or deleted.$0.0008
twitter_user_aboutReturns 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_batchReturns 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_affiliatesLists 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_relationshipReturns 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_batchChecks one account against up to 100 others in one call.$0.0008 per item
twitter_audience_summarySummarises 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_tweetsReturns a user's recent posting timeline, cursor-paginated further back.$0.0008
twitter_user_tweets_and_repliesReturns a user's full activity timeline: their original tweets and their replies to others, cursor-paginated.$0.0008
twitter_user_tweets_completeReturns 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_mediaReturns 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_mentionsReturns 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_likesReturns 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_followersLists 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_followingLists the accounts a given user follows, with profile data for each account followed, cursor-paginated.$0.0008
twitter_user_followers_v2Lists 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_v2Lists 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_followersLists 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_videoRanks the accounts posting native video about a topic.$0.0008
Lists, Spaces, Communities and trends (14)
twitter_list_membersLists the members of a Twitter/X List by its numeric list id, with profile data for each member, cursor-paginated.$0.0008
twitter_list_followersLists a public List's followers by its numeric id, cursor-paginated.$0.0008
twitter_list_tweetsReturns the posts written by the members of a public Twitter/X List, newest first, through X's search index.$0.0008
twitter_list_timelineReturns 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_searchFinds X Communities by keyword, cursor-paginated, returning each community's id.$0.0008
twitter_community_infoReturns 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_membersLists 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_moderatorsLists the moderators and admins of an X Community, cursor-paginated, in { user, role } rows (the array is named members).$0.0008
twitter_community_tweetsReturns 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_membershipsThe INVERSE community lookup: given a numeric X USER id, lists the communities that account belongs to, cursor-paginated.$0.0008
twitter_trendsReturns the current top trends for a location, or for one of X's Explore topic tabs.$0.0008
twitter_trends_locationsLists 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_knowLists 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_chatAsks 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_configReports 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_timelineReturns 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_bookmarksLists the authenticated account's bookmarked tweets, most recent first.$0.0008
twitter_blockingLists the accounts the authenticated account has BLOCKED, as full user objects, cursor-paginated.$0.0008
twitter_mutingLists the accounts the authenticated account has MUTED, as full user objects, cursor-paginated.$0.0008
twitter_bookmark_searchFull-text search within the authenticated account's bookmarks.$0.0008
twitter_bookmark_foldersLists 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_timelineReturns the tweets inside ONE of the authenticated account's bookmark folders, identified by folder_id.$0.0008
twitter_dm_listLists the authenticated account's Direct Message conversations (inbox), each with the participant and its conversation_id.$0.0016
twitter_dm_conversationReturns the messages in one Direct Message conversation by its conversation_id.$0.0016
twitter_draft_listLists the PRIVATE drafts saved on the authenticated account, the source of draft ids for an edit or a delete.$0.0016
twitter_scheduled_listLists 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_statusReports whether an uploaded media_id has finished processing on X.$0.0008
twitter_article_getReturns an article's full content (title, content_state, cover media, author, timestamps, public_url).$0.0008
twitter_article_listLists the authenticated account's own articles (drafts or published), most recent first.$0.0008
Write actions (linked session) (32)
twitter_dm_sendSends a Direct Message as the authenticated account to a recipient's numeric user id (recipient_id) with the message text.$0.0016
twitter_create_tweetPosts a new tweet as the authenticated account.$0.0016
twitter_delete_tweetDeletes a tweet as the authenticated account.$0.0008
twitter_update_profileChanges the display name, bio, location or link on the authenticated account's own X profile.$0.0016
twitter_update_avatarReplaces the profile picture on the authenticated account's own X profile.$0.0016
twitter_update_bannerReplaces the wide header image on the authenticated account's own X profile.$0.0016
twitter_draft_createSaves a PRIVATE draft tweet on the authenticated account.$0.0016
twitter_draft_editReplaces the contents of one existing PRIVATE draft on the authenticated account.$0.0016
twitter_draft_deleteDeletes one PRIVATE draft from the authenticated account by id.$0.0008
twitter_scheduled_createSchedules a tweet to POST PUBLICLY at a future instant from the authenticated account.$0.0016
twitter_scheduled_deleteCancels one PENDING scheduled post on the authenticated account so it does not publish.$0.0008
twitter_favorite_tweetLikes (favorites) a tweet as the authenticated account.$0.0008
twitter_unfavorite_tweetRemoves a like (unfavorite) from a tweet as the authenticated account.$0.0008
twitter_retweetRetweets a tweet as the authenticated account.$0.0008
twitter_unretweetUndoes a retweet as the authenticated account.$0.0008
twitter_bookmark_tweetBookmarks a tweet to the authenticated account's private bookmarks.$0.0008
twitter_unbookmark_tweetRemoves a tweet from the authenticated account's bookmarks.$0.0008
twitter_follow_userFollows a user as the authenticated account, by numeric user_id or by @handle (exactly one of the two).$0.0008
twitter_unfollow_userUnfollows a user as the authenticated account, by numeric user_id or by @handle (exactly one of the two).$0.0008
twitter_list_add_memberAdds 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_memberRemoves 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_createCreates 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_joinJoins an X Community as the authenticated account, by numeric community id.$0.0008
twitter_community_leaveLeaves an X Community as the authenticated account, by numeric community id.$0.0008
twitter_media_uploadUploads an image to X and returns a media_id for a tweet's media_ids.$0.0008
twitter_article_createStarts a new DRAFT article ('Note') as the authenticated account.$0.0016
twitter_article_update_cover_mediaAttaches an ALREADY-UPLOADED image as the cover of a DRAFT or PUBLISHED article, as the authenticated account.$0.0016
twitter_article_update_titleSets or replaces the title of a DRAFT or PUBLISHED article as the authenticated account.$0.0016
twitter_article_update_contentReplaces the body content of a DRAFT or PUBLISHED article as the authenticated account.$0.0016
twitter_article_publishPublishes 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_unpublishReverts a PUBLISHED article back to Draft as the authenticated account.$0.0016
twitter_article_deleteDeletes an article as the authenticated account.$0.0008
Monitors and webhooks (15)
twitter_monitor_createStarts 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 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_deleteStops and removes a monitor by id.Free
twitter_monitor_healthReturns 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_healthAccount-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_deliveriesLists 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_userCompatibility 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_userCompatibility endpoint with an x_user_stream-shaped envelope: stops watching an account.Free
twitter_x_user_stream_list_usersCompatibility endpoint with an x_user_stream-shaped envelope: lists every account currently tweet-monitored.Free
twitter_monitor_webhook_createRegisters an HTTPS endpoint to receive signed monitor events.Free
twitter_monitor_webhook_listLists 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_deleteSoft-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_testSends 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_redriveReplays deliveries that dead-lettered while the endpoint was down.Free
Credits, session and feedback (9)
twitter_account_meReturns your twitterapis.com account details: email, name, credits remaining, credits used, total requests made, and account creation date.Free
twitter_account_paymentsReturns your twitterapis.com payment history: the list of top-ups and charges on the account.Free
twitter_feedback_sendReports a product problem or gap in twitterapis.com to its team from inside this session.Free
twitter_feedback_getReturns 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_listLists 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_sessionRegisters 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_statusReads back the X account session registered against this API key, without changing it.Free
twitter_customer_session_deleteRevokes the X account session registered against this API key, deleting the stored auth_token and ct0 from twitterapis.com.Free
twitter_user_loginLogs 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_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.

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.