Chain Check

Pay-per-call onchain intelligence for AI agents: wallet reports, contract scans, token risk scores, gas snapshots across 7 chains, and ENS/address labels. Paid per call in USDC on Base via x402; free pricing tool.

Hosted MCP Server

npx add-mcp 'https://chaincheck-api.netlify.app/mcp'

Installs into Claude Code, Codex, Cursor and more

Documentation

Chain Check API

Pay-per-call crypto data for agents and developers. No account, no API key. Each call is paid with x402 (HTTP 402) in USDC on Base. Unpaid requests get a 402 Payment Required with machine-readable terms, and any x402 client pays automatically.

EndpointPriceReturns
GET /v1/wallet-report?address=0x…$0.01Native, USDC and USDT balances, tx counts, contract / EIP-7702 delegation detection on Ethereum, Base, Arbitrum, Optimism, Polygon, BNB Chain and Avalanche
GET /v1/contract-scan?chain=base&address=0x…$0.02Upgradeable-proxy detection (EIP-1967 + legacy), implementation and admin, owner, mint / blacklist / pause / fee-change / max-tx / trading-switch capabilities, plain-English flags, centralisation score
GET /v1/token-risk?chain=base&address=0x…$0.02Token risk score 0-100: honeypot, buy/sell tax, mint, hidden owner, blacklist, unverified source, LP lock, top holders
GET /v1/gas-snapshot$0.005Gas on 7 chains with USD transfer/swap cost, major prices, cheapest chain
GET /v1/address-label?q=vitalik.eth$0.01ENS ↔ address, contract check, known-malicious address flags

Payment terms

  • Scheme exact, network eip155:8453 (Base), asset USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
  • payTo 0xee31Abd15C22c89309311D8aaE128cBd6186D06C, facilitator PayAI
  • Invalid input returns 400 before any payment is requested, so you never pay for a malformed call.

Try it

curl -i "https://chaincheck-api.netlify.app/v1/contract-scan?chain=base&address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
# → 402 with PAYMENT-REQUIRED header (base64 JSON terms)

// pay automatically (Node, x402 v2 client)
import { wrapFetchWithPayment } from "@x402/fetch";
const res = await wrapFetchWithPayment(fetch, client)("https://chaincheck-api.netlify.app/v1/wallet-report?address=0x...");

Example output (contract-scan, Base USDC)

{"is_contract":true,"token":{"name":"USD Coin","symbol":"USDC","decimals":6},
 "proxy":{"implementation":"0x2Ce6311ddAE708829bc0784C967b7d77D19FD779","admin":"0x4fc7850364958d97B4d3f5A08f79db2493f8cA44"},
 "capabilities":{"mint":true,"blacklist":true,"pause":true,"upgrade":true},
 "flags":["Upgradeable proxy…","Has a mint function…","Has blacklist/blocklist functions…","Pausable…"],
 "centralisation_score_0_100":70}

Machine-readable: /.well-known/x402.json · /openapi.json · /llms.txt. Heuristic on-chain data, not an audit or financial advice. Contact: scriptsmith@mail.grokbot.com

MCP, human tools & tips

MCP (Streamable HTTP): https://chaincheck-api.netlify.app/mcp (listed in the official MCP Registry as app.netlify.chaincheck-api/chaincheck).

No x402 client? Use the pay-per-report web tools: chaincheck-tools.netlify.app (USDC on Base or Solana).

Tip via Solana Pay: USDC on Solana · Base: 0xee31Abd15C22c89309311D8aaE128cBd6186D06C