ZXOAR MCP Server
The agent-first interface to the ZXOAR launchpad — Uniswap V4 token launches with permanently locked liquidity and an anti-snipe guard, live on Robinhood Chain (4663). Any MCP client (Claude Desktop, Claude Code, custom agents) gets the full loop: scan, vet, trade, launch, collect fees.
You: "Scan the market and vet the newest token"
Claude: [scan → vet: registry ✓, guard state, simulated buy→sell round-trip → verdict]
You: "Launch a token called Moon Cat, ticker MCAT, buy 0.05 ETH at launch"
Claude: [ONE atomic transaction: deploy + pool + locked curve + guaranteed first position]
You: "Sell half my MCAT"
Claude: [approve + sell through the pool, slippage-protected]
Quick start — zero config, read-only
No env needed. The server boots against the live mainnet deployment in read-only mode:
npx zxoar-mcp
Claude Code
claude mcp add zxoar -- npx zxoar-mcp
Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"zxoar": { "command": "npx", "args": ["zxoar-mcp"] }
}
}
Trading mode
Set a private key and (optionally) tighten the caps. The key never leaves your machine — this server signs locally and talks only to the chain RPC.
{
"mcpServers": {
"zxoar": {
"command": "npx",
"args": ["zxoar-mcp"],
"env": {
"PRIVATE_KEY": "0x…",
"MAX_ETH_PER_TX": "0.1",
"MAX_ETH_PER_SESSION": "0.5",
"MAX_TX_PER_MINUTE": "6"
}
}
}
}
The safety model (read this once)
- Read-only by default. No
PRIVATE_KEY → no writes, period.
- Hard server-side caps.
MAX_ETH_PER_TX (default 0.5), MAX_ETH_PER_SESSION (default 2), MAX_TX_PER_MINUTE (default 12) are enforced by the server that holds the key — a looping agent cannot exceed them.
vet before you buy. Registry membership (the launcher pins the token bytecode, the locked liquidity, and the SnipeGuard hook), guard/graduation state, and a REAL simulated buy→approve→sell round-trip (0.01 ETH probe via eth_simulateV1 — an eth_call, spends nothing). Plain verdicts: CLEAR / WAIT / CAUTION / UNPROBEABLE.
- Guard-window refusal.
buy refuses while a token's anti-snipe fee is still decaying (50%→1% over ~3 minutes — a fill at t=0 burns up to half the entry). Opting in requires an explicit allowGuardFee: true.
- Every trade simulates first and applies slippage protection (
minOut), with unspent ETH refunded by the router.
Tools
scan | Newest tokens: price, market cap, curve %, guard, graduation |
vet | Safety verdict for one token (registry + guard + round-trip probe) |
token_info | Live state for one token |
wallet | Address, ETH balance, holdings with ETH valuations |
buy / sell | Guarded, simulated, slippage-protected swaps |
launch | Free launch; with firstBuyEth, atomic launch+buy (guaranteed first position) |
collect_fees | Claim a token's accrued fees (50% creator / 50% protocol, permissionless) |
get_activity / get_token_history / get_market_stats | Event feed, per-token history, market rollup |
build_metadata / set_image | Token metadata manifest + moderated logo upload |
Protocol facts the tools rely on
- Fixed 1B supply per launch; 95% locked as a single-sided bonding curve, 5% escrowed graduation reserve (deployed as locked liquidity above the band when the curve fills, ~20.6 ETH FDV).
- Principal liquidity is never withdrawable — by anyone, ever. Only fees are claimable.
- Anti-snipe guard: dynamic fee 50%→1% over ~180s from launch, enforced by the V4 hook.
- No admin keys, no setters — economics are compile-time constants. Verified sources on Blockscout.
Environment reference
RPC_URL / CHAIN_ID | mainnet (4663) | Override to point at a fork/testnet |
LAUNCHER_ADDRESS / ROUTER_ADDRESS / LENS_ADDRESS | bundled mainnet | Contract addresses (env wins over bundled defaults) |
PRIVATE_KEY | unset | Enables trading; keep it in your MCP client's env, nowhere else |
MAX_ETH_PER_TX / MAX_ETH_PER_SESSION / MAX_TX_PER_MINUTE | 0.5 / 2 / 12 | Server-enforced guardrails |
DEFAULT_SLIPPAGE_BPS | 300 | Default slippage tolerance |
Development
anvil --hardfork cancun &
npm run deploy:local
npm run e2e
MIT. Part of the ZXOAR protocol — zxoar.fi · docs. Source is not public at this time.