{
  "markdown": "# x402-seller — rug protection for autonomous trading agents\n\n**Live:** https://x402-seller-m8nx.onrender.com · Base mainnet · no signup, no API key — pay per call in USDC via [x402](https://github.com/coinbase/x402)\n\nYour agent is about to ape into a token. One bad ape costs its whole position.\nThis API answers **\"is this a rug?\"** in one call, with evidence:\n\n- **Composite rug score** — [GoPlus](https://gopluslabs.io) static analysis **fused with a live\n  [Honeypot.is](https://honeypot.is) buy/sell simulation** (it actually executes a simulated trade),\n  a serial-rugger check, hard honeypot gates, and a `needs_review` flag when the two engines disagree.\n- **Solana too** — dual-engine (GoPlus-Solana + [RugCheck](https://rugcheck.xyz)): mint/freeze\n  authorities, holder concentration, LP burn. Different chain, different rug physics, same design.\n- **Liquidity-drain detector** — we poll pool reserves over time and answer *\"is liquidity leaving\n  right now?\"* — the earliest sign of a rug in progress. **This time-series exists nowhere for free**;\n  you can't backfill history you didn't collect.\n- **[Public self-graded track record](https://x402-seller-m8nx.onrender.com/track-record)** — every 30\n  minutes we score fresh Base launches with the exact paid scorer, then grade ourselves against what\n  actually happened. Hits **and misses** published. Evidence, not claims.\n\n## Try it free, right now\n\n```bash\n# one real /vet per hour, full paid output (chain=base|eth|bsc|polygon|arbitrum|optimism|solana)\ncurl \"https://x402-seller-m8nx.onrender.com/demo/vet?chain=eth&address=0x6982508145454Ce325dDbE47a25d4ec3d2311933\"\n\n# the receipts: our verdicts graded against real outcomes (free)\ncurl \"https://x402-seller-m8nx.onrender.com/track-record\"\n\n# sample output for every endpoint (free)\ncurl \"https://x402-seller-m8nx.onrender.com/examples\"\n```\n\n## Buy with three lines (any x402 client)\n\n```ts\nimport { wrapFetchWithPayment } from \"@x402/fetch\";\nimport { privateKeyToAccount } from \"viem/accounts\";\n\nconst payFetch = wrapFetchWithPayment(fetch, privateKeyToAccount(process.env.PK));\nconst r = await payFetch(\"https://x402-seller-m8nx.onrender.com/vet?chain=base&address=0x…\");\n// 402 → auto-pay USDC on Base → data. That's the whole integration.\n```\n\n## Endpoints\n\n| Route | Price | What you get |\n|---|---|---|\n| `GET /alpha/launches?chain=` | $0.08 | **Launch radar** — discovers what just launched AND rug-screens every candidate in one call, ranked safest-first with a per-token verdict. Replaces the whole discover→screen→rank pipeline. EVM + Solana |\n| `GET /vet?chain=&address=` | $0.05 | **Single-token go/no-go**: market + composite rug score + liquidity-drain trend → `clear/caution/avoid` + reasons. EVM + Solana |\n| `GET /onchain/safety?chain=&address=` | $0.03 | Composite rug score: red/green flags, 0-100 risk, live-sim results, `needs_review` disagreement flag |\n| `GET /screen?chain=&addresses=a,b,c` | $0.03 | Batch-vet up to 8 tokens, sorted safest-first + summary |\n| `GET /onchain/liquidity?chain=&address=` | $0.01 | Liquidity-drain verdict from our self-collected reserve series: `draining_fast/draining/stable/growing` |\n| `GET /brief?symbol=BTC` | $0.03 | Market regime in one call: spot + funding/OI + sentiment → `risk_on/risk_off/neutral` |\n| `GET /derivs?symbol=BTC` | $0.01 | Perp funding (hourly + annualized), open interest, crowded-positioning signal |\n| `GET /onchain/token` `/trending` `/new` `/defi` | $0.005–0.01 | Token snapshots, trending pools, fresh launches, chain TVL |\n| `GET /price` `/stock` `/markets` `/signal` | $0.001–0.01 | Spot crypto, stocks/ETFs, market snapshot, momentum verdict |\n\n**Free:** `/` · `/demo/vet` · `/track-record` · `/examples` · `/catalog` · `/llms.txt` ·\n`/.well-known/x402.json` · `/.well-known/agent.json` · `/openapi.json` · `/health` · `/stats`\n\nVerdict-first flat JSON everywhere: read field 1, act. Reasons included for audit. Malformed\nrequests are rejected **before** the paywall — your agent never pays for a doomed call.\n\n## Why pay when the underlying sources are free?\n\nHonest answer: the *snapshots* are free — the **judgment and the history are not**.\n\n1. The liquidity time-series is self-collected. There is no free API for \"liquidity 1 hour ago.\"\n2. The composite catches what single sources miss: static-only scanners miss simulated sell-traps;\n   simulation-only misses authority/mint risks. Disagreement between engines is itself signal (`needs_review`).\n3. One $0.05 call replaces 4+ fetches plus the inference tokens your agent burns reconciling them.\n4. It's keyless. Your agent can't fill signup forms — it *can* pay 5 cents.\n5. [The track record is public](https://x402-seller-m8nx.onrender.com/track-record), misses included.\n   Judge the scorer by its record, not this README.\n\n## The Truth Engine — every endpoint grades itself\n\nThe track record isn't a feature, it's the operating system. **Everything sold here grades\nitself against reality in public, forever** — and the ledgers are git-snapshotted, so a\nverdict can't be rewritten after reality grades it:\n\n| What | Graded against | Live ledger |\n|---|---|---|\n| Rug verdicts on fresh launches | what actually happened 6h later | [/accuracy](https://x402-seller-m8nx.onrender.com/accuracy) · [/track-record](https://x402-seller-m8nx.onrender.com/track-record) |\n| `/weather/consensus` day-max forecasts (6 fixed cities, daily) | the independent ERA5 archive, 2 days later | [/truth/weather](https://x402-seller-m8nx.onrender.com/truth/weather) |\n| `/signal` + `/brief` market calls (2×/day) | realized spot movement, 24h later | [/truth/signal](https://x402-seller-m8nx.onrender.com/truth/signal) |\n\nIf the market-call hit rate converges to ~50%, the page will say the signal has no edge —\npublishing that possibility is what makes every other number credible. Doctrine + all\nledgers: [/truth](https://x402-seller-m8nx.onrender.com/truth). Who runs this (an autonomous\nAI crew, one human gate) + the real books, live: [/company](https://x402-seller-m8nx.onrender.com/company).\n\n## Use as an MCP tool (Claude Code, Cursor, any MCP client)\n\nRug-checking + launch radar as agent tools. Two ways in:\n\n**Hosted (no install)** — add the remote MCP server, free demo tools out of the box:\n\n```bash\nclaude mcp add --transport http x402-seller https://x402-seller-m8nx.onrender.com/mcp\n```\n\nTools: `vet_token` · `launch_radar` · `rug_check` · `track_record` · `catalog` (shared free daily demo budget; unlimited via the paid HTTP API). Published to the [official MCP Registry](https://registry.modelcontextprotocol.io) as `io.github.wyattpalm2-eng/x402-seller`.\n\n**Local (self-hosted, pays for itself)** — clone and run the stdio server, add a burner key for unlimited paid calls:\n\n```bash\ngit clone https://github.com/wyattpalm2-eng/x402-seller && cd x402-seller && npm install\nclaude mcp add rug-check -- npx -y tsx mcp/server.mts\n```\n\nTools: `vet_token` · `launch_radar` · `rug_check` · `liquidity_trend` · `market_brief` · `track_record` · `catalog`.\n\n- **No config:** works immediately — `vet_token` routes through the free demo (1 real call/hour),\n  `track_record`/`catalog` are always free.\n- **`X402_BUYER_PK=0x…`** (a burner wallet with a few dollars of USDC on Base): every tool goes\n  unlimited, settling ~$0.01–0.05 per call via x402 automatically. No account anywhere.\n- **`X402_SELLER_URL=…`**: point the tools at your own self-hosted instance.\n\n## Run your own\n\n```bash\nnpm install && npm start                            # localhost:4021, Base Sepolia by default\nNETWORK=eip155:8453 PAY_TO=0xYourWallet npm start   # mainnet — keyless facilitators, no CDP account needed\n```\n\nOne-click deploy: [`render.yaml`](render.yaml) blueprint. The server registers three redundant\nkeyless facilitators (PayAI, xpay, 0xarchive) on mainnet — no facilitator account required.\n\nProve the full payment loop end-to-end (needs a burner wallet with ~$1 USDC on Base):\n\n```bash\nBUYER_PK=0x<burner-key> npx tsx scripts/selfbuy.mts\n```\n\n## Architecture notes\n\n- Node/TS + Express + `@x402/express`. Three redundant facilitators registered in one\n  `x402ResourceServer` — any one advertising Base-mainnet `exact` keeps settlement alive.\n- Stale-while-revalidate cache with in-flight dedup in front of every upstream: a paying buyer\n  never blocks on a cold upstream or eats a 502 while a recent value exists.\n- SSRF-safe: chain allowlists, strict address regexes, `encodeURIComponent` everywhere, upstream\n  errors never echoed to clients. Receive-only — the server holds **no private key**.\n- Junk never billed: sources throw on non-finite prices/empty payloads → uncharged 502; malformed\n  input 400s before the paywall.\n- `/track-record` and `/onchain/liquidity` ledgers are in-memory + JSONL on free-tier ephemeral\n  disk: depth compounds while the service runs and resets on redeploy. Documented, not hidden.\n\n## Layout\n\n```\nsrc/\n  index.ts       server: paywall wiring, free routes, demo, storefront\n  safety.ts      EVM composite rug score (GoPlus × Honeypot.is + agreement factor)\n  solsafety.ts   Solana composite (GoPlus-Solana × RugCheck)\n  history.ts     liquidity time-series poller + drain detector\n  record.ts      the self-graded public track record\n  composites.ts  /vet and /brief answer endpoints\n  crypto.ts      on-chain aggregator (DexScreener/GeckoTerminal/DeFiLlama)\n  funnel.ts      who viewed (402) vs who bought — demand telemetry\nscripts/\n  selfbuy.mts    one-command real x402 purchase (settlement proof)\n```\n\nMIT. Built to be forked — if you'd rather run your own than pay ours, the code is all here.\nThe moat isn't the code, it's the collected history and the graded record.\n",
  "bytes": 9660,
  "sha": "57630453f1a7a1caa944074b41d490f81461e1c0761d77d24a3035b1604be89d",
  "repo_slug": "wyattpalm2-eng/x402-seller",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_wyattpalm2_eng_x402_seller_15e1e529/readme"
}