Skip to main content
Glama
TweetAPI MCP

TweetAPI MCP

Official

TweetAPI MCP

MCP server for TweetAPI, a third-party Twitter data API. It lets AI agents read public Twitter data (search, profiles, followers, timelines, lists, communities, Spaces and trends) and look up TweetAPI's own docs.

TweetAPI is an independent service and is not affiliated with X Corp.

Hosted server

The easiest way to use it is the hosted server. You sign in with your TweetAPI account and pick which API key backs the connection. New accounts get 100 free API units and no card is needed.

https://mcp.tweetapi.com/mcp

Codex:

codex mcp add tweetapi --url https://mcp.tweetapi.com/mcp
codex mcp login tweetapi

Claude Code:

claude mcp add --transport http --scope user tweetapi https://mcp.tweetapi.com/mcp
claude mcp login tweetapi

Cursor (~/.cursor/mcp.json):

{
  "mcpServers": {
    "tweetapi": {
      "url": "https://mcp.tweetapi.com/mcp"
    }
  }
}

The hosted server uses Streamable HTTP and OAuth. More setup notes are in the agents guide.

Related MCP server: Spectre

Run it locally

You can also run the server yourself over stdio with an API key from the TweetAPI dashboard. Node 18 or newer and pnpm are required.

git clone https://github.com/tweetapi/tweetapi-mcp.git
cd tweetapi-mcp
pnpm install
pnpm run build

Then point your MCP client at it:

{
  "mcpServers": {
    "tweetapi": {
      "command": "node",
      "args": ["/path/to/tweetapi-mcp/dist/bin.js", "--live"],
      "env": {
        "TWEETAPI_API_KEY": "your_tweetapi_key_here"
      }
    }
  }
}

Without --live, only the docs tools are available and no API key is needed.

Tools

Docs (free, no API calls): tweetapi_docs_search, tweetapi_endpoint_lookup, tweetapi_docs_get_page, tweetapi_sdk_guidance, tweetapi_tool_catalog.

Live data (47 read-only tools):

  • Users: profile by username or ID, batches of up to 100, About this account, tweets, tweets and replies, Photos, Videos, Highlights and Articles tabs, followers and following (profiles or IDs), verified followers, subscriptions, affiliates, similar accounts, Lists and List memberships, follow check.

  • Tweets: search, details with replies, metrics only, batches of up to 200 by ID, quotes, retweets, hidden replies, translation.

  • Lists: details, tweets, members, followers, search.

  • Communities: details, tweets, media, members, search.

  • Spaces: details and audio stream URL.

  • Trends: trending topics worldwide, by country or by location, and the locations X supports.

  • Account: tweetapi_account_usage, the units left on the API key behind the connection.

Each live tool call makes exactly one TweetAPI request and is billed like any other API call. Tools never paginate on their own; the agent passes the cursor when it wants the next page.

Live tools are read-only. There are no tools for posting, DMs, follows, profile edits, account cookies or billing. The only account tool is the free read-only usage check for the connection's own API key.

Live tool results

  • Live tools declare an MCP output schema and return the same JSON as structuredContent and as a text block.

  • Each result has retrievedAt (when the MCP server got the response), completeness (page cursor, batch items not returned, or a single object), output (format and omitted fields), and cost (a unit estimate from the published pricing rules, not a billing record).

  • responseFormat: "compact" is optional on profile, post, and List-page tools. It keeps full post text, IDs, links, original dates, counts, and cursors, never drops items, and lists the dropped fields in output.fieldsOmitted. The default stays full, which returns TweetAPI's JSON unchanged.

  • tweetapi_tweet_metrics returns its own short projection, so its output.format is metrics, output.fieldsOmitted lists what it leaves out, and output.textTruncated matches result.tweet.textTruncated.

  • On the four X v1.1 follower and following ID and list tools, a nextCursor of "0" means the last page. pagination keeps the "0", and completeness reports no next cursor.

  • An empty page that still has a nextCursor says so in completeness.note. X often sends a cursor at the end of a feed, so if the next page is empty too, stop: empty pages are billed.

  • Post, profile, list, community, and Space fields accept the matching x.com or twitter.com link, and username fields accept @handles. See src/identifiers.ts for the exact rules.

  • tweetapi_trends takes country or woeid, not both. Sending both is rejected before any request is made.

  • tweetapi_account_usage reads the units left on the API key behind the connection. It is free and counts toward the per-minute limit.

  • Errors carry details.layer (mcp_input, mcp_connection, tweetapi_api_key, tweetapi_api, network), retryable, retryAfterSeconds when TweetAPI sent Retry-After, and a cost estimate. The server never retries on its own.

docs/client-verification.md lists which client behaviors are covered by local tests and which still need a manual check with a real client.

Hosted service

This repo is also the source for the service at mcp.tweetapi.com. In HTTP mode it accepts dashboard-issued OAuth tokens with the tweetapi:read scope, resolves the backing API key on the server, and never sends the bearer token upstream. It depends on TweetAPI's OAuth server, so it is not meant to be self-hosted as is. See docs/security.md and docs/deployment.md for how it works.

docker build -t tweetapi-mcp .
docker run --rm -p 3100:3100 -e MCP_ALLOWED_HOSTS=localhost,127.0.0.1 tweetapi-mcp
curl http://localhost:3100/healthz

Development

pnpm install
pnpm run check
pnpm run check:release

The checks cover formatting, Markdown lint, TypeScript, unit tests, stdio and HTTP smoke tests, and a secret scan. Tests mock the docs and the API; they never call the live TweetAPI API.

Security

Please report vulnerabilities privately. See SECURITY.md.

License

MIT

Available Tools

52 tools
tweetapi_account_usageGet Account UsageA
Read-onlyIdempotent

Check the units left on the TweetAPI API key behind this connection: available units, plan allowance, PAYG balance, and the per-minute rate limit. Costs 0 units and counts toward the per-minute limit. Shows only this key; it cannot change anything.

Inputs: no named parameters. Returns: cost, mode, tool, notice, +9 more

tweetapi_community_detailsGet Community DetailsA
Read-onlyIdempotent

Fetch one community's details by community ID or community link: name, description, member count and settings. Use tweetapi_community_tweets for its posts and tweetapi_community_members for its members. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate.

Inputs: communityId (required). Returns: cost, mode, tool, notice, +9 more

tweetapi_community_mediaGet Community MediaA
Read-onlyIdempotent

Fetch one page of posts with photos or videos from a community, as on its Media tab, by community ID or community link. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate. Returns one page: to get the next one, call again with cursor set to this result's completeness.nextCursor.

Inputs: communityId (required), cursor, responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_community_membersGet Community MembersA
Read-onlyIdempotent

Fetch one page of a community's members, by community ID or community link. Use tweetapi_community_details for the member count. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate. Returns one page: to get the next one, call again with cursor set to this result's completeness.nextCursor.

Inputs: communityId (required), cursor, responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_community_tweetsGet Community TweetsA
Read-onlyIdempotent

Fetch one page of posts in a community, by community ID or community link, in the order set by sortBy. Use tweetapi_community_media for only the posts with photos or videos. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate. Returns one page: to get the next one, call again with cursor set to this result's completeness.nextCursor.

Inputs: communityId (required), cursor, sortBy, responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_docs_get_pageGet TweetAPI Docs PageA
Read-onlyIdempotent

Return the full reference for one TweetAPI endpoint: its method, path, title and whole docs section, with parameters, cost and an example request. An exact path such as /tw-v2/user/followers returns that endpoint; a keyword returns the single best match, and no match returns a TWEETAPI_DOCS_PAGE_NOT_FOUND error. Free: uses no API key or units.

Inputs: pathOrKeyword (required).

tweetapi_endpoint_lookupLookup TweetAPI EndpointA
Read-onlyIdempotent

Find the TweetAPI endpoint docs that match a path or keyword, and return up to 10 matching sections as snippets with their source URLs. Use it when you don't know the exact endpoint yet, then pass its path to tweetapi_docs_get_page for the full reference. Free: uses no API key or units.

Inputs: pathOrKeyword (required).

tweetapi_list_detailsGet List DetailsA
Read-onlyIdempotent

Fetch one X List's details by List ID or List link: name, description, owner, member and follower counts, and whether it is public or private. Use tweetapi_list_tweets for its posts, tweetapi_list_members for the accounts in it, and tweetapi_list_followers for the accounts following it. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate.

Inputs: listId (required). Returns: cost, mode, tool, notice, +9 more

tweetapi_list_followersGet List FollowersA
Read-onlyIdempotent

Fetch one page of the accounts that follow (subscribe to) a list. Use tweetapi_list_members for the accounts in the list. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate. Returns one page: to get the next one, call again with cursor set to this result's completeness.nextCursor.

Inputs: listId (required), cursor, responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_list_membersGet List MembersA
Read-onlyIdempotent

Fetch one page of the accounts that are members of a List, by List ID or List link. Use tweetapi_list_followers for the accounts that follow the List, or tweetapi_list_details for its counts. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate. Returns one page: to get the next one, call again with cursor set to this result's completeness.nextCursor.

Inputs: listId (required), cursor, responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_list_tweetsGet List TweetsA
Read-onlyIdempotent

Fetch one page of the posts in a List's timeline, by List ID or List link. Use tweetapi_list_members to see whose posts the List includes. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate. Returns one page: to get the next one, call again with cursor set to this result's completeness.nextCursor.

Inputs: listId (required), cursor, responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_sdk_guidanceTweetAPI SDK GuidanceA
Read-onlyIdempotent

Return setup guidance for calling TweetAPI from your own code: the SDK package name, install command, an import example and notes, for Python or Node.js/TypeScript. Use it when writing an app that calls TweetAPI; to fetch data now, use the live tools instead. Free: makes no API calls.

Inputs: task (required), language (required).

tweetapi_space_by_idGet Space By IDA
Read-onlyIdempotent

Fetch details for a Space by its space ID or Space link, including the media key needed for tweetapi_space_stream_url. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate.

Inputs: spaceId (required). Returns: cost, mode, tool, notice, +9 more

tweetapi_space_stream_urlGet Space Stream URLA
Read-onlyIdempotent

Fetch the audio stream URL for a Space, using the media key from tweetapi_space_by_id. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate.

Inputs: mediaKey (required). Returns: cost, mode, tool, notice, +9 more

tweetapi_tool_catalogTweetAPI MCP Tool CatalogA
Read-onlyIdempotent

List the tools on this server as JSON: for each, its name, description, category, the TweetAPI endpoint it calls, estimated cost, response formats and input schema. Filter it with toolName, endpointPath or category. Use it to pick the right tool or check costs before calling live tools. Free: uses no API key or units.

Inputs: category, toolName, endpointPath.

tweetapi_trend_locationsGet Trend LocationsA
Read-onlyIdempotent

List the locations X serves trends for: worldwide, a set of countries and many cities, each with the woeid and countryCode to pass to tweetapi_trends. Not paginated. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate.

Inputs: no named parameters. Returns: cost, mode, tool, notice, +9 more

tweetapi_tweet_detailsGet Tweet DetailsA
Read-onlyIdempotent

Fetch one tweet with full details, its parent tweets when it is a reply, and a page of replies. Accepts a post ID or post link. Use tweetapi_tweet_metrics for counts only, or tweetapi_tweet_details_by_ids for many tweets. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate. Returns one page: to get the next one, call again with cursor set to this result's completeness.nextCursor.

Inputs: tweetId (required), cursor, sortBy, responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_tweet_details_by_idsGet Tweet Details By IDsA
Read-onlyIdempotent

Fetch details for up to 200 tweets in one call by post ID or post link. No replies are included. Missing posts are listed in completeness.notReturned. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate.

Inputs: ids (required), responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_tweet_hidden_repliesGet Hidden RepliesA
Read-onlyIdempotent

Fetch one page of the replies that a post's author has hidden, by post ID or post link. Hidden replies are public on X. A post without hidden replies returns an empty page. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate. Returns one page: to get the next one, call again with cursor set to this result's completeness.nextCursor.

Inputs: tweetId (required), cursor, responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_tweet_metricsGet Tweet MetricsA
Read-onlyIdempotent

Fetch only the engagement counts (likes, retweets, replies, quotes, bookmarks, views) for one tweet, without the conversation. Accepts a post ID or post link. Use tweetapi_tweet_details for the full tweet. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate.

Inputs: tweetId (required). Returns: cost, mode, tool, notice, +9 more

tweetapi_tweet_quotesGet Tweet QuotesA
Read-onlyIdempotent

Fetch one page of quote posts of a post (posts that quote it), by post ID or post link. Use tweetapi_tweet_retweets for plain reposts and tweetapi_tweet_details for replies. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate. Returns one page: to get the next one, call again with cursor set to this result's completeness.nextCursor.

Inputs: tweetId (required), cursor, responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_tweet_retweetsGet Tweet RetweetsA
Read-onlyIdempotent

Fetch one page of the accounts that reposted a post, by post ID or post link. Use tweetapi_tweet_quotes for quote posts. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate. Returns one page: to get the next one, call again with cursor set to this result's completeness.nextCursor.

Inputs: tweetId (required), cursor, responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_tweet_translateTranslate TweetA
Read-onlyIdempotent

Translate one post's text into another language with X's translation, by post ID or post link. The post itself is not changed. Use tweetapi_tweet_details to read the original post and its replies. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate.

Inputs: dstLang (required), tweetId (required). Returns: cost, mode, tool, notice, +9 more

tweetapi_user_about_accountGet User Account SummaryA
Read-onlyIdempotent

Fetch the About this account details for a username, @handle, or profile link: location, verification, username history, affiliates and how the account was created. Use tweetapi_user_by_username for the regular profile. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate.

Inputs: username (required). Returns: cost, mode, tool, notice, +9 more

tweetapi_user_affiliatesGet User AffiliatesA
Read-onlyIdempotent

Fetch one page of the accounts affiliated with a business profile, as on its Affiliates tab. Returns X's default affiliate group only; a profile with no affiliates returns an empty list. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate. Returns one page: to get the next one, call again with cursor set to this result's completeness.nextCursor.

Inputs: userId (required), cursor, responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_user_articlesGet User ArticlesA
Read-onlyIdempotent

Fetch one page of the posts that published a user's X Articles, with each Article's title and preview text. The full Article text is not included: pass the post ID to tweetapi_tweet_details to read it. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate. Returns one page: to get the next one, call again with cursor set to this result's completeness.nextCursor.

Inputs: userId (required), cursor, responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_user_by_idGet User By IDA
Read-onlyIdempotent

Fetch one public user profile by numeric user ID. For several users at once, use tweetapi_user_by_ids. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate.

Inputs: userId (required), responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_user_by_idsGet Users By IDsA
Read-onlyIdempotent

Fetch up to 100 public user profiles in one call by numeric user ID. Missing accounts are listed in completeness.notReturned. Use tweetapi_user_by_usernames when you have usernames. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate.

Inputs: userIds (required), responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_user_by_usernameGet User By UsernameA
Read-onlyIdempotent

Fetch one public user profile by username, @handle, or profile link. For several users at once, use tweetapi_user_by_usernames. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate.

Inputs: username (required), responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_user_by_usernamesGet Users By UsernamesA
Read-onlyIdempotent

Fetch up to 100 public user profiles in one call by username, @handle, or profile link. Missing accounts are listed in completeness.notReturned. Use tweetapi_user_by_ids when you have numeric IDs. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate.

Inputs: usernames (required), responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_user_check_followCheck Follow RelationshipA
Read-onlyIdempotent

Check the follow relationship between two accounts by numeric user ID: following says whether the first follows the second, and followedBy whether the second follows back. Use tweetapi_user_by_username first if you only have usernames. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate.

Inputs: targetId (required), subjectId (required). Returns: cost, mode, tool, notice, +9 more

tweetapi_user_followers_idsGet Follower IDsA
Read-onlyIdempotent

Fetch one page of follower user IDs (strings only, no profiles) for a user ID. Cheapest way to walk a large follower graph. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate. Returns one page: to get the next one, call again with cursor set to this result's completeness.nextCursor.

Inputs: userId (required), count, cursor. Returns: cost, mode, tool, notice, +9 more

tweetapi_user_followers_listGet Followers ListA
Read-onlyIdempotent

Fetch one page of follower profiles for a user ID, with an optional count to set the page size. Use tweetapi_user_followers_ids when you only need IDs. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate. Returns one page: to get the next one, call again with cursor set to this result's completeness.nextCursor.

Inputs: userId (required), count, cursor, responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_user_followers_v2Get User FollowersA
Read-onlyIdempotent

Fetch one page of follower profiles for a user ID, at the default page size. Use tweetapi_user_followers_list to set the page size with count, or tweetapi_user_followers_ids for IDs only. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate. Returns one page: to get the next one, call again with cursor set to this result's completeness.nextCursor.

Inputs: userId (required), cursor, responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_user_following_idsGet Following IDsA
Read-onlyIdempotent

Fetch one page of user IDs (strings only, no profiles) that a user ID follows. Cheapest way to walk a large following graph. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate. Returns one page: to get the next one, call again with cursor set to this result's completeness.nextCursor.

Inputs: userId (required), count, cursor. Returns: cost, mode, tool, notice, +9 more

tweetapi_user_following_listGet Following ListA
Read-onlyIdempotent

Fetch one page of profiles a user ID follows, with an optional count to set the page size. Use tweetapi_user_following_ids when you only need IDs. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate. Returns one page: to get the next one, call again with cursor set to this result's completeness.nextCursor.

Inputs: userId (required), count, cursor, responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_user_following_v2Get User FollowingA
Read-onlyIdempotent

Fetch one page of profiles a user ID follows, at the default page size. Use tweetapi_user_following_list to set the page size with count, or tweetapi_user_following_ids for IDs only. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate. Returns one page: to get the next one, call again with cursor set to this result's completeness.nextCursor.

Inputs: userId (required), cursor, responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_user_highlightsGet User HighlightsA
Read-onlyIdempotent

Fetch one page of the posts a user has added to the Highlights tab of their profile. Highlights are an X Premium feature, so most accounts return an empty page. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate. Returns one page: to get the next one, call again with cursor set to this result's completeness.nextCursor.

Inputs: userId (required), cursor, responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_user_list_membershipsGet User List MembershipsA
Read-onlyIdempotent

Fetch one page of the Lists a user has been added to as a member (the Member of view on x.com). They can be owned by any account, so check owner on each List; Private Lists are included and mode says which. For the user's own Lists tab, use tweetapi_user_lists. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate. Returns one page: to get the next one, call again with cursor set to this result's completeness.nextCursor.

Inputs: userId (required), cursor, responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_user_listsGet User ListsA
Read-onlyIdempotent

Fetch one page of the Lists shown on a user's Lists tab. X can include Lists owned by other accounts, so check owner on each List; Private Lists are included and mode says which. For Lists other accounts added this user to, use tweetapi_user_list_memberships. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate. Returns one page: to get the next one, call again with cursor set to this result's completeness.nextCursor.

Inputs: userId (required), cursor, responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_user_photosGet User PhotosA
Read-onlyIdempotent

Fetch one page of a user's posts that contain photos, as on the Photos tab of their profile. Videos are a separate feed: use tweetapi_user_videos. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate. Returns one page: to get the next one, call again with cursor set to this result's completeness.nextCursor.

Inputs: userId (required), cursor, responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_user_similar_accountsGet Similar AccountsA
Read-onlyIdempotent

Fetch the accounts X lists as similar to a user. Returns a single page with no cursor. X often lists none, and an empty result is still billed. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate.

Inputs: userId (required), responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_user_subscriptionsGet User SubscriptionsA
Read-onlyIdempotent

Fetch one page of accounts a user ID pays to subscribe to (Premium creator subscriptions and Super Follows). This is not the following list. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate. Returns one page: to get the next one, call again with cursor set to this result's completeness.nextCursor.

Inputs: userId (required), cursor, responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_user_tweetsGet User TweetsA
Read-onlyIdempotent

Fetch one page of a user's original tweets, without replies. Use tweetapi_user_tweets_and_replies to include replies. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate. Returns one page: to get the next one, call again with cursor set to this result's completeness.nextCursor.

Inputs: userId (required), cursor, responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_user_tweets_and_repliesGet User Tweets And RepliesA
Read-onlyIdempotent

Fetch one page of a user's posts including their replies, as on the Replies tab of their profile. Use tweetapi_user_tweets for original posts without replies. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate. Returns one page: to get the next one, call again with cursor set to this result's completeness.nextCursor.

Inputs: userId (required), cursor, responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_user_verified_followersGet Verified FollowersA
Read-onlyIdempotent

Fetch one page of a user's followers who are verified accounts, as on the Verified Followers tab. For all followers, use tweetapi_user_followers_v2. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate. Returns one page: to get the next one, call again with cursor set to this result's completeness.nextCursor.

Inputs: userId (required), cursor, responseFormat. Returns: cost, mode, tool, notice, +9 more

tweetapi_user_videosGet User VideosA
Read-onlyIdempotent

Fetch one page of a user's posts that contain videos, as on the Videos tab of their profile. Photos are a separate feed: use tweetapi_user_photos. Read-only. Needs a TweetAPI API key and makes one TweetAPI request per call, usually costing 1 unit; each result includes a cost estimate. Returns one page: to get the next one, call again with cursor set to this result's completeness.nextCursor.

Inputs: userId (required), cursor, responseFormat. Returns: cost, mode, tool, notice, +9 more

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4/5.0

    Scored across 52 tools

    Disambiguation3/5

    Most tools map cleanly to one X endpoint, but there are real overlap clusters: tweetapi_user_followers_v2 vs tweetapi_user_followers_list (same data, differing only in whether count is settable), and tweetapi_docs_search vs tweetapi_endpoint_lookup, which both take a keyword and return scored snippets with source URLs. The descriptions do acknowledge the alternatives and cross-reference each other, but an agent still has to read carefully to pick correctly.

    Naming Consistency4/5

    Every tool shares the tweetapi_ prefix and snake_case with a resource_then_action shape (tweetapi_user_by_ids, tweetapi_list_members, tweetapi_community_tweets), which is highly predictable. The main blemishes are the legacy suffix tweetapi_user_followers_v2/_following_v2 sitting next to _list and _ids variants, and a few names that describe the return shape rather than an action.

    Tool Count2/5

    52 tools is well past the point where an agent can hold the surface in mind, and the count is inflated by near-duplicates (profile-by-id vs -by-username vs -by-ids vs -by-usernames, followers v2/list/ids) rather than genuinely distinct operations. It mirrors a large upstream API, but as an MCP tool set it is heavy and hard to navigate.

    Completeness4/5

    Coverage is broad and coherent for a read-only X data API: users, followers/following graphs, tweets and conversations, lists, communities, Spaces, trends, search, plus docs, SDK guidance, a catalog and usage checks. Gaps are minor and mostly domain-bounded (no DMs, no notifications, no write/post actions, no Spaces discovery beyond lookup by ID), so agents can work around them.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Provides AI agents and coding assistants with Twitter data access including tweets, user profiles, followers, and search functionality.
      MIT
    • A
      license
      C
      quality
      C
      maintenance
      Enables AI agents to search, read user profiles, timelines, media, follow threads, track trends, and manage accounts on X/Twitter via GraphQL, without browser automation or paid API keys.
      100
      11
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Provides read-only access to public X (Twitter) data, including profiles, tweets, timelines, threads, followers, and search, for developers and AI agents.
      1
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI agents to read public X (Twitter) data without the paid official API, including tweet and user search, profiles, timelines, media, replies, retweeters, followers, lists, and trends. All tools are read-only and rotate across multiple scraping accounts with proxy and rate-limit support.
      MIT