MCP server · https://mcp.xpert.so/mcp
The X (Twitter) MCP server for AI agents.
Connect Xpert to Claude, ChatGPT, Cursor, VS Code or any MCP client. One OAuth sign-in and your agent gets 133+ tools to draft posts in your voice, schedule threads and X Articles, read analytics, watch for leads and reply, all on your X account, all with your approval.
Your connector URL
https://mcp.xpert.so/mcpOne OAuth sign-in connects your X account. No API key to paste.
Pick your app
Connect Claude
- 1.Open Claude → Settings → Connectors.
- 2.Click “Add custom connector”.
- 3.Paste the connector URL below, then Connect.
- 4.Sign in with Xpert and authorize once in your browser.
Endpoints: https://mcp.xpert.so/mcp (Streamable HTTP) · https://mcp.xpert.so/sse (legacy SSE) · discovery via /.well-known/mcp/server-card.json
Say it in plain English
You talk to your agent; the agent calls the tool. Every example below is a real tool name the server exposes.
“Draft a thread about what we shipped this week, in my voice.”
calls compose_post
“Score this draft against my history before I post it.”
calls predict_post
“What is resonating in my network right now?”
calls network_pulse
“Find the best posts for me to reply to today.”
calls network_opportunities
“Schedule this for my best time tomorrow.”
calls schedule_post
“Which of my followers are bots?”
calls list_bot_followers
“Run a profile x-ray on @competitor and tell me their hook formulas.”
calls analyze_profile
“Any new leads from my keyword monitors?”
calls list_signals
“Write an X Article from this blog post with an AI cover.”
calls create_article
Every tool, in one place
133 typed tools generated from the same manifest that drives the Xpert API and CLI, plus a generic xpert_api_call passthrough for anything new. This list is rendered from that manifest, so it is always current.
Write & publish
26 tools
Drafts, AI composing in your voice, scheduling, queue slots and instant publishing.
- list_scheduled_posts
- List pending scheduled posts.
- schedule_post
- Schedule a draft for future publication.
- cancel_scheduled_post
- Cancel a pending scheduled post.
- publish_now
- Publish a draft immediately.
- get_queue_slots
- List the manual posting-queue time slots.
- set_queue_slots
- Replace the manual posting-queue time slots.
- list_best_times
- List data-driven best posting times.
- list_drafts
- List drafts.
- create_draft
- Create a draft (post / thread / article).
- get_draft
- Get a draft.
- update_draft
- Update a draft.
- delete_draft
- Delete a draft.
- autopilot_draft
- Agentic draft loop: generates a post/thread in your voice, predicts its hit score against YOUR history, applies its own critique (stronger opener + weak-span rewrites), re-scores, and does one targeted AI revision if still under targetScore. Returns the final draft, before/after scores, the prediction, and the step-by-step trace.
- compose_post
- Generate post text with AI in your voice. Returns the generated text.
- rewrite_text
- Rewrite text with AI. Returns the rewritten text.
- predict_post
- Predict how a draft post will perform: an engagement estimate from your own most-similar past posts plus an AI hook critique.
- strategy_coach
- Get an AI growth action plan for the next 7 days, grounded in your real analytics.
- list_suggestions
- List pending AI post suggestions.
- refresh_suggestions
- Generate missing AI post suggestions now.
- post_suggestion
- Publish a suggested post immediately.
- dismiss_suggestion
- Dismiss a suggested post.
- list_templates
- List the org's reusable tweet templates, most recently edited first.
- create_template
- Create a reusable tweet template (used in compose and as the auto-plug CTA source).
- get_template
- Get one tweet template.
- update_template
- Update a tweet template (partial).
- delete_template
- Delete a tweet template (also detaches it from any auto-plug).
Analytics & prediction
17 tools
Account metrics, growth history, content genome, engagement prediction and calibration.
- analytics_overview
- Account snapshot: followers, posts and 24h metric deltas.
- analytics_growth
- Follower/growth chart data.
- analytics_activity
- Daily activity buckets (posts, views, likes, engagement rate).
- analytics_content
- Content effectiveness stats and top posts.
- post_metrics_history
- Metric history for a single post.
- analytics_realtime
- Real-time metrics for the latest own posts.
- follower_history
- Daily follower-count history (gained/lost/net).
- analytics_calibration
- How well the AI predictor has matched reality for this account: measured samples, mean bias of actual vs predicted engagement rate (pct points), and share of predictions within 1pp.
- analytics_genome
- Content genome: your recent posts clustered into up to 6 labelled themes with post count and average engagement rate per theme, best first. Cached 24h.
- list_posts
- List your own posts with metrics.
- lookup_post
- Look up ANY public X post by its id: text, author, media and metrics. Powers embed previews and post research.
- get_style_profile
- Get the writing-style profile for the active account.
- update_style_profile
- Save manual edits to the writing-style profile.
- reanalyze_style
- Re-derive the style profile from cached posts.
- regenerate_style_brief
- Regenerate the account's About brief from live signals (bio, site, likes, bookmarks, lists).
- search_my_posts
- Semantic search over your own posts.
- list_post_repliers
- Everyone who replied to a post, as an enriched outreach dataset: handle, bio, followers, their reply and a link, most-followed first, plus a downloadable CSV URL for export.
Timeline & network intelligence
9 tools
Read your home timeline, see what your network is amplifying, and find the highest-leverage posts to reply to.
- get_timeline
- Read the home timeline (you + everyone you follow), newest first. Paginate older posts by passing `cursor` (an ISO date from the previous page's next_cursor).
- draft_timeline_reply
- Generate a voice-matched reply, remix, or quote for a post. Returns the drafted text only — it does not publish.
- post_timeline_reply
- Publish a reply, quote, or standalone remix straight to X. For reply/quote, pass the target `tweetId`.
- network_pulse
- What's resonating across the accounts you follow right now: top posts of the last 48h ranked by engagement rate, plus the current author leaderboard.
- network_authors
- Leaderboard of the followed authors driving engagement in your feed, with each author's current top post.
- network_opportunities
- Reply opportunities: fresh posts from your network that are semantically in your lane AND still gaining engagement — the highest-leverage posts to reply to right now.
- network_brief
- AI intelligence brief on your corner of X: themes, momentum, and a concrete playbook grounded in what your network posted. Cached ~12h; pass refresh=1 to regenerate (metered).
- sync_network
- Re-embed new timeline posts and refresh the network author rollup now (normally hourly).
- audience_interests
- Semantic search over your FOLLOWERS' bios: who in your audience cares about a topic, with their bio and reach.
Leads & engagement
25 tools
Keyword monitors, intent-scored lead signals, reply suggestions, the approval queue and CRM contacts.
- list_signals
- Leads found by your keyword monitors: posts the intent classifier scored as commercial intent (shopping / frustrated / curious), best first. Reply via the engagement item endpoints.
- list_contacts
- The org's CRM contact list (leads, engagers, partners) with tags and notes.
- get_contact_by_handle
- Look up a CRM contact by X handle.
- add_contact
- Add or update a contact by handle, with optional tags, notes and source.
- update_contact
- Update a contact's name, tags or notes.
- delete_contact
- Delete a contact.
- list_monitors
- List engagement monitors.
- create_monitor
- Create an engagement monitor (mentions / keyword / competitor).
- delete_monitor
- Delete an engagement monitor.
- list_engagement_items
- List engagement items across monitors.
- suggest_engagement_reply
- AI-generate a reply suggestion for an engagement item.
- respond_to_engagement
- Queue a reply to an engagement item for approval.
- ignore_engagement_item
- Mark an engagement item as ignored.
- list_dm_campaigns
- List DM outreach campaigns.
- create_dm_campaign
- Create a DM outreach campaign (bulk messaging).
- get_dm_campaign
- Get a DM campaign and its targets.
- launch_dm_campaign
- Queue a DM campaign's targets for approval.
- pause_dm_campaign
- Pause a DM campaign.
- get_automation_settings
- Get automation settings for the active account.
- update_automation_settings
- Update automation settings (CTA, auto-DM, auto-delete).
- set_digest_prefs
- Set daily-digest (morning prep) preferences: local hour and timezone (null hour opts out).
- list_approvals
- List approval-queue items.
- approve_item
- Approve a queued item.
- reject_item
- Reject a queued item.
- bulk_approvals
- Bulk approve or reject queued items.
Research & discovery
14 tools
Semantic search over public posts, the viral-post library, competitor autopsies and profile x-rays.
- list_competitors
- List the competitor handles tracked for the active account (max 3).
- add_competitor
- Track a competitor handle (hard cap 3 per account). The weekly autopsy analyses their top posts against your own positioning.
- delete_competitor
- Stop tracking a competitor.
- competitor_analysis
- The cached weekly competitor autopsy: per-competitor observations of what's working for them, each with a concrete angle for you.
- get_profile_xray
- The cached Profile X-ray of any X account: voice, topics, what works, hook formulas, cadence, weaknesses, and how to get their attention. 404 until analyze_profile has run.
- analyze_profile
- Run (or re-run) a Profile X-ray on any public X account: pulls their recent posts, computes engagement stats, and produces a deep AI analysis cached for the org. Metered (credits).
- browse_viral_library
- Browse the global viral-post library; filter by niche/hook/format, sort by score or recency.
- list_library_niches
- List the niches the viral library covers.
- search_viral_library
- Semantic search across the viral library — find high-performing posts similar to a topic or to your own post.
- discover_posts
- Semantic search over a shared, growing corpus of public X posts — find high-performing tweets on any topic to riff on. Each search also backfills fresh results from the firehose into the shared corpus.
- search_users
- Find X ACCOUNTS by keyword (bio/name match) — competitor discovery, prospecting, contact enrichment. Returns profiles with follower counts.
- find_people
- Find real X accounts matching an audience description: authors of posts matching your queries (active on the topic right now) merged with bio matches, deduped and enriched with bio, followers, and a sample post. The caller judges relevance and picks the keepers.
- x_list_posts
- Tweets from a curated X List by list id — plug a List in as an inspiration source.
- community_posts
- Tweets from an X Community by community id — niche-community inspiration source.
Audience & followers
8 tools
Follower analytics, bot detection, relationship history with any handle.
- audience_overview
- Audience overview: follower counts (active, new this week, likely bots, suspicious) and recent followers.
- sync_followers
- Start a background sync of your followers, with bot scoring.
- list_bot_followers
- List flagged likely-bot and suspicious followers (worst first).
- scan_bot_followers
- Run an AI pass to re-judge borderline 'suspicious' followers using name/bio context.
- mark_follower_removed
- Mark a follower as removed (after you block or remove them on X).
- block_follower
- Block a follower on X via the API, then mark them removed.
- unblock_follower
- Unblock a follower on X (reverses block) and clear their removed flag.
- get_relationship
- Relationship/CRM status for a handle: whether they follow you, since when, bot risk, and how many of your posts they've engaged.
Articles & media
8 tools
Long-form X Articles from blocks, AI cover images, image generation and media uploads.
- text_to_image
- Generate an image from a text prompt via any fal model (default flux schnell). Pass `model` to pick a fal model, `aspect`, `negativePrompt`, `steps`, `guidance`, `seed`, or `raw` for model-specific params. Returns a public image URL.
- image_to_image
- Restyle or vary a source image (`imageUrl`) from a prompt via any fal model. `strength` (0..1) controls how far from the source to travel. Returns a public image URL.
- generate_article_image
- Generate an AI image with Recraft V3 and upload it to X: kind 'banner' renders the title as bold poster typography (for covers), 'inline' makes a no-text section illustration. Returns the X mediaId to attach plus a preview URL.
- upload_article_image
- Upload an image for the article editor (multipart 'file'); returns a CDN URL to embed.
- resolve_article_media
- Resolve an Xpert CDN image URL to an X mediaId for attaching to an article.
- import_article
- Pull a PUBLISHED X Article (anyone's) by its tweet id, mapped to editor blocks — competitor/article research.
- create_article
- Create a long-form X Article from blocks (text / heading / image-with-mediaId), with optional AI cover via coverMediaId. Set publish=true to go live immediately; otherwise it stays a draft on X.
- upload_media
- Upload an image to X (provide an image URL or base64). Returns a mediaId.
Account & products
26 tools
X account management, product catalog for plugs, API keys and onboarding.
- get_me
- Get the current user profile.
- get_x_account
- Get the active X account (auto-connects if needed).
- list_x_accounts
- List all X accounts you can act as.
- set_autosync
- Enable or disable auto-sync for the active X account.
- resync_account
- Reset the active X account and re-ingest its data.
- disconnect_x_account
- Disconnect an X account and delete its cached data.
- list_api_keys
- List active API keys.
- create_api_key
- Create an API key (the secret is returned once).
- revoke_api_key
- Revoke an API key.
- onboarding_status
- Check onboarding / ingest progress.
- start_onboarding
- Kick off background profile sync (requires a connected X account).
- get_x_connect_url
- Get a URL to connect a new X account (open it in a browser to finish).
- list_products
- List your products.
- create_product
- Add a product (name + optional URL). The URL is scraped to auto-fill its description.
- get_product
- Get one product.
- update_product
- Update a product.
- rescrape_product
- Re-scrape the product's URL to refresh its description.
- draft_product_post
- Draft an X post about the product, in your voice. Returns the generated text.
- delete_product
- Delete a product.
- search_gifs
- Search Tenor for GIFs to attach to a post. Returns preview + attachable URLs.
- attach_gif
- Stage a picked GIF: fetches it server-side, stores it on the Xpert CDN, and returns a url to put in a draft block's mediaUrls (uploaded to X at publish).
- list_foryou
- The For You feed: pre-drafted, voice-matched replies to fresh rising posts from your network. Each card carries the target post and a ready reply draft.
- dismiss_foryou
- Dismiss a For You reply card.
- regenerate_foryou
- Regenerate the drafted reply on a For You card (metered).
- post_foryou
- Publish a For You reply to X now, optionally with edited text.
- schedule_foryou
- Schedule a For You reply for later: pass when = 'next_slot', 'best_time', or an ISO datetime.
Scoped like it matters
Connecting is OAuth 2.1 with PKCE, never a pasted API key. You grant scopes on a consent screen and every tool call is checked against them server-side. Grant read only and the agent can analyze everything but publish nothing.
read
Read & analytics
View your profile, X accounts, posts, analytics, drafts and suggestions.
write
Authoring & publishing
Create and edit drafts, generate posts with AI, schedule and publish.
engage
Engagement & automation
Manage monitors, reply suggestions, the approval queue and automation settings.
dm
DM outreach
Create and run direct-message campaigns (bulk messaging).
admin
Account admin
Manage API keys and X account connections.
Excluded
What agents never get
Billing, admin surfaces and your X password are not reachable over MCP at all, enforced by a server-side denylist, not the client.
Prefer a terminal? Same brain, three doors.
MCP
For agents. The connector URL above, OAuth consent, 133+ tools.
CLI
For humans and scripts. npm i -g @xpertso/cli, then xpert login. Every endpoint as a subcommand, JSON output for jq.
REST API
For products. OAuth tokens or scoped API keys against api.xpert.so/v1.
Frequently asked questions
- What is the Xpert MCP server?
- It is a remote Model Context Protocol (MCP) server at mcp.xpert.so that exposes Xpert's full X (Twitter) growth toolkit as callable tools: drafting in your voice, scheduling, analytics, engagement prediction, lead monitoring, network intelligence, X Articles and more. Any MCP client such as Claude, ChatGPT, Cursor or VS Code can connect to it and act on your X account with your permission.
- Which AI apps can connect to it?
- Anything that speaks MCP over Streamable HTTP or SSE: Claude (web and desktop), Claude Code, ChatGPT connectors, Cursor, VS Code, Windsurf, Cline, and custom agents built with any MCP SDK. The connector URL is https://mcp.xpert.so/mcp and the server also publishes a machine-readable server card at /.well-known/mcp/server-card.json for automatic discovery.
- How does authentication work? Is my X password involved?
- No password ever touches the agent. Connecting uses OAuth 2.1 with PKCE: your browser opens xpert.so, you approve a consent screen, and the client receives a scoped access token. Your X account itself is connected to Xpert separately over X's own OAuth. The agent only ever holds a revocable Xpert token.
- Can the agent post without my approval?
- Only if you grant it the write scope, and even then Xpert is built human-in-the-loop: replies and DM campaigns land in an approval inbox you clear, automation is capped and spaced, and you can connect with read-only scopes so the agent can analyze but never publish.
- What are the permission scopes?
- Five scopes gate every tool: read (profile, posts, analytics), write (drafts, AI composing, scheduling, publishing), engage (monitors, replies, the approval queue, automation), dm (direct-message campaigns), and admin (API keys and account connections). You choose which to grant on the consent screen, and each tool call is checked server-side against them.
- Is there a CLI or REST API too?
- Yes. The same surface is available as a CLI (npm i -g @xpertso/cli, then xpert login) and as a REST API at api.xpert.so with OAuth or API keys. All three share one manifest, so every capability ships to the app, the API, the CLI and MCP at the same time.
- Is MCP access included in my plan?
- Programmatic access (MCP, CLI and API keys) is part of Xpert's paid plans. Signing in and connecting is free to try in mock mode, and the consent screen will tell you if your plan needs an upgrade.
- Why would I manage X from an AI agent instead of the app?
- Because your agent already knows your context. Inside Claude or your editor it can read what you are working on, draft the announcement in your voice, check the engagement prediction, and queue it for your best time in one conversation, using the same brain the Xpert app uses.
Two minutes to connect. Then your agent grows your X account while you build.