Solana token due-diligence brief
POST /v1/token-briefHand over a Solana SPL mint address and get one cited due-diligence brief: what the token is, whether the mint and freeze authorities are still live, how deep and how locked the liquidity is (pools, lockers, unlock dates, DEX pairs, 24h volume and buy/sell balance), who holds it (top holders with pool and locker accounts told apart from wallets, concentration with and without pools), and every named risk flag the public feeds carry, plus what this data cannot see. Holders, pairs, pools and risks appendix included. Evidence from RugCheck, DexScreener and Jupiter, never a verdict and not investment advice. USDC (x402/MPP) or card (Stripe). Not cached.
Input
| Field | Type | Description |
|---|---|---|
mint * | string | Base58 Solana SPL token mint address (32-44 chars). |
format | string | Response shape (default markdown report plus structured evidence). |
Example output
{
"report": "# Solana Token Due-Diligence Brief: Jupiter (JUP)\n\n**Mint** `JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN` · **Mint authority** revoked · **Freeze authority** revoked · **LP locked** partial-low · **Top-10 holders** very-high · **RugCheck band** danger\n\n## Snapshot\n...\n\n## What would change this brief\n...\n\nThis brief is evidence from public Solana data sources, not investment advice.\n\n## Sources\n[1] RugCheck full report for JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN - https://api.rugcheck.xyz/v1/tokens/JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN/report",
"mint": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN",
"sources": [
{
"n": 1,
"title": "RugCheck full report for JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN",
"url": "https://api.rugcheck.xyz/v1/tokens/JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN/report"
}
],
"tables": [
{
"name": "holders",
"label": "Top holders",
"columns": [
"Rank",
"Owner",
"Token account",
"Share of supply",
"Type",
"Insider flag"
],
"rows": [
[
"1",
"EXJH...",
"6G4X...",
"24.77%",
"unlabelled wallet",
"no"
]
]
}
],
"evidence": {
"identity": {
"mint": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN",
"name": "Jupiter",
"symbol": "JUP",
"decimals": 6,
"supply": 6862431164.93,
"circulatingSupply": 3320312968.08,
"holderCount": 2873512,
"isVerified": true,
"organicScore": 99.31,
"organicScoreLabel": "high",
"launchpad": null,
"detectedAt": "2024-05-29T00:40:51Z",
"firstPool": {
"id": "2psp...",
"createdAt": "2024-01-29T17:33:29Z"
}
},
"price": {
"usd": 0.2027,
"change24hPct": -2.4,
"blockId": 440919030,
"marketCapUsd": 675335464.98,
"fdvUsd": 1395785031.78
},
"authorities": {
"mintAuthorityDisabled": true,
"freezeAuthorityDisabled": true,
"mintAuthority": null,
"freezeAuthority": null,
"metadataMutable": true,
"updateAuthority": "61aq...",
"transferFee": {
"pct": 0,
"maxAmount": 0
},
"creator": null,
"creatorBalance": 0,
"dev": "JUPh...",
"devBalancePct": null,
"devMints": 1
},
"liquidity": {
"totalMarketLiquidityUsd": 3585833.66,
"totalStableLiquidityUsd": 900000,
"totalLpProviders": 173,
"lpLockedPct": 8.98,
"marketsTotal": 1409,
"markets": [],
"lockers": [],
"pairsTotal": 30,
"pairTotals": {
"liquidityUsd": 95000000,
"volume24hUsd": 160000000,
"txns24h": 40000
},
"pairs": [],
"stats24h": null
},
"holders": {
"totalHolders": 2873512,
"concentration": {
"top1Pct": 24.77,
"top5Pct": 57.67,
"top10Pct": 66.1,
"top20Pct": 75.2,
"top10PctExcludingPools": 46.1,
"insiderHolders": 0,
"labeledPoolOrLockerAccounts": 2
},
"jupiterTopHoldersPct": 15.28,
"rows": []
},
"risk": {
"score": 3550201,
"scoreNormalised": 97,
"riskLevel": "danger",
"riskCounts": {
"danger": 1,
"warn": 1,
"info": 0
},
"rugged": false,
"insiderNetworks": 0,
"risks": []
},
"buckets": {
"mint": "revoked",
"freeze": "revoked",
"lpLocked": "partial-low",
"topHolders": "very-high",
"riskLevel": "danger"
},
"probes": {
"report": true,
"safety": true,
"pairs": true,
"lookup": true,
"price": true
}
},
"meta": {
"tier": "token-brief",
"mint": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN",
"name": "Jupiter",
"symbol": "JUP",
"mint_authority": "revoked",
"freeze_authority": "revoked",
"lp_locked_bucket": "partial-low",
"top10_bucket": "very-high",
"risk_level": "danger",
"top10_pct": 66.1,
"lp_locked_pct": 8.98,
"price_usd": 0.2027,
"holders_listed": 15,
"pairs_listed": 8,
"risk_flags": 2,
"probes": {
"report": true,
"safety": true,
"pairs": true,
"lookup": true,
"price": true
},
"sources_cited": 5,
"synthesis_model": "anthropic/claude-opus-5",
"fingerprint": "{\"mintAuthority\":\"revoked\",\"freezeAuthority\":\"revoked\",\"lpLocked\":\"partial-low\",\"topHolders\":\"very-high\",\"riskLevel\":\"danger\",\"dangerRisks\":1,\"risks\":[\"LP Vault unlocked\",\"Mutable metadata\"]}",
"disclaimer": "Evidence from public Solana data sources (RugCheck, DexScreener, Jupiter) at the time of the request. Not investment advice, not a verdict, not exhaustive."
},
"untrustedContent": true
}
Try it - see the 402 challenge (free)
curl -i -X POST https://agent402.tools/v1/token-brief \
-H "Content-Type: application/json" \
-d '{"mint":"JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN"}'
The response is HTTP 402 Payment Required with exact payment requirements. Any x402 v2 client pays automatically and retries:
Paid call (JavaScript agent)
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const client = new x402Client();
registerExactEvmScheme(client, { signer: privateKeyToAccount(KEY) });
const payFetch = wrapFetchWithPayment(fetch, client);
const res = await payFetch("https://agent402.tools/v1/token-brief", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"mint": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN"
}),
});
Related tools
Chat completions - nano tier
POST /v1/nano/chat/completionsOpenAI-compatible chat completions, nano tier: gpt-4.1-nano, gpt-5-nano, gemini flash-lite, small llama/ministral/qwen, …
try in playground →Chat completions - auto tier (eval-ranked routing)
POST /v1/auto/chat/completionsOpenAI-compatible chat completions with server-side model choice: omit "model" (or send "auto") and the gateway routes t…
try in playground →Grounded chat (web search, OpenAI-compatible)
POST /v1/grounded/chat/completionsOpenAI-compatible chat completions GROUNDED in a live web search on every call: the gateway runs an Exa search (up to 5 …
try in playground →