Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
OPENAI_API_KEYNoOptional. 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_URLNoOptional. OpenAI-compatible endpoint, for example https://openrouter.ai/api/v1 or http://localhost:11434/v1 for Ollama. Defaults to api.openai.com.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_accountsA

List configured accounts with secrets stripped (no cookies, no passwords, proxy credentials masked). Read-only, never starts a browser.

get_metricsA

Read recorded metrics for an account (counters + recent events). Read-only, never starts a browser.

search_tweetsA

Search recent X posts for a query string. Read-only (draft mode does not apply). Reuses the account's warm browser session. account defaults to the first active configured account. include_images=true additionally attaches the first photo of up to 5 tweets as image content (bounded); the per-tweet media URLs + alt text are always present.

search_profileA

Read recent posts from ONE X profile. profile takes a handle ("@nasa" or "nasa"), a profile URL, or a tweet URL (which resolves to its author). Read-only (draft mode does not apply, nothing is posted), but it reuses the account's browser session. account defaults to the first active configured account. Use this to watch specific people and competitors, and to re-read one of your own published posts for its public counts; use search_tweets for topic and keyword discovery. Profile timelines include pinned posts and reposts, so check user_handle before treating a result as the profile owner's own writing. include_images=true additionally attaches the first photo of up to 5 posts as image content (bounded); the per-post media URLs + alt text are always present.

get_tweetA

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

  • alt text as the fallback. Nothing is posted; draft mode N/A.

approve_draftA

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_tweetA

Post a tweet from an account. media = local file paths; community = target community id. In draft mode (default) returns a draft for review and posts nothing; approve_draft(draft_id) executes it.

generate_and_postA

Generate a post about topic with the configured LLM and post it. In draft mode (default) the generated text is stored in the draft's payload/preview so a human reviews the actual content before anything is posted.

reply_to_tweetA

Reply to a tweet. Pass explicit text, or "auto" to generate the reply with the LLM from the tweet's actual content (a read-only fetch is performed so the draft shows the real reply text). In draft mode (default) nothing is posted until approve_draft(draft_id). media accepts local attachments on the async browser backend. For conversation-wide context, read get_thread before supplying explicit reply text.

prepare_replyA

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). account limits the run to one account; pipelines is a comma-separated subset of: competitor_reposts, keyword_replies, keyword_retweets, likes, content_curation, community_engagement (mapped onto the account's ActionConfig enable flags for this run only, config files are never mutated; same names as the CLI's x-use run --pipeline). Draft mode does not apply to batch cycles.

engageA

Engage with tweets found via keyword search. actions is a subset of ["like", "retweet"] (default ["like"]); every candidate passes the analyzer relevance gate; max_actions is hard-capped by the account's per-run config caps. In draft mode (default) each planned action becomes an individually approvable draft and nothing executes.

queue_postA

Schedule a post for paced execution. Pass text verbatim, or a topic to generate the text NOW with the configured LLM (the stored payload is final, list_queue shows exactly what will be posted). not_before is an optional ISO 8601 timestamp. Nothing executes until process_queue is called (or auto_drain, if enabled).

queue_engagementA

Queue a like, retweet, or reply for paced execution. action is one of like/retweet/reply. reply requires text ("auto" scrapes the tweet and generates the reply NOW, so the stored payload is final). Nothing executes until process_queue is called.

list_queueA

List queued actions with their full payloads (exactly what will fire), plus per-status counts. limit 1-100; offset pages through local history. Read-only, never starts a browser.

cancel_queued_actionA

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 account omitted, every account with due items drains (each bounded by max_actions and its own daily caps).

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). cookie_file is a path ON THIS MACHINE to an exported x.com cookies JSON; it is validated and copied beside the selected accounts configuration as <account_id>_cookies.json. Cookie values never pass through the tool call. persona is freeform markdown describing the account's voice/engagement style (max 4000 chars).

update_accountA

Partially update an account. Only provided fields change (None = leave unchanged); pass an empty string to clear proxy. persona sets the freeform persona text; pass an empty string to clear it. cookie_file re-imports cookies like add_account. The account's warm browser session is closed, so the next action cold-starts on the new config.

set_account_activeA

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.

get_runtime_infoA

Inspect server/package versions, tool count and configured execution mode, backend workflow support and effective unlock allowance without starting a browser. Contains no credentials, paths, account identities or raw environment values. Configuration does not prove live X authentication; use get_account_health and a bounded read for that.

list_draftsA

List drafts, newest first. status filters to one of pending/approved/partial/executed/failed/rejected/uncertain; account filters by account id; limit caps the response (max 100). Read-only.

get_draftA

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 run_id omitted, lists every run started since this server booted. Read-only.

get_account_healthA

Read-only health snapshot for one account: config presence, cookie-file validity, metrics counters, warm-session state, queue depth, pending drafts, and a transparent local readiness score out of 100. Unknown evidence earns no points; this does not predict X enforcement or establish live authentication. 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_variationsA

Generate count distinct takes on a topic with the server-side LLM (persona-aware) and stage each as a post DRAFT. Nothing is posted, approve one and reject the rest. Requires the 'llm' block in settings.

list_proxiesA

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 fail closed until reassigned).

test_proxyA

Probe the effective proxy in an isolated, cookieless browser using the configured backend; visits only an IP-echo endpoint, never X. Explicit proxy_url wins; account assignments inherit the global proxy. Returns validated egress IP, startup/request latency and masked route. Async HTTP(S) authentication is supported; legacy Selenium rejects authenticated proxies. Legacy round_robin probes advance its cursor.

get_inboxB

Read visible inbox/requests/other summaries with all/unread/read filtering. Native Unread selection is verified when available; never opens or accepts a conversation.

get_conversationC

Read bounded visible conversation context and observed request/reply state. Cursor stays within the visible window; opening may clear X unread state. Does not accept requests.

search_conversationsB

Search the visible inbox locally; results are partial, not full message-history search.

send_messageB

Prepare a reviewed DM draft for one handle or conversation. Always requires approve_draft, even when draft_mode is off.

follow_profileA

Prepare a follow draft for one X profile; approve_draft performs the action.

get_profileC

Read public profile details using visible X page elements.

get_home_feedB

Read posts currently visible in the home feed; no engagement actions.

get_session_statusA

Inspect local session lifecycle (cold/starting/ready/busy/closing/ disconnected/closed) without reading cookies or starting a browser. Ready means locally usable transport, not verified live X authentication. Legacy backends may report unknown for a warm session.

close_sessionB

Close one account's browser context; retain the operator's cookie file.

get_account_safetyC

Read local limits, pause reason, and writes needing outcome reconciliation.

pause_account_actionsA

Pause browser actions durably until the operator explicitly resumes them.

resume_account_actionsA

After resolving a challenge, probe the signed-in home page and clear the local pause. Does not reset budgets.

resolve_action_outcomeA

After inspecting X, record succeeded or not_sent for an uncertain action. Repairs associated draft/queue history; queued not_sent work is cancelled and never resent automatically. Incorrect not_sent can cause duplicates.

unlock_inboxA

Unlock the owner's encrypted inbox once using a server environment variable. PIN never appears in tool arguments, drafts, logs or stored state. Inspect get_account_safety for remaining attempts and reset time; never loop on a rejected PIN or challenge.

get_profile_contextB

Preferred outreach read: exact profile details and bounded authored posts together. No draft or send.

get_profile_postsB

Read one author's posts, posts-and-replies, or media tab. feed: posts|replies|media. Results are bounded and partial.

get_profile_connectionsB

Read visible public followers/following. This is not a private address book or complete contact export.

preview_campaign_messageA

Preview one campaign member's exact personalized message and local eligibility without creating drafts, reserving a lead, or sending. Includes pause, opt-out and prior-reservation reasons. Eligibility is a snapshot; preparation and approval recheck it. No browser or LLM.

upsert_leadA

Add/update one local lead by X handle (unique per account). Omitted fields retain their values; notes stay local and never enter messages. Status: new, qualified, contacted, replied, closed, opted_out. Opt-out suppression is permanent and cannot be removed by upserting.

list_leadsA

List this account's local leads, optionally filtering by status or exact tag. limit 1-100; offset supports pagination. No browser starts.

get_leadB

Read one local lead belonging to this account, including its notes.

update_lead_statusA

Change a lead's local status. Only new/qualified leads can receive campaign drafts. opted_out permanently suppresses further outreach.

opt_out_leadB

Permanently suppress outreach to this account's lead handle. This blocks prepared campaign deliveries as well as future drafts.

create_campaignA

Create a local draft campaign. Personalize using {handle}, {name}, {display_name}, or {company}; include a recipient name/handle placeholder. {name} falls back to @handle. Notes cannot be templated. Nothing sends.

get_campaignC

Read this account's campaign and a membership page. limit 1-100; members_next_offset identifies the next page of local outcomes.

list_campaignsB

List this account's local campaigns (without membership details). Status: draft, ready, paused, completed. limit 1-100, with offset.

add_campaign_leadsA

Add 1-100 local leads from this account to a campaign. Repeated ids are ignored. The whole batch fails if any id belongs to another account. Adding a lead does not make an opted-out or closed lead eligible.

set_campaign_statusA

Set local campaign status: draft, ready, paused, completed. Pausing immediately blocks preparation and approval of existing drafts. Resume a paused campaign with ready. completed is terminal.

prepare_campaign_messagesA

Prepare at most 20 personalized private-message drafts for eligible new/qualified leads on an active account. Skip opt-outs and prior pending/delivered members. Preparation marks the campaign ready; review every exact payload and approve each draft individually. No bulk sends, browser, scraping, or LLM call occurs, even when draft_mode is off.

get_campaign_summaryB

Read local membership/delivery counts and opt-out suppression count. These are recorded outcomes; this tool never checks X or sends work.

prepare_outreachA

Fetch profile details and up to 10 authored posts, then prepare ONE local DM draft with your exact supplied text. Use get_profile_context to research and write a personalized message first. Context is a bounded visible subset; it is not a complete post history. No server LLM or message send occurs. Review the returned recipient, context and draft, then approve_draft individually; draft_mode does not bypass review. Opt-outs and account activation are rechecked after the browser read.

get_threadA

Read bounded visible conversation context around one exact X post. Includes ordered posts and media metadata; parent links remain unknown unless the page proves them. Results are partial, not a full archive. include_images attaches at most five photos/video posters with source mappings for YOUR model to analyze; no server LLM or video transcription. Read this before composing contextual replies or reply threads.

prepare_threadA

Stage 1-20 exact text/media posts for review; always creates a draft. Optional reply_to starts a reply thread. Every later post replies to the immediately preceding confirmed new post. No LLM is called.

get_thread_runC

Read durable local segment states, exact published URLs and next index.

continue_threadA

Resume an approved run only at a known unsubmitted segment after spacing/budget/preflight recovery. Uncertain segments are never resent.

cancel_threadA

Cancel remaining thread segments locally. Retains confirmed URLs and uncertain evidence; never deletes posts or clears safety uncertainty. An active send must finish before cancellation can be accepted.

get_account_analyticsB

Read the signed-in owner's X analytics availability. Requires X Premium when the observed paywall says so; unsupported layouts return no metrics. Distinct from local action metrics and public post counts.

get_notificationsB

Read bounded visible X notifications from a verified All or Mentions tab.

Reports observed actors, related posts, type evidence and unread state; absent evidence remains unknown. Visiting this view may mark X notifications read. Results cover only the visible supported UI.

get_bookmarksA

Read bounded posts in the default bookmarks feed. Partial results; bookmark folders are not traversed.

bookmark_tweetA

Prepare a bookmark draft for one exact post. Always requires approve_draft.

remove_bookmarkB

Prepare removal of one bookmark. Always requires approve_draft.

unlike_tweetA

Prepare removal of your like from one exact post. Always requires approve_draft.

undo_retweetA

Prepare removal of your repost of one exact post. Always requires approve_draft.

unfollow_profileA

Prepare unfollowing one exact X profile. Always requires approve_draft.

edit_tweetA

Prepare a text edit of your own post. Supply its current exact text and replacement; configure self_handles. X must expose Edit post; eligibility/time limits apply. Always requires approval. Media replacement is unsupported.

delete_tweetA

Prepare permanent deletion of your own exact post. Supply its current text (empty for media-only). Always requires approve_draft; cannot be undone.

get_conversation_controlsC

Inspect visible request and conversation-menu controls. Opening may mark read; unsupported layouts return an error, never guessed capabilities.

manage_conversationA

Draft one inbox action: accept a request, mute/unmute notifications, or delete a conversation from your inbox. Delete cannot be undone locally and does not promise deletion for recipients. Always requires approval; only verified visible controls are supported.

Prompts

Interactive templates invoked by user choice

NameDescription
thread_workflowRead an X conversation with attributed media, compose a reviewed multi-post thread or reply thread, and follow durable progress without duplicate submissions.
outreach_messageResearch one exact X profile, write a personalized message from its authored posts, and prepare one reviewed DM draft with explicit delivery and recovery steps.
research_nicheResearch 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_repliesWrite and stage X replies or posts for one account in its persona. Uses the draft or queue lane; check draft mode and auto-drain before staging.
review_and_publishReview everything staged for one X account and publish only what the user approves by id. This is the workflow that makes things public.
daily_checkDaily 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_accountSet 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

NameDescription
x-use accountsEvery configured X account with secrets stripped: id, active state, target keywords, and whether a persona is set. Never starts a browser.
x-use pending draftsEvery draft awaiting approval, across all accounts, with the exact text that would publish. Nothing here has reached X.

TDQS

B3.1/5.0

Scored across 82 tools

Disambiguation2/5

Many tools overlap in purpose: get_account_health, get_session_status, get_account_safety, get_metrics, and get_runtime_info all report account or server state, while get_profile, get_profile_posts, get_profile_context, search_profile, get_tweet, and prepare_reply all read profile/tweet context. With 82 tools, an agent can easily select a related but wrong read or write path, even though the descriptions attempt guidance.

Naming Consistency5/5

All names use snake_case and are overwhelmingly verb_noun or verb_object (get_account_health, approve_draft, list_leads, add_proxy, remove_account). Minor deviations like engage, run_cycle, reply_to_tweet, and upsert_lead do not break the overall pattern. The naming is highly predictable.

Tool Count1/5

82 tools is far beyond a well-scoped set; the domain is broad, but this many entry points imposes severe selection load and suggests redundant granularity. Per the rubric, 50+ tools is an extreme mismatch.

Completeness4/5

The surface covers accounts, proxies, drafts, queue, tweets, DMs, profiles, campaigns, leads, threads, analytics, and notifications with create/read/update/delete-style operations throughout. Minor asymmetries remain, such as no direct like/retweet alongside unlike_tweet/undo_retweet and no campaign/lead deletion, but these are workable.

Maintenance

ActivityMaintained
ResponsivenessNo issues