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.

Works withClaudeClaude CodeCursorWindsurfClineChatGPTVS Code
01

Your connector URL

https://mcp.xpert.so/mcp

One OAuth sign-in connects your X account. No API key to paste.

02

Pick your app

03

Connect Claude

  1. 1.Open Claude → Settings → Connectors.
  2. 2.Click “Add custom connector”.
  3. 3.Paste the connector URL below, then Connect.
  4. 4.Sign in with Xpert and authorize once in your browser.
Open Claude connectors

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.