MCP server for Twitter/X API integration enabling tweet posting, searching, timeline management, user interactions, and scheduled tweet publishing
The server provides 27 tools with mixed quality. Most tools have descriptions (194-char baseline met for many), but parameter descriptions and schema details are often missing or minimal. Naming follows verb_noun convention well (post_tweet, delete_tweet, get_timeline, etc.), which is good. However, many parameters lack detailed descriptions explaining format, range, or constraints. Output schemas are not documented in the source code provided. Error handling and recovery guidance are not visible. Tool composition is reasonable, each tool has a single responsibility, but several parameters are under-specified (e.g., 'max_results' lacks min/max bounds in descriptions, 'woeid' parameter in get_trends has WOEID examples in description but no enum constraint). The server supports sensitive operations (delete_tweet, schedule_delete) without visible dry-run or confirmation patterns. Security concerns: no visible secret injection pattern for Twitter API credentials, though the tool_policy.go middleware suggests JWT-based access control exists.
Bookmark a tweet for later
Delete a tweet by its ID
Follow a Twitter user
Get your bookmarked tweets
Get information about the authenticated Twitter user
Get tweets that mention the authenticated user
Get the authenticated user's home timeline (recent tweets from followed accounts)
Parameters lack detailed constraints in descriptions. E.g., max_results in get_timeline states '(default: 10, max: 100)' but provides no minimum, no guidance on behavior with invalid values. sample_size in get_topics_heat similarly lacks min bound documentation in the description itself.
Output schemas are not documented. The input parameter schemas are visible, but expected response structures (e.g., what fields does post_tweet return? What structure does get_timeline return?) are not shown in the source code provided. This prevents LLMs from planning multi-step tool chains effectively.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 58 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 58 | - | v1 |
Analyze how 'hot' multiple topics are on Twitter. Returns a heat score (0-100) based on tweet volume and engagement metrics (likes, retweets, replies). Useful for comparing topic popularity.
Get trending topics for a location. Use WOEID: 1=Worldwide, 23424950=Spain, 23424977=USA, 766273=Madrid
Get a Twitter user's profile information including bio, followers count, etc.
Get recent tweets from a specific user
Like a tweet
Post a thread (multiple connected tweets)
Post a new tweet to Twitter/X
Remove a bookmark from a tweet
Retweet a tweet
Delete a scheduled tweet or thread
Get scheduled tweets ready for publishing
List scheduled tweets with optional status filter
Publish a scheduled tweet or thread immediately
Schedule a tweet or thread for later publishing
Update a scheduled tweet or thread
Search for trending content across multiple topics at once. Useful for exploring what's being discussed about specific subjects.
Search for tweets matching a query. Supports Twitter search operators.
Remove a retweet
Unfollow a Twitter user
Remove like from a tweet
Destructive tools (delete_tweet, schedule_delete) have no visible dry-run, confirmation, or MRTR (Multi Round-Trip Request) pattern. Agents can invoke delete_tweet without user confirmation, risking accidental data loss. The HARD CAP rule for idempotency and confirmation is not met.
Error handling and recovery guidance are not visible in the tool definitions. Tools do not document what errors can occur, whether they are retryable, and what the LLM should do next. E.g., what happens if post_tweet fails due to rate limiting? What should the agent do?
get_trends parameter 'woeid' description includes example values (1=Worldwide, 23424950=Spain, etc.) but does not constrain them as an enum. LLMs may hallucinate invalid WOEIDs. Replace examples with formal enum constraints.
No visible tool annotations (readOnlyHint, destructiveHint, idempotentHint) in the provided source code. The MCP 2026-07-28 spec includes tool annotations to guide agent behavior, read-only tools should be marked as such, and destructive tools should carry a destructiveHint.
get_me has a trivial description ('Get information about the authenticated Twitter user') and no parameters, making it harder for LLMs to determine when to call it vs. other user-related tools. Clarify when to use this vs. get_user_profile.
No visible idempotency or deduplication pattern. Tools like post_tweet and post_thread could be called twice by a retrying agent, creating duplicate posts. No idempotency key parameter or documentation of idempotent behavior is visible.