Skip to content

Solana rug check API

Is this token safe? SAFE / WARN / DANGER for any Solana mint or pump.fun coin, with a 0-100 risk score and the on-chain evidence for every flag. $0.01 per call in USDC on Base over x402. No account, no API key.

$0.01USDC per verdict · deeper packs up to $5.00

01 / What it checks

A deterministic rubric, not a vibe

Every flag carries its evidence and provenance (RPC method, slot, time), so an agent can show its work.

  1. 01

    Mint and freeze authority. Live or renounced, read from the mint account.

  2. 02

    Token-2022 traps. Permanent delegate, transfer hook, transfer fee, default-frozen, pausable, non-transferable.

  3. 03

    Holder concentration. Top-10 share with the pump.fun curve, AMM pools and burn addresses excluded; the largest wallet; identical-balance clusters (a bundle or airdrop-farm signal).

  4. 04

    pump.fun curve. Bonding-curve progress and graduation, so a fresh launch is not mistaken for a mature pool.

  5. 05

    Receipt. operation_id, free status_url, a share page and a PNG card for every paid verdict.

02 / Endpoints

From a $0.01 screen to a deep pack

Start with the verdict; step up only when an agent needs the holder list, the creator's trades or a batch.

Solana token safety
EndpointUSDC per call
GET /v1/sol/token-verdict/{mint}Solana token verdict: SAFE / WARN / DANGER + share card + receipt$0.01
GET /v1/sol/verdict-delta/{mint}Solana token verdict delta: what changed since your last check ($0.01)$0.01
GET /v1/sol/rug-lite/{mint}Solana rug check lite: authorities, Token-2022 traps, top-10, curve$0.02
GET /v1/sol/complete-kit/{mint}Solana rug check complete kit ($0.02): is this token safe? verdict + holders + Jupiter + RugCheck + Dexscreener$0.02
GET /v1/sol/token-verdict-batchSolana token verdict batch: up to 10 mints, one $0.05 payment$0.05
GET /v1/sol/holders-authority/{mint}Solana holders + authority pack: top 20, holder count, extensions$0.25
GET /v1/sol/dossier/{mint}Solana token dossier: facts pack + grounded research brief + card ($0.50)$0.50
GET /v1/sol/risk-pack/{mint}Solana deep rug-risk pack: holders, creator activity, mint age$1.00
GET /v1/sol/risk-pack-batchSolana rug-risk pack batch (2-10 mints) + bundle check$5.00
Same check on Base and Ethereum ERC-20s
EndpointUSDC per call
GET /v1/base/token-verdictBase token quick verdict: owner powers, proxy, liquidity$0.02
GET /v1/eth/token-verdictEthereum token quick verdict: owner powers, proxy, liquidity$0.02
GET /v1/quest/token-watchBase token watch quest ($0.02): hourly ERC-20 risk check with change detection$0.02

03 / Example

A real verdict, free to read

This is a real paid answer (our own payment, 2026-10-29), served free at /v1/verdict/sample. Excerpt:

Request
# quote (free), then pay $0.01 with any x402 client
curl -i https://agents.avasis.ai/v1/sol/token-verdict/DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263
# same call as POST
curl -i -X POST https://agents.avasis.ai/v1/sol/token-verdict \
  -H 'content-type: application/json' \
  -d '{"tokenAddress":"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"}'
Response excerpt (sample)
{
  "grade": "SAFE",
  "one_liner": "Authorities renounced, top 10 hold 0.4%: no red flags",
  "score": 10,
  "scoreMeaning": "risk 0-100, higher = riskier",
  "rubric": {
    "version": "sol-verdict-1",
    "rule": "SAFE: score 10 < 25, no critical or high flag"
  },
  "flags": [
    {
      "code": "IDENTICAL_BALANCE_CLUSTER",
      "severity": "medium",
      "weight": 10,
      "evidence": "9 of the top 10 non-pool accounts hold exactly 491805 tokens each (scripted distribution: bundle split or airdrop farm)"
    }
  ],
  "operation_id": "vop_R1_Us1gysqmhlMF5WDG67Q",
  "status_url": "https://agents.avasis.ai/v1/verdict/operations/vop_R1_Us1gysqmhlMF5WDG67Q",
  "page_url": "https://agents.avasis.ai/verdict/AAR3EnGfeoD3",
  "fetchedAt": "2026-10-29T19:41:45.562Z"
}
@x402/fetch
// npm i @x402/fetch @x402/evm viem   (wallet needs a little Base USDC, no ETH: the facilitator pays gas)
import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

const signer = privateKeyToAccount(process.env.X402_PRIVATE_KEY);
const pay = wrapFetchWithPayment(fetch, new x402Client().register("eip155:8453", new ExactEvmScheme(signer)));
const r = await pay("https://agents.avasis.ai/v1/sol/token-verdict/DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"); // 402 -> sign $0.01 -> 200 JSON
console.log(r.status, await r.json());

04 / Other rails

Also sold to agents on Virtuals ACP

The same verdict code (vendored byte-identical) runs as an Avasis seller on Virtuals ACP v2: Solana and Base/Ethereum token verdicts at $0.10 a job, a token watchlist report at $0.25. Status: live in the ACP sandbox since 6 Nov 2026, pending graduation, so it is not yet listed in Butler search. On x402 the verdict is live today.

05 / Questions

Questions builders ask

  1. Q1

    Is the verdict financial advice?
    No. It describes on-chain configuration and holdings: authorities, Token-2022 extensions, holder concentration and the pump.fun curve. It is a structural screen, not an audit or a price call.

  2. Q2

    Where does the data come from?
    Public Solana RPC at request time (cached 20 to 45 seconds per mint). The complete kit adds Jupiter, RugCheck and Dexscreener as second opinions and reports where they disagree.

  3. Q3

    What if the address is not a token?
    Not a mint: 404, never charged. Garbage input: 400 before any payment challenge.

  4. Q4

    Why does my x402 client refuse a price above $1?
    Default x402 buyers cap one payment at $1. Calls under $1 work as is; for a larger ticket raise maxAmountPerPayment in your client, or buy a prepaid credit pack once at /meter/.