Token Risk (x402)

Pay-per-call rug/honeypot risk check for Base and Solana tokens. Tools check_token and check_token_risk return pass/warn/fail/unknown flags (buy/sell tax sim, owner/proxy/mint/blacklist, Solana mint/freeze authority, liquidity, pair age). $0.0009 USDC per check via x402 on Base, no API key; free preview at /v1/preview.

Barındırılan MCP Sunucusu

npx add-mcp 'https://token-risk.orbit-builder.workers.dev/mcp'

Claude Code, Codex, Cursor ve daha fazlasına kurulur

Dokümantasyon

orbit-builder ~/token-risk $

checking… · Base mainnet · USDC

Token risk check.$0.0009 a token.

Before your agent buys, lists or trusts a token, check it. Base and Solana: mint and freeze authority, proxy and owner powers, holder concentration, liquidity, pair age, dump patterns. No account. No API key. $0.0009 in USDC per token, or $0.015 for up to 10 tokens in one call, paid via x402.

agent@runtime: ~ (demo)

$0.0009

per token

batch: $0.015 for 1–10

2

chains

Base · Solana

15

flag types

pass · warn · fail · unknown

–

your last preview

measured in this browser

Try a token right now.

This calls the real free preview endpoint (/v1/preview, 30 per hour per IP). It shows the headline verdict; the paid call returns every flag with raw values and thresholds.

–

risk level

press check

One paid call. The rest is free.

Settles in USDC to 0x9Da4B249B8afa7818de5BFf7eEd8b13e6feeb9b3 on Base mainnet (eip155:8453). Malformed input is rejected with 400 before any payment, so you never pay for a typo.

single token

GET · POST

/v1/check?token=chain:address

$0.0009 / call

  • 1 token, Base or Solana
  • every flag with raw value + threshold
  • also takes {chain,address}, {tokenAddress}, {tokens:[1]}

batch

POST · GET

/v1/risk

$0.015 / call

  • 1–10 tokens, mix Base + Solana
  • same full report per token
  • market snapshot: price, liquidity, FDV, volume

rate-limited

GET

/v1/preview?chain=&address=

$0

  • 1 token, risk level + counts
  • 4 headline flags with raw values
  • 30 calls / hour / IP

no payment

GET

/health · /openapi.json

$0

  • /.well-known/x402 discovery
  • /llms.txt for agents
  • MCP: POST /mcp · tools check_token, check_token_risk
  • A2A card: /.well-known/agent.json

Cheapest single-token x402 risk check we've found: $0.0009 (vs $0.00098–$0.02 for the others we checked, live x402 prices, Oct 23 2026): kushbitx token-risk $0.00098; hexscan honeypot, money-reactor honeypot, signals.edge token-risk and ottoai token-security $0.001; Pocket pump-check $0.005; money-reactor token-verdict and x402node honeypot $0.01; AX1 q-verdict $0.02. Compare outputs before you pick. Here you get raw numbers per check for Base and Solana, not a prose verdict.

What gets flagged

Each flag is pass · warn · fail · unknown with the raw value and the threshold used. unknown never counts as pass.

flagchainrule
mint_authoritysolanaset = supply can be inflated → fail
freeze_authoritysolanaset = holders can be frozen → fail
token2022_extensionssolanatransfer hook / permanent delegate / fees → warn
top10_holder_pctsolana>50% → warn (includes LP accounts)
contract_existsbaseno bytecode → fail
upgradeable_proxybaseEIP-1967 slot set → warn
ownerbasenon-renounced owner() → warn
mint_functionbasemint(address,uint256) selector → warn
blacklist_functionbaseblacklist-style selectors → warn
honeypot_taxbasebuy+sell simulation: honeypot or any tax ≥ 10% → fail · ≥ 3% → warn
flagchainrule
liquidity_usdboth<$10k fail · <$50k warn
liquidity_to_fdvboth<0.02 → warn (thin book)
pair_age_hoursboth<24h → warn
quiet_coinboth<50 txns or <$1k vol / 24h → warn
gap_dumpbothh1 ≤ −40% or h6 ≤ −60% fail · h1 ≤ −20% or sells > 2× buys warn
dex_pairbothno DEX pair found → unknown
// risk_level
high      any fail
elevated  ≥2 warns
insufficient_data  unknown > pass
low       otherwise

Copy, paste, pay.

Any x402 client works. Fund the agent's wallet with a little USDC on Base; no ETH needed.

# free preview
curl -s "https://token-risk.orbit-builder.workers.dev/v1/preview?chain=solana&address=DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263" | jq

# see the price: 402 with the x402 challenge (also in the PAYMENT-REQUIRED header)
curl -s "https://token-risk.orbit-builder.workers.dev/v1/check?token=base:0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed" | jq '.accepts[0]'

# batch of up to 10: POST /v1/risk ($0.015)
curl -s -X POST https://token-risk.orbit-builder.workers.dev/v1/risk -H 'content-type: application/json' \
  -d '{"tokens":[{"chain":"base","address":"0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed"}]}' | jq '.accepts[0].amount'
// npm i @x402/fetch @x402/evm viem
import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

const client = new x402Client().register("eip155:8453", new ExactEvmScheme(privateKeyToAccount(process.env.AGENT_KEY)));
const pay = wrapFetchWithPayment(fetch, client);

const res = await pay("https://token-risk.orbit-builder.workers.dev/v1/risk", {
  method: "POST", headers: { "content-type": "application/json" },
  body: JSON.stringify({ tokens: [
    { chain: "solana", address: "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263" },
    { chain: "base",   address: "0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed" } ] }),
});
for (const r of (await res.json()).results) console.log(r.address, r.risk_level, r.counts);
# pip install "x402[httpx,evm]"
import asyncio, os
from eth_account import Account
from x402 import x402Client
from x402.http.clients import x402HttpxClient
from x402.mechanisms.evm import EthAccountSigner
from x402.mechanisms.evm.exact.register import register_exact_evm_client

async def main():
    client = x402Client()
    register_exact_evm_client(client, EthAccountSigner(Account.from_key(os.environ["AGENT_KEY"])))
    async with x402HttpxClient(client) as http:
        r = await http.post("https://token-risk.orbit-builder.workers.dev/v1/risk", json={"tokens": [
            {"chain": "solana", "address": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"}]})
        for t in r.json()["results"]:
            print(t["address"], t["risk_level"], t["counts"])

asyncio.run(main())

Straight talk. These are descriptive data and heuristic flags from free public sources (DexScreener, Jupiter token API, honeypot.is simulation, Base and Solana public RPC), not financial advice and not an audit. Bytecode selector scans can miss renamed functions; holder concentration on Solana includes LP and bonding-curve accounts; public RPC rate limits can turn a check into unknown. The flags exist to make an agent pause, not to bless a token. No tracking, no cookies.