Reference View as Markdown

The answer

Both checks answer in the same shape. Your code reads one field, action; a person reads one sentence, summary.

A real answer

A token check on Base, 14 Oct 2026: a token whose creator kept the power to make tokens at will, paid for by a wallet behind earlier rugs. Shortened:

{ "request_id": "01a138bd-2aa6-7946-be8c-8958884270fb", "verdict": "block", "action": "do_not_proceed", "risk_score": 100, "confidence": "high", "summary": "Do not proceed. The token's creator (0x0f24…e4d8) can transfer 10× the total supply: tokens can be created without a mint and sold into the pool. …", "reasons": [ { "code": "HIDDEN_MINT", "severity": "critical", "detail": "The token's creator (0x0f24…e4d8) can transfer 10× the total supply: …" }, { "code": "DEPLOYER_RUG_FUNDED", "severity": "high", "detail": "The deployer (0x0f24…e4d8) was first funded by 0xde8e…c473, a wallet that funded the creators of tokens that were rugged." }, { "code": "NEW_TOKEN", "severity": "medium", "detail": "Token contract was created 1 hour ago." } ], "address_type": "contract", "token": { "name": "Delta", "symbol": "DELTA", "main_pool": { "dex": "uniswap_v2", "liquidity_usd": 14039, … }, … }, "checks_run": ["sanctions", "labels", "contract", "source", "deployer", "copycat", "liquidity", "holders", "lp_lock", "hidden_mint", "simulation"], "checks_failed": [], "chain": "base", "address": "0xE546173916467211B9D238Fb24DB6a63E240EB40", "block": 52581968, "as_of": "2026-10-14T04:48:03.815Z", "ruleset": "2026.10", "cached": false, "signature": { "alg": "Ed25519", "key_id": "…", "sig": "…" } }

The fields

  • verdictallow, caution or block.
  • actionThe same decision for code: proceed, limit_exposure or do_not_proceed.
  • summaryOne plain sentence, written to be shown to a person: the decision, then the most important details.
  • reasonsEach with a code, a severity and a sentence, most serious first. Every code: reason codes.
  • risk_scoreThe points behind the decision, 0 to 100: caution from 30, block from 70. Some findings decide on their own, whatever the score: a sale that fails always blocks.
  • confidencehigh when every check finished, medium when one could not (it is then named in checks_failed).
  • checks_run, checks_failedWhich checks answered, and which could not finish. A failed check never counts in a token's favour.
  • block, as_of, rulesetThe exact block and time the answer was true, and the version of the rules that produced it.
  • cachedtrue when the answer came from a short cache (see below).
  • request_idThis request's id, inside the signed answer, so an answer can't be passed off as another request's. Quote it if you report an answer.
  • signatureProof that the answer is ours and unchanged: signatures.
  • token, wallet, address_typeThe facts behind the answer: token, wallet.

What each answer means

ReplyWhat it meansWhat a platform usually does
Allow
200 proceed
No blocking risks found.Trade.
Caution
200 limit_exposure
Real risks, listed in reasons.Warn the user, or cap the size.
Block
200 do_not_proceed
A trap, a scam or a sanctioned address. summary says why.Refuse, and show the summary.
Unknown
503 CHECKS_INCOMPLETE
A check we need couldn't finish. Not an answer, and never charged.Treat as not verified. Ask again after Retry-After seconds.

"Allow" is not a guarantee. It means we found nothing that should stop the trade at the moment we looked. A token can still fall in price, and things can change after the check.

Freshness

An answer may come from a short cache, keeping its original as_of and block: at most 30 seconds for most tokens, 60 seconds for wallets, 5 minutes for well-known tokens, and 10 minutes for blocks that don't lift. An answer with a failed check is never cached. Cache-Control: no-cache forces a fresh check.

When to ask again

A caution that lists a check in checks_failed is worth asking again a few seconds later (with a new Idempotency-Key if you send one). The usual cause is a token we are seeing for the very first time.