OpenTweet MCP Server
OfficialOpenTweet MCP Server lets an MCP client manage X/Twitter publishing, media/AI content, analytics, and evergreen recycling through authenticated tools.
Create, thread, draft, schedule, publish immediately, update, delete, list/get, and batch-schedule tweets/posts (up to 50), with multi-account targeting.
Upload media and generate AI images or videos for use in posts.
Inspect account status, connected X accounts, tweet analytics, top posts, profile growth, content gaps, and best posting times; trigger fresh best-time analysis.
Manage an evergreen queue: settings, add/remove posts, pause/unpause, cooldowns, list/get details, and publishing history.
Search X for inspiration and repurpose tweet text into drafts with AI.
Note: this schema exposes X/Twitter-focused tools; README-only cross-posting, Articles, CSV import, and DM campaign tools are not present in the provided schema.
Enables cross-posting content to Bluesky alongside X and LinkedIn: tweets and threads created via create_tweet/create_thread accept a platforms array (e.g. ["x","bluesky","linkedin"]) to publish the same content to Bluesky in one call, with per-network results showing what published, failed, or was skipped, and platform status reporting for connected/usable Bluesky accounts.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@OpenTweet MCP Server Schedule this tweet for tomorrow at 9am"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
OpenTweet MCP Server
Post, schedule, and thread on X (Twitter), Bluesky and LinkedIn from Claude, Cursor, ChatGPT, Windsurf, or any MCP client. 44 tools covering posts, threads, cross-posting, scheduling, CSV import, long-form Articles, an evergreen queue, analytics, AI media generation, DM campaigns, and multi-account management.
No X developer account, no OAuth app setup, no pay-per-call API billing. OpenTweet owns the X connection; your agent gets simple tools.
Quick start: hosted server (recommended)
Nothing to install. Point your MCP client at the hosted Streamable HTTP endpoint:
https://mcp.opentweet.io/mcpClaude Code, one command:
claude mcp add --transport http opentweet \
https://mcp.opentweet.io/mcp \
--header "Authorization: Bearer ot_your_api_key"Or any MCP client config (Claude, Cursor, Windsurf, ChatGPT connectors):
{
"mcpServers": {
"opentweet": {
"type": "streamable-http",
"url": "https://mcp.opentweet.io/mcp",
"headers": { "Authorization": "Bearer ot_your_api_key" }
}
}
}Get your API key (prefix ot_) at opentweet.io/developer. Connect your X account once in the dashboard; the key covers everything else.
Related MCP server: Spectre
Other install options
Claude Desktop extension (one click)
Download the .mcpb extension from opentweet.io/claude-desktop and double-click it. Your API key is stored in the OS keychain.
To build a bundle from this repo:
cd mcp-server
npm run build:mcpbThat compiles TypeScript, installs production dependencies only, and writes opentweet-<package.json version>.mcpb. Bump the version in both package.json and manifest.json before building, otherwise the output overwrites the bundle already in the repo. The tool list in manifest.json is what Claude Desktop shows before install, so keep it in step with the tools the server registers.
Local via npm
npx -y @opentweet/mcp-server install # interactive installer, detects your clientOr add manually:
{
"mcpServers": {
"opentweet": {
"command": "npx",
"args": ["-y", "@opentweet/mcp-server"],
"env": { "OPENTWEET_API_KEY": "ot_your_api_key" }
}
}
}Config file locations:
Claude Desktop:
~/Library/Application Support/Claude/claude_desktop_config.json(macOS) or%APPDATA%\Claude\claude_desktop_config.json(Windows)Cursor:
~/.cursor/mcp.jsonWindsurf:
~/.codeium/windsurf/mcp_config.json
The 44 tools
Tweets and threads
create_tweet, create_thread, list_tweets, get_tweet, update_tweet, delete_tweet, publish_tweet, schedule_tweet, batch_schedule (up to 50 at once), import_csv (AI writes a post per row, scheduled from the row's date and time), repurpose_tweet
create_tweet and create_thread take an optional platforms array. Pass ["x", "bluesky", "linkedin"] to publish the same content to all three networks in one call, or ["linkedin"] to post to LinkedIn only. LinkedIn posts go to the connected personal profile, and a thread goes to LinkedIn as one post. An explicit list is always honoured exactly.
Leaving platforms out is not the same as pinning the post to X. An unspecified post follows the account's auto cross-post setting: when that is on, it goes to every connected network. Call list_platforms first if you need to know where an unspecified post will land. It separates what an unspecified post is attempted on from the subset that will actually land, and separates connected from usable, so a network whose authorisation expired shows as needing a reconnect instead of looking healthy. Either way the response carries a per-network result so you can see what published, failed, or was skipped.
Media and AI generation
upload_media, generate_image, generate_video
Analytics and insights
get_analytics, get_top_posts, get_profile_growth, get_best_times, analyze_best_times, get_content_gaps, search_inspiration
Account and cross-posting
get_account, list_accounts (multi-account: pass x_account_id to any tool), list_platforms (what an unspecified post targets, the auto cross-post setting, and which networks can publish right now)
Evergreen queue
get_evergreen_settings, update_evergreen_settings, list_evergreen_posts, get_evergreen_post, add_to_evergreen, update_evergreen_post, remove_from_evergreen, get_evergreen_history
Articles (long-form X posts)
create_article, get_article, list_articles, update_article, delete_article, publish_article
DM campaigns (Advanced and Agency plans)
dm_campaign_create, dm_campaign_list, dm_campaign_report, dm_leads_list, dm_lead_approve, dm_inbox_list
Plus MCP resources (account status, scheduled queue) and built-in prompts.
Example prompts
"Write 3 tweets about TypeScript tips and schedule them across this week at my best posting times."
"Turn this blog post into a thread and schedule it for tomorrow 9am."
"What were my top 5 tweets this month? Add the best one to my evergreen queue."
"Check my posting streak and content gaps, then draft tweets to fill them."
How it compares
X's official MCP server (XMCP) exposes the raw X API and can post, but it requires an X developer account, OAuth app credentials, and pay-per-use API billing, and it has no scheduling. OpenTweet is the managed publishing layer: flat pricing from $19.99/month, scheduling, threads, evergreen recycling, and analytics included. Full comparison: opentweet.io/mcp/post-to-x.
Links
Setup guide: opentweet.io/twitter-mcp-server
REST API docs: opentweet.io/docs/api
Pricing: opentweet.io/pricing (7-day free trial)
License
MIT
Available Tools
30 toolsopentweet_add_to_evergreenADestructive
Add a post to the evergreen queue pool. Either add an existing post by ID or create a new evergreen post with text content.
Inputs: text, post_id, category, is_thread, +4 more.
opentweet_analyze_best_timesAIdempotent
Trigger a fresh analysis of the user's best posting times by pulling their last ~100 tweets from X (with engagement metrics) and computing an engagement-weighted heatmap. Uses owned-read X API calls (cheap under 2026 X pricing). Cooldown: once per 24 hours.
Inputs: x_account_id.
opentweet_batch_scheduleBDestructiveIdempotent
Schedule multiple tweets at once. Each tweet must already exist as a draft. Provide an array of post IDs with their scheduled dates.
Inputs: schedules (required), community_id, x_account_id, share_with_followers.
opentweet_create_threadADestructive
Create a Twitter/X thread (multiple connected tweets posted as a chain).
Inputs: tweets (required), category, publish_now, auto_retweet, +3 more.
opentweet_create_tweetCDestructive
Create a tweet. Can save as draft, schedule for a specific time, or publish immediately to X.
Inputs: text (required), category, media_urls, publish_now, +4 more.
opentweet_delete_tweetADestructiveIdempotent
Permanently delete a tweet. This cannot be undone. If the tweet was published to X, it will also be deleted from X by default.
Inputs: id (required), delete_from_x.
opentweet_generate_imageA
Generate an AI image from a text prompt using Grok Imagine (xAI). Returns a permanent URL ready to use in tweets via media_urls. Requires XAI_API_KEY to be configured on the server.
Inputs: prompt (required), resolution, aspect_ratio.
opentweet_generate_videoA
Generate an AI video from a text prompt using Grok Imagine (xAI). Video generation is async — this tool starts the job AND polls until complete (up to 5 minutes). Returns the final video URL ready to use in tweets. Requires XAI_API_KEY to be configured on the server.
Inputs: prompt (required), duration, resolution, aspect_ratio.
opentweet_get_accountARead-only
Get your OpenTweet account status including subscription plan, daily posting limits, post counts, and connected X accounts.
Inputs: no named parameters.
opentweet_get_analyticsBRead-only
Get your posting analytics including stats, streaks, trends, category breakdown, and recent activity. Use type parameter to get specific analytics.
Inputs: type, period, sort_by, x_account_id.
opentweet_get_best_timesARead-only
Get the best times to post on X based on the user's actual published tweets weighted by engagement (likes, retweets, replies, bookmarks, impressions). Returns a 7×24 day-of-week × hour heatmap, the top 5 windows, and AI-generated insights. If no analysis exists yet, falls back to a frequency-only summary and prompts the user to run analyze.
Inputs: x_account_id.
opentweet_get_content_gapsARead-only
Returns the user's content gaps: topics they engage with as a reader on X (likes) but rarely post about themselves, plus AI-generated post hook suggestions for those gaps.
Inputs: x_account_id.
opentweet_get_evergreen_historyARead-only
View the publishing history of evergreen posts. Shows clones that were automatically created and posted from the evergreen pool.
Inputs: page, limit, source_id, x_account_id.
opentweet_get_evergreen_postARead-only
Get full details of a specific evergreen post including its recent publishing history.
Inputs: id (required).
opentweet_get_evergreen_settingsARead-only
Get your evergreen queue settings and pool statistics. Shows whether the queue is enabled, posting frequency, cooldown, and pool size limits.
Inputs: x_account_id.
opentweet_get_profile_growthARead-only
Get the user's X profile growth: follower deltas (7/30/90 days), 7d engagement totals, and avg engagement rate. Replaces X Premium+ analytics for OpenTweet users.
Inputs: days, x_account_id.
opentweet_get_top_postsARead-only
Get your top-performing tweets ranked by engagement (or other metric). Returns the user's actual best-performing posts with metrics, useful for repurposing or studying what works.
Inputs: days, sort, limit, x_account_id, +1 more.
opentweet_get_tweetARead-only
Get full details of a specific tweet by its ID.
Inputs: id (required).
opentweet_list_accountsARead-only
List your connected X/Twitter accounts. Use the returned account IDs with x_account_id parameter in other tools to target a specific account.
Inputs: no named parameters.
opentweet_list_evergreen_postsARead-only
List posts in your evergreen pool. Shows all source posts that will be automatically reposted on rotation.
Inputs: page, limit, paused, x_account_id.
opentweet_list_tweetsARead-only
List your tweets with optional filtering by status. Returns paginated results.
Inputs: page, limit, status, x_account_id.
opentweet_publish_tweetADestructive
Publish an existing draft or scheduled tweet immediately to X/Twitter. Requires an active subscription and X account connection.
Inputs: id (required).
opentweet_remove_from_evergreenADestructiveIdempotent
Remove a post from the evergreen pool. The post is converted back to a regular draft, not deleted.
Inputs: id (required).
opentweet_repurpose_tweetADestructive
Repurpose an existing tweet with AI, transforming it into your own voice. Saves the result as a draft by default.
Inputs: tweet_text (required), tone, instructions, tweet_author, +2 more.
opentweet_schedule_tweetADestructiveIdempotent
Schedule an existing draft tweet for a specific date and time. The post must be a draft (not already posted or an evergreen source).
Inputs: id (required), scheduled_date (required).
opentweet_search_inspirationARead-only
Search X/Twitter for high-performing tweets to find content inspiration. Returns tweets with engagement metrics. Use filters to narrow results.
Inputs: query (required), lang, has_media, min_likes, +3 more.
opentweet_update_evergreen_postBDestructiveIdempotent
Update an evergreen post's cooldown period or pause/unpause it.
Inputs: id (required), paused, cooldown_days.
opentweet_update_evergreen_settingsADestructiveIdempotent
Update evergreen queue settings. Control whether the queue is active, how many posts per day, posting times, and default cooldown period.
Inputs: enabled, posting_times, posts_per_day, default_cooldown_days.
opentweet_update_tweetADestructiveIdempotent
Update an existing tweet. Can change text, category, schedule, or media. Cannot edit already-posted tweets.
Inputs: id (required), text, category, is_thread, +6 more.
opentweet_upload_mediaADestructive
Upload an image or video file to use in tweets. Returns a URL that can be passed to create_tweet or update_tweet in the media_urls field. Supported formats: JPG, PNG, GIF, WebP (max 5MB), MP4, MOV (max 20MB).
Inputs: file_path (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 30 tools
Each tool targets a distinct function with clear descriptions; potential overlap between get_best_times and analyze_best_times is resolved by descriptions (one fetches existing, the other triggers analysis).
All tools follow a consistent 'opentweet_verb_noun' snake_case pattern, making it predictable for an agent to infer purpose from names.
30 tools is above the typical well-scoped range, but each serves a unique purpose in tweet management, scheduling, evergreen content, analytics, media, and AI features. Slightly heavy but still reasonable.
The tool set covers full tweet lifecycle (CRUD, scheduling, publishing), evergreen replay, analytics, media upload, AI generation, inspiration search, and profile growth—no obvious gaps for the domain.
Maintenance
Related MCP Connectors
Publish and schedule tweets and threads on X (Twitter) from your AI assistant.
Schedule and analyze posts on 12 networks, incl. Bluesky, Mastodon and Telegram, from any AI agent
Post & schedule to 32+ networks: X, Facebook, Instagram, Threads, LinkedIn, TikTok, YouTube, Reddit.
Schedule, generate and publish social posts to X, LinkedIn, Instagram, Threads and YouTube
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables you to write, refine, and publish tweets to X (Twitter) using AI assistance.1Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to fully automate X/Twitter interactions including searching, posting, engaging, and managing multiple accounts without paid API keys.MIT
- AlicenseAqualityDmaintenanceEnables Twitter/X marketing automation, including tweet search, account analysis, trending topics, and optional AI-generated tweets and scheduling.6MIT
- AlicenseNot gradedqualityCmaintenanceProvides 19+ tools for AI agents to interact with X/Twitter, including search, posting, analysis, and monitoring capabilities.17 npm3MIT