Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

TwitterAPIs

NPM · @TWITTERAPIS/MCP · SCANNED SEP 20

Official MCP server for twitterapis.com. Read and write Twitter/X: search, users, tweets, DMs.

Available components

+6 this week 75 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 31 of 95 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability68
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 24921 tokens (~251/item across 99 items; 99 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management47
  • Stability observed for 14 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 13 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 100 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the TwitterAPIs MCP server?

TwitterAPIs runs locally as an npm package, launched with npx -y @twitterapis/mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @twitterapis/mcp

# add to Claude Code
claude mcp add twitterapis-twitterapis-mcp -- npx -y @twitterapis/mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "twitterapis-twitterapis-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@twitterapis/mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "twitterapis-twitterapis-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@twitterapis/mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add twitterapis-twitterapis-mcp -- npx -y @twitterapis/mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "twitterapis-twitterapis-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@twitterapis/mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add twitterapis-twitterapis-mcp --command npx --arg -y --arg @twitterapis/mcp
# ~/.hermes/config.yaml
mcp_servers:
  twitterapis-twitterapis-mcp:
    command: "npx"
    args: ["-y", "@twitterapis/mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "twitterapis-twitterapis-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@twitterapis/mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add twitterapis-twitterapis-mcp -t stdio -c npx -a -y @twitterapis/mcp
// mcp.json
{
  "mcpServers": {
    "twitterapis-twitterapis-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@twitterapis/mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 19 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

  • 17 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

  • 15 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

  • 14 Sept 26 +3
    • Stability: unverified → 0.27 functional
  • 7 Sept 26 +15
    • Malware scan: unverified → pass security
  • 6 Sept 26 +16
    • Malware scan: pass → unverified security
    • Injection markers: unverified → pass security
    • First check of Judged manipulation: pass security
    • Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
    • Tool coverage: unverified → 100 functional
    • MCP protocol: unverified → pass functional
    • First check of Schema quality: fail functional
    • First check of Schema quality: excellent functional
    • First check of Schema quality: fail functional
    • First check of Destructive annotations: 100 functional
    • First check of Tool coverage: 100 functional
    • Package version: 0.6.4 → 0.9.8 functional
  • 26 Aug 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 12 Aug 26 0
    • Security disclosure: unverified → fail functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Analysed npm/@twitterapis/mcp@0.9.8

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 95 packages
Packages resolved 95
Stale 31
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 99 exposed · ~24,793 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
twitter_account_me ~63

Get YOUR twitterapis.com account details: email, name, credits remaining, credits used, total requests made, and account creation date. Authenticated by your API key. This is an account read, not Twitter data, and is free (it does not spend credits).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

twitter_account_payments ~56

Get YOUR twitterapis.com payment history: the list of top-ups and charges on your account. Authenticated by your API key. This is an account read, not Twitter data, and is free (it does not spend credits).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

twitter_advanced_search ~404

Search recent tweets using X's advanced-search operators. Supports from:, to:, since:YYYY-MM-DD, until:YYYY-MM-DD, min_faves:N, min_retweets:N, filter:links, -filter:replies, lang:en, and free-text. Returns tweet text, author info, engagement metrics, and a pagination cursor. Use product='Latest' for chronological results; 'Top' (default) for engagement-ranked. Example queries: 'AI agents min_faves:100', 'from:openai filter:links since:2024-01-01', '#buildinpublic -filter:replies lang:en'.

NameTypeReqDescription
countintegerRequested page size, capped at 200. Advisory only for this endpoint: X's own search backend typically returns around 13 to 20 tweets per page regardless of the value requested here, an upstream limit…
cursorstringOpaque pagination cursor from a previous response's next_cursor field. Omit on the first call; pass on subsequent calls to fetch the next page.
productstringResult ranking mode. 'Latest' = reverse-chronological (best for monitoring). 'Top' = engagement-ranked (best for finding popular tweets, default when omitted). 'Media' = tweets with images/video. 'Pe…
querystringyesFull advanced-search query string. Supports X operators: from:handle, to:handle, since:YYYY-MM-DD, until:YYYY-MM-DD, min_faves:N, min_retweets:N, filter:links, filter:images, filter:videos, -filter:r…

No output schema declared.

No examples provided.

twitter_article_create ~219

Start a new DRAFT article ('Note') AS your authenticated account. No input required. Returns the new article's id (pass this to twitter_article_update_title / twitter_article_update_content / twitter_article_publish / twitter_article_delete) and its full article object. Requires an authenticated session with write capability behind your key.

NameTypeReqDescription
auth_tokenstringOptional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Sent as the x-auth-token header; never placed in the URL.
ct0stringOptional. The account's ct0 cookie, paired with auth_token. Sent as the x-ct0 header.
proxy_urlstringOptional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.
user_agentstringOptional. User-Agent string to send for this session. Sent as the x-user-agent header.

No output schema declared.

No examples provided.

twitter_article_delete ~392

Delete an article AS your authenticated account. A DRAFT is hard-deleted outright; a PUBLISHED article is unpublished first and then its announcement tweet is deleted too, so this is the one op that fully removes a published article's public footprint (compare twitter_article_unpublish, which leaves the tweet up). Irreversible. lifecycle and tweet_id are optional fast-path hints (read them off a prior twitter_article_create or twitter_article_list response): when omitted, the server figures out the lifecycle itself by scanning your own Draft then Published articles, which costs an extra round trip. Requires an authenticated session with write capability behind your key. Returns ok/deleted and the id you targeted.

NameTypeReqDescription
auth_tokenstringOptional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Sent as the x-auth-token header; never placed in the URL.
ct0stringOptional. The account's ct0 cookie, paired with auth_token. Sent as the x-ct0 header.
idstringyesThe article's entity id, from twitter_article_create or twitter_article_list.
lifecyclestringOptional fast-path hint: 'draft' or 'published', if you already know it. Omit to let the server resolve it (slower, one extra lookup).
proxy_urlstringOptional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.
tweet_idstringOptional fast-path hint: the announcement tweet id, only meaningful when lifecycle is 'published'. Omit to let the server resolve it from your own article list.
user_agentstringOptional. User-Agent string to send for this session. Sent as the x-user-agent header.

No output schema declared.

No examples provided.

twitter_article_get ~438

Read an article's full content (title, content_state, cover media, author, timestamps, public_url). Two mutually exclusive forms. PUBLIC: provide id or url of the article's announcement tweet, no registered session or per-call credentials needed, just your API key, same auth model as twitter_tweet_detail, works for PUBLISHED articles only. OWNER-ONLY: provide article_id (the article's own entity id, from twitter_article_create or twitter_article_list), requires an authenticated session, also reaches your own Drafts, which have no announcement tweet the public form could resolve. Returns 404 (article null) if not found, not visible, or (article_id form) not owned by the calling account.

NameTypeReqDescription
article_idstringOWNER-ONLY form. The article's own entity id, from twitter_article_create or twitter_article_list (e.g. 'ArticleEntity:1234567890123456789', or the bare numeric rest_id). Requires an authenticated se…
auth_tokenstringOptional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Sent as the x-auth-token header; never placed in the URL.
ct0stringOptional. The account's ct0 cookie, paired with auth_token. Sent as the x-ct0 header.
idstringTweet/post numeric id (e.g. "1789012345678901234"). Provide exactly one of id or url.
proxy_urlstringOptional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.
urlstringFull tweet URL, e.g. "https://x.com/elonmusk/status/1789012345678901234". Provide exactly one of id or url.
user_agentstringOptional. User-Agent string to send for this session. Sent as the x-user-agent header.

No output schema declared.

No examples provided.

twitter_article_list ~352

List YOUR OWN articles (drafts or published) AS your authenticated account, most recent first. X exposes no combined view, so this filters to ONE lifecycle per call: pass lifecycle='published' to list published articles, omit it (or pass 'draft') for drafts. Requires an authenticated session behind your key. Returns count, next_cursor (pass it back as cursor to fetch the next page; null/absent means no more pages), and the page of article objects.

NameTypeReqDescription
auth_tokenstringOptional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Sent as the x-auth-token header; never placed in the URL.
countintegerMax articles to return for this page, 1 to 100. Defaults to 20 when omitted.
ct0stringOptional. The account's ct0 cookie, paired with auth_token. Sent as the x-ct0 header.
cursorstringOpaque pagination cursor from a previous response's next_cursor field. Omit on the first call; pass on subsequent calls to fetch the next page.
lifecyclestringWhich lifecycle to list: 'draft' or 'published'. Defaults to 'draft' when omitted. X has no combined view, list each lifecycle separately.
proxy_urlstringOptional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.
user_agentstringOptional. User-Agent string to send for this session. Sent as the x-user-agent header.

No output schema declared.

No examples provided.

twitter_article_publish ~441

Publish a DRAFT article AS your authenticated account, transitioning it to Published and posting a REAL, PUBLIC announcement tweet that your followers and anyone with the link can see. WARNING: this is a genuinely consequential, hard-to-fully-undo action, it is not like saving a draft. twitter_article_unpublish reverts the article to Draft but LEAVES the announcement tweet up; only twitter_article_delete on a published article unpublishes AND removes the announcement tweet, and by then the content was already public for however long it stayed up. Confirm with the caller before publishing unless they have clearly asked for it. Provide the article's id; audience and reply_control default to 'Everyone' when omitted; caption is an optional short (<=256 character) caption for the announcement tweet. Requires an authenticated session with write capability behind your key. Returns the updated (Published) article object.

NameTypeReqDescription
audiencestringOptional. Who can see the published article, e.g. 'Everyone'. Defaults to 'Everyone' when omitted.
auth_tokenstringOptional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Sent as the x-auth-token header; never placed in the URL.
captionstringOptional. Short caption text for the announcement tweet, up to 256 characters.
ct0stringOptional. The account's ct0 cookie, paired with auth_token. Sent as the x-ct0 header.
idstringyesThe article's entity id, from twitter_article_create or twitter_article_list. Must currently be a Draft.
proxy_urlstringOptional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.
reply_controlstringOptional. Who can reply to the announcement tweet, e.g. 'Everyone'. Defaults to 'Everyone' when omitted.
user_agentstringOptional. User-Agent string to send for this session. Sent as the x-user-agent header.

No output schema declared.

No examples provided.

twitter_article_unpublish ~264

Revert a PUBLISHED article back to Draft AS your authenticated account. The announcement tweet the publish posted is LEFT IN PLACE, still publicly visible, use twitter_article_delete instead if you also want that tweet removed. X refuses this with an 'invalid_lifecycle' error if the article is not currently Published. Requires an authenticated session with write capability behind your key. Returns the updated (Draft) article object.

NameTypeReqDescription
auth_tokenstringOptional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Sent as the x-auth-token header; never placed in the URL.
ct0stringOptional. The account's ct0 cookie, paired with auth_token. Sent as the x-ct0 header.
idstringyesThe article's entity id, from twitter_article_create or twitter_article_list. Must currently be Published.
proxy_urlstringOptional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.
user_agentstringOptional. User-Agent string to send for this session. Sent as the x-user-agent header.

No output schema declared.

No examples provided.

twitter_article_update_content ~305

Replace the body content of a DRAFT or PUBLISHED article AS your authenticated account. Provide the article's id and content_state: Draft.js JSON ({ blocks: [...], entityMap: [...] }) that YOU build and pass through verbatim, this tool does not construct or validate it. Requires an authenticated session with write capability behind your key. Returns the updated article object.

NameTypeReqDescription
auth_tokenstringOptional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Sent as the x-auth-token header; never placed in the URL.
content_stateobjectyesDraft.js content state object: { blocks: [...], entityMap: [...] }. You construct this JSON yourself (it is the same shape the X Article editor produces); it is passed through to X verbatim and not v…
ct0stringOptional. The account's ct0 cookie, paired with auth_token. Sent as the x-ct0 header.
idstringyesThe article's entity id, from twitter_article_create or twitter_article_list.
proxy_urlstringOptional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.
user_agentstringOptional. User-Agent string to send for this session. Sent as the x-user-agent header.

No output schema declared.

No examples provided.

twitter_article_update_cover_media ~347

Attach an ALREADY-UPLOADED image as the cover of a DRAFT or PUBLISHED article, AS your authenticated account. This does NOT upload: call twitter_media_upload first and pass the media_id it returns. Provide the article's id (from twitter_article_create or twitter_article_list). Requires an authenticated session with write capability behind your key. Returns the updated article object with cover_media populated.

NameTypeReqDescription
auth_tokenstringOptional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Sent as the x-auth-token header; never placed in the URL.
ct0stringOptional. The account's ct0 cookie, paired with auth_token. Sent as the x-ct0 header.
idstringyesThe article's entity id, from twitter_article_create or twitter_article_list (e.g. 'ArticleEntity:1234567890123456789').
media_categorystringOptional. X's media category for the upload. Defaults to 'DraftTweetImage', which is what X's own article editor sends for a cover image. Only set this if you know X expects a different category.
media_idstringyesThe media id returned by twitter_media_upload for the image to use as the cover.
proxy_urlstringOptional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.
user_agentstringOptional. User-Agent string to send for this session. Sent as the x-user-agent header.

No output schema declared.

No examples provided.

twitter_article_update_title ~262

Set or replace the title of a DRAFT or PUBLISHED article AS your authenticated account. Provide the article's id (from twitter_article_create or twitter_article_list) and the new title. Requires an authenticated session with write capability behind your key. Returns the updated article object.

NameTypeReqDescription
auth_tokenstringOptional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Sent as the x-auth-token header; never placed in the URL.
ct0stringOptional. The account's ct0 cookie, paired with auth_token. Sent as the x-ct0 header.
idstringyesThe article's entity id, from twitter_article_create or twitter_article_list (e.g. 'ArticleEntity:1234567890123456789').
proxy_urlstringOptional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.
titlestringyesThe new article title (non-empty).
user_agentstringOptional. User-Agent string to send for this session. Sent as the x-user-agent header.

No output schema declared.

No examples provided.

twitter_blocking ~355

List the accounts YOUR authenticated account has BLOCKED, as full user objects, cursor-paginated. Requires an authenticated session behind your key. There is no user_id argument: X provides no way to read another account's block list, so this reads yours only. An empty users array is a real answer meaning you block nobody, never a silent failure, because the endpoint returns an error status rather than an empty page when it cannot read the list.

NameTypeReqDescription
auth_tokenstringOptional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Sent as the x-auth-token header; never placed in the URL.
countintegerRequested page size, capped at 200. Advisory only for this endpoint: X's own search backend typically returns around 13 to 20 tweets per page regardless of the value requested here, an upstream limit…
ct0stringOptional. The account's ct0 cookie, paired with auth_token. Sent as the x-ct0 header.
cursorstringOpaque pagination cursor from a previous response's next_cursor field. Omit on the first call; pass on subsequent calls to fetch the next page.
proxy_urlstringOptional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.
user_agentstringOptional. User-Agent string to send for this session. Sent as the x-user-agent header.

No output schema declared.

No examples provided.

twitter_bookmark_folder_timeline ~276

Read the tweets inside ONE of your authenticated account's bookmark folders, identified by folder_id (from twitter_bookmark_folders). Requires an authenticated session behind your key. Cursor-paginated; there is no count/page-size argument for this op.

NameTypeReqDescription
auth_tokenstringOptional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Sent as the x-auth-token header; never placed in the URL.
ct0stringOptional. The account's ct0 cookie, paired with auth_token. Sent as the x-ct0 header.
cursorstringOpaque pagination cursor from a previous response's next_cursor field. Omit on the first call; pass on subsequent calls to fetch the next page.
folder_idstringyesThe bookmark folder's id, from twitter_bookmark_folders (e.g. '2073826456430592429').
proxy_urlstringOptional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.
user_agentstringOptional. User-Agent string to send for this session. Sent as the x-user-agent header.

No output schema declared.

No examples provided.

twitter_bookmark_folders ~248

List YOUR authenticated account's bookmark FOLDERS (X's internal name: collections), the named groups you can organize saved tweets into, separate from your flat bookmarks list (twitter_bookmarks). Requires an authenticated session behind your key. Returns each folder's id, name, and a cover image. Takes no arguments; your folders resolve from your session alone. Use twitter_bookmark_folder_timeline with a folder's id to read the tweets inside it.

NameTypeReqDescription
auth_tokenstringOptional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Sent as the x-auth-token header; never placed in the URL.
ct0stringOptional. The account's ct0 cookie, paired with auth_token. Sent as the x-ct0 header.
proxy_urlstringOptional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.
user_agentstringOptional. User-Agent string to send for this session. Sent as the x-user-agent header.

No output schema declared.

No examples provided.

twitter_bookmark_search ~320

Full-text search within YOUR authenticated account's bookmarks. Requires an authenticated session behind your key. Returns matching bookmarked tweets plus a cursor. Use this to retrieve a previously bookmarked tweet by keyword.

NameTypeReqDescription
auth_tokenstringOptional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Sent as the x-auth-token header; never placed in the URL.
countintegerRequested page size, capped at 200. Advisory only for this endpoint: X's own search backend typically returns around 13 to 20 tweets per page regardless of the value requested here, an upstream limit…
ct0stringOptional. The account's ct0 cookie, paired with auth_token. Sent as the x-ct0 header.
cursorstringOpaque pagination cursor from a previous response's next_cursor field. Omit on the first call; pass on subsequent calls to fetch the next page.
proxy_urlstringOptional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.
querystringyesSearch terms to match against your bookmarked tweets' text.
user_agentstringOptional. User-Agent string to send for this session. Sent as the x-user-agent header.

No output schema declared.

No examples provided.

twitter_bookmark_tweet ~262

Bookmark a tweet to YOUR authenticated account's private bookmarks. Provide the tweet id or url. Requires write capability behind your key. Reverse with twitter_unbookmark_tweet.

NameTypeReqDescription
auth_tokenstringOptional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Sent as the x-auth-token header; never placed in the URL.
ct0stringOptional. The account's ct0 cookie, paired with auth_token. Sent as the x-ct0 header.
idstringTweet/post numeric id (e.g. "1789012345678901234"). Provide exactly one of id or url.
proxy_urlstringOptional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.
urlstringFull tweet URL, e.g. "https://x.com/elonmusk/status/1789012345678901234". Provide exactly one of id or url.
user_agentstringOptional. User-Agent string to send for this session. Sent as the x-user-agent header.

No output schema declared.

No examples provided.

twitter_bookmarks ~297

List YOUR authenticated account's bookmarked tweets, most recent first. Requires an authenticated session behind your key. Returns each bookmarked tweet with author and metrics plus a cursor.

NameTypeReqDescription
auth_tokenstringOptional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Sent as the x-auth-token header; never placed in the URL.
countintegerRequested page size, capped at 200. Advisory only for this endpoint: X's own search backend typically returns around 13 to 20 tweets per page regardless of the value requested here, an upstream limit…
ct0stringOptional. The account's ct0 cookie, paired with auth_token. Sent as the x-ct0 header.
cursorstringOpaque pagination cursor from a previous response's next_cursor field. Omit on the first call; pass on subsequent calls to fetch the next page.
proxy_urlstringOptional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.
user_agentstringOptional. User-Agent string to send for this session. Sent as the x-user-agent header.

No output schema declared.

No examples provided.

twitter_check_follow_relationship ~116

Check the follow relationship between two accounts by numeric user id: whether the source follows the target, whether the target follows the source, blocking/muting flags where available. Both ids are required. Use this to verify a follow before/after a follow action, or to detect mutuals.

NameTypeReqDescription
source_user_idstringyesNumeric user id of the SOURCE account (the 'is this account following...' subject).
target_user_idstringyesNumeric user id of the TARGET account (the '...the target?' object).

No output schema declared.

No examples provided.

twitter_community_about ~169

The About tab for one X Community: its moderators, and a preview of its members, both returned as FULL user profiles with bio, follower and following counts, tweet counts, location, website, banner and join date. twitter_community_members and twitter_community_moderators return a reduced row instead, so this is the endpoint that answers who runs a community in one call rather than one call plus a profile lookup per person. Use twitter_community_info instead for the community's own metadata (name, description, rules, join policy); this endpoint is about the PEOPLE, not the community object.

NameTypeReqDescription
community_idstringyesNumeric X community id, the digits in a x.com/i/communities/<id> URL, e.g. '1493446837214187523'.

No output schema declared.

No examples provided.

twitter_community_info ~249

Get the metadata for one X Community by its numeric id: name, description, member_count, moderator_count, join_policy, invites_policy, the join question, primary topic, search tags, the posted rules, both the custom and the default banner plus a resolved banner_url, the permalink, the admin and creator profiles, and the facepile member ids. The community id is the digits in a x.com/i/communities/<id> URL. IMPORTANT: role, can_join, is_pinned and viewer_relationship_type are ALWAYS null here and that is deliberate, not an error, because they describe the account that made the call and this is a pooled read served by a rotating account. rules[].description is also always null: X sends only the rule id and name on this payload. Use twitter_community_members for the roster and twitter_community_tweets for the posts.

NameTypeReqDescription
community_idstringyesNumeric X community id, the digits in a x.com/i/communities/<id> URL, e.g. '1493446837214187523'. Digits only. This is NOT a Space id (those are base-62 tokens) and NOT a user id.

No output schema declared.

No examples provided.

twitter_community_members ~329

List 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'. Rows are { user, role }. The user object is deliberately REDUCED (id, username, name, profile_image_url, is_blue_verified, verified, is_protected) because X's roster operation sends no bio, no follower or following counts and no created_at; call twitter_user_info with an id when the full profile is needed. Note that the role on a member ROW is NOT caller-relative and is returned in full, unlike the role field on the community object itself. Admins and moderators are interleaved through this list at arbitrary positions, so do NOT derive a moderator list by filtering the first page: use twitter_community_moderators. Paging is a bare next_cursor with no total count from X; stop when members comes back empty or has_more is false.

NameTypeReqDescription
community_idstringyesNumeric X community id, the digits in a x.com/i/communities/<id> URL, e.g. '1493446837214187523'.
countintegerMax roster rows to return for this page. Defaults to 20 and is clamped to 1-100, so a larger number returns 100 rather than erroring.
cursorstringOpaque pagination cursor from a previous response's next_cursor field. Omit on the first call. Absence of next_cursor is the only end-of-list signal X gives on this operation.

No output schema declared.

No examples provided.

twitter_community_memberships ~297

The INVERSE community lookup: given a numeric X USER id, list the communities that account belongs to, cursor-paginated. Every other community tool starts from a community; this one starts from an account, which makes it the tool for profiling which audiences a person sits inside. Each row is the FULL community object (the same shape twitter_community_info returns, with member counts, rules, topic, policies, admin and creator), so no follow-up call per community is needed. Takes a numeric user id ONLY, not a @handle: resolve a handle with twitter_user_info first, because resolving it here would silently cost a second call. An EMPTY communities array is a real, successful answer (the account is in no communities), not a not-found. As on twitter_community_info, role / can_join / is_pinned / viewer_relationship_type are always null on every community returned, because this is a pooled read.

NameTypeReqDescription
countintegerMax communities to return for this page. Defaults to 20 and is clamped to 1-100.
cursorstringOpaque pagination cursor from a previous response's next_cursor field. Omit on the first call.
user_idstringyesNumeric X user id, e.g. '1281109705495130113'. NOT a @handle and NOT a community id. Resolve a handle to its id with twitter_user_info first.

No output schema declared.

No examples provided.

twitter_community_moderators ~246

List the moderators and admins of an X Community, cursor-paginated, in the same { user, role } row shape twitter_community_members returns (the array is also called members, deliberately, so the two cannot drift apart). This is a SEPARATE upstream operation, not a filter over the member roster, and that matters for correctness: moderators sit at arbitrary positions inside the full roster, so filtering one page of twitter_community_members would return 'the moderators among the first 20 members' while looking like a complete answer. Read each row's role rather than assuming every row is a Moderator, since admins appear here too. Paging is a bare next_cursor with no total count from X.

NameTypeReqDescription
community_idstringyesNumeric X community id, the digits in a x.com/i/communities/<id> URL, e.g. '1493446837214187523'.
countintegerMax rows to return for this page. Defaults to 20 and is clamped to 1-100.
cursorstringOpaque pagination cursor from a previous response's next_cursor field. Omit on the first call.

No output schema declared.

No examples provided.

twitter_community_search ~188

Find X Communities by keyword, cursor-paginated. This is the discovery step the rest of the community family assumes: every other community endpoint starts from a community id, and this is the one that produces one. Each hit is a compact record, id, name, member count, nsfw flag, topic name, banners and the facepile avatars, exactly what X's own search sends and nothing more. Once you have an id, use twitter_community_info or twitter_community_about for detail, twitter_community_members / twitter_community_moderators for the roster, and twitter_community_tweets for its posts.

NameTypeReqDescription
cursorstringOpaque pagination cursor from a previous response's next_cursor field. Omit on the first call.
querystringyesKeyword to search for, 1 to 500 characters, e.g. 'build in public'.

No output schema declared.

No examples provided.

twitter_community_tweets ~353

Read an X Community's own post timeline, cursor-paginated as full tweet objects, with the community's PINNED post returned as its own separate 'pinned' field rather than as an item inside 'tweets'. That split is not cosmetic: X delivers the pinned post under a different timeline instruction and does not repeat it in the feed, so a client that iterates only 'tweets' silently loses it, and it is very often the community's rules post, the single most useful item in the response. To build one flat list, read 'pinned' first if non-null, then 'tweets' (the pinned post is excluded from 'tweets', so there is no duplicate). ranking_mode is a REAL upstream parameter, not a local sort. Use twitter_advanced_search instead when the search should span all of X rather than one community.

NameTypeReqDescription
community_idstringyesNumeric X community id, the digits in a x.com/i/communities/<id> URL, e.g. '1493446837214187523'.
countintegerMax posts to return for this page. Defaults to 20 and is clamped to 1-100.
cursorstringOpaque pagination cursor from a previous response's next_cursor field. Omit on the first call.
ranking_modestringOrdering, sent to X as a real request parameter. 'Recency' is the default and the only value confirmed against a live capture. 'Relevance' is accepted because X's own community tab offers exactly two…

No output schema declared.

No examples provided.

twitter_create_tweet ~332

Post a new tweet AS your authenticated account. Set reply_to to post a reply, or quote to post a quote-tweet. This publishes publicly and is not silently reversible (use twitter_delete_tweet to remove it). Requires an authenticated session with write capability behind your key. Returns the new tweet_id and url.

NameTypeReqDescription
auth_tokenstringOptional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Sent as the x-auth-token header; never placed in the URL.
ct0stringOptional. The account's ct0 cookie, paired with auth_token. Sent as the x-ct0 header.
media_idsstringOptional. Comma-separated media id(s) from a prior media upload to attach (images/video).
proxy_urlstringOptional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.
quotestringOptional. Numeric id of the tweet to quote. When set, this tweet quote-tweets that tweet.
reply_tostringOptional. Numeric id of the tweet to reply to. When set, this tweet is posted as a reply in that conversation.
textstringyesThe tweet body text (1 to 280 characters, or longer if the account has extended limits).
user_agentstringOptional. User-Agent string to send for this session. Sent as the x-user-agent header.

No output schema declared.

No examples provided.

twitter_customer_session ~332

Register YOUR OWN X account session against your API key, so the authenticated-account tools (twitter_home_timeline, twitter_bookmarks, twitter_dm_list, twitter_dm_conversation, twitter_user_likes, twitter_article_list) and the write tools (twitter_create_tweet, twitter_dm_send, twitter_follow_user, twitter_favorite_tweet, twitter_retweet, twitter_media_upload, twitter_article_create, twitter_article_update_title, twitter_article_update_content, twitter_article_publish, twitter_article_unpublish, twitter_article_delete) act as your account. Provide your x.com session cookies auth_token and ct0 (copy them from a logged-in browser); optionally a user_agent and a residential proxy_url. The cookies are stored server-side against your key and are never returned. Returns ok, the resolved username, and whether the session validated live. Prefer twitter_user_login if you would rather pass a username/password than raw cookies. Most tools also accept auth_token/ct0 per-call without registering.

NameTypeReqDescription
auth_tokenstringyesYour x.com auth_token cookie value, from a logged-in browser session. Stored server-side against your key; never returned.
ct0stringyesYour x.com ct0 (CSRF) cookie value, from the same browser session. Paired with auth_token.
proxy_urlstringOptional. HTTP or SOCKS proxy URL to route this session's traffic through, e.g. 'http://user:pass@host:port'.
user_agentstringOptional. Browser User-Agent to send with this session's requests. Defaults to a current Chrome UA.

No output schema declared.

No examples provided.

twitter_customer_session_delete ~203

Revoke the X account session you registered with twitter_customer_session, deleting the stored auth_token and ct0 from twitterapis.com. Self-serve, no ticket and no human in the loop. Scoped to your own API key by construction: it takes no account identifier of any kind, so it cannot reach another key's session. Idempotent and free: revoking twice, or revoking when nothing was stored, still returns ok with deleted=false, and it costs no credits, so a key that is out of balance can still delete its credentials. After this, the authenticated-account tools (twitter_home_timeline, twitter_bookmarks, twitter_dm_list, twitter_dm_conversation, twitter_user_likes) and the write tools stop acting as that account until you register again. IMPORTANT: this deletes the stored copy only. It does NOT log the account out of x.com, so to invalidate the cookies themselves, also revoke the session from your X account settings.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

twitter_customer_session_status ~206

Read back the X account session you registered with twitter_customer_session, without changing it. Returns registered (false if you never registered one), the resolved username and twitter_user_id the session actually maps to, status ('ok', or 'dead' once X has rejected the cookies), created_at, updated_at, last_used_at, and an egress block: source (one of session, sticky_residential, pool_residential, direct), customer_proxy_in_use (true when the proxy_url you registered is the one your writes leave from), and a note explaining that tier. Never returns auth_token, ct0, or any proxy URL. Use it to answer 'am I posting as the account I think I am', 'has my session expired', and 'is the proxy I supplied actually being used' without opening a support ticket. Free, and scoped to your own API key by construction: it takes no account identifier of any kind, so it cannot read another key's session.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

twitter_delete_tweet ~270

Delete a tweet AS your authenticated account. Irreversible: the tweet is permanently removed. You can only delete tweets your authenticated account authored. Provide the tweet id or url. Requires write capability behind your key.

NameTypeReqDescription
auth_tokenstringOptional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Sent as the x-auth-token header; never placed in the URL.
ct0stringOptional. The account's ct0 cookie, paired with auth_token. Sent as the x-ct0 header.
idstringTweet/post numeric id (e.g. "1789012345678901234"). Provide exactly one of id or url.
proxy_urlstringOptional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.
urlstringFull tweet URL, e.g. "https://x.com/elonmusk/status/1789012345678901234". Provide exactly one of id or url.
user_agentstringOptional. User-Agent string to send for this session. Sent as the x-user-agent header.

No output schema declared.

No examples provided.

twitter_dm_conversation ~228

Get the messages in one Direct Message conversation by its conversation_id (from twitter_dm_list). Requires an authenticated session behind your key. Returns each message with sender id, time, and text. Read-only: this does not send DMs.

NameTypeReqDescription
auth_tokenstringOptional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Sent as the x-auth-token header; never placed in the URL.
conversation_idstringyesThe conversation_id from a twitter_dm_list entry identifying which DM thread to read.
ct0stringOptional. The account's ct0 cookie, paired with auth_token. Sent as the x-ct0 header.
proxy_urlstringOptional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.
user_agentstringOptional. User-Agent string to send for this session. Sent as the x-user-agent header.

No output schema declared.

No examples provided.

twitter_dm_list ~203

List YOUR authenticated account's Direct Message conversations (inbox), each with the participant and a conversation_id you can pass to twitter_dm_conversation. Requires an authenticated session behind your key. Read-only: this does not send DMs.

NameTypeReqDescription
auth_tokenstringOptional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Sent as the x-auth-token header; never placed in the URL.
ct0stringOptional. The account's ct0 cookie, paired with auth_token. Sent as the x-ct0 header.
proxy_urlstringOptional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.
user_agentstringOptional. User-Agent string to send for this session. Sent as the x-user-agent header.

No output schema declared.

No examples provided.

twitter_dm_send ~304

Send a Direct Message AS your authenticated account. Provide the recipient's numeric user id (recipient_id, resolve a @handle with twitter_user_info first) and the message text. Requires an authenticated session with write capability behind your key; X soft-blocks writes from datacenter IPs, so route through a residential proxy_url for reliability. Returns message_id and conversation_id. Delivers a real DM and is not silently reversible.

NameTypeReqDescription
auth_tokenstringOptional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Sent as the x-auth-token header; never placed in the URL.
ct0stringOptional. The account's ct0 cookie, paired with auth_token. Sent as the x-ct0 header.
proxy_urlstringOptional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.
recipient_idstringyesNumeric Twitter/X user id of the recipient (e.g. '44196397'). Resolve a @handle to its id with twitter_user_info first. The recipient must allow DMs from you.
textstringyesThe Direct Message body text to send (non-empty).
user_agentstringOptional. User-Agent string to send for this session. Sent as the x-user-agent header.

No output schema declared.

No examples provided.

twitter_favorite_tweet ~262

Like (favorite) a tweet AS your authenticated account. Provide the tweet id or url. Requires write capability behind your key. Reverse with twitter_unfavorite_tweet.

NameTypeReqDescription
auth_tokenstringOptional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Sent as the x-auth-token header; never placed in the URL.
ct0stringOptional. The account's ct0 cookie, paired with auth_token. Sent as the x-ct0 header.
idstringTweet/post numeric id (e.g. "1789012345678901234"). Provide exactly one of id or url.
proxy_urlstringOptional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.
urlstringFull tweet URL, e.g. "https://x.com/elonmusk/status/1789012345678901234". Provide exactly one of id or url.
user_agentstringOptional. User-Agent string to send for this session. Sent as the x-user-agent header.

No output schema declared.

No examples provided.

twitter_feedback_get ~113

Check the status of a feedback report this account sent earlier (the server id returned by twitter_feedback_send action "send"): status new, triaged, shipped or declined, the team's response text if any, and updated_at, which moves only when the team acts on it. Free per call. 404 if the id is not on this account.

NameTypeReqDescription
idstringyesThe server id of a sent report, as returned by twitter_feedback_send action "send" (a UUID). Not a local draft id.

No output schema declared.

No examples provided.

twitter_feedback_list ~301

List the feedback reports this account has already SENT to twitterapis.com, newest first. Use it when the user asks what they have reported, or to find the server id of an earlier report so twitter_feedback_get can read its full status. NOT the same as twitter_feedback_send action "list", which shows local drafts that have not been sent yet. Each item carries id, type, title, area, status (new, triaged, shipped or declined), the team's response if any, created_at and updated_at, and never details or evidence, so paging this can never bulk-export a report's body: read one by id with twitter_feedback_get for that. Page with cursor while next_cursor is non-null. Free per call, and shares a 10-per-minute limit with the other feedback tools.

NameTypeReqDescription
cursorstringOpaque continuation token from a previous response's next_cursor. Omit it to start from the newest report. A cursor that cannot be decoded is a 400 naming cursor, never a silently empty page.
limitintegerMax reports to return, 1 to 100. Defaults to 25. Anything outside that range is rejected with 400 naming limit.
statusstringOptional. Return only reports in this state. Anything else is rejected with 400 naming status.
typestringOptional. Return only reports of this kind. Anything else is rejected with 400 naming type.

No output schema declared.

No examples provided.

twitter_feedback_send ~665

Report a product problem or gap in twitterapis.com to its team from inside this session, the way Claude Code's own feedback tool works: a report is DRAFTED to a local queue first (action "draft", the default) and SENT only after the user reviews it. Drafting sends nothing, needs no confirmation, and should not be announced mid-task. WHEN TO DRAFT, only at high-signal moments: a twitterapis tool call failed with an error that was not a missing key (401), credits (402), no linked session (409) or a rate limit (429), and the user had to work around it; the user asked for something no twitterapis tool covers; a documented field came back empty or wrong; the user was clearly frustrated with a result. One draft per distinct issue, never twice for the same one. FORMAT for details, four labelled bullets in this order: 'What happened:' observed vs expected, exact error text if short. 'What the user said:' quoted verbatim, or 'user did not comment'. 'Repro:' the minimal call that reproduces it. 'Evidence:' tool name, endpoint, HTTP status, request id (the last failing call is attached automatically where you leave a gap). Facts only: no guessing, no API keys or secrets, no personal names. REVIEW: when the user asks to see or send feedback, call action "list", then action "send" with ONLY the draft ids the user named in their own message, or action "discard". Sending posts each draft to POST /feedback (free) and returns a server id that twitter_feedback_get can check later.

NameTypeReqDescription
actionstringWhat to do. "draft" (default) queues a new report locally and sends nothing. "list" shows the pending drafts with their ids. "send" posts the drafts named in ids to twitterapis.com; use it only for i…
areastringOptional. The endpoint or feature the report is about, e.g. "tweet/thread" or "monitoring". At most 80 characters.
detailsstringRequired for a draft. At most 8000 characters, four labelled bullets in order: What happened, What the user said (verbatim), Repro, Evidence.
evidenceobjectOptional identifiers only, never payloads: {tool, endpoint, status, request_id}. Whatever you leave out is filled from the last failing call in this session; mcp_version and client are always attache…
idsarrayFor action "send" or "discard": the draft ids to act on, exactly as shown by action "list" and named by the user.
titlestringRequired for a draft. One specific line, at most 120 characters, naming the tool or endpoint and the defect, e.g. "twitter_tweet_thread returns 502 when the root tweet is deleted".
typestringRequired for a draft. "bug": a tool or endpoint misbehaved. "idea": a change that would have made the task easier. "missing_capability": the user needed something no tool provides.

No output schema declared.

No examples provided.

twitter_follow_user ~212

Follow a user AS your authenticated account, by numeric user_id. Requires write capability behind your key. Reverse with twitter_unfollow_user.

NameTypeReqDescription
auth_tokenstringOptional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Sent as the x-auth-token header; never placed in the URL.
ct0stringOptional. The account's ct0 cookie, paired with auth_token. Sent as the x-ct0 header.
proxy_urlstringOptional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.
user_agentstringOptional. User-Agent string to send for this session. Sent as the x-user-agent header.
user_idstringyesNumeric user id of the account to follow. Resolve a handle to a user_id first with twitter_user_info.

No output schema declared.

No examples provided.

twitter_followers_you_know ~337

List the 'Followers you know' for a target user id: the followers of that account that YOUR authenticated account also follows (mutual-connection overlap). Requires an authenticated session behind your key. Returns profile data per overlap account plus a cursor.

NameTypeReqDescription
auth_tokenstringOptional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Sent as the x-auth-token header; never placed in the URL.
countintegerRequested page size, capped at 200. Advisory only for this endpoint: X's own search backend typically returns around 13 to 20 tweets per page regardless of the value requested here, an upstream limit…
ct0stringOptional. The account's ct0 cookie, paired with auth_token. Sent as the x-ct0 header.
cursorstringOpaque pagination cursor from a previous response's next_cursor field. Omit on the first call; pass on subsequent calls to fetch the next page.
proxy_urlstringOptional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.
user_agentstringOptional. User-Agent string to send for this session. Sent as the x-user-agent header.
user_idstringyesNumeric user id of the target account to compute shared followers against.

No output schema declared.

No examples provided.

twitter_grok_chat ~547

Ask X's own Grok a question AS your authenticated account, and get ONE complete JSON reply with the answer plus the sources it cited. Unlike a general LLM, Grok reads X in real time, so it can answer about what is being said right now, and passing a bare tweet or status URL as the message returns a structured summary of that post. Returns answer text, citations (url, title, snippet) merged and de-duplicated across every search Grok ran, the searches themselves, and the model that ACTUALLY answered (which can differ from the one you asked for). Buffered, not streamed. STATELESS: nothing is stored, so to continue a conversation pass the prior turns back in messages[] along with conversation_id. Requires an authenticated session for the acting account.

NameTypeReqDescription
auth_tokenstringOptional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Sent as the x-auth-token header; never placed in the URL.
conversation_idstringConversation id returned by a previous call. Omit on the first turn and one is created for you.
ct0stringOptional. The account's ct0 cookie, paired with auth_token. Sent as the x-ct0 header.
image_countintegerHow many images Grok may generate if the prompt calls for one. Defaults to the value X's own client sends. Set 0 for a text-only answer.
messagestringThe prompt, for a single-turn question. A bare tweet or status URL is a first-class input and comes back as a summary of that post. Provide either this or messages[].
messagesstringPrior turns for a multi-turn conversation, oldest first, each { role: 'user' | 'grok', content: '...' }. The endpoint stores nothing, so the full history you want Grok to see must travel in this arra…
modestringWhich Grok to use: 'auto' (default, balanced), 'fast' (quicker, less thorough) or 'expert' (slowest, most thorough). The response reports the model that actually answered, which can differ from the m…
proxy_urlstringOptional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.
user_agentstringOptional. User-Agent string to send for this session. Sent as the x-user-agent header.

No output schema declared.

No examples provided.

twitter_grok_config ~246

Check whether the authenticated account can use Grok, and which models it may pick. Returns eligibility, X's own reasons when it is NOT eligible (passed through verbatim, since we cannot know X's policy), whether free access is enabled, and the available model options. Eligibility is a property of the X ACCOUNT rather than of the API key, so ask this about the same account you intend to run twitter_grok_chat as. Free.

NameTypeReqDescription
auth_tokenstringOptional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Sent as the x-auth-token header; never placed in the URL.
ct0stringOptional. The account's ct0 cookie, paired with auth_token. Sent as the x-ct0 header.
proxy_urlstringOptional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.
user_agentstringOptional. User-Agent string to send for this session. Sent as the x-user-agent header.

No output schema declared.

No examples provided.

twitter_home_timeline ~320

Get YOUR authenticated account's Home timeline (the 'Following'/'For you' feed), most recent first. Requires an authenticated session behind your key. Returns tweets with author and metrics plus a cursor. Use this to read what your account would see when it opens X.

NameTypeReqDescription
auth_tokenstringOptional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Sent as the x-auth-token header; never placed in the URL.
countintegerRequested page size, capped at 200. Advisory only for this endpoint: X's own search backend typically returns around 13 to 20 tweets per page regardless of the value requested here, an upstream limit…
ct0stringOptional. The account's ct0 cookie, paired with auth_token. Sent as the x-ct0 header.
cursorstringOpaque pagination cursor from a previous response's next_cursor field. Omit on the first call; pass on subsequent calls to fetch the next page.
proxy_urlstringOptional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.
user_agentstringOptional. User-Agent string to send for this session. Sent as the x-user-agent header.

No output schema declared.

No examples provided.

twitter_list_add_member ~374

Add one account to a Twitter/X List that YOUR registered X session owns, by numeric list id and numeric user id. Use it to curate a List from code, for example adding each speaker at a conference to a List as they are announced. Returns ok, action, list_id, user_id, the List's member_count read back from X after the write, and the full list object. Read member_count to confirm the change landed: it is null when X returned no list object at all, which is itself the not-applied signal. A write that does not apply (the account is already a member, the List is not yours) comes back with the SAME field layout plus a 422 and a machine-readable reason, and is not billed. Reverse with twitter_list_remove_member.

NameTypeReqDescription
auth_tokenstringOptional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Sent as the x-auth-token header; never placed in the URL.
ct0stringOptional. The account's ct0 cookie, paired with auth_token. Sent as the x-ct0 header.
list_idstringyesNumeric id of the List you own. Found in the list URL: x.com/i/lists/<list_id>.
proxy_urlstringOptional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.
user_agentstringOptional. User-Agent string to send for this session. Sent as the x-user-agent header.
user_idstringyesNumeric user id of the account to add. Resolve a handle to a user_id first with twitter_user_info.

No output schema declared.

No examples provided.

twitter_list_create ~392

Create a new Twitter/X List owned by YOUR registered X session, with a name and an optional description and privacy flag. This is the starting point for building a List from code: create it here, then fill it with twitter_list_add_member using the list id this returns. Returns ok, action, the new list_id, member_count, and the full list object X returned. A List is PUBLIC unless you explicitly ask for a private one, and a private List is not readable by the public List read tools (twitter_list_members, twitter_list_tweets, twitter_list_timeline).

NameTypeReqDescription
auth_tokenstringOptional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Sent as the x-auth-token header; never placed in the URL.
ct0stringOptional. The account's ct0 cookie, paired with auth_token. Sent as the x-ct0 header.
descriptionstringOptional. Description shown on the List, e.g. "People building in public". Defaults to empty.
is_privatestringOptional. Pass the string "true" to create a PRIVATE List. Defaults to false (public), because a public List can be made private later while a leak cannot be undone. Note a private List is not readab…
namestringyesDisplay name for the new List, e.g. "Founders". Required; an empty or whitespace-only name is rejected with a 400.
proxy_urlstringOptional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.
user_agentstringOptional. User-Agent string to send for this session. Sent as the x-user-agent header.

No output schema declared.

No examples provided.

twitter_list_followers ~188

Fetch a public List's followers by its numeric id, cursor-paginated. Followers and members are different sets of people: members are the accounts the List owner added to it, followers are the accounts that subscribed to read it. A List with hundreds of members commonly has only a handful of followers, so a small count here is normal and is not a truncated page. Use twitter_list_members for the member roster instead.

NameTypeReqDescription
countintegerMax items to return for this page. Defaults to 20 and is clamped to 1-100.
cursorstringOpaque pagination cursor from a previous response's next_cursor field. Omit on the first call. next_cursor is null once X marks the follower list complete.
list_idstringyesNumeric Twitter/X List id. Found in the list URL: x.com/i/lists/<list_id>.

No output schema declared.

No examples provided.

twitter_list_members ~214

List the members of a Twitter/X List by its numeric list id. Returns profile data for each member. Paginate with cursor. Use this to enumerate curated account sets, including competitor lists, industry watchlists, or media outlet lists. The list_id appears in the X.com list URL (x.com/i/lists/<list_id>).

NameTypeReqDescription
countintegerRequested page size, capped at 200. Advisory only for this endpoint: X's own search backend typically returns around 13 to 20 tweets per page regardless of the value requested here, an upstream limit…
cursorstringOpaque pagination cursor from a previous response's next_cursor field. Omit on the first call; pass on subsequent calls to fetch the next page.
list_idstringyesNumeric Twitter/X List id. Found in the list URL: x.com/i/lists/<list_id>.

No output schema declared.

No examples provided.

twitter_list_remove_member ~366

Remove one account from a Twitter/X List that YOUR registered X session owns, by numeric list id and numeric user id. Use it to prune a curated List, for example dropping accounts that have gone quiet. Returns ok, action, list_id, user_id, the List's member_count read back from X after the write, and the full list object. Read member_count to confirm the removal landed: it is null when X returned no list object at all, which is itself the not-applied signal. A write that does not apply (the account was never a member, the List is not yours) comes back with the SAME field layout plus a 422 and a machine-readable reason, and is not billed. Reverse with twitter_list_add_member.

NameTypeReqDescription
auth_tokenstringOptional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Sent as the x-auth-token header; never placed in the URL.
ct0stringOptional. The account's ct0 cookie, paired with auth_token. Sent as the x-ct0 header.
list_idstringyesNumeric id of the List you own. Found in the list URL: x.com/i/lists/<list_id>.
proxy_urlstringOptional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.
user_agentstringOptional. User-Agent string to send for this session. Sent as the x-user-agent header.
user_idstringyesNumeric user id of the account to remove. Resolve a handle to a user_id first with twitter_user_info.

No output schema declared.

No examples provided.

twitter_list_timeline ~213

Read a public Twitter/X List's NATIVE feed, the same posts and the same ordering the List shows on x.com, including members' retweets. It takes only list_id, count and cursor: no date range and no reply filter exist on this endpoint, because a native timeline cannot honour search operators. Use twitter_list_tweets when you need a date range or want replies filtered out, and accept that it drops retweets in exchange. Paginate with cursor until the tweets array comes back empty.

NameTypeReqDescription
countintegerMax posts to return for this page. Defaults to 20 and is clamped to 1-100, so a larger number returns at most 100 rather than erroring.
cursorstringOpaque pagination cursor from a previous response's next_cursor field. Omit on the first call.
list_idstringyesNumeric Twitter/X List id. Found in the list URL: x.com/i/lists/<list_id>. The List must be public.

No output schema declared.

No examples provided.

twitter_list_tweets ~434

Read the posts written by the members of a public Twitter/X List, newest first, through X's search index. This is the FILTERABLE List feed: it accepts since and until date bounds and an include_replies toggle. It does NOT return retweets, and search-index lag applies, so a post made moments ago can be missing for a short while. Use twitter_list_timeline instead when you want the List exactly as X shows it, retweets and native ordering included, and accept that it takes no filters. Paginate with cursor. The list_id appears in the X.com list URL (x.com/i/lists/<list_id>).

NameTypeReqDescription
countintegerMax posts to return for this page. Defaults to 20 and is clamped to 1-100, so a larger number returns at most 100 rather than erroring.
cursorstringOpaque pagination cursor from a previous response's next_cursor field. Omit on the first call.
include_repliesstringOptional. Whether to include replies written by List members. Pass the string "true" or "false"; defaults to true when omitted. Any other value is rejected with a 400 rather than read as false.
list_idstringyesNumeric Twitter/X List id. Found in the list URL: x.com/i/lists/<list_id>. The List must be public.
productstringWhich search ranking to read. 'Latest' (default) is reverse-chronological. 'Top' is X's ranked ordering. Any unrecognised value falls back to Latest rather than erroring.
sincestringOptional. Only posts on or after this date, as YYYY-MM-DD (e.g. "2026-08-01"). Any other format is rejected with a 400.
untilstringOptional. Only posts BEFORE this date, as YYYY-MM-DD. EXCLUSIVE, matching X's own until: search operator, so a post made on the until date is not returned. Any other format is rejected with a 400.

No output schema declared.

No examples provided.

Common questions

What is the TwitterAPIs MCP server?

TwitterAPIs is an MCP server listed in the public MCP registry as io.github.TwitterAPIs/twitterapis-mcp. Official MCP server for twitterapis.com. Read and write Twitter/X: search, users, tweets, DMs. This page covers its npm package (@twitterapis/mcp).

Is the TwitterAPIs MCP server safe to use?

TwitterAPIs scores 75 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the TwitterAPIs MCP server expose?

TwitterAPIs exposes 99 tools: twitter_advanced_search, twitter_user_search, twitter_user_info, twitter_user_info_by_id, twitter_user_status, and 94 more. Their descriptions and schemas cost roughly 24,793 tokens of context every time the server is loaded.

Is the TwitterAPIs MCP server still maintained?

TwitterAPIs is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the TwitterAPIs MCP server under?

TwitterAPIs declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.