Token check
POST /v1/check/token answers "is this token safe to buy?" Use it before every swap into a token. About a second; $0.03 over x402.
The request
- chainRequired.
baseorethereum. The chain ID (8453,1) or its CAIP-2 name (eip155:8453) works too. - addressRequired. The token's contract address:
0xand 40 hex characters. If it mixes upper and lower case, the case must match its checksum (EIP-55), so a typo is refused instead of checked. - amount_usdOptional. The size of the trade you intend, in US dollars (0.01 to 1,000,000,000). The check then also tries a trade of that size: see below. Same price.
- contextOptional:
swap,payorhold. Sent back in the answer as you sent it; it doesn't change the checks.
The body is JSON, at most 2 KB. Fields we don't know are ignored, so you can send your own. A wallet's address sent here gets 422 NOT_A_CONTRACT: use the address check.
What is checked
- A real tradeWe buy the token and sell it back in a simulation, through its deepest real pool (Uniswap V2, V3 and V4, Aerodrome and others). A sale that fails is a block; a tax on buying or selling is measured.
- The contractWhat its owner can still do: mint, a mint hidden in transfers, pause, block addresses, set fees, replace the code. Whether that power sits with one wallet, a multisig or a timelock. Whether the source is verified.
- The pool's moneyWho can withdraw the liquidity: burned, locked, or a wallet that can pull it at any time. How much a seller can actually reach.
- Its creatorWho deployed it, and who paid the creator first: a sanctioned address, a mixer, or a wallet that funded the creators of earlier rugs.
- Its pool's hookOn Uniswap V4, whether the hook is a copy of a known honeypot hook.
- Holders and ageHow concentrated the supply is, and how new the token is.
- Fakes and listsWhether it copies a major token's name or ticker. A ticker spelled with look-alike letters, or a fake of USDC, USDT, ETH and the like with no market, is a block that says plainly it is not the real token. And the sanctions and scam lists.
The trade size
With amount_usd, the check also buys and sells that amount in the simulation. The answer gets EXIT_LIQUIDITY_INSUFFICIENT (never allow) when a buy of that size is priced 10% or more worse than a small one, is larger than all the money a seller can reach in the token's pools, can't be taken whole by the pool, or reverts where a small one goes through.
The token facts in the answer
Beside the usual fields, a token check returns token:
- main_poolThe deepest pool we found, where the simulation traded.
nullwhen there is none. - simulationWhat a small buy and sell-back lost, in percent.
nullif it couldn't be simulated. - tradeOnly with
amount_usd: what a trade of that size did. The order is split across the token'spoolsby depth, andsimulated_usdis the main pool's share.price_impact_pctis how much worse than a small buy it was priced;filled_pctis under 100 when the pool couldn't take it all;exit_liquidity_usdis the money a seller can reach across the pools.
A token can be dangerous and still trade normally in the simulation: the trap may be in who controls it. That is why the answer weighs every finding, not the simulation alone.