Read-only public X (Twitter) profiles, tweets, threads, followers and search via MCP protocol
Server exposes 32 tools across multiple integrations (LangChain, LlamaIndex, n8n, CrewAI, TypeScript SDK). Tool naming is consistent (verb_noun pattern: get_user, search_tweets, x_get_followers). Descriptions are present and moderately detailed (avg ~150 chars), explaining cost implications and pagination. However, schemas are incomplete: many tools lack explicit input parameter type definitions in visible source; parameter descriptions vary in quality. Output schemas are not documented. Error handling guidance is minimal. The server is HTTP-based and appears stateless, but tool definitions are scattered across multiple package implementations (Python, TypeScript, n8n), making verification difficult. Per-tool analysis reveals inconsistent schema rigor.
Create a checkout session for purchasing credits
Get numeric ids of an X user's followers without profiles
Get followers of an X user as full profiles
Get accounts an X user follows
Get authenticated user information
Get quotes of one X post
Get direct replies to one X post
Duplicate tool definitions across frameworks. Tools like x_get_user and getUser perform identical operations but with different names (snake_case vs camelCase), forcing LLMs to reason about which variant to use. This violates single-responsibility and creates confusion.
Output schemas not documented. Tools return paginated results (next_cursor) and structured profiles, but response field schemas are not visible in source. LLMs cannot plan downstream tool calls without knowing what fields are returned.
Inconsistent parameter descriptions. LangChain tools (x_get_*) have detailed descriptions explaining cost implications and pagination; TypeScript/n8n variants (get*, list*) have minimal descriptions (10-50 chars). This creates inconsistent LLM guidance across integrations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Get accounts that retweeted one X post
Get one X post with its thread and replies
Get one X post by numeric id with its author
Get up to 100 X posts by id in one call
Get public profile of one X user by handle
Get latest posts of one X user
Get profiles of up to 100 X users in one call
List available credit packs
Search public X posts with x.com operators
Search public X (Twitter) posts with the x.com operators (from:, since:, min_faves:, lang:, "phrase").
Your credit balance and the cost of the last call. Free.
Numeric ids of an X user's followers, without the profiles. Costs 0.02 credit per id, five times less than x_get_followers. Use it to size or intersect an audience.
Followers of an X user, as full profiles. Costs 0.1 credit per profile. Some accounts refuse this read; a 403 is free. Use x_get_follower_ids when ids are enough.
Accounts an X user follows. Costs 0.1 credit per profile. Some accounts refuse this read; a 403 is free.
Quotes of one X post. Costs 1 credit per quote.
Direct replies to one X post, one page. Costs 1 credit per reply.
Accounts that retweeted one X post. Costs 0.1 credit per profile.
One X post with its thread and replies, the focal post first. Use it to read a whole conversation in one call. Costs 1 credit per post returned.
One X post by numeric id, with its author. Costs 1 credit.
Up to 100 X posts by id in ONE call. Prefer this over repeated single reads. Costs 1 credit per post found; deleted or private posts are listed in errors and cost nothing.
Public profile of one X (Twitter) user by handle: bio, counts, verified state, created date. Costs 1 credit.
Latest posts of one X user, newest first. Pages with next_cursor. Costs 1 credit per post.
Profiles of up to 100 X users in ONE call. Prefer this over repeated single reads: it is one request and one rate-limit slot. Costs 1 credit per profile found; handles that do not exist are listed in errors and cost nothing.
Public profile of one X user by handle.
Search public X posts with the x.com operators. The main entry point when you do not already know a handle or a post id. Costs 1 credit per result returned; an empty result is free. Pages with next_cursor.
No error handling guidance. Tools accept pagination cursors and optional 'fresh' flags but do not document what errors can occur (403 for private accounts, 404 for deleted tweets, rate limits). LLMs cannot plan recovery.
Missing parameter constraints. 'count' parameter accepts 1-50 but no min/max validation is documented. 'product' enum in searchTweets is declared but other tools lack similar constraints. Unbounded parameters invite invalid LLM inputs.