Reference View as Markdown

Reason codes

Each reason in an answer has a code, a severity and a sentence about this token or wallet. Codes are public and permanent: they are only ever added, never renamed. The live list is at GET /v1/reasons.

How they count

  • CriticalBlocks the trade on its own: a sanctioned address, a sale that fails, a honeypot hook, a hidden mint, a counterfeit token, a sweeper wallet, a planted look-alike.
  • High, medium, lowAdd points to risk_score: caution from 30, block from 70. A few never allow on their own (the pool's money can be pulled, there is no real market, a code we can't read).
  • InfoContext that softens or explains: a well-known token, powers held by a multisig, an established market.
  • CHECK_FAILEDA check that couldn't finish appears as CHECK_FAILED:<name>, and in checks_failed. It never counts in a token's favour.

Blocks the trade critical

CodeCheckMeaning
SANCTIONEDaddress, tokenOn the OFAC SDN list or flagged by the Chainalysis sanctions oracle.
KNOWN_SCAMaddress, tokenMatches a scam, drainer, phishing or exploiter label.
SELL_BLOCKEDtokenA simulated sell reverted: you may not be able to sell (honeypot).
COMPROMISED_WALLETaddressWallet delegates (EIP-7702) to a known sweeper: anything sent to it is forwarded to an attacker.
ADDRESS_POISONERaddressWallet is set up for address poisoning: it imitates other addresses to trick payers.
HONEYPOT_HOOKtokenThe main pool's Uniswap V4 hook is a copy of a known honeypot hook, set to keep 50% or more of what a buyer sells.
COUNTERFEIT_TOKENtokenA fake of a major token: its ticker is spelled with look-alike letters, or it passes itself off as money (USDC, USDT, ETH and the like) with no market to sell into.
HIDDEN_MINTtokenThe token's creator or owner can transfer far more tokens than exist (a mint hidden in transfer): they can create tokens at will and sell them into the pool.

Serious high

CodeCheckMeaning
HIGH_SELL_TAXtokenSell tax above 10% (above 50% always blocks).
OWNER_CAN_MINTtokenAn owner or role can mint new tokens.
OWNER_CAN_BLACKLISTtokenAn owner or role can block specific addresses from transferring. Never allow unless behind a multisig or timelock (or a known issuer).
OWNER_CAN_SET_FEEStokenAn owner or role can change transfer fees (up to taking a whole sale). Never allow unless behind a multisig or timelock (or a known issuer).
UPGRADEABLE_BY_EOAtokenA single wallet can replace the contract's code at any time (no multisig or timelock); comes with UPGRADEABLE.
UNRESOLVED_PROXYtokenThe contract delegates to code we could not resolve; never allow.
NO_MARKETtokenMain pool holds under $1,000: there is no real market to sell into. Comes with LOW_LIQUIDITY; never allow.
EXIT_LIQUIDITY_INSUFFICIENTtokenYour trade size (amount_usd) is too large to exit without heavy loss: a buy of that size is priced 10% or more worse than a small one, is more than all the quote 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. Never allow.
UNKNOWN_HOOKtokenUniswap V4 pool with an unrecognised hook (hooks can tax or block sells).
HOOK_OWNER_CAN_SET_TAXtokenThe main pool's Uniswap V4 hook is a copy of a known honeypot hook: its owner can raise the sell tax to 99.99% at any time.
DEPLOYER_PRIOR_RUGtokenThe deployer's earlier tokens were rugged.
DEPLOYER_SANCTIONS_EXPOSUREtokenThe deployer's first funds came directly from a sanctioned address.
DEPLOYER_RUG_FUNDEDtokenThe deployer's first funds came from a wallet that funded the creators of rugged tokens.
COPYCAT_TOKENtokenUses the ticker or name of a major token (top ~500 by market cap) at a different address: it may be a fake.
SANCTIONS_EXPOSUREaddressWallet's first funds came directly from a sanctioned address.

Worth knowing medium

CodeCheckMeaning
HIGH_BUY_TAXtokenBuy tax above 10%.
OWNER_CAN_PAUSEtokenAn owner or role can pause all transfers.
UPGRADEABLEtokenProxy contract: the code can be replaced later.
UNVERIFIED_SOURCEtokenSource code is not verified on a block explorer.
CONCENTRATED_HOLDERStokenTop 10 holders own over 50% (excluding pools and burn).
LOW_LIQUIDITYtokenMain pool holds under $10k.
LP_NOT_LOCKEDtokenThe main pool's liquidity (its LP tokens, or its Uniswap V3/V4 or Aerodrome Slipstream positions) is held by a normal wallet, not burned or locked: it can be withdrawn at any time. Never allow.
SERIAL_DEPLOYERtokenThe deployer launches many short-lived tokens.
DEPLOYER_MIXER_FUNDEDtokenThe deployer's first funds came directly from a mixer (e.g. Tornado Cash).
NEW_TOKENtokenToken contract created less than 24 hours ago.
MIXER_FUNDEDaddressWallet's first funds came directly from a mixer (e.g. Tornado Cash).
NEW_WALLETaddressWallet first seen less than 7 days ago, or never seen.

Minor low

CodeCheckMeaning
LOW_ACTIVITYaddressWallet has sent fewer than 3 transactions.
CHECK_FAILEDaddress, tokenA check timed out or errored (shown as CHECK_FAILED:<name>); see checks_failed.

Context info

CodeCheckMeaning
OWNER_RENOUNCEDtokenOwner is the zero address (lowers risk unless upgradeable).
KNOWN_GOOD_TOKENaddress, tokenA well-known token: issuer admin powers are not scored as risk.
ADMIN_SAFEGUARDEDtokenThe admin powers need several signatures (multisig) or wait out a delay (timelock of 24 h or more): they weigh less.
ESTABLISHED_TOKENtokenTraded for 180+ days with a real market ($1M+ in its main pool, or a CoinGecko top-1,000 market cap for this exact contract), or for 2+ years with $250k+ across its pools: holder and LP concentration aren't scored, and admin powers behind a multisig or timelock weigh less.
ISSUER_CONTROLLEDaddress, tokenThe issuer can freeze or mint (for example USDC).
BONDING_CURVEtokenToken is still trading on a launchpad bonding curve.
DELEGATED_WALLETaddressWallet has delegated its code to a contract (EIP-7702).
CONTRACT_ADDRESSaddressAddress is a smart contract; use /v1/check/token for a full token analysis.