A powerful Twitter/X management platform with MCP integration for Claude. Schedule tweets, manage accounts, and analyze performance with Next.js, Twitter API v2, and Upstash.
This server demonstrates solid tool definition quality with consistent naming patterns, comprehensive descriptions, and well-structured input schemas across all 11 tools. All tools follow verb_noun naming conventions (list_, create_, delete_, schedule_, post_, reschedule_, convert_). Descriptions are emoji-enhanced and generally informative (100-250 chars, within the 10-1024 baseline). Input schemas are fully typed with JSON Schema declarations. However, there are notable gaps: output schemas are not documented in the source code provided, error handling guidance is absent, and some parameters lack explicit validation constraints. The server avoids critical failures, no missing descriptions, no untyped parameters, but falls short of A-grade polish in response documentation and error recovery guidance.
➕ ADD COMMUNITY: Add a new X (Twitter) community to the user's managed communities.
📮 CONVERT DRAFT TO POSTED: Convert a draft tweet directly to posted status (publish it immediately).
🔄 CONVERT DRAFT TO SCHEDULED: Convert an existing DRAFT tweet to SCHEDULED status by setting a scheduled time.
✍️ CREATE TWEET: Create a new tweet or draft for the authenticated user. Supports both single tweets and threads. Use this to create content that can be posted immediately or saved as a draft for later scheduling. Do NOT use this for scheduling - use convert_draft_to_scheduled instead!
🗑️ DELETE TWEET: Delete a tweet by its ID. Can delete draft, scheduled, or posted tweets.
👥 LIST COMMUNITIES: Get all X (Twitter) communities that the authenticated user manages.
Output schemas not documented. No evidence in source code of return type documentation for any tool. LLMs cannot plan downstream calls or extract necessary fields without knowing response structure.
Error handling guidance absent. No evidence in tool descriptions of what errors can occur, whether they are retryable, or what the LLM should do next (e.g., 'Tweet rate limited, retry in 5 minutes' or 'Tweet not found, list available tweets first').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 64 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 38 | - | v1 |
🔍 LIST TWEETS: Get all tweets for the authenticated user. Supports filtering by status, date, text search, and pagination.
🔐 LIST TWITTER ACCOUNTS: Get all connected Twitter/X accounts for the authenticated user.
📤 POST TWEET: Post a tweet immediately (publish now). Creates and posts in one action.
📅 RESCHEDULE TWEET: Change the scheduled time for a scheduled tweet.
⏰ SCHEDULE EXISTING TWEET: Schedule an existing DRAFT tweet for posting at a specific time. This is the PREFERRED way to schedule new content - first create a draft, then convert it to scheduled.
Missing idempotency declarations. Post-state-modifying tools (create_tweet, delete_tweet, post_tweet) should declare idempotent behavior or side effects to guide LLM retry logic. No annotation or guidance visible.
Parameter validation constraints underspecified. No explicit min/max for 'limit' and 'page' in list_tweets (should constrain 1 - 100, default 10/1). No regex or format constraints on ISO 8601 timestamps. Allows LLMs to pass invalid values (e.g., page=99999, limit=-5).
Chaining IDs potentially incomplete. For example, create_tweet returns tweetId (inferred), but no documentation of whether response includes account_id, status, or scheduled_time for downstream calls. Unclear if subsequent calls can chain results.
Confirmation/dry-run missing for destructive operations. delete_tweet has no confirmation step or dry-run option. High-risk for agent mistakes, no way to preview or abort.