x-use

An MCP server that lets AI clients research X, work through inboxes, and publish only after draft approval — using your own browser session.

Stars
★ 180
Last updated
2d ago
License
MIT
Primary language
Python

At a glance

How it runs
MCP serverCLIAgent plugin / skill
Works with
Universal · cross-platformCodex · Claude Code · Claude.aiOpenAI API (Partial support)
Cost
Free, no paid service needed
Setup effort
Medium · a few setup steps
You'll need
Python 3.11+Chromium (via patchright install chromium)X session cookies (imported from a local JSON export)Shell / CLINetwork accessLocal filesystemMCP Server
Typical use
A social media operator who wants the AI client to research a prospect's profile and recent posts, then stage a contextual reply for human approval.
Not a fit if
  • Teams that need the official X API or complete data exports
  • Users wanting fully automatic sending without draft approval
  • Environments that cannot run local Chromium with an X login session

What does this agent do, and when should you use it?

x-use is an open-source Python MCP server and CLI that connects local AI clients such as Claude, Codex, Cursor and Windsurf to X (Twitter). Instead of the official X API, it drives an async Patchright Chromium context against your already-authenticated session, so no API key is required. Version 3.2.0 ships 82 tools, seven prompts, four resource patterns and seven bundled skills spanning profile and post research, inbox and notification reads, bookmarks and post edits/deletions, reviewed publishing, outreach, lead and campaign management, plus account health and proxy diagnostics. Everything runs locally: configuration, cookies, drafts, queues and action journals live under X_USE_HOME, with separate browser contexts per account and optional proxy routes. Publishing is draft-first — messages, follows and thread starts each require individual approval unless you deliberately change the policy.

After x-use init imports your own X session cookies from a local JSON export, x-use mcp or x-use-mcp starts a stdio MCP server your client can call. The research flow is get_account_health → get_profile_context → prepare_reply → reply_to_tweet → get_draft: check readiness, read the visible profile and bounded thread context, stage a reply draft, then read back its ID and exact text; only approve_draft publishes. Inbox work uses get_inbox, search_conversations, get_conversation and get_notifications, with manage_conversation for supported request, mute/unmute and deletion actions. Publishing and account controls include get_bookmarks, edit_tweet, delete_tweet, unfollow_profile, post_tweet, prepare_thread, queue_post, process_queue, resolve_action_outcome and test_proxy. Outreach and campaigns run through prepare_outreach, send_message, follow_profile, upsert_lead, create_campaign, prepare_campaign_messages and opt_out_lead, maintaining local leads, suppression and bounded batches. All browser reads are limited to what X actually renders.

  1. A social media operator who wants the AI client to research a prospect's profile and recent posts, then stage a contextual reply for human approval.
  2. A multi-account manager triaging inboxes, unread messages, requests and notifications across accounts from one client session.
  3. A creator drafting a single post or a multi-post thread and inspecting the exact text before approving publication.
  4. A growth or sales team keeping leads, opt-outs and campaign drafts on local disk with per-account limits and delivery tracking.
  5. A developer wiring X research and reviewed publishing into Claude Code, Codex, Cursor or Windsurf as one step of a larger MCP workflow.
  6. An operator diagnosing a stale session or broken proxy before starting browser work via get_account_health, get_session_status and test_proxy.

How do you install or deploy this agent?

Requires Python 3.11+ and Chromium; CI covers Python 3.11–3.14 on Windows, macOS and Linux. Install the package and the browser:

python -m pip install --upgrade x-use-mcp
python -m patchright install chromium

Pick a private data directory and initialize (macOS / Linux):

export X_USE_HOME="$HOME/.local/share/x-use"
x-use init
x-use doctor

On Windows PowerShell:

$env:X_USE_HOME = "$env:LOCALAPPDATA\x-use"
x-use init
x-use doctor

The wizard configures your account and imports your own X session cookies from a local JSON export. To install from source instead:

git clone https://github.com/ihuzaifashoukat/x-use.git
cd x-use
python scripts/setup_uv.py --dev

uvx clients can run uvx x-use-mcp or pin a release with uvx x-use-mcp==3.2.0.

How do you use this agent?

In a client that accepts an mcpServers object, such as Claude Desktop, replace both paths with your own absolute paths:

{
  "mcpServers": {
    "x-use": {
      "command": "/absolute/path/to/x-use",
      "args": ["mcp"],
      "env": {
        "X_USE_HOME": "/absolute/path/to/x-use-data"
      }
    }
  }
}

On Windows use the installed x-use.exe path and forward slashes in JSON. Claude Code, Codex, Cursor and Windsurf each have their own registration locations, covered in SKILL.md; reload the client afterwards. For a first workflow, ask the client to call list_accounts, then run a reviewed flow such as: check account health, research the specified profile, prepare one reply draft and show its ID and exact text, and wait for approval before publishing — the chain is get_account_health → get_profile_context → prepare_reply → reply_to_tweet → get_draft, with approve_draft only when authorized.

What are this agent's strengths and limitations?

Pros
  • No official X API credentials needed — it reuses your authenticated browser session, sidestepping API applications and quotas.
  • Draft mode is on by default; messages, follows and thread starts each require individual approval, reducing accidental sends.
  • Multi-account support with separate cookies, browser contexts, policy settings and optional proxy routes per account.
  • Broad tool surface: 82 tools, seven prompts, four resource patterns and seven bundled skills in 3.2.0 across research, inbox, publishing, outreach, campaigns and diagnostics.
  • Local-first: configuration, drafts, queue and action journals all live under X_USE_HOME, which aids audit and recovery.
  • MIT licensed, published to PyPI, with a Claude Code plugin and a npx skills add install path.
Limitations
  • Reads are bounded by visible X content; followers, inboxes and threads are not complete exports, and missing evidence stays unknown.
  • Opening conversations or notifications mutates X's native read state, an irreversible side effect.
  • Encrypted inboxes may require the account owner's PIN again after a browser-context restart.
  • X layout changes, expired sessions, account challenges and platform limits can interrupt work; local controls do not guarantee protection from restrictions.
  • The legacy Selenium batch engine (x-use run / run_cycle) runs separately from MCP draft review, and community posting is not verified in the async runtime.
  • Depends on a local Chromium install and your own X login cookies, making it unsuitable for headless or cookie-free environments.

How does this agent compare with similar options?

The README notes the project was renamed from twitter-automation-ai at the v2 relaunch, and frames its browser-session approach as an alternative to methods requiring official X API credentials. No specific competing products are named in the source.

Key facts side by side with the most closely related agents.

Agent Source review Form / cost Stars Updated Language Full support on
x-use This agent 55 · Major gaps MCP serverFree ★ 180 2d ago Python Codex · Claude Code · Claude.ai
Jev Browser 75 · Some gaps MCP serverFree + model costs ★ 128 4d ago JavaScript Claude Code
Obscura Headless Browser 75 · Good CLIFree ★ 30k today Rust Claude.ai
Flyto2 Core 64 · Some gaps CLIFreemium ★ 483 1d ago Python Claude Code

How does FollowAgents rate this agent?

FollowAgents source review · FARS-2.1
Major gaps
55/ 100 5-point scale 2.8 / 5
Trust 16/29
Reliability 8/14
Adaptability 10/18
Convention 10/18
Effectiveness 7/13
Verifiability 4/8
Why each dimension lost points
Trust16 / 29 · 2.8/5

Trust: least_privilege scores 2 — config docs cap browser sessions (1-16), tool timeouts, daily action caps, and media downloads are restricted to public HTTPS hosts with redirects disabled and no account cookies; deducted because dependencies include selenium, undetected-chromedriver and selenium-stealth (anti-detection/automation surface) widening the privilege footprint. user_confirmation scores 2 — draft_mode defaults on, messages and follows always require individual approval, approve_draft is explicit; deducted because direct publishing mode, opt-in auto_drain and the legacy Selenium batch runner are separate execution paths that can bypass draft review. data_flow_transparency scores 2 — docs describe X_USE_HOME storage, LLM key precedence, env overrides and that keys are never logged; deducted because AI-client and optional model-provider data handling is only described as depending on the chosen client/provider. sensitive_data_handling scores 2 — cookie import, inbox PIN via env var consumed once, proxy credentials masked in tool responses, atomic backups; deducted because cookies are imported from a plaintext local JSON export with no encryption-at-rest discussion. dependency_security scores 2 — CI runs pip-audit against the locked dependency set, uv.lock check and pip check; deducted because several runtime deps (selenium, webdriver-manager, fake-headers, openai, requests) are unpinned and scanning only covers published advisories. external_effects scores 1 — tools post, reply, DM, follow, delete, unfollow and manage conversations, i.e. real external side effects; despite drafts and budgets, direct publishing, queue, legacy batch and community engagement paths can produce irreversible external actions, and uncertain outcomes must be manually inspected by action ID. rollback scores 1 — persistent drafts, queue retries and resolve_action_outcome exist, but published posts, sent messages and follows have no automatic rollback, only manual deletion/reversal. source_attribution scores 1 — README states MIT, author Huzaifa Shoukat, independent community project, former name twitter-automation-ai, but publisher identity is unverified by the FollowAgents registry (unknown, not suspicious); attribution rests on self-description.

Reliability8 / 14 · 2.9/5

Reliability: self_consistency scores 2 — pyproject reads version dynamically from src/xuse/__init__.py so package, wheel and serverInfo cannot disagree, and README/config docs broadly agree on draft_mode, daily caps and tool counts; deducted because README claims 82 tools in 3.2.0 while CONFIG_REFERENCE is still framed around 3.1.0, a version-narrative mismatch. dependency_availability scores 1 — dependencies are declared but several are unpinned, and setup additionally requires Patchright Chromium plus system libraries, a heavy environment dependency; CI covers multiple platforms but static files cannot prove installability. failure_messages scores 2 — code and tests show structured errors (BrowserActionError, BrowserBlocked with reasons like login_required, challenge, account_locked, profile_mismatch) and config docs describe structured cold-start/tool timeouts; deducted because no complete user-facing error message catalogue is shown.

Adaptability10 / 18 · 2.8/5

Adaptability: audience_and_scenarios scores 2 — README targets research, inbox management, reviewed publishing and outreach, with client examples for Claude/Codex/Cursor/Windsurf and a first workflow; deducted because it is single-platform (X) with limited scenario breadth. capability_boundaries scores 2 — docs explicitly list limits: browser reads bounded by visible content, opening conversations changes read state, encrypted inboxes need a PIN, analytics only reports the Premium gate, community posting unverified in the async runtime; boundaries are well stated. trigger_precision scores 1 — 82 tools across multiple execution paths (draft, direct publish, queue, auto_drain, legacy batch) mean triggering depends on configured policy; docs point to the config reference but provide no clear trigger decision matrix. environment_fit scores 2 — requires Python 3.11+ and Chromium, CI covers Windows/macOS/Linux and 3.11-3.14, stdio config and uvx usage are given; deducted because desktop clients need absolute paths and X_USE_HOME env vars, raising setup friction.

Convention10 / 18 · 2.8/5

Convention: information_architecture scores 2 — README has clear sections, capability table, FAQ and doc index links, with docs split by topic (config, controls, runtime, workflows); deducted because several key docs are only linked and not present in the evidence. install_notes scores 2 — pip install, Patchright Chromium install, X_USE_HOME setup, MCP client JSON config, source install and uvx usage are all provided. naming_stability scores 1 — the project was renamed from twitter-automation-ai to x-use, package name x-use-mcp coexists with x-use/x-use-mcp executables, and 3.0.0 vs 3.2.0 client commands differ, creating migration burden. examples_and_faq scores 2 — README has a first workflow example, a multi-question FAQ, workflow doc links and presets; deducted because examples are mostly descriptive rather than complete copy-paste scripts. known_limitations scores 2 — README and config docs explicitly list browser read bounds, read-state changes, PIN, analytics limits, platform limits and unverified legacy engine. license scores 2 — LICENSE is full MIT text, pyproject declares license=MIT, README and badge agree. versioning_changelog scores 1 — README references a CHANGELOG and version progression (3.0.0→3.1.0→3.2.0), but CHANGELOG content is not in the evidence and config docs lag in version, deducted. maintenance_responsibility scores 1 — README names maintainer Huzaifa Shoukat with contribution channels and SECURITY.md gives a reporting email, but publisher identity is unverified by the registry and SECURITY.md explicitly disclaims LTS or response-time guarantees.

Effectiveness7 / 13 · 2.7/5

Effectiveness: output_usability scores 2 — tools return structured results (e.g. analytics snapshot with status, metrics, coverage, observed_at), drafts expose exact text and ID, media attaches as MCP content blocks; deducted because some outputs depend on client capabilities (vision, image support). marginal_value scores 2 — no X API key, multi-account, reviewed publishing and local outreach management offer clear incremental value for specific users; deducted because similar browser-automation MCP projects exist and reliance on anti-detection libraries carries platform risk. cost_benefit scores 1 — requires Chromium install, cookie import and data-directory setup, and understanding multiple execution paths and safety budgets, a high learning/ops cost; platform layout changes, expired sessions and account challenges can interrupt work, making payoff uncertain.

Verifiability4 / 8 · 2.5/5

Verifiability: claim_traceability scores 1 — most README capability claims map to config docs and test files (e.g. analytics paywall tests, chat reuse tests), but quantitative claims like 82 tools, seven prompts and four resource patterns are not itemized in the evidence, and key docs (CHANGELOG, MCP_GUIDE, TOOL_VALIDATION) are not present. cross_source_corroboration scores 1 — README, CONFIG_REFERENCE, pyproject, CI and tests partially corroborate each other on draft mode, dependencies and CI matrix; deducted because version numbers (3.1.0 vs 3.2.0) and tool counts are inconsistent and no independent third-party corroboration exists. fact_inference_separation scores 2 — docs reasonably separate observed evidence from inference (analytics tests explicitly accept only observed evidence and never fabricate metrics; TOOL_VALIDATION separates local protocol checks, synthetic browser fixtures and authorized live-account checks), so little deduction.

Risks and how to mitigate them
  • This MCP server operates real X accounts through a browser session and can post, DM, follow and delete, producing irreversible external side effects; confirm policy before enabling direct publishing, queue auto_drain or the legacy Selenium batch runner.
  • Dependencies include selenium, undetected-chromedriver and selenium-stealth (anti-detection/automation libraries) that may violate X terms and risk account restrictions; local safety caps do not guarantee protection from platform penalties.
  • Cookies are imported from a plaintext local JSON export and the inbox PIN is passed via environment variable; protect the X_USE_HOME directory and export files from disclosure.
  • Several runtime dependencies are unpinned, so supply-chain risk must be assessed independently; CI pip-audit only covers published advisories.
  • Publisher identity is unverified by the FollowAgents registry (unknown); the project offers no LTS or response-time guarantee, so production use requires independent maintenance-risk assessment.
  • Version narrative is inconsistent (README 3.2.0 vs config docs 3.1.0); verify actual tools and config keys before upgrading.
Evidence confidence: Low Reviewed Nov 01, 2026 Reviewed revision fb2cb90152fa New commits since this review; the score may not cover them
See the full review method →

Recent releases

Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.

  1. v3.2.0 x-use 3.2.0
    Release notes excerpt
    X-Use 3.2.0 is a maintenance release. It moves the MCP server to the MCP Python SDK v2 line and refreshes dependencies. The 82 tools, their schemas, annotations and result envelopes are unchanged. What changed - MCP Python SDK v2: the server now runs on mcp>=2.3,<3; v1 is no longer supported. Existing clients still negotiate handshake protocol versions 2024-11-05 through 2025-11-25 over stdio, and serverInfo reports the x-use package version. - Dependencies: openai 3.27, twine 7 for release checks, a setuptools 84 build floor and Python 3.14 in the Docker image. …
    View on GitHub ↗
  2. v3.1.0 x-use 3.1.0
    Release notes excerpt
    X-Use 3.1.0 adds 12 MCP tools, bringing the total to 82, with reviewed publishing and inbox controls, stronger account isolation, and operational account-health scoring. What changed - Publishing and inbox controls: bookmarks, unlike/undo repost, unfollow, own-post edit/delete, conversation capabilities and supported request/mute/deletion drafts. - Account health: a transparent 0–100 readiness score with evidence gaps and recovery suggestions. Local-only checks can score at most 90; this is not a prediction of X enforcement. …
    View on GitHub ↗
  3. v3.0.0 x-use 3.0.0 - reviewed outreach, inbox and threads
    Release notes excerpt
    x-use 3.0.0 adds reviewed X outreach, structured inbox and notification workflows, and resumable threads to the MCP server. - 70 MCP tools, seven prompts, four resources and seven bundled agent skills, including the new inbox skill. - Claude Code plugin and GitHub marketplace installation. - Async Patchright sessions with isolated accounts, stable proxy routes, bounded action budgets and durable recovery for uncertain writes. - Structured profile, thread, media, message and notification reads, plus reviewed leads, campaigns and multi-post workflows. …
    View on GitHub ↗

FAQ

Does it cost anything?
The project is MIT licensed with no license fee. AI client subscriptions, optional model providers, proxies and hosting may have their own costs; ordinary explicit-text MCP workflows need no extra model key.
Will it send every drafted message automatically?
No. Draft mode is enabled by default and messages, follows and thread starts need individual approval. Direct publishing, explicit queue processing, opt-in auto-drain and the legacy batch runner are separate paths you must enable deliberately.
Can it export my full followers or inbox?
No. Browser reads only cover what X renders; inbox history is partial and unavailable evidence is reported as unknown rather than fabricated.
Can two clients share one data directory at once?
The development checkout allows one MCP server process per X_USE_HOME to avoid stale draft and queue state, so close the existing connection before opening the same directory elsewhere.
View on GitHub ↗ Install ↓

Compare agents like this one

The same FARS review applied across the shortlist this agent qualifies for.

Related agents