The ops-review checklist a fund needs to diligence us: the Data API reference, the metric definitions contract, our security posture, uptime and reliability, and data lineage. Written to be verifiable, not to impress. Where we don't have a certification or a committed number, this page says so.
Reference document · last revised 2026-07-09 · live track-record numbers are published separately at /proof
A read-only, market-wide REST API serving our own precomputed derived analytics: calibrated liquidation magnets, horizon reach probabilities, cross-venue perp structure, cross-venue liquidation contagion, and our published track record. It never returns per-account or owner data, never the order path, and never the model recipe. All endpoints below are real and live in production.
https://hunterkiller.io/api/v1. The surface is versioned; a breaking change ships under a new prefix.ok boolean; data endpoints also carry a basis string stating the honest interpretation (e.g. "descriptive, not a forecast") and a generated_at timestamp.GET /api/v1/catalog returns the machine-readable endpoint catalog so integrators can enumerate the surface programmatically.Every /api/v1/* call requires a Bearer API key. Pass it either way:
# Authorization header (preferred) curl -H "Authorization: Bearer <YOUR_API_KEY>" \ https://hunterkiller.io/api/v1/health # or the x-api-key header curl -H "x-api-key: <YOUR_API_KEY>" \ https://hunterkiller.io/api/v1/magnets?symbol=BTCUSDT
Keys are issued self-serve by any authenticated subscriber on a pay-as-you-go, pro, or institutional plan: POST /api/keys/mine (the plaintext secret is shown once; store it immediately). Manage your keys with GET /api/keys/mine and POST /api/keys/mine/{key_id}/revoke. An API key can never satisfy an owner or another tenant's session gate. It grants access to the market-wide analytics surface only.
429 (rate_limited). Back off and retry.402 (insufficient_payg_credits). Subscription keys are not per-call metered. Balance: GET /api/payg/balance.| Method | Path | Params | Returns |
|---|---|---|---|
| GET | /api/v1/health | none | Key liveness: confirms the key works without returning data. |
| GET | /api/v1/symbols | none | The serveable symbol universe (the positive allowlist). No symbol outside this is serveable. |
| GET | /api/v1/magnets | symbol | Calibrated per-magnet reach-rate for one symbol: walk-forward empirical reach, descriptive not forecast. The conditioning recipe is stripped at this boundary. |
| GET | /api/v1/reach | symbol | Walk-forward horizon reach probabilities for one symbol (out-of-sample backtest results). |
| GET | /api/v1/contagion | symbol? | Cross-venue liquidation-cascade contagion ("who cascades whom"): conditional same-bar move + shock-beta with per-pair sample n. Optional symbol filter. |
| GET | /api/v1/venues | symbol? · limit? | Cross-venue perp market structure (aggregate OI, venue count, annualized funding spread, price dispersion). Our derived aggregate, not a raw per-venue passthrough; one restricted-redistribution venue is excluded. |
| GET | /api/v1/trust | none | Per-venue trust scores for our own liquidation feed: reconciliation verdicts with the honest reconcile/coverage split, sample n, Wilson 95% floor, history-derived trend and days measured; the same measurements as the public /trust board. Institutional keys additionally receive per-venue daily history windows (last 30d) and full trend detail. |
| GET | /api/v1/proof | none | The public credibility slice: the same aggregate track record served at /proof. |
| GET | /api/v1/catalog | none | Self-documenting endpoint catalog for programmatic discovery. |
| POST | /api/v1/webhooks | url · events · label | Institutional: register an outbound webhook. Delivered as HMAC-SHA256-signed POSTs; signing secret returned once. |
| GET | /api/v1/webhooks | none | Institutional: list your webhook registrations. |
| DELETE | /api/v1/webhooks/{id} | none | Institutional: revoke a webhook registration. |
| POST | /api/v1/webhooks/{id}/test | none | Institutional: send a signed test ping to confirm connectivity + signature verification. |
Webhook endpoints require an institutional plan; the read endpoints work for any active key (institutional, pro, or PAYG-with-balance). Self-serve key management (/api/keys/mine) and PAYG balance/top-up (/api/payg/*) authenticate with your logged-in session, not an API key.
# request GET /api/v1/magnets?symbol=BTCUSDT Authorization: Bearer <key> # response (shape; PUBLIC fields only, no recipe/internals) { "ok": true, "symbol": "BTCUSDT", "magnets": { /* calibrated per-magnet reach records */ }, "basis": "walk-forward empirical reach-rate; descriptive, not a forecast", "generated_at": "2026-07-09T…Z" }
| Status | Detail | Meaning |
|---|---|---|
| 400 | symbol_not_allowed | Symbol is outside the serveable allowlist (see /api/v1/symbols). |
| 401 | invalid_api_key | Missing, malformed, or revoked key. |
| 402 | insufficient_payg_credits | PAYG balance depleted; top up to continue. |
| 403 | plan_inactive / institutional_plan_required | Key's plan doesn't grant this surface (e.g. webhooks need institutional). |
| 429 | rate_limited | Per-key or per-IP rate limit exceeded; back off. |
| 503 | *_unavailable | A dependency is temporarily unavailable; retry. |
Model Context Protocol is the open standard AI agents (Claude, ChatGPT, others) use to call external tools. We expose the same validated data layer as MCP tools — the same handlers, the same recipe-stripping egress, the same key machinery and metering as the REST API above. Every tool response carries the honesty envelope (basis, as-of, per-measurement sample n, "descriptive, not a forecast").
| Fact | Value |
|---|---|
| Endpoint | POST https://hunterkiller.io/mcp — streamable-HTTP, stateless (JSON-RPC 2.0 in, JSON out; no SSE server-stream). Discovery: GET /.well-known/mcp.json. |
| Tools | get_proof_summary() (free) · get_magnet_levels_teaser(symbol?) (free) · get_feed_trust_summary() (free) · get_liquidation_magnets(symbol, frame?) · get_reach_stats(symbol) · get_feed_trust(venue?) · get_accuracy_proof() — the last four are key-only; a keyless call returns 401 api_key_required with the upgrade pointer. |
| Paid tier | The same B2B keys as /api/v1/* (Authorization: Bearer <key> or x-api-key). Full symbol universe, live artifacts, metered identically to REST (per keyed call). Self-serve a key at POST /api/keys/mine (any subscriber; PAYG credits or an institutional plan). |
| Free tier | Keyless: protocol discovery (initialize / tools-list / resources) plus three free teasers — get_proof_summary (the public proof aggregate: headline precision with n, venues measured, feed-trust verdicts — the same numbers this website publishes), get_feed_trust_summary (the public /proof/feed_trust verdicts, summary-shaped) and get_magnet_levels_teaser (BTC/ETH top-3 clusters per side — the same published teaser data the free map and /learn pages serve, free-tier delay and recipe scrub applied). Every teaser is a strict subset of the website's free surface; the full graded ladder and per-level data require a key. Strict per-IP rate caps. The free-acquisition story lives on the public pages (/proof, /liq, /trust, /receipts), the MCP monetizes agent-native data access. |
| Abuse posture | Per-key multi-IP fan-out detection (one key from many distinct IPs = credential sharing) → flag + throttle + journal on this surface; no key material is ever logged. Owner access is never limited. |
| Connect | claude mcp add --transport http hunterkiller https://hunterkiller.io/mcp --header "Authorization: Bearer <key>" — or point any streamable-HTTP MCP client at the endpoint with the same header (no header = discovery + teaser only). The full channel plan lives in the repo at docs/MCP_CHANNEL.md. |
Everything an agent needs is machine-readable. Discovery lives at GET /.well-known/mcp.json and the agent-native site map at /llms.txt. The endpoint is a stateless streamable-HTTP MCP server (JSON-RPC 2.0 in, JSON out):
| Step | What to do |
|---|---|
| 1 · Point your client | POST https://hunterkiller.io/mcp with header Authorization: Bearer <key>. With no header you still get protocol discovery (initialize, tools/list, resources) plus the free get_proof_summary teaser: the public walk-forward proof aggregate with sample sizes, nothing per-level. |
| 2 · Client config | Copy-paste block for MCP clients that take a server config:
{
"mcpServers": {
"hunterkiller": {
"type": "http",
"url": "https://hunterkiller.io/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}
Claude Code one-liner: claude mcp add --transport http hunterkiller https://hunterkiller.io/mcp --header "Authorization: Bearer <key>" |
| 3 · Get a key | Self-serve at POST /api/keys/mine from any account. The first key on a pay-as-you-go account is granted 100 free trial calls (once per account, granted 2026-07-31), metered identically to the REST API after that. Institutional plans cover the surface outright. |
| 4 · Call the data tools | get_liquidation_magnets(symbol, frame?) · get_reach_stats(symbol) · get_feed_trust(venue?) · get_accuracy_proof(). Every response carries the honesty envelope (basis, as-of, per-measurement sample n, "descriptive, not a forecast"). |
TradingView offers no API to push drawings into a user's chart, so the integration is a generated Pine v5 script with the current unified zone map baked in: zones as boxes, measured walk-forward react-rate labels (rate + n= + measured/context-only tag, Pro), one timeframe-reactive script, and a native alertcondition() per zone family (fires when price enters a zone). Install guide + sample header: /pine.
| Fact | Value |
|---|---|
| Get it | Terminal → Levels Map → Copy Pine, or GET /levels/pine?symbol=BTCUSDT with your logged-in session (text/plain Pine source). Per-tenant cap: 20 exports/day. |
| Free tier | Majors only, react-rate labels omitted (honestly watermarked "free tier"). Zones + native alerts included. |
| Pro tier | Full symbol universe + the measured react-rate label on every zone. |
| Freshness | Snapshot at generation time (stamped in the script header); levels recalibrate hourly — re-export for the current map. Descriptive structure, not a forecast. |
Every metric we publish is defined here with its honest limitation. This is the definitions contract: what the number is, and what it is not. Live values are published at /proof; the frozen, versioned changelog of these definitions lives at /methodology.
A price level where leveraged positions are force-closed ("liquidated") in clusters. Because leverage concentrates at round levels and common entry zones, liquidations pool at predictable prices. Those pools are the magnets our model ranks.
Of the top-N predicted liquidation bands for a symbol, the share that a real liquidation actually landed in, scored against independently verified cross-exchange data.
The empirical probability that price reaches a magnet a given distance away (e.g. ~1% away) within a stated horizon, counted over history and n-weighted across tracked symbols.
Our headline result: of the liquidation dollars landing more than ~3% from spot (the deep magnets a naive near-spot guess can never reach), the fraction caught by our top-ranked predicted bands. Scored walk-forward, de-overlapped, and published next to a trivial boundary baseline so the real edge is visible.
The number of independent scored events behind a figure. Where windows overlap, we report the effective n, the overlap-de-weighted independent count the confidence interval is actually computed on, which is always ≤ the raw sample count.
The 95% Wilson-score lower confidence bound on a rate, computed on the effective n. It answers "given this sample, what's the conservative floor for the true rate?" We publish the lower bound, not the flattering point estimate, as the number to trust.
The count of distinct calendar days a result spans. Many events on one day are not the same evidence as events spread across many days; day-clusters guard against a single unusual day masquerading as a track record.
The promotion filter every candidate edge must clear before it is ever paper-validated or considered for capital: net-of-cost P&L above zero and the 95% lower confidence bound above zero, on a sufficient sample (net_usd > 0 ∧ ci95_low > 0). Net of fees, slippage, and latency.
A result measured on simulated fills or a hypothetical account, not real executed capital. Paper results are labelled paper and carry $0 real P&L; a counterfactual states what would have happened on stated assumptions.
Stated conservatively: this section describes controls that are actually in place. We do not claim SOC 2, ISO 27001, or any third-party certification we have not completed.
Every request's tenant identity is derived from the authenticated session, never from a request body or query parameter, so a caller cannot assert another tenant's identity. Tenant-scoped database queries carry a tenant-id filter, and the isolation invariant is enforced by an automated static audit plus a dedicated multi-tenant test suite run before shipping changes to request handlers.
The model's calibration recipe (the conditioning signal, bucket edges, and per-bucket histograms) is stripped by a single shared egress guard before any customer or API response leaves the box. The API documents and returns public result fields only. Credentials are never emitted, logged, or echoed to any customer surface. One restricted-redistribution venue's data is stripped from every API egress to honor its terms of service.
Our differentiator is provable truth, not marketing. Every customer-facing number is:
A static honesty gate runs before any customer-facing number ships; it rejects inflated baseline-artifact framing, any accuracy claim missing an n and a confidence bound, any not-yet-validated number reaching a customer surface, and any recipe/secret crossing an egress boundary.
https://hunterkiller.io/api/health returns 200 + "ok" when the service is up. This is the machine-readable liveness check; you may poll it for your own monitoring.Sources. Inputs are public exchange market-data feeds: liquidation tapes, order-book/L2, open interest, funding, and trade prints from major venues (Bybit, Binance, OKX, Deribit, Kraken Futures), with a US venue (Coinbase) used as a price/tape reference. These are public market feeds; we ingest them, we do not originate them.
Derived analytics, not raw passthrough. What we publish and sell is our own derived analytics computed from those feeds: calibrated magnet density, walk-forward reach/precision, cross-venue structure aggregates, and liquidation-contagion relationships, never a raw per-venue reseller passthrough of a third party's proprietary product. One restricted-redistribution venue is excluded from the API entirely. This is our standing data-resale posture: we redistribute our transformations, not someone else's raw feed.
Retention. Raw capture corpora are retained on rolling windows with documented per-corpus size and age caps and automatic pruning; append-only research journals are retained long-term and mirrored to offsite backup. Published metrics are recomputed on schedule from these corpora and every figure is dated.
For an institutional evaluation, an API key, a committed SLA, or a security questionnaire, contact support@hunterkiller.io. Live track record: /proof. Frozen metric-definition changelog: /methodology. Pricing: /pricing.