Data API changelog
Every user-visible change to the /v1 REST API, the /mcp server and the bulk Parquet archive — newest first, with the PR or commit behind each one.
This page records changes a caller can see: /v1 REST routes added and removed, MCP tools
added and fixed, response fields that appeared or changed meaning, error and rate-limit behaviour,
and the auth and metering rules on the bulk Parquet archive. Newest first.
It does not cover the Vike trading platform — that is the Trader changelog —
nor the website's own /api/* and HTML routes, nor internal plumbing no key-holder can call.
The API is versioned by path prefix. /v1 is the only version that has ever been published,
and, as the marked entries below record, routes have been removed and parameters have started
returning 400 inside that prefix rather than behind a new one. Do not assume /v1 is frozen —
scan the markers.
⚠ BREAKING marks an entry that required a caller to change something
An entry tagged ⚠ BREAKING removed an endpoint, made a parameter start returning 400, changed
the shape of a response, or added a credential requirement where there was none. Everything else is
additive, or a fix to an answer that was wrong.
Entries are written from the change that actually landed rather than from probing the deployed API, so a fix is dated when it shipped, not when someone noticed it.
Every entry starts with a tag in brackets, so you can scan for the part you use: the slug of a
dataset page when the change is about one dataset (hyperliquid/cohort-metrics,
polymarket/markets), otherwise api (REST routes, response shapes, the spec), mcp (the tool
server and its auth), archive (the Parquet archive) or limits (rate limits and metering). An
entry that touches several datasets takes the general tag.
2026-10
-
[api] 2026-10-19 ·
GET /v1/onchain/labels/{address}/provenancereturns the raw sources it names — the route never matched the OLI, Blockscout, Dune, MEW-darklist or Etherscan-tag dumps, so every response carried at most the Arkham-derived source and the heuristic:source_count: 1for the Binance 14 hot wallet, which four sources name, and0forvitalik.eth. The shape is unchanged;sourcesis longer. The same fix reaches the MCPwallet_label_provenancetool. -
[api] 2026-10-19 ·
GET /v1/onchain/wallets/{address}/tracereturns one edge per pair of wallets — two expanded wallets that each ranked the other came back as two mirrored edges, sostats.edge_countover-counted (12 for 9 relationships in the documented example) and a node'stotal_volume_usddepended on the mirrors. Each node'stotal_volume_usdis now the sum of its edges in the graph. The same fix reaches the MCPwallet_tracetool. -
[api] 2026-10-19 ·
GET /v1/hyperliquid/wallets/{address}/trades/summarycounts each trade once — every stored version of a still-open trade was counted, inflatingtrade_count,open_trade_count,net_pnland the gain and loss statistics: the top 30-day wallet read 619 trades and $27.1M where 445 and $8.44M existed. Field names and shape are unchanged. -
[api] 2026-10-16 ·
GET /v1/polymarket/wallets/{address}andGET /v1/polymarket/smart_moneyadded — the two Polymarket trader tools that existed only over MCP (polymarket_wallet,polymarket_smart_money) now have REST routes that run the same code, so the two surfaces return the same payload. They read the on-chain trade tape, not the recorded book. The polymarket namespace is now 11 routes (68 across the API). Additive; nothing changed on the nine existing routes. -
[mcp] 2026-10-16 · ⚠ BREAKING · MCP
options_flow,web_searchandweb_fetchare removed —tools/listnow returns 31 tools.options_flow(Deribit call/put flow) had 1 call in the previous 90 days; the two web tools are a proxy to a third-party search service rather than Vike data, andweb_fetchfetched arbitrary URLs from our servers. Atools/callfor any of the three now returns the unknown-tool error. Nothing replaces them. -
[api] 2026-10-16 · ⚠ BREAKING ·
fund_holdingsandGET /v1/onchain/funds/holdingsare removed — the labelled fund / market-maker / treasury / CEX leaderboard is no longer offered on any surface. The MCP tool is gone fromtools/list(34 tools remain), the route answers404, and the/datadataset page and its panel are gone with it. Callers of the REST route or the tool have to drop the call; nothing replaces it. -
[onchain/token-transfers] 2026-10-13 ·
GET /v1/onchain/tokens/{token_address}/transfersreturns whole tokens and plain USD —bought,sold,net_tokens,usd_spent,usd_receivedandnet_usdcame back 1,000,000 times too large; only the*_fmtstrings beside them were right. They are now divided once, on this route and on the MCPtoken_transferstool. Field names, order and types are unchanged. A caller that divided by 1e6 itself has to stop. -
[api] 2026-10-12 ·
GET /v1/onchain/wallets/{address}/counterpartiesreturns plain USD —total_volume_usd,sent_usdandreceived_usdcame back in micro-USD, 1,000,000 times too large, so this route disagreed with/traceand/wallets/compareabout the same wallet. They are now divided once, on this route and on the MCPwallet_counterpartiestool. Field names, order and types are unchanged. A caller that divided by 1e6 itself has to stop.
2026-09
-
[mcp] 2026-09-21 · ⚠ BREAKING · MCP
token_chartremoved;ohlcvreplaced byhl_ohlcvandpolymarket_ohlcv— both tools read the merged centralised-exchange candle engine.ohlcvread it directly;token_chartresolved an ERC-20 contract to a canonical symbol and read the same engine behind it, which is why a per-contract chart could answer for a token that trades nowhere on chain. Vike redistributes market data only from venues whose data is itself on chain — Hyperliquid and Polymarket — so the candle tools are scoped to those two rather than filtered venue by venue.tools/callwith either retired name returns-32601.hl_ohlcvserves Hyperliquid candles andpolymarket_ohlcvserves Polymarket candles; there is no replacement for a candle on a centralised venue, and no candle tool takes a contract address. The REST candle routes are unaffected by this entry —/v1/hyperliquid/ohlcv(/export)and/v1/polymarket/ohlcvalready serve the same two venues. -
[api] 2026-09-04 · ⚠ BREAKING ·
/v1/onchain/wallets/{address}/balancesreads the chain, and covers two chains instead of six — balances are nowbalanceOfcalls against our own Ethereum and BSC nodes, with the candidate token list drawn from our transfer index.base,arbitrum,polygonandoptimismare no longer scanned: they come back named inchain_errorsrather than silently contributing nothing.Two response fields are new —
balance_raw(the contract's integer, as a string, for callers that need exactness) andname.usd_valueandusd_priceare nownullon a holding we cannot price, and the holding is still listed;total_usdsums only the priced ones and should be read as a floor. The previous provider filtered unpriced holdings out entirely.The route no longer answers
200with an emptyholdingsarray when the lookup fails. That was the old shape and it read exactly like an empty wallet. -
[api] 2026-09-04 · ⚠ BREAKING ·
GET /v1/onchain/wallets/{address}/defiis removed — decoded DeFi protocol positions, and thedefi_positionsMCP tool beside it. The route was served by an upstream vendor whose free tier was withdrawn on 2026-09-03, and it cannot be rebuilt from our own data: we recordTransferevents, and a lending position is not a transfer. It recorded 4 calls in its entire history, so it was retired rather than replaced.fund_holdingsis unaffected. Calls now return404. -
[api] 2026-09-04 ·
/v1/onchain/wallets/{address}/ensresolves over Ethereum RPC — the fallback for an address our pre-resolved table has not seen was an external API; it is now twoeth_calls to the ENS registry over Ethereum RPC — public RPC endpoints first, then our own pool, so the address is sent to those RPC providers (wording corrected 2026-10-19; this entry first said "our own node"). No behaviour change for a caller beyond the obvious one: the fallback works again, where since 2026-09-03 it returned nothing. The name is forward-verified before it is returned — a reverse record is written by the address itself and means nothing until resolving it forward lands back on the same address — so a spoofed record answersnullrather than somebody else's name. -
[api] 2026-09-03 · ⚠ BREAKING · the flat Polymarket paths were retired —
/v1/markets,/v1/markets/{condition_id},/v1/market_stats,/v1/ohlcv,/v1/orderbook,/v1/settlements/{condition_id}and/v1/eventsnow return404. They predated the/v1/polymarket/namespace and answered alongside it for compatibility. Add/polymarketafter/v1and nothing else changes — same handlers, same responses. Retired because the usage record showed no caller: 28 requests across their entire history, all from the account that owns the platform. -
[api] 2026-09-03 · Polymarket moved to the same service as every other namespace — the nine endpoints were served by a separate process and are now served by the same application as
onchainandhyperliquid. No path, parameter or response shape changed. What did change is below. -
[polymarket/markets] 2026-09-03 · ⚠ BREAKING · market state is real —
activeandclosedwere CONSTANTS: every market reportedactive=1, closed=0, so?active=0returned nothing at all and?closed=1returned open markets with a200. State is now derived from on-chain resolutions and the venue's own flag, either of which alone misses thousands. 119,047 of 121,275 markets report closed where none did before. ⚠ If you filtered on these fields, your results change — that is the fix, not a regression.closedis also accepted now as the complement ofactive; passing both is refused rather than silently resolved. -
[limits] 2026-09-02 · Archive downloads no longer spend the hourly request budget — a ranged
GETagainst/archive/is still authenticated and still writes its usage row, but it no longer consumes the hourly request allowance. Bulk Parquet readers (pyarrow, DuckDB, fsspec) fetch a footer and then one rangedGETper column chunk, each of which cost a unit: one 1.26 GB partition measured 20,237 usage rows, more than the whole 20,000/hour ceiling for a single file, and almost every rate-limit rejection recorded in the platform's whole history was an archive download./v1and/mcpstill meter normally, and the counter's periodic reseed excludesarchive_downloadrows too, so the skip is not erased 30 seconds later. -
[limits] ⚠ BREAKING · 2026-09-02 · Rate-limit rejections speak one dialect on every surface — a throttled request now returns
429withRetry-After: 60and{"error": {"code": "RATE_LIMITED", ...}}. Previously/v1raised{"detail": ...}, the archive gate hand-built{"error": "rate limited"}, and/mcpanswered200with a JSON-RPC error — so a client could not detect throttling by status code at all./mcpstill returns a valid JSON-RPC body and carries the envelope inerror.data. -
[api] 2026-09-02 · The published OpenAPI spec declares
X-API-KEY— the/v1spec carried nosecuritySchemesand nosecurity, so a client generated from it omitted the API-key header and401'd on every call. The schemes are injected into the generated spec itself, so the live spec and the exported file cannot disagree; ReDoc moved under/v1/at the same time. -
[api] ⚠ BREAKING · 2026-09-02 · The website app stopped publishing its route table —
/openapi.json(283 paths),/docsand/redocare switched off on the website app. Only the data API publishes a schema, scoped under/v1/. No/v1route changed. -
[api] ⚠ BREAKING · 2026-09-02 ·
/v1/etf/*and/v1/marketdata/ohlcv(/export)removed — the ETF router is no longer mounted and the marketdata candle routes are deleted; both now404for an authenticated caller, a closure pinned by a regression test so it cannot quietly come back. Public candles remain at/v1/hyperliquid/ohlcv(/export). Usage showed exactly one key had ever called each surface, last on Aug 17 and Aug 6. -
[api] 2026-09-02 · New docs site at vike.io/docs/data — replaces the MkDocs site, which documented 8 of the 36 MCP tools the server exposes and quoted rate limits wrong by more than an order of magnitude. It covers getting started, authentication, rate limits, errors, the full 36-tool MCP reference generated from what the registry's
tools/listactually serves, per-client setup (Claude Desktop and Code, Cursor, Gemini CLI, VS Code, raw HTTP), the/v1REST overview and the archive; the Polymarket REST reference landed the same day.PRs #852 · 0b032622,#855 · a0afdb91,#856 · ecf9a730 -
[api] 2026-09-01 · Non-finite floats serialize as
nullinstead of failing the request — a singleNaNorInfinityanywhere in a payload previously produced a503through the error handler or a500on/v1, losing the entire response; the field is nownulland the rest of the body arrives. It is also a large latency win on bulk pages: a 5,000-candle page went 44.14 ms to 1.41 ms, and NDJSON export lines 3.35 µs to 0.30 µs.
2026-08
- [hyperliquid/position-snapshots] 2026-08-22 · MCP
hl_position_matchstopped returning closed positions — the tool read a latest-known-position view with no recency filter, and that view keeps a wallet's last-seen row forever (89.8% of rows more than a day stale, the oldest from 2026-04-02), so "who has a 25x ETH long open at $3,200" could answer with a position closed in April while the tool card promised<5 minstaleness. Results are now gated on the newest snapshot batch for the asset. - [hyperliquid/cohort-metrics] ⚠ BREAKING · 2026-08-19 ·
/v1/hyperliquid/coins/{coin}/metricsrefuseslabelBasisand declares its contamination — the route filters every historical hour by today's wallet grading, resolved at request time rather than as of the hour being reported. Measured on the 2026-04-20T12:00Z BTC "3x smart" cohort: 938,495,920.6 against a point-in-time 861,706,562.3 — 8.91% inflated. It used to answer200to a request for honest labels; it now returns400for the parameter and points at/cohort-metrics. - [hyperliquid/cohort-metrics] 2026-08-19 ·
grading=on/v1/hyperliquid/coins/{coin}/cohort-metrics, and responses declare when the label was computed — one parameter selects amongrealized,realized-pitandunrealized, which previously took three different spellings (axis=pnlpluslabelBasis, a separate axis, and no parameter at all). Every response now carrieslabel_computedon the envelope andgradingon every row. - [hyperliquid/cohort-metrics] 2026-08-19 ·
freshnessobject added to cohort-metrics responses — windows reaching the present now carryfreshness: {newest_ts, age_seconds, settled_lag_ceiling_seconds, stale}. Before this,?grading=realized-pit&hours=1with nostartreturned its own newest bucket — measured 63 hours old and identical in shape to a live one, with nothing in the payload letting a program tell them apart.staleis the precomputed verdict, so a caller need not re-derive the rollup cadence. (figure corrected in) - [hyperliquid/candles] 2026-08-18 · New endpoint:
GET /v1/hyperliquid/ohlcv(and/export) — minute-resolution Hyperliquid candles built from executed fills, mirroring/v1/marketdata/ohlcv's parameters and envelope. Two parameters are Hyperliquid-specific:dex(HL core versus builder-deployed HIP-3 perp DEXs) and tick intervals such as15t. - [hyperliquid/cohort-metrics] 2026-08-17 · New cohort axis:
axis=pnl_unrealized— grades a wallet by unrealized PnL on open positions as a share of account value, a different signal from the realized ladder: 44% of wallets change unrealized rung day over day, against 2.4% on realized. Point-in-time by construction, and not reachable through the API at all before this. - [api] ⚠ BREAKING · 2026-08-16 ·
/v1/marketdata/orderbookremoved — the L1/L2 recorder behind it was retired and its stored datasets dropped (quotes 1.376B rows, book events 531M, trades 296M, among others; ~51 GiB reclaimed). The route was their only consumer, so it goes with them rather than becoming a permanent503. There is no orderbook surface. - [api] 2026-08-15 · New namespace:
/v1/etf/*(physical-ETF holdings) — 23 funds, 19 of them with a daily measured source;quantityis a measured count in the fund's own unit, never assets divided by a price. ⚠ This namespace was closed again on 2026-09-02. - [api] 2026-08-12 · Repeated identical
/v1requests return byte-identical bodies — the query engine reducessum()in an unpinned parallel order and f64 addition is not associative, so the last digits of a nine-figure notional were reduction noise: one URL executed six times returned six distinct bodies, with 24–35% of values differing pairwise. Values are now snapped to 10 significant digits at the serialization boundary with a midpoint nudge, which took one research pipeline's content-addressed cache from broken to working; consumers no longer need to canonicalize floats themselves. - [hyperliquid/cohort-metrics] ⚠ BREAKING · 2026-08-11 · One canonical position-size ladder; retired labels now
400; newGET /v1/hyperliquid/cohorts— the position-size axis had four vocabularies (the site's dollar-range ladder, a storedmicro..megatier vocabulary, and two reconstruction vocabularies). The dollar-range ladder wins:axis=tier,/coins/{coin}/size-breakdownand/segmentstrade_sizeall derive the bucket fromsize_usdand serve the same canonical ten labels, largest first, and a retired label in a cohort filter returns400naming the canon. The new flat taxonomy endpointGET /v1/hyperliquid/cohortspublishes all three ladders. - [hyperliquid/cohort-metrics] 2026-08-11 · New cohort axis:
axis=tieron/coins/{coin}/cohort-metrics— the per-position size ladder as the third matrix axis. It is rejected on the per-wallet aggregates (heatmap, segment summary) because a wallet straddles tiers, and the refusal names where the axis is valid; a conflictinglabelBasisis a400rather than a silent downgrade. - [hyperliquid/cohort-metrics] 2026-08-06 ·
labelBasis=point_in_timeonaxis=pnl— the pnl axis had lookahead —axis=pnlresolved the cohort at query time, so a historical row came back with today's grading and a backtest was told which wallets eventually became rankable. Measured on BTC over 3 days: 0 of 852 cells exact before, 852 of 852 after (max relative error 5.45e-16), and hourly totals from 4.37% mean error to 0.000000%. The frozen source costs five fields — no position count, no unrealized PnL, no token-denominated size — which come backnullrather than0and are named inunavailable_fields; every row and the envelope carrylabel_basis. - [hyperliquid/cohort-metrics] 2026-08-06 · New endpoint:
GET /v1/hyperliquid/coins/{coin}/cohort-metrics— returns the full coin-by-cohort matrix in one request instead of one request per bucket (12 for size, 13 for pnl). Measured on BTC over 24 hours: 0.25–0.44 s per axis against ~12 s for the equivalent loop. Paginated by hour rather than by row, so a page never lands mid-bucket. - [hyperliquid/cohort-metrics] 2026-08-06 ·
provisionalflag on/coins/{coin}/metricsrows — the endpoint reads an hourly rollup that does not write hour H until H+1:00 to H+1:30; measured, the newest row was 114 minutes old and a client polling for "current positioning" had no way to know. Rows now carryprovisional, true on at most one row (the unsettled right edge), and the live row cuts staleness to roughly 5 minutes. - [hyperliquid/cohort-metrics] 2026-08-06 ·
/segmentsrows carrygroupable; axis error messages fixed —/segmentspublished four axes but only three were valid as?axis=(trade_sizebuckets a position, not a wallet), with nothing in the payload saying so; every row now carriesgroupableso a generated client can filter. Refusals name where the axis is valid, and the "forgot the axis" case no longer reports the server's own default back at the caller. - [api] 2026-08-04 · The
/v1data API goes live on data.vike.io — 34 routes across four namespaces under one host:marketdata,onchain,hyperliquidandpolymarket. The error contract from day one:400for caller input,503for upstream, never a200with an empty body. The same work made archive authentication independent of the website, so a website deploy can no longer500an archive download — the mechanism of the 2026-07-31 outage.PRs #574 · af98d88d,#584 · 638a6d93 - [api] 2026-08-04 ·
/v1/hyperliquidexpands from 2 endpoints to 22 — new: cohort catalogue, per-cohort summary and coin-by-cohort heatmap; position list and history, market-wide OI, hourly coin metrics, trade-size breakdown; trader leaderboard with the full risk-metric set, and per-wallet summary, trades, trade-stats, fills, funding and ledger; liquidation fills, a price-binned liquidation heatmap and liquidation risk by asset; ecosystem stats, perp volume and HYPE holders. Pagination is keyset throughout. - [hyperliquid/builders] 2026-08-04 · New:
/v1/hyperliquid/builders/*(6 routes) — leaderboard, builder profile, that builder's traders, raw fills, a per-bucket time series, and the reverse lookup of which builders a wallet routes through. Schema note for consumers:builder_feeanddeployer_feeare USD, butfeeis denominated infee_token(1.04% of rows pay in something else), so fee aggregates are USD-only and the profile reports what it excluded. - [hyperliquid/builders] 2026-08-04 · New:
GET /v1/hyperliquid/builders/stats, plus richer builder fields — leaderboard rows gainrevenue_per_user,taker_pct,market_share_pctandfirst_seen_lifetime; the profile gainsprofitable_users(_pct),biggest_day,market_share_pct, a lifetime block anduser_volume_distribution(volume deciles)./builders/statsreturns ecosystem totals, all-time builder revenue and a daily series. The same change fixes a keyset pagination bug that could drop or repeat rows. - [hyperliquid/traders-and-leaderboard] 2026-08-04 ·
axis=pnl_abs, a position-age filter, and/leaderboard/flow-adjustedre-enabled — the board was withheld in #588 and now ranks on total realized PnL (closed round-trips), because the upstream ledger records sends one-sided: over 30 days, 1,010,263 negative against 835,295 positive send rows, netting -$1.27B, so an outflow was recorded while the matching inflow was invisible and booked as profit. The attributed figures ship under their ownattributedkey with aflow_unbalancedflag. - [api] 2026-08-04 ·
/v1/marketdata/options/chainreturned settled contracts, not the live chain — the query had no time bound: it aggregated the whole recorded history and returned the oldest expiries first, so a BTC chain request came back with contracts that had settled eight weeks earlier while the live chain was three expiries inside the next 72 hours. The read is now bounded to one snapshot.
2026-07
- [limits] 2026-07-29 · Hourly rate limit raised from 2,000 to 20,000 requests per key — the 2,000
ceiling was sized for the MCP and AI-chat surface and inherited by the data routes, where it was
far too low: a real hour measured 2,543 calls with 558 rejected. It is one shared ceiling
across
/v1,/mcpand the archive, not a per-surface number — see Rate limits. - [archive] ⚠ BREAKING · 2026-07-29 · The Parquet archive became credential-gated and metered, and usage is
labeled per surface —
/archive/downloads are now validated at the edge through the same API-key and OAuth auth, the same hourly limit and the same metering as/mcp, so an unauthenticated download stops working. Usage rows are labeled from the request URI rather than hardcoded —/archive/...toarchive_download,/v1/<route>...toapi_<route>,/mcptomcp, anything else toapi_other. Auth and rate-limit decision logic elsewhere was unchanged; only the label.
2026-06
- [mcp] 2026-06-16 · MCP
perp_funding(symbol=...)fixed — it errored on every call — any symbol-scoped request returned an error instead of data; only the unscoped call worked. The symbol path was rewritten.
2026-05
- [api] 2026-05-30 · New: a historical OHLCV API (REST + MCP) — API-key-gated historical candles
built on a canonical 1-minute base and correct at any timeframe from
1mto1w: UTC left-aligned buckets, partial buckets excluded so the series is look-ahead-safe, and deterministic cursor pagination. Shares MCP auth, the hourly rate limit and usage logging. ⚠ This surface is no longer documented — see the note at the foot of this page — and its MCP tool was removed on 2026-09-21. - [api] 2026-05-30 ·
include_partialflag onohlcv(REST + MCP);token_chartreturns real candles —include_partialis off by default (look-ahead-safe); switched on, it includes the in-progress current candle.token_chartwas a stub and now resolves a token address to a canonical symbol and serves real candles through the ohlcv engine, with the legacy5/30/120values mapping to5m/30m/2h. ⚠ Both tools were removed on 2026-09-21. - [mcp] 2026-05-26 · New MCP tool:
hl_position_match— reverse-lookup of Hyperliquid share cards.72bafc07 - [limits] 2026-05-25 · Hourly per-key cap raised from 100 to 2,000 — headroom for agent workloads, where
one skill workflow can call 5–15 tools per turn.
da4c744d - [mcp] 2026-05-25 · 5 new MCP tools (v0.7) —
wallet_transactions,wallet_compare,wallet_trace,wallet_batch_labels,token_screener.fdc32aad - [mcp] 2026-05-25 · 4 new MCP tools (v0.5.0) —
alerts_register_webhook,wallet_counterparties,wallet_pnl_history,wallet_token_balances.2832bb04 - [mcp] 2026-05-25 · New MCP tool
wallet_ens;defi_positionsrepointed from DeBank to Moralis — the provider swap changes the data source behind an existing tool.00cfc5ce - [mcp] 2026-05-25 · 2 new MCP tools —
web_search,web_fetch.e2143e3f - [mcp] 2026-05-25 · 4 new MCP tools (v0.3.0) —
fund_holdings,wallet_label_provenance,token_holders,defi_positions.65a51900 - [mcp] 2026-05-25 · 4 new Polymarket MCP tools —
polymarket_markets,polymarket_market_detail,polymarket_wallet,polymarket_smart_money.57d327c1
2026-04
- [mcp] 2026-04-20 · New MCP tool:
hl_perp_top_traders—138e9234 - [mcp] 2026-04-19 · OAuth 2.1 and Dynamic Client Registration on
/mcp— the MCP endpoint acceptsAuthorization: BeareralongsideX-API-KEY, with RFC 8414 discovery, RFC 7591 dynamic client registration, Authorization Code + PKCE S256, refresh-token rotation and RFC 7009 revocation — so Claude Desktop's "Add custom connector" dialog works with nomcp-remoteand no JSON config. The rate limit stays per credential: perapi_key_idfor API keys, pooled peruser_idfor OAuth.72774187 - [mcp] 2026-04-16 · MCP server launches:
POST /mcp, JSON-RPC 2.0,X-API-KEYauth, 9 tools — initial tools: token search, wallet summary, wallet discover, transfers, chart, perps leaderboard, funding, spreads, options flow. Per-tool credit costs, hourly rate limiting and usage tracking ship with it.7d9bec99
What this page cannot see
Entries are derived from the repository's own history — read from the commit diff, not the subject line — rather than from probing the deployed API. Four gaps are structural, and it is better to name them than to let the page imply completeness:
/v1/polymarket/*has no dated history here. Those routes are served by a separate system with its own history, and were frozen at the/v1cutover on 2026-08-04. The current surface is documented in Polymarket REST; its change history is not on this page.- Some surfaces this history records are no longer documented. Entries above describe endpoints and MCP tools that shipped and are not in the current reference — the CEX candle, perp and options surfaces. ⚠ They carry no ⚠ BREAKING entry deliberately, because that marker means a caller had to change something and nothing here was withdrawn from callers: the documentation was withdrawn, not the routes. Treating an undocumented surface as a supported one is the mistake this note exists to prevent.
- Edge configuration is applied outside this history. Routing, edge caching, throughput caps, compression and which paths are gated can change without a commit to record, so an edge-only change is invisible here.
- The archive's dataset inventory is generated on the host, not committed. There are no
"dataset added to the archive" entries above, and that is absence of evidence rather than evidence
of absence — the open
manifest.jsonis the live answer for what the archive holds today.