Documentation

Get a verdict in under a minute.

Everything here works with zero signup — your first 250 scans each month are free, no API key needed. Pick your path below.

For everyone · no code

Check a token from your browser

You don't need to be a developer to use Cabal-Hunter. The bubble map is free and shows you the wallet graph visually.

  1. Copy the token's mint address — the long string from DexScreener, GMGN, pump.fun or your wallet (it looks like Ad3w…pump).
  2. Open api.cabal-hunter.com/map and paste it into the search box.
  3. Read the map. Each bubble is a wallet (size = holdings). Lines are funding links — connected bubbles were funded by the same source. Red clusters are the cabal. Click any bubble to verify it on Solscan.
Rule of thumb: a healthy token looks like scattered, unconnected bubbles. A rug-in-waiting looks like a spider web — many holders wired to one funding source, often created in the same block.
For bot builders

REST API

One GET request, any language. No auth needed for your free 250/month — the counter is per IP.

cURL — try it right now

curl "https://api.cabal-hunter.com/api/scan-cabal?mintAddress=<MINT>"

Python

import requests

r = requests.get(
    "https://api.cabal-hunter.com/api/scan-cabal",
    params={"mintAddress": mint},
    timeout=30,
).json()

if r["recommendation"] == "AVOID" or r["cabal_score"] >= 65:
    abort_buy()   # you were the exit liquidity

JavaScript / TypeScript

const r = await (await fetch(
  `https://api.cabal-hunter.com/api/scan-cabal?mintAddress=${mint}`
)).json()

if (r.recommendation === "AVOID" || r.cabal_score >= 65) {
  abortBuy()
}

Useful response headers

HeaderMeaning
X-Free-Queries-RemainingFree scans left this month for your IP — watch this in your bot and top up before it hits zero.
X-Cabal-RecommendationAVOID / CAUTION / LOW SIGNAL — gate on this without parsing the body.
X-Cabal-ScoreThe 0–100 score.
X-Key-Credits-RemainingBalance left on your prepaid key (when sending X-API-Key).
Also free: GET /api/cex-funding?mint= (which exchanges funded the holders), GET /api/trade-analysis?mint= (cohort PnL + wash-trade score), and POST /api/watch (webhook push the moment a coordinated dump starts on a token you hold). Machine-readable spec: openapi.json.
For agent developers

MCP — Claude, Cursor, VS Code

Cabal-Hunter is a hosted MCP server at https://api.cabal-hunter.com/mcp exposing one tool: check_cabal_risk(mintAddress). Your agent calls it before any swap — automatically.

One-click installs

⚡ Install in VS Code ⚡ Install in Cursor

Claude Code (CLI)

claude mcp add --transport http cabal-hunter https://api.cabal-hunter.com/mcp

Claude Desktop claude_desktop_config.json

{
  "mcpServers": {
    "cabal-hunter": {
      "command": "npx",
      "args": ["mcp-remote", "https://api.cabal-hunter.com/mcp"]
    }
  }
}

Then just ask

"Check the cabal risk on Ad3wM19jfM6DGbGaoswz3orJ5WHXWEjBGKpRZ2ggpump before I buy."
System-prompt tip for trading agents: add "Call check_cabal_risk before any Solana buy. Do not buy if recommendation is AVOID or cabal_score ≥ 65." — that one line makes the gate automatic.
For ElizaOS builders

ElizaOS plugin

A published npm plugin adds the CHECK_CABAL_RISK action to any Eliza agent.

npm install elizaos-plugin-cabal-hunter

Register it in your character

import { cabalHunterPlugin } from "elizaos-plugin-cabal-hunter"

export const character = {
  ...
  plugins: [cabalHunterPlugin],
}
For your dashboard

Live badge widget

Two lines of HTML render a live verdict card — score circle, flags, live-map link — for any token, on any site. Works in plain HTML, React, anywhere.

<div class="cabal-hunter-badge" data-mint="YOUR_TOKEN_MINT"></div>
<script src="https://api.cabal-hunter.com/widget.js" defer></script>

Options

AttributeWhat it does
data-mintRequired. The Solana mint to scan and display.
data-refresh="120"Re-scan every N seconds (min 60) — live verdicts while you trade.
data-api-key="ch_live_…"Use your prepaid key once you're past the free tier.
Reference

Response fields

The fields your code will actually use. Full schema: openapi.json.

FieldMeaning
cabal_score0–100. ≥65 = HIGH risk, ≥35 = CAUTION, below = low signal.
recommendationAVOID / CAUTION / LOW SIGNAL — the one field to gate a buy on.
riskHIGH / MEDIUM / CLEAN.
verdictPlain-English summary of everything found — human-readable, log it.
time_synctrue = holders bought in the exact same block (bundled launch).
coordinated_exittrue = multiple holders dumping in the same block, right now.
top_holder_pctLargest single non-LP holder's share of supply.
deployer.verdictFIRST_LAUNCH / NORMAL / POOR_TRACK_RECORD / SERIAL_RUGGER — plus their launch history.
coordinated_clusters[]Each cluster: type (funding / time_sync / coordinated_exit), combined % of supply, and evidence_txs[] — the proof transactions.
filtered_clusters[]Clusters we excluded as CEX noise (e.g. shared Binance funding) — shown so you can verify we're not hiding anything.
honeypot_riskSolana-native honeypot signals: live freeze authority, Token-2022 traps.
liquidity_usd · market_capLive from DexScreener at scan time.
free_queries_remainingFree scans left this month for your IP.
Pricing & keys

Free for most. $9/mo if your bot never stops.

Priced at cost — each scan runs live Helius RPC calls. Nothing is ever auto-charged: crypto payments are push-only, so you always stay in control.

Free tier — most people stay here

250 scans / month per IP. No signup, no key, no card. The free_queries_remaining field and X-Free-Queries-Remaining header show your balance on every response, and a warning field appears at 20 left.

Beyond free — two options

$9/month Unlimited (fair use, 50k/mo) for 24/7 bots — or pay-as-you-go at $0.001/scan, any amount from $1. Either way it's one USDC payment from any Solana wallet.

Getting a key (60 seconds, no account)

  1. Send USDC on Solana to the wallet shown on /pricing — $9 for Unlimited, or any amount ≥ $1 for pay-as-you-go credits.
  2. Redeem the transaction: paste the tx signature on /pricing, or from code: POST /api/buy-key {"tx_signature": "…"}
  3. Use the returned key as a header on every scan: X-API-Key: ch_live_… — check the balance anytime at GET /api/key-balance.
For autonomous agents: the x402 pay-per-call flow is also supported — the 402 response body contains complete machine-readable payment instructions (recipient, amount, memo), so an agent can pay and retry without a human.
Troubleshooting

Quick answers

I get HTTP 402

Your IP used its 250 free scans this month. The response body lists both ways to keep going ($9 Unlimited or $0.001/scan). Counters reset on the 1st.

The scan takes a few seconds

Cold tokens need a live on-chain trace (1–5s). Already-indexed tokens return in <100ms. Pass pairCreatedAt (DexScreener ms timestamp) to speed up cold scans.

Score says CLEAN but the token rugged

CLEAN means no coordinated cabal — it can't predict a solo dev pulling liquidity with a clean wallet graph. Combine with top_holder_pct, deployer.verdict and liquidity for the full picture — and check the live demo for how it performs on our own bot.

Something else?

Use the feedback box on the homepage — it comes straight to us — or ping @CabalhunterAPI.