Docs

Give your agent a radar

Radartrade is one endpoint your agent calls before it buys a Solana token. It answers with a score, a call and the evidence for each flag. This page covers setup, the report format and every rule.

Quick start

The fastest path is Claude Code. Run this once:

claude mcp add --transport http radartrade /mcp

Then tell your agent the rule, for example in your CLAUDE.md or system prompt:

Before buying any Solana token, call radartrade scan_token with its mint.
Never buy on HOSTILE. On WATCH, use at most a quarter of normal size.

MCP setup

The server speaks MCP over Streamable HTTP at /mcp. It is stateless, needs no session and returns plain JSON.

Claude Code

claude mcp add --transport http radartrade /mcp

Claude Desktop and claude.ai

Open Settings → Connectors → Add custom connector, name it Radartrade and paste the URL:

/mcp

Cursor

Add to ~/.cursor/mcp.json (or .cursor/mcp.json in a project):

{
  "mcpServers": {
    "radartrade": { "url": "/mcp" }
  }
}

With an API key

Send the key as a header. In Claude Code:

claude mcp add --transport http radartrade /mcp --header "x-api-key: YOUR_KEY"

Tools

ToolInputReturns
scan_token{ "mint": "…" }The full report (below). Counts against the daily limit.
trending_tokensnoneUp to 12 boosted Solana tokens with market cap, liquidity, 1h volume and age. Free.

REST

Same report, plain HTTP. CORS is open, so browsers can call it too.

EndpointWhat it does
GET /v1/scan/{mint}Sweep one token. Reports are cached for 60 seconds.
GET /v1/trendingThe live list shown on the home page.
GET /v1/healthService status and the free daily limit.
curl /v1/scan/MINT_ADDRESS
curl -H "x-api-key: YOUR_KEY" /v1/scan/MINT_ADDRESS

Responses carry x-ratelimit-limit and x-ratelimit-remaining headers.

The report

Abridged. Open any sweep and expand Raw JSON to see a full one.

{
  "mint": "…",
  "token":   { "name", "symbol", "image", "program", "decimals", "supply", "launchpad", "createdAt", "ageHours" },
  "score":   0-100,
  "verdict": "CLEAR" | "WATCH" | "HOSTILE",
  "summary": "Hostile: freeze authority is live and launch bundle still holds. Do not buy.",
  "flags": [
    { "id": "freeze_authority", "severity": "high", "penalty": 40,
      "label": "Freeze authority is live", "detail": "…" }
  ],
  "checks": {
    "authorities": { "mint", "freeze", "metadataUpdate", "issuer" },
    "token2022":   { "extensions", "permanentDelegate", "transferHook", "transferFeeBps", … } | null,
    "launch":      { "traced", "slot", "time", "creator", "dev": {…}, "bundle": {…} },
    "holders":     { "top10Pct", "top": [{ "owner", "pct" }], "programPct", "burnedPct" },
    "copycat":     { "mint", "symbol", "marketCap", "ratio" } | null,
    "market":      { "priceUsd", "marketCap", "liquidityUsd", "volume24h", "buys24h", "sells24h", … } | null
  },
  "partial": [ { "check": "holders", "error": "…" } ],
  "scannedAt": "…", "ms": 4210
}

partial lists checks that could not finish (a slow RPC, say). A failed check adds no penalty of its own, so an incomplete sweep gets an incomplete flag and is capped at 74: it can be WATCH or HOSTILE, never CLEAR.

Rules and penalties

The score starts at 100. Each rule that fires takes its penalty off. Some rules also set a ceiling the score can't go above. Calls: CLEAR 75–100, WATCH 45–74, HOSTILE 0–44.

RulePenaltyFires when
mint_authority40, max 40Someone can still mint new supply.
freeze_authority40, max 40Someone can freeze holders' tokens.
t22_non_transferable60, max 10The token can't be moved at all.
t22_permanent_delegate45, max 30A delegate can move or burn tokens from any wallet.
t22_default_frozen35, max 40New token accounts start frozen.
t22_pausable30, max 40All transfers can be paused.
t22_transfer_hook25, max 60A program runs on every transfer.
t22_transfer_fee10 / 25Transfers are taxed (25 at 5% or more).
t22_close_authority10The mint account can be closed.
metadata_mutable5Name and image can still change.
bundle_holding8 / 18 / 30Launch-block buyers still hold 2% / 7% / 15% or more.
bundle_launch5The launch block took 10% or more, since moved on.
dev_holding10 / 20The creator holds 5% / 15% or more.
dev_sold5 / 10The creator sold 50% / 90% or more of their launch buy.
top106 / 15 / 25Top 10 wallets hold 25% / 40% / 60% or more.
copycat20The same ticker trades at 10x the market cap (and at least $250K) elsewhere.
no_market10No pool is listed anywhere.
no_trades15No trades in 24 hours.
thin_liquidity5 / 12Pool liquidity under $20K / $5K (not on a bonding curve).
wash_volume8 / 12Oversized average trades, or 24h volume above 5x market cap.
no_socials5No website or social links.
brand_new5Under an hour old.
Regulated stablecoin issuers (USDC, USDT, PYUSD, USD1) keep mint and freeze rights by design. For those mints the authority rules show as info and cost nothing.

How the launch block is traced

Radartrade walks the mint's history back to its first transaction (up to 6,000 deep), reads every successful transaction in that slot, and records each wallet that received tokens. The creator is the fee payer of the transaction that initialised the mint. Current balances come from each wallet's associated token account. Tokens with deeper history still get the creator and dev buy from the creation transaction, but not the full list of launch-block buyers.

Limits and keys

Without a key you get 30 sweeps a day per IP, reset at 00:00 UTC. Trending and health calls are free and unlimited. Agents that need more can get an API key with a higher daily allowance. Contact the team through the official channels in the footer.

Errors

StatuserrorMeaning
400invalid_mintNot a base58 Solana address.
401invalid_keyThe API key is unknown.
404not_foundNo account exists at that address.
422not_a_mintThe account exists but isn't a token mint (a wallet, say).
429quota_exceededDaily limit used up.
502upstreamSolana RPC or DexScreener failed. Retry shortly.

Over MCP, the same errors come back as a tool result with isError: true and the message as text.