MCP server for X/Twitter API v2 with OAuth 2.0 PKCE authentication
X-MCP provides 10 Twitter tools with consistent Zod schema definitions and basic descriptions. All tools have input schemas and descriptions present. However, descriptions are generic (avg ~60 chars, well below the 194-char baseline for A+ tools) and lack actionable context for LLM selection. Parameter descriptions are minimal or absent. No output schemas documented. Error handling is absent, no recovery guidance, retryability classification, or actionable error messages. Tool composition is reasonable (single responsibility), but descriptions do not explain WHEN to use each tool vs. alternatives (e.g., search_tweets vs. get_user_tweets). No pagination guidance despite tools returning lists. Security: credentials injected via environment variables (correct), but no audit logging or permission gates visible.
Get the authenticated user's X/Twitter profile.
Get the authenticated user's home timeline.
Get a specific tweet by its ID.
Get a user's X/Twitter profile by username.
Get recent tweets from a specific user.
Like a tweet on X/Twitter.
Post a tweet to X/Twitter. Supports replies and quote tweets.
Descriptions are generic and lack LLM-optimized context. Average length ~60 chars vs. 194-char baseline. No explanation of WHEN to use each tool or how it differs from similar tools (e.g., search_tweets vs. get_user_tweets). LLMs cannot reliably select the right tool.
No output schemas documented. Callers cannot predict response structure, forcing LLMs to guess field names for downstream tool calls. Breaks tool chaining (e.g., get_user returns user_id, but no schema confirms this).
No error handling or recovery guidance. Tools will fail silently or return raw API errors. LLMs have no guidance on retryability, user-fixable vs. fatal errors, or next steps. E.g., 'User not found' should suggest search_users() first.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Reply to a specific tweet on X/Twitter.
Retweet a tweet on X/Twitter.
Search for tweets on X/Twitter using a query string.
List-returning tools (search_tweets, get_timeline, get_user_tweets) lack pagination guidance. No maxResults constraints documented (e.g., 1 - 100). Large result sets will blow context windows. No next_cursor or total_count in response schema.
Destructive tools (post_tweet, like_tweet, retweet, reply_to_tweet) lack confirmation or dry-run support. No idempotent hints. Agents may accidentally post duplicate tweets or like the same tweet twice on retry.