true402
guide · token price + safety

Price and rug risk,
one call.

A trading agent that looks up a token usually needs two answers: what is it worth, and can I sell it again after I buy. Most APIs give you the first. token-report gives you both in one JSON answer, on Base, Ethereum and BNB Smart Chain.

Try it on a token

Paste a token address and pick its chain. You get the verdict, and the price, market cap and liquidity when the token is listed. Free, no wallet.

Free trial — a few checks a day, keyed on your IP; the CLI draws on that same quota. Past that, pay per call: PAYER_PRIVATE_KEY=0x… npx @true402.dev/rugcheck 0x… at $0.008 a report, or wire the API into an agent.

§01 · the request

One POST.

curl
# Free to try: a few checks a day per IP, no wallet. After that it answers 402 (pay over x402).
curl -s -X POST https://true402.dev/api/v1/base/token-report \
  -H 'content-type: application/json' \
  -d '{"token":"0x940181a94A35A4569E4529A3CDfB74e38FD98631"}'

# Ethereum or BSC: same body, different path
#   https://true402.dev/api/v1/ethereum/token-report
#   https://true402.dev/api/v1/bsc/token-report

No account and no API key. Payment is per call over x402: $0.008 in USDC, and the first few checks each day are free.

§02 · the answer

Verdict and market, side by side.

response shape
{
  "token": "0x9401…8631", "chain": "base",
  "verdict": { "rating": "avoid | caution | ok", "score": 0-100, "reasons": [ "…" ] },
  "market": {
    "status": "ok | not_listed | unavailable", "source": "dexscreener",
    "priceUsd": …, "marketCapUsd": …, "fdvUsd": …,
    "liquidityUsd": …, "volume24hUsd": …, "priceChange24hPct": …,
    "pairs": …, "pairsTruncated": true | false,
    "firstPairCreatedAt": "ISO time", "topPair": { "dex": "…", "address": "0x…", "url": "…" }
  },
  "safety": { "score": …, "flags": [ … ], "honeypot": { … }, "liquidity": { … } },
  "recentPulls": [ … ], "recentWhaleSwaps": [ … ]
}
  • verdict: avoid, caution or ok, with the reasons in plain words.
  • market: price, market cap, FDV, liquidity, 24h volume and change, number of pairs, and when the first pair was created (how long it has traded).
  • safety: the full check underneath. Did a simulated buy and sell go through, at what tax, how deep the liquidity is, who owns the contract, can it mint.
  • recentPulls / recentWhaleSwaps: liquidity removals and large swaps our watchers saw on the token's pools (Base only).
§03 · how to read it

The price never vouches for the token.

The market block is context, not evidence. The verdict comes only from what was checked on-chain. A token can show a healthy price and market cap and still block every sell. That is what a honeypot is, and it is why the buy/sell simulation decides, not the chart.

Three details worth knowing:

  • Price, market cap and FDV are read only from pairs where the token is the base token. A pair that quotes it against something else reports the other token's price.
  • Liquidity and volume are summed over the listed pairs. The provider lists up to 30. When that page is full, pairsTruncated is true and the sums are partial.
  • not_listed means no trading pair was found. It is not a verdict. unavailable means the price lookup failed. The safety check still ran.
§04 · from an agent

Pay and decide in code.

Node — @x402/fetch
// npm i @x402/fetch @x402/core @x402/evm viem — Coinbase's official x402 client
import { x402Client } from '@x402/core/client';
import { wrapFetchWithPayment } from '@x402/fetch';
import { ExactEvmScheme } from '@x402/evm';
import { privateKeyToAccount } from 'viem/accounts';

const signer = privateKeyToAccount(process.env.WALLET_PRIVATE_KEY);  // a funded Base wallet
const client = new x402Client().register('eip155:8453', new ExactEvmScheme(signer));
const pay = wrapFetchWithPayment(fetch, client);

const res = await pay('https://true402.dev/api/v1/base/token-report', {
  method: 'POST', headers: { 'content-type': 'application/json' },
  body: JSON.stringify({ token: '0x940181a94A35A4569E4529A3CDfB74e38FD98631' }),
});
const { verdict, market } = await res.json();
if (verdict.rating === 'avoid') throw new Error(verdict.reasons.join('; '));
console.log(market.priceUsd, market.marketCapUsd, market.liquidityUsd);

Need a wallet first? Fund a Base wallet for x402: USDC only, no ETH for gas. Already in a framework? There are ready tools for LangChain, AgentKit, ElizaOS and MCP.

§05 · when not to use it

Only need a price?

Then use a free price API; you don't need to pay for this. token-report is for the moment before a buy, when the price alone can't tell you whether you will get out again.

§06 · questions

Answered for machines.

Is there an API that returns a token's price and whether it is a rug in one call?

Yes. true402's token-report takes a token address on Base, Ethereum or BNB Smart Chain and returns a rug-check verdict (avoid / caution / ok, with reasons, from a live buy/sell honeypot simulation, liquidity depth and the contract's structure) together with a market block: price, market cap, FDV, liquidity, 24h volume and 24h change. One POST, pay-per-call over x402 in USDC, no account and no API key, and a few free checks a day.

Where does the price data come from?

From DexScreener's public pairs data. The price, market cap and FDV are read only from pairs where the token is the base token, because a pair that quotes the token against something else reports the other token's price. Liquidity and 24h volume are summed across every listed pair that holds the token. If the provider's page of pairs was full (it returns up to 30), the answer says so with pairsTruncated, because the sums then cover the listed pairs only.

Does the price change the verdict?

No. The market block is informational. The verdict is built only from what is checked on-chain: whether a buy and a sell actually go through, the liquidity depth, ownership, mint capability, trading taxes, and recent liquidity removals on Base. A high market cap does not make a honeypot safe, and a token with no price listing is not called dangerous for that reason alone.

What if I only need a token price?

Then a free price API is the right tool and you do not need this. token-report is for an agent or bot that is about to buy a token it has never seen: the question there is not only what it costs, but whether it can be sold again. Getting the price in the same answer saves a second request.

What does a call cost?

$0.008 per call, paid in USDC on Base (or Solana) through the x402 protocol: the server answers 402 with the price, the client signs a payment for exactly that amount and retries. There is no subscription. The first few checks each day are free from your IP, with no wallet.