Skip to content

io.github.kaitoInfra/twitterapi-mcp-server

by kaitoInfra · remote · no sign-in to list tools · v0.1.0 · published by GitHub user kaitoInfra

Twitter/X read-only MCP server — 12 tools: search, users, tweets, followers, timelines, trends.

Read only

12 tools: 12 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http twitterapi https://mcp.twitterapi.io/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

12 tools

Only reads 12Claude Code: allow
  • get_tweet_quotesFetch quote-tweets (tweets that quote the given tweetId).Reads text others writeNo findings

    Why it is in this group

    • The name "get_tweet_quotes" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe name "get_tweet_quotes" says "get" and "tweet": it reads posts, which other people can write.
    • untrusted-inputThe description's first sentence says "fetch" and "tweet": it reads posts, which other people can write.
    Description, as the server wrote it
    Fetch quote-tweets (tweets that quote the given tweetId). Useful for finding commentary on a tweet, measuring reach beyond direct replies. Supports time bounds (sinceTime/untilTime, Unix seconds). Paginates via cursor (~20 per page).

    Annotations the server declares

    • title: Get Tweet Quotes
    • readOnlyHint: true
    • openWorldHint: true
  • get_tweet_repliesFetch replies to a specific tweet.Reads text others writeNo findings

    Why it is in this group

    • The name "get_tweet_replies" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe name "get_tweet_replies" says "get" and "tweet": it reads posts, which other people can write.
    • untrusted-inputThe description's first sentence says "fetch" and "reply": it reads comments, which other people can write.
    Description, as the server wrote it
    Fetch replies to a specific tweet. Pass the numeric tweetId of the root tweet; returns top-level replies (about 20 per page) with full tweet objects. Use this for thread analysis, sentiment on a viral post, or building reply trees.

    Annotations the server declares

    • title: Get Tweet Replies
    • readOnlyHint: true
    • openWorldHint: true
  • get_tweet_retweetersFetch users who retweeted a specific tweet (the simple 'retweet' action, not quote-tweets — for those use get_tweet_quotes).Reads text others writeNo findings

    Why it is in this group

    • The name "get_tweet_retweeters" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe name "get_tweet_retweeters" says "get" and "tweet": it reads posts, which other people can write.
    • untrusted-inputThe description's first sentence says "fetch" and "tweet": it reads posts, which other people can write.
    Description, as the server wrote it
    Fetch users who retweeted a specific tweet (the simple 'retweet' action, not quote-tweets — for those use get_tweet_quotes). Returns user profiles with metadata. Paginates via cursor (~100 per page).

    Annotations the server declares

    • title: Get Tweet Retweeters
    • readOnlyHint: true
    • openWorldHint: true
  • get_tweets_by_idsBatch-fetch full tweet objects by their numeric tweet IDs.Reads text others writeNo findings

    Why it is in this group

    • The name "get_tweets_by_ids" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe name "get_tweets_by_ids" says "get" and "tweet": it reads posts, which other people can write.
    • untrusted-inputThe description's first sentence says "tweet": it reads posts, which other people can write.
    Description, as the server wrote it
    Batch-fetch full tweet objects by their numeric tweet IDs. Pass a comma-separated string of up to 100 IDs. Use this when you already have specific tweet IDs (e.g., from a search result, a URL, or a webhook event) and need the full tweet data — author, text, engagement counts, media, etc.

    Annotations the server declares

    • title: Batch Get Tweets by IDs
    • readOnlyHint: true
    • openWorldHint: true
  • get_user_aboutFetch the extended 'about' / profile page data for a Twitter/X user by screen name.Reads text others writeNo findings

    Why it is in this group

    • The name "get_user_about" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Fetch the extended 'about' / profile page data for a Twitter/X user by screen name. Returns extra profile metadata beyond what get_user_info gives (when available). Use get_user_info first; only call this if you need additional about-page fields.

    Annotations the server declares

    • title: Get User About Page
    • readOnlyHint: true
    • openWorldHint: true
  • get_user_followersFetch followers of a Twitter/X user in reverse chronological order (newest first), each with full profile metadata (name, bio, follower count, verified status, etc.).Reads text others writeNo findings

    Why it is in this group

    • The name "get_user_followers" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Fetch followers of a Twitter/X user in reverse chronological order (newest first), each with full profile metadata (name, bio, follower count, verified status, etc.). Paginates via cursor. Use this to analyze who follows an account, build follower audiences, or sample for competitive analysis. For large accounts use pagination; you will not get all followers in one call.

    Annotations the server declares

    • title: Get User Followers
    • readOnlyHint: true
    • openWorldHint: true
  • get_user_followingsFetch the accounts a Twitter/X user follows, with full profile metadata.Reads text others writeNo findings

    Why it is in this group

    • The name "get_user_followings" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Fetch the accounts a Twitter/X user follows, with full profile metadata. Paginates via cursor. Use this to map a user's interest graph (who they follow signals what they care about).

    Annotations the server declares

    • title: Get User Followings
    • readOnlyHint: true
    • openWorldHint: true
  • get_user_infoFetch basic profile info for a Twitter/X user by their screen name (handle).Reads text others writeNo findings

    Why it is in this group

    • The name "get_user_info" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Fetch basic profile info for a Twitter/X user by their screen name (handle). Returns user ID, display name, bio, follower/following counts, verified status, profile picture, banner, location, website, and account creation date. Use this as the starting point for any user analysis.

    Annotations the server declares

    • title: Get User Profile
    • readOnlyHint: true
    • openWorldHint: true
  • get_user_last_tweets⚠[U+FE0F] ONLY for 'latest / recent / what's new' queries about a user.Reads text others writeNo findings

    Why it is in this group

    • The name "get_user_last_tweets" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe name "get_user_last_tweets" says "get" and "tweet": it reads posts, which other people can write.
    Description, as the server wrote itContains invisible characters, shown as [U+…]
    ⚠[U+FE0F] ONLY for 'latest / recent / what's new' queries about a user. DO NOT use for date-range queries (e.g. 'tweets from January 2026', 'tweets last week', 'tweets between X and Y', 'tweets in 2025'). For specific dates / older tweets, use **search_tweets** with query like 'from:elonmusk since:2026-01-01 until:2026-02-01'. Fetch the MOST RECENT tweets posted by a Twitter/X user, sorted by created_at descending (newest first). Provide EITHER userName (screen name, no @) OR userId (numeric). Use userId when known — handles can change. Set includeReplies=true to include the user's reply tweets in addition to top-level tweets. Paginates via cursor (~20 per page).

    Annotations the server declares

    • title: Get User's Recent Tweets
    • readOnlyHint: true
    • openWorldHint: true
  • get_user_mentionsFetch tweets that mention a specific Twitter/X user (i.e.Reads text others writeNo findings

    Why it is in this group

    • The name "get_user_mentions" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe name "get_user_mentions" says "get" and "mention": it reads comments, which other people can write.
    • untrusted-inputThe description's first sentence says "fetch" and "tweet": it reads posts, which other people can write.
    Description, as the server wrote it
    Fetch tweets that mention a specific Twitter/X user (i.e. tweets containing @userName). Useful for brand monitoring, sentiment tracking on a public figure, or finding conversations involving an account. Supports time-bound queries via sinceTime/untilTime (Unix seconds). Paginates via cursor.

    Annotations the server declares

    • title: Get Mentions of a User
    • readOnlyHint: true
    • openWorldHint: true
  • search_tweets🎯 PRIMARY CHOICE for date-range / historical / keyword-based tweet queries.Reads text others writeNo findings

    Why it is in this group

    • The name "search_tweets" says "search": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe name "search_tweets" says "search" and "tweet": it reads posts, which other people can write.
    • untrusted-inputThe description's first sentence says "tweet": it reads posts, which other people can write.
    Description, as the server wrote it
    🎯 PRIMARY CHOICE for date-range / historical / keyword-based tweet queries. Use this (NOT get_user_last_tweets) whenever user asks about a SPECIFIC TIME RANGE or historical tweets: • 'tweets from January 2026' → query='from:elonmusk since:2026-01-01 until:2026-02-01' • 'tweets between X and Y' → 'from:USER since:X until:Y' • 'tweets last week / last month' → translate to since:/until: dates • 'tweets containing keyword X by user Y' → 'from:Y X' • 'older tweets' / 'archive' / 'in 2025' → use date range, not pagination Date format: YYYY-MM-DD (UTC midnight). 'until:' is exclusive (until:2026-02-01 = up to Jan 31). General: Search Twitter/X for tweets matching a query. Supports the full Twitter advanced search syntax (from:, to:, since:, until:, lang:, filter:, has:, -, OR, etc). Returns ~20 tweets per page in reverse chronological order ('Latest') or by engagement ('Top'). Use this for keyword research, monitoring mentions of a brand/topic, finding tweets in a date range, or any open-ended tweet discovery.

    Annotations the server declares

    • title: Search Tweets
    • readOnlyHint: true
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

No private-data, untrusted-input, outbound path in this server alone: no tool is tagged private-data or outbound.

Reads private data0
Reads files, mail, messages, databases, secrets, calendars or repositories.
Can send data out0
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Install

Pinned to version 0.1.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http twitterapi https://mcp.twitterapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__twitterapi__search_tweets",
      "mcp__twitterapi__get_user_info",
      "mcp__twitterapi__get_user_about",
      "mcp__twitterapi__get_user_followers",
      "mcp__twitterapi__get_user_followings",
      "mcp__twitterapi__get_user_last_tweets",
      "mcp__twitterapi__get_user_mentions",
      "mcp__twitterapi__get_tweets_by_ids",
      "mcp__twitterapi__get_tweet_replies",
      "mcp__twitterapi__get_tweet_quotes",
      "mcp__twitterapi__get_tweet_retweeters",
      "mcp__twitterapi__get_trends"
    ],
    "ask": [],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as twitterapi. Review it before you use it.

Capability tags behind 12 rules
  • mcp__twitterapi__search_tweets untrusted-input
  • mcp__twitterapi__get_user_info untrusted-input
  • mcp__twitterapi__get_user_about untrusted-input
  • mcp__twitterapi__get_user_followers untrusted-input
  • mcp__twitterapi__get_user_followings untrusted-input
  • mcp__twitterapi__get_user_last_tweets untrusted-input
  • mcp__twitterapi__get_user_mentions untrusted-input
  • mcp__twitterapi__get_tweets_by_ids untrusted-input
  • mcp__twitterapi__get_tweet_replies untrusted-input
  • mcp__twitterapi__get_tweet_quotes untrusted-input
  • mcp__twitterapi__get_tweet_retweeters untrusted-input
  • mcp__twitterapi__get_trends untrusted-input