TweetAPI MCP
OfficialTweetAPI MCP lets AI agents look up TweetAPI documentation and, in live mode, read public Twitter/X data through read-only API tools.
Search TweetAPI docs, look up endpoints by path or keyword, and fetch full endpoint documentation sections.
Get SDK setup/usage guidance and a machine-readable catalog of available MCP tools.
Read public Twitter/X data such as profiles, followers/following, tweets, search, quotes/retweets, lists, communities, Spaces, trends, and account usage.
Run it as a hosted Streamable HTTP/OAuth server or locally over stdio with a TweetAPI API key; without
--live, only docs tools are available and no API key is needed.Live tools are read-only, make one billable TweetAPI request per call, and support structured results, cost/completeness metadata, cursors, compact output, and typed errors.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@TweetAPI MCP search recent tweets about the new iPhone launch"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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/mcpCodex:
codex mcp add tweetapi --url https://mcp.tweetapi.com/mcp
codex mcp login tweetapiClaude Code:
claude mcp add --transport http --scope user tweetapi https://mcp.tweetapi.com/mcp
claude mcp login tweetapiCursor (~/.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 buildThen 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
structuredContentand 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), andcost(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 inoutput.fieldsOmitted. The default staysfull, which returns TweetAPI's JSON unchanged.tweetapi_tweet_metricsreturns its own short projection, so itsoutput.formatismetrics,output.fieldsOmittedlists what it leaves out, andoutput.textTruncatedmatchesresult.tweet.textTruncated.On the four X v1.1 follower and following ID and list tools, a
nextCursorof"0"means the last page.paginationkeeps the"0", andcompletenessreports no next cursor.An empty page that still has a
nextCursorsays so incompleteness.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.comortwitter.comlink, and username fields accept@handles. Seesrc/identifiers.tsfor the exact rules.tweetapi_trendstakescountryorwoeid, not both. Sending both is rejected before any request is made.tweetapi_account_usagereads 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,retryAfterSecondswhen TweetAPI sentRetry-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/healthzDevelopment
pnpm install
pnpm run check
pnpm run check:releaseThe 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
Available Tools
52 toolstweetapi_account_usageGet Account UsageARead-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 DetailsARead-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 MediaARead-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 MembersARead-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_searchSearch CommunitiesARead-onlyIdempotent
Search X communities by keyword and fetch one page of matches. Pass a result's ID to tweetapi_community_details or tweetapi_community_tweets. Use tweetapi_search for posts and accounts. 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: query (required), cursor. Returns: cost, mode, tool, notice, +9 more
tweetapi_community_tweetsGet Community TweetsARead-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 PageARead-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_docs_searchSearch TweetAPI DocsARead-onlyIdempotent
Search TweetAPI's public docs by keyword and return the best-matching sections, each with a title, a short snippet, its source URL and a score. Use it for general questions such as pricing, limits, errors or authentication; for one endpoint's full reference, use tweetapi_docs_get_page. Free: reads the public docs and uses no API key or units.
Inputs: query (required), limit.
tweetapi_endpoint_lookupLookup TweetAPI EndpointARead-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 DetailsARead-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 FollowersARead-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 MembersARead-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_searchSearch ListsARead-onlyIdempotent
Search X Lists by keyword and fetch one page of matching Lists. A page can be short without being the last one. Use the List IDs with tweetapi_list_tweets or tweetapi_list_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. Returns one page: to get the next one, call again with cursor set to this result's completeness.nextCursor.
Inputs: query (required), cursor, responseFormat. Returns: cost, mode, tool, notice, +9 more
tweetapi_list_tweetsGet List TweetsARead-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 GuidanceARead-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_searchSearch Tweets And UsersARead-onlyIdempotent
Search X for posts or accounts, like the x.com search box. type picks the results: Latest or Top for posts, People for accounts, Photos or Videos for posts with media. For Lists use tweetapi_list_search; for communities use tweetapi_community_search. 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: query (required), type, cursor, responseFormat. Returns: cost, mode, tool, notice, +9 more
tweetapi_space_by_idGet Space By IDARead-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 URLARead-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 CatalogARead-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 LocationsARead-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_trendsGet TrendsARead-onlyIdempotent
Fetch the trending topics X shows worldwide, in a country, or at a location. Pass country (a two-letter code such as US) or woeid (from tweetapi_trend_locations), not both; omit both for worldwide. Not every country is supported, and an unsupported one returns not found instead of worldwide trends. 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: woeid, country. Returns: cost, mode, tool, notice, +9 more
tweetapi_tweet_detailsGet Tweet DetailsARead-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 IDsARead-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_metricsGet Tweet MetricsARead-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 QuotesARead-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 RetweetsARead-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 TweetARead-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 SummaryARead-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 AffiliatesARead-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 ArticlesARead-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 IDARead-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 IDsARead-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 UsernameARead-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 UsernamesARead-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 RelationshipARead-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 IDsARead-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 ListARead-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 FollowersARead-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 IDsARead-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 ListARead-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 FollowingARead-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 HighlightsARead-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 MembershipsARead-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 ListsARead-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 PhotosARead-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 AccountsARead-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 SubscriptionsARead-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 TweetsARead-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 RepliesARead-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 FollowersARead-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 VideosARead-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
Scored across 52 tools
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.
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.
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.
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
Related MCP Connectors
Hosted MCP server from TwitterAPI.io that gives AI agents read-only access to Twitter/X data. 12 tools: tweet search with X operators, user profiles, a user's latest tweets, followers and followings, replies, quotes, retweeters, mentions and trends. Connect at https://mcp.twitterapi.io/mcp with a TwitterAPI.io API key or account sign-in; usage is paid per result returned.
Live X/Twitter data: profiles, tweets, search, followers, lists and trends. 29 read-only tools.
Read public Twitter/X data: tweets, profiles, followers, search. No X developer account.
Search and read public data from X/Twitter, Reddit, YouTube, Instagram, TikTok, Facebook, Threads, Bluesky, Trustpilot, Amazon, Google Maps, news, forums and the web. 90+ read-only tools plus ready-made research playbooks (lead finding, brand monitoring, review mining). Hosted: connect with an API key; 50 free requests per endpoint each month.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides AI agents and coding assistants with Twitter data access including tweets, user profiles, followers, and search functionality.MIT
- AlicenseCqualityCmaintenanceEnables 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.10011MIT
- AlicenseNot gradedqualityBmaintenanceProvides read-only access to public X (Twitter) data, including profiles, tweets, timelines, threads, followers, and search, for developers and AI agents.1MIT
- AlicenseNot gradedqualityCmaintenanceEnables 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