x-use
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OPENAI_API_KEY | No | Optional. Only needed for server-side text generation (auto replies, composite draft tools, background automation). Interactive MCP use is keyless because the calling agent writes the text. | |
| OPENAI_BASE_URL | No | Optional. OpenAI-compatible endpoint, for example https://openrouter.ai/api/v1 or http://localhost:11434/v1 for Ollama. Defaults to api.openai.com. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_accountsA | List configured accounts with secrets stripped (no cookies, no passwords, proxy credentials masked). Read-only — never starts a browser. |
| get_metrics | Read recorded metrics for an account (counters + recent events). Read-only — never starts a browser. |
| search_tweets | Search recent X posts for a query string. Read-only (draft mode
does not apply). Reuses the account's warm browser session. |
| search_profile | Read recent posts from ONE X profile. |
| get_tweet | Read-only fetch of one tweet: text, author, public counts, typed media (photos + video posters) and the account's persona. With include_images=true (default) photos also attach as image content so a vision-capable client sees them; the envelope always carries URLs
|
| approve_draft | Execute a pending draft created by a write tool. Runs the exact same execution path as direct mode (pacing, dedup, metrics). A draft can be approved exactly once; unknown or consumed ids return an error. |
| post_tweet | Post a tweet from an account. |
| generate_and_post | Generate a post about |
| reply_to_tweet | Reply to a tweet. Pass explicit |
| prepare_reply | Read-only reply context: the tweet's text AND media (photos attach as image content so your model can see them), plus the account's keywords and persona — YOUR model writes the reply itself, no server-side LLM, nothing posted. Then pass your text to reply_to_tweet(text=...) or queue_engagement(action="reply", text=...). |
| run_cycleA | Run the legacy batch automation cycle in the background and return
a run handle immediately (progress goes to the logs — this never
silent-blocks). |
| engageA | Engage with tweets found via keyword search. |
| queue_postA | Schedule a post for paced execution. Pass |
| queue_engagementA | Queue a like, retweet, or reply for paced execution. |
| list_queue | List queued actions with their full payloads (exactly what will fire), plus per-status counts. Read-only — never starts a browser. |
| cancel_queued_action | Cancel a pending or failed queued action. Done, processing, and already-cancelled items cannot transition. |
| process_queueA | Drain queued actions with jittered pacing and daily caps. THIS
CALL IS THE APPROVAL GATE for queued work: items execute through the
same pacing/dedup/metrics path as every other write action. With
|
| get_accountA | Show one account's masked config (no cookies, no password, proxy credentials masked) plus cookie-file status. Read-only — never starts a browser. |
| add_accountA | Add an account to config/accounts.json (validated, backed up,
atomic). |
| update_accountA | Partially update an account. Only provided fields change (None =
leave unchanged); pass an empty string to clear |
| set_account_activeB | Enable or pause an account without deleting it. Pausing closes its warm browser session. |
| remove_accountA | Remove an account from config/accounts.json. Requires confirm=true. Closes the account's warm session. The backup written during the mutation (config/backups/) is the recovery path; the cookie file is left on disk. |
| list_draftsA | List drafts, newest first. |
| get_draftC | Show one draft by id. Read-only. |
| reject_draftA | Reject a pending draft so it can never be approved. Local status change only — nothing touches X. |
| get_run_statusA | Poll run_cycle handles. With |
| get_account_healthA | Read-only health snapshot for one account: config presence, cookie-file validity, metrics counters, warm-session state, queue depth, pending drafts. Never starts a browser. A config that fails validation is REPORTED (config.valid=false with the error), not raised — surfacing that is the point of a health check. |
| research_and_stageA | Search each keyword, keep relevant tweets (keyless heuristic), write a reply per tweet with the server-side LLM (persona-aware), and stage one reply DRAFT per tweet. Nothing is posted — review with list_drafts and approve selectively. Requires the 'llm' block in settings. |
| draft_post_variations | Generate |
| list_proxies | List proxy pools (size, masked members, rotation cursor), the global pool strategy, each account's assignment, and the global fallback proxy. Read-only — never starts a browser. |
| add_proxyA | Add a proxy URL to a named pool (created if new) in settings.json — validated, deduped, backed up, atomic. Credentials are masked in the response. Assign it to accounts via update_account(proxy="pool:") or a direct URL. |
| remove_proxyA | Remove a proxy URL from a pool. Requires confirm=true. The response lists accounts still assigned pool: — emptying a referenced pool is allowed but reported (those accounts fall back to no proxy). |
| test_proxyA | Probe a proxy with a throwaway browser: resolves the effective proxy
(explicit proxy_url wins; otherwise the account's direct URL or
pool: assignment), opens an IP-echo page, and reports the egress
IP + latency. The probe browser is throwaway and cookieless — never
account cookies or the warm session pool — but startup performs an
anonymous x.com/home load before the IP-echo fetch, so latency_ms
includes browser boot. With a round_robin pool, probing via |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| research_niche | Research what is worth engaging with on X for one account. Read-only: searches keywords and watched profiles, reads candidates including their images, and reports a scored shortlist. Stages nothing. |
| draft_replies | Write and stage X replies or posts for one account in its persona. Produces drafts or queued items for review and publishes nothing. |
| review_and_publish | Review everything staged for one X account and publish only what the user approves by id. This is the workflow that makes things public. |
| daily_check | Daily digest for one X account: health, metrics, pending drafts, and queue state in one read-only pass, then act only on the user's direction. |
| setup_account | Set up x-use from nothing: verify the install, add an X account from a cookie export, and configure its niche, keywords, and persona. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| x-use accounts | Every configured X account with secrets stripped: id, active state, target keywords, and whether a persona is set. Never starts a browser. |
| x-use pending drafts | Every draft awaiting approval, across all accounts, with the exact text that would publish. Nothing here has reached X. |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ihuzaifashoukat/x-use'
If you have feedback or need assistance with the MCP directory API, please join our Discord server