TokenVerdict: paid x402 Base token safety check (honeypot / sell simulation with buy and sell tax, owner powers, proxy, liquidity and LP burn, holders, verified source, age; SAFE / CAUTION / DANGER) + MCP server + shareable cards
Safety check for a Base ERC-20 token before an agent or app interacts with it. SAFE is not a guarantee and not financial advice. TokenVerdict checks one ERC-20 token on Base mainnet and returns SAFE / CAUTION / DANGER with a 0-100 score, a confidence level, and the reasons behind it:
eth_call with state overrides; nothing is ever sent on chain). Covers Uniswap v2 forks, Aerodrome classic, concentrated-liquidity pools (Uniswap v3, Aerodrome Slipstream, PancakeSwap v3, Algebra) and Uniswap v4 (native ETH or ERC-20 quote). Returns buy, transfer and sell tax and round-trip loss.Built for agents, wallets, Telegram/Discord bots and apps that need a safety check on a token they found five minutes ago before interacting with it. SAFE is not a guarantee and not financial advice.
/v1/lite $0.005 (verdict + reasons), /v1/quick $0.015 (full report with evidence), /v1/deep $0.05 (multi-pool simulation, pool table, creation block, GeckoTerminal cross-check). Invalid addresses, non-contracts, non-ERC-20s and source outages are never charged./v1/preview (verdict, score, flag counts; 10/min per IP), a shareable card at /t/<token> and a remote MCP server.This is automated, informational risk screening, not financial advice, not an audit, no guarantee. A token that passes today can be changed tomorrow by whoever controls it (upgrades, tax changes, blacklists, liquidity pulls). Specifically:
tx.origin tricks and sells that only fail later or above some size can pass.degraded: true with lower confidence. Holder concentration may then be unknown.Remote (free preview tier):
{ "mcpServers": { "tokenverdict": { "type": "http", "url": "https://api.youraitools.co/tokenverdict/mcp" } } }
Local stdio (this package):
{ "mcpServers": { "tokenverdict": { "command": "npx", "args": ["-y", "@agentgate-builder/tokenverdict"] } } }
Tool: check_token(token). Free by default (verdict, score, flag counts). For the full quick report on every call ($0.015), set TOKENVERDICT_X402_PRIVATE_KEY to a Base wallet key holding a little USDC, and add the optional peers:
{ "mcpServers": { "tokenverdict": { "command": "npx", "args": ["-y", "-p", "@agentgate-builder/tokenverdict", "-p", "@x402/fetch", "-p", "@x402/evm", "-p", "viem", "tokenverdict"], "env": { "TOKENVERDICT_X402_PRIVATE_KEY": "0x..." } } } }
The stdio server only pays the TokenVerdict pay-to address, on Base, at most $0.02 per call.
Docker: docker build -t tokenverdict-mcp . && docker run -i --rm tokenverdict-mcp
# free preview
curl -s "https://api.youraitools.co/tokenverdict/v1/preview?token=0x532f27101965dd16442E59d40670FaF5eBB142E4"
# paid (any x402 client): GET ?token= or POST {"token": "0x..."}
curl -i "https://api.youraitools.co/tokenverdict/v1/quick?token=0x532f27101965dd16442E59d40670FaF5eBB142E4" # 402 + PAYMENT-REQUIRED
import { wrapFetchWithPaymentFromConfig } from '@x402/fetch';
import { ExactEvmScheme } from '@x402/evm';
import { privateKeyToAccount } from 'viem/accounts';
const pay = wrapFetchWithPaymentFromConfig(fetch, { schemes: [{ network: 'eip155:8453', client: new ExactEvmScheme(privateKeyToAccount(process.env.BUYER_KEY)) }] });
const r = await (await pay('https://api.youraitools.co/tokenverdict/v1/quick?token=0x...')).json();
if (r.verdict !== 'SAFE') console.log(r.verdict, r.score, r.reasons.map((x) => x.text));
Library (free preview):
import { preview } from '@agentgate-builder/tokenverdict';
console.log(await preview('0x532f27101965dd16442e59d40670faf5ebb142e4'));
{ "token": "0x826f…adeea", "symbol": "AYB", "verdict": "DANGER", "score": 0, "confidence": "high", "degraded": false,
"reasons": [{ "severity": "danger", "code": "honeypot", "text": "HONEYPOT SIGNAL: a simulated buy worked but selling back failed (reverted: balance)." }, "…"],
"checks": { "sellability": { "simulated": true, "buy_ok": true, "sell_ok": false, "buy_tax_pct": 0 }, "owner": {}, "powers": {}, "proxy": {}, "contract": {}, "liquidity": {}, "holders": {}, "age": {} },
"limits": ["…"], "disclaimer": "Automated, informational risk signals … Not financial advice, not an audit, no guarantee …" }
Cloudflare Workers (free plan works): npm install && npx wrangler deploy. Set PAY_TO, prices and FACILITATOR (payai default, or cdp with CDP_API_KEY_ID / CDP_API_KEY_SECRET secrets) in wrangler.toml. The simulator contract is in contracts/TVSim.sol (npm run build:sim regenerates src/simcode.js with solc 0.8.26). Tests: npm test (offline, replaying recorded Base mainnet reports).
MIT. Part of the AgentGate tools by YourAITools: https://youraitools.co/built-by-us
agentgate-source: code mirror on Cloudflare Pages. All repos