Skip to content

Query endpoints

After this page you can pull anything the Telegram bot or MCP server can show you, directly over HTTP with a query-scoped key.

Each endpoint mirrors one of the nine questions:

Endpoint MCP twin Answers
GET /v1/why/{sig} why Decoded failure story for a signature
GET /v1/diagnose-drop/{sig} diagnose_drop Drop classification + evidence
GET /v1/baseline/{program} baseline Program vs ecosystem vs per-provider rates
GET /v1/release-diff/{program} release_diff Pre/post-deploy regression table
GET /v1/top-issues/{program} top_issues Bot-segmented top issues
GET /v1/cu-headroom/{program} cu_headroom Per-instruction CU p95 + trend
GET /v1/wallet/{program}/{wallet} wallet_history Wallet-scoped history
GET /v1/provider-report/{program} provider_report Measured drop rate per RPC provider

The why/diagnose-drop/status/baseline/release-diff/top-issues/cu-headroom/ wallet/provider-report read routes are the free, no-auth public surface (rate-limited per IP). The public Landing Score dataset the leaderboard renders is a committed snapshot (apps/web/src/data/leaderboard.json), not a live API route.

Terminal window
# public read route — no key required (rate-limited per IP)
curl http://127.0.0.1:8790/v1/why/4h2K…
{
"sig": "4h2K…",
"outcome": "failed_onchain",
"program": "DemoAMM…",
"instruction": "swap",
"ixPath": "swap",
"cpiDepth": 0,
"errCode": 6001,
"errName": "SlippageExceeded",
"cuUsed": 48211,
"cuRequested": 200000,
"payer": "9xQe…",
"payerBotScore": 0.02,
"issue": {
"fingerprint": "v1:9c41ae…",
"count7d": 14,
"firstSeen": 1766880000000
}
}

outcome is one of landed, failed_onchain, dropped, preflight — the failure taxonomy as an enum.

The public Landing Score data the leaderboard renders is a committed snapshot (apps/web/src/data/leaderboard.json), not a live API route. It carries sample: true (marking it a committed snapshot rather than a live feed) and a sampleRate per program — the dataset is honest about sampling everywhere, not just in prose.