Peekaboo
macOS screen capture, UI inspection and native click-and-type automation exposed over MCP
Read, post and engage on X/Twitter with your own session cookie, without an X API key
By nich (individual) TypeScript Local · stdio CommunicationBrowser automationData and analytics
64 popularity score ★ 644 ↓ 412/wk
Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
It needs XACTIONS_SESSION_COOKIE. Replace each <NAME> with your value.
claude mcp add xactions -e XACTIONS_SESSION_COOKIE=<XACTIONS_SESSION_COOKIE> -- npx -y -p xactions xactions-mcp{
"mcpServers": {
"xactions": {
"command": "npx",
"args": [
"-y",
"-p",
"xactions",
"xactions-mcp"
],
"env": {
"XACTIONS_SESSION_COOKIE": "<XACTIONS_SESSION_COOKIE>"
}
}
}
}{
"mcpServers": {
"xactions": {
"command": "npx",
"args": [
"-y",
"-p",
"xactions",
"xactions-mcp"
],
"env": {
"XACTIONS_SESSION_COOKIE": "<XACTIONS_SESSION_COOKIE>"
}
}
}
}{
"servers": {
"xactions": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"-p",
"xactions",
"xactions-mcp"
],
"env": {
"XACTIONS_SESSION_COOKIE": "<XACTIONS_SESSION_COOKIE>"
}
}
}
}[mcp_servers.xactions]
command = "npx"
args = ["-y", "-p", "xactions", "xactions-mcp"]
[mcp_servers.xactions.env]
XACTIONS_SESSION_COOKIE = "<XACTIONS_SESSION_COOKIE>"gemini mcp add --scope user -e XACTIONS_SESSION_COOKIE=<XACTIONS_SESSION_COOKIE> xactions npx -- -y -p xactions xactions-mcpXACTIONS_SESSION_COOKIE |
Required: Your X auth_token cookie; needed for writes, DMs and most signed-in reads. |
|---|---|
OPENROUTER_API_KEY |
Optional: Key for the AI writing and analysis tools. |
XACTIONS_MCP_TOOLS |
Optional: Allowlist of tools or groups to expose, e.g. read,analytics. |
XACTIONS_MCP_EXCLUDE |
Optional: Denylist of tools or groups; wins over the allowlist. |
XACTIONS_MCP_REQUIRE_APPROVAL |
Optional: 1 holds every write as a draft until approved. |
XACTIONS_MODE |
Optional: local (default, Puppeteer and HTTP on your machine) or remote (api.xactions.app). |
X402_PRIVATE_KEY |
Optional: Wallet key for paying per call in remote mode. |
XACTIONS_MCP_TOKEN |
Optional: Bearer token for /mcp when run with --http. |
XACTIONS_MCP_HOST |
Optional: Bind address for --http; 127.0.0.1 by default. |
XACTIONS_HOME |
Optional: Folder for drafts and the action ledger; ~/.xactions by default. |
XActions is a Node.js toolkit for X (formerly Twitter) that bundles scrapers, a command-line tool, browser scripts and an MCP server. The MCP server, started with the `xactions-mcp` program in the `xactions` npm package, gives an assistant tools to read profiles, timelines, followers, searches, threads, trends and Spaces, and, once signed in with your own X session cookie, to post, reply, like, repost, follow, unfollow, send direct messages, change profile settings and run bulk or scheduled actions. It talks to X's web front end with your session rather than through the paid X API, so no developer key is needed.
Version 4.0.1 registers 153 tools in its server source, more than the 149 its MCP setup guide states or the 152 and 154 shown in its README; plugins can add more. Many profile, follower, timeline and search tools also accept Bluesky, Mastodon or Threads accounts. Beyond plain reads and writes there are analytics, sentiment and audience reports, a follower graph, scheduled posts, RSS-to-draft feeds, saved workflows, and AI writing tools that call a model through OpenRouter.
Two safeguards are built in. Every write is charged against a rolling 24-hour budget per action class, kept on disk so it survives restarts (by default 2,400 posts, 500 likes, 400 follows and 500 direct messages a day), and a call over budget is refused before it reaches X. Setting `XACTIONS_MCP_REQUIRE_APPROVAL=1` holds every write as a draft until a person approves it. `XACTIONS_MCP_TOOLS` and `XACTIONS_MCP_EXCLUDE` narrow which tools are advertised.
| Runtime | Node.js 20+ |
|---|
Node.js 20 or later (the npm package's engines field; the main branch asks for 22.12). An X account and its auth_token session cookie for writes, DMs and most signed-in reads; public profile and timeline reads work without it. Browser-driven tools need Puppeteer, an optional peer dependency npx does not install (npm install puppeteer, then npx puppeteer browsers install chrome). AI writing tools need an OPENROUTER_API_KEY.
It works through X's web session, not the official API, so it can break when X changes its site, and its makers call it educational material, untested on personal accounts, used at your own risk, with no responsibility for account restrictions or bans; follow X's terms. The docs' `npx -y xactions-mcp` command fetches a separate wrapper package, `xactions-mcp` (3.4.9), not `xactions` 4.0.1; `npx -y -p xactions xactions-mcp` runs this one. The default daily caps apply to MCP writes only. Tools named in the docs on main, such as x_block_user, are not in 4.0.1.
Suits someone who wants an assistant to read X data or act on their own X account without paying for API access, and accepts the risk of automating a personal session against X's terms. Reads, analytics and monitoring can be enabled alone with tool filtering, and approval mode suits those who want a person to release each post. It is not made by X; anyone who needs a supported route with API keys and stable terms should look at the official X API instead. With 153 tools, it is best narrowed with XACTIONS_MCP_TOOLS for clients that slow down with long tool lists.
x_loginx_get_profilex_get_followersx_get_followingx_get_non_followersx_get_tweetsx_search_tweetsx_get_threadx_get_repliesx_get_mentionsx_get_likersx_get_retweetersx_get_trendsx_get_notificationsx_get_bookmarksx_get_listsx_get_spacesx_space_transcriptx_post_tweetx_post_threadx_replyx_quote_tweetx_create_pollx_schedule_postx_delete_tweetx_publish_articlex_likex_retweetx_bookmarkx_followx_unfollowx_unfollow_non_followersx_unfollow_allx_auto_likex_auto_followx_auto_commentx_engagex_send_dmx_get_conversationsx_export_dmsx_mute_userx_update_profilex_toggle_protectedx_download_videox_download_mediax_get_analyticsx_get_post_analyticsx_analyze_sentimentx_brand_monitorx_compare_accountsx_grok_queryx_generate_tweetx_persona_runx_workflow_runx_bulk_executex_export_accountx_askx_list_draftsx_approve_draftx_action_budget