Solana · REST · MCP

A new token has no history.
The wallets in it do.

We indexed every pump.fun and letsbonk migration since 9 May 2026: 31,786 tokens and the 625,769 wallets that traded them. A launch is covered within a minute of migrating, and the verdict is calibrated against the ones that already finished. The hit rate is published below.

A REST API over that record.

Plain HTTP, JSON both ways, and every response says what it cost. One POST mints a key; USDC funds it.

Pick a plan

A monthly allowance of credits against every endpoint. It arrives on the 1st and resets at the end of the month; pay a multiple of the price and it buys that many months. No card on file and nothing renews by itself — a month lapses into silence, never into a charge.

developer
For one bot watching the firehose
$40 / month
$0.27 per 1,000 credits
  • 150,000 credits every month
  • ≈ 1,071 full dossiers, or 75,000 screens
  • Every endpoint, the same data agents get
  • Runs out? Calls fall back to your balance
business
For a product built on our answers
$150 / month
$0.15 per 1,000 credits
  • 1,000,000 credits every month
  • ≈ 7,142 full dossiers, or 500,000 screens
  • Every endpoint, the same data agents get
  • Runs out? Calls fall back to your balance
enterprise
Above the ladder
Let’s talk
Firehose volumes, custom terms
  • A month of our output, or more
  • Priced by conversation, not a list

The wallet shows the exact amount and recipient before anything moves, and the page claims the payment for you. Prefer the raw flow? POST /v1/plans takes a plan name and a transaction signature. There is no free plan — /v1/sample answers one real token in full, free and without a key.

Three calls to your first paid answer

1

Mint a key

No signup required. It is returned once and starts empty, so save it. Sign in first and it lands in Your keys below instead.

curl -X POST https://api.mindjack.xyz/v1/keys \
  -H 'content-type: application/json' \
  -d '{"label":"my-bot"}'
2

Fund it

Send USDC on Solana to the address GET /v1/credits/deposit returns, then post the signature. A signature credits exactly once.

curl -X POST https://api.mindjack.xyz/v1/credits/deposit \
  -H 'X-API-Key: mj_live_...' \
  -d '{"tx_signature":"..."}'
3

Call it

Every response carries _meta.billing with what that call actually cost and what is left.

curl https://api.mindjack.xyz/v1/screen/<mint> \
  -H 'X-API-Key: mj_live_...'

Or stop asking

Hold one connection open and every token arrives on it the moment its analysis finishes, with the same fields /v1/discover returns. Billing is per token delivered, never per connection or per minute, so a stream that matches nothing all night costs nothing.

Server-sent events, so it reconnects itself
curl -N 'https://api.mindjack.xyz/v1/stream/migrations?max_rug_pct=40' \
  -H 'X-API-Key: mj_live_...'

event: token
data: {"mint":"...","verdict":"low","rug_probability_pct":34.8,
       "market_cap_at_analysis":38400,"holders":212,"as_of":"..."}
max_rug_pct, min_mcap and platform are applied before anything is charged, so you pay for the tokens you asked for and not the ones you were going to throw away. Connecting costs nothing: the last hour is history rather than news, so a fresh stream starts silent and bills from the next token onward. Drop the connection and reconnect with Last-Event-ID to resume without a gap.

Two more feeds ride the same contract — per event delivered, filters applied before billing, Last-Event-ID resume.

Watch wallets — $0.005 per event
curl -N 'https://api.mindjack.xyz/v1/stream/wallets?watch=<wallet1>,<wallet2>' \
  -H 'X-API-Key: mj_live_...'

event: wallet
data: {"mint":"...","matches":[{"wallet":"...","roles":["insider","fresh"]}],
       "platform":"pumpfun","facts":{"insider_supply_pct":25.4,...}}
Up to 50 wallets on one stream. The moment one of them appears in a token we just analysed — as an insider, sniper, early buyer, fresh wallet, wash trader, KOL or plain top-100 holder — an event names the wallet, its roles, and the token with screen's facts. A watch that never fires costs nothing to keep open.
Follow tracked KOLs — $0.002 per trade
curl -N 'https://api.mindjack.xyz/v1/stream/kols?min_sol=0.5&side=buy' \
  -H 'X-API-Key: mj_live_...'

event: trade
data: {"kol":{"wallet":"...","name":"Crypto Pirate"},"mint":"...",
       "side":"BUY","sol":1.02,"realized_sol":null,"roi_pct":null,"at":"..."}
Every buy and sell a tracked KOL wallet makes, with the SOL size and realized PnL where the ledger has settled it. watch narrows to up to 50 KOL wallets, min_sol drops dust, side keeps one direction — all applied before billing, so a filtered-out trade is free. Events arrive on the record within seconds — and the record lands a median twelve seconds after the chain, with confirmation tails to a few minutes. The event id is the trade id: reconnect with Last-Event-ID and nothing is billed twice.

Beyond the feeds, the newest depth calls: the KOL ledger (/v1/kols, /v1/kol), index-wide funder networks, archive search and the token web — every endpoint, priced and with a working example, in the guide at api.mindjack.xyz/llms.txt.

Your keys

A key minted here belongs to your account, so you can find it again, see what it has spent and turn it off. It is an ordinary key otherwise — the same one POST /v1/keys hands out, and nothing about your account changes what a call costs.

What a call costs

EndpointPriceAnswers
/v1/samplefreeOne real token, in full
/v1/coveragefreeWhat is in the index right now
/v1/scorecardfreeOur measured hit rate, per band, with sample sizes
/v1/screen/{mint}$0.001Calibrated verdict and concentration facts
/v1/stream/migrations$0.001New launches pushed as they land, per token delivered
/v1/stream/wallets$0.005A wallet you watch resurfaces in a new analysis — pushed with its role, per event
/v1/stream/kols$0.002A tracked KOL trades — pushed with side, size and settled PnL, per trade delivered
/v1/discover$0.005Recent launches with a verdict on each
/v1/search$0.005Find any token we ever analysed, by symbol, name or mint
/v1/inspect/{mint}$0.005Who is in it: holders, wallet classes, groups
/v1/wallets/{mint}$0.005Who exactly, and tied to whom in this coin: insider, sniper, early, fresh, wash and KOL wallets with funders, links and groups
/v1/web/{mint}$0.04The token's web: connected launches with the shared wallets named, each one's outcome and recorded peak
/v1/price/{mint}$0.005What it did after we called it
/v1/exit/{mint}$0.005Whether you could sell right now, and at what loss
/v1/wallet/{address}$0.006What this wallet has done across every token
/v1/wallet/{address}/network$0.025Who a wallet moves with: counterparts with direction and volume, plus the second hop
/v1/report/{mint}$0.025Everything on one token in one call — verdict, who is in it, who is behind it
/v1/report/{mint}?depth=full$0.07The same, plus the outcome path, live sellability and the graph
/v1/identity/{mint}$0.025Who is behind it and what their last tokens did
/v1/changes/{mint}$0.025What moved since we analysed it (one live chain read)
/v1/cohort$0.025A hypothesis tested against measured outcomes
/v1/serial-insiders$0.025Wallets that turn up early in token after token
/v1/funder-networks$0.025Funders seeding fresh wallets across the index, exchanges named
/v1/kols$0.02Every tracked KOL ranked — realized SOL, win rate and a recent window, from the recorded trades
/v1/kol/{address}$0.02One KOL's record: per-token history and the latest trades
/v1/compare$0.025Two to four mints side by side
/v1/graph/{mint}$0.04The relationship edges themselves
/v1/analyze/{mint}$5Analyse a pre-migration token on demand — the only call that runs the pipeline

A failed call, a timeout, and a token we have never seen all cost nothing. Bulk endpoints price per page, so a large page is not a way to buy the index at a discount. Every endpoint with its parameters and a copyable example: /api.

The full reference.

Every endpoint with its parameters, response fields and price.

31,786
Tokens indexed
Every migration since 9 May 2026
625,769
Wallets with a history
Roles and results across every token they touched
10,065
Outcomes behind the hit rate
Resolved launches the scorecard is measured on
43,355
Wallet clusters mapped
Coordinated groups found across the index

Our measured hit rate

Re-measured weekly against ground truth. This table is what get_scorecard returns, and it is public because a score you cannot audit is a score you should discount.

Score Verdict Collapsed Median time to collapse Sample
70+extreme78.3%19s1,122
58-69critical60.3%52s970
42-57elevated43.5%3m 23s2,951
22-41elevated42.6%7m 4s1,978
8-21low38.6%9m 51s1,695
0-7low34.8%11m 12s1,349

The base rate across the whole index is 45.0%, so the bands are doing real work at both ends. Read them as ranking, not as certainty. The score range is what identifies a row; the verdict is a label derived from the measured collapse rate, which is why it can repeat. Two adjacent score bands that really did collapse at the same rate get the same name rather than an invented gap between them.

Verdicts are served from cache, never from the live pipeline, so they come back at tool-call speed: p95 was 41ms across 50 distinct tokens when last measured on 7 August 2026.

What we will not pretend

An agent that gets burned once by a confident wrong answer does not come back. These are the edges of what we know.

Solana only, and only from our start date

Every pump.fun and letsbonk migration since 9 May 2026 — complete inside that window, nothing before it. The record is point-in-time and cannot be rebuilt later, so testing with an older token you already know returns nothing and tells you nothing about us.

We do not predict price

Where upside appears it is a measured historical frequency for a cohort, not a forecast, and not adjusted for fees or slippage.

A gap is reported as a gap

Every response carries _meta.coverage and _meta.billing. A token we have never seen comes back as coverage: "none" and costs nothing. We would rather say “we do not know” than dress absence up as a clean result.

Copied