Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Changed the definition of "live_market"
⟨5 unchanged words⟩ mark price, current hourly funding, open interest (one-sided — counted once per contract, half of the both-sides figure Hyperliquid's own UI shows, so it is directly comparable with the oi_usd column the bar tools return), 24-hour traded notional and premium for up ⟨32 unchanged words⟩
⟨50 unchanged words⟩ description":"`open_interest * mark_px` when both arepresent.present — one-sided, so it is\ndirectly comparable with the datasets' `oi_usd` column.","format":"double","nullable":true, ⟨3 unchanged words⟩ "description":"Open interest in base units, counted once per contract (one-sided) — the\nsame convention, and therefore the same magnitude, asreportedtheupstream.datasets'\n`open_interest` column.","format":"double","nullable":true, ⟨78 unchanged words⟩
Changed the definition of "funding_divergence" and "screen_universe"
⟨68 unchanged words⟩ the funding the window accumulated, which is funding_paid_7d (or funding_rate_7d_avg times the window's completed-interval count(7 at the daily grain, 168 at the hourly one). Returns the most diverged in each direction. ⟨12 unchanged words⟩
⟨199 unchanged words⟩ (CASHCAT 0.2050 vs\n0.0020). The accumulation is`funding_rate_7d_avg``funding_paid_7d`, or equivalently\n`funding_rate_7d_avg` × the window's completed-interval count —that is 7 intervals7\nintervals at the daily grain and 168 at the ⟨67 unchanged words⟩
Changed the definition of "funding_divergence"
⟨37 unchanged words⟩ compares mean funding over the window; metric=cum_funding_spread compares how far a market's cumulative funding level travelled inside the window (its high minus its low, so never negative) — that is not the funding the window accumulated,overwhich is funding_rate_7d_avg times thewindow.window's completed-interval count (7 at the daily grain, 168 at the hourly one). Returns the most diverged in each direction. Markets ⟨11 unchanged words⟩
⟨92 unchanged words⟩ funding over the window\nminus the benchmark's; `cum_funding_spread` ranks
Changed the definition of "funding_divergence", "get_universe", "query_cross_section" and 2 more
⟨10 unchanged words⟩ default) for completed UTC days, `1h` for completed UTC hours.\nAn interval, at either grain, is stamped by themostinstantrecent\ncompleteditUTC**closes**hour.—\nan hourly `…T09:00:00Z` is the hour that ended at 09:00.","nullable":true,"type":"string"} ⟨127 unchanged words⟩
Changed the definition of "get_universe"
⟨40 unchanged words⟩ ) to describe completed days or completed hours. The range counts cover the last 7 days at bar: 1h (pass days, 1..30, to widen them) and the whole published range at bar: 1d. A compact SUMMARY by default — pass top_n ⟨8 unchanged words⟩
⟨51 unchanged words⟩ "nullable":true,"type":"string"},"days":{"default":null,"description":"How many days of completed intervals the range counts cover, 1..30.\nDefaults to 7 at `bar: 1h` — the hourly source publishes one object per\ncompleted hour, so an unbounded inventory would open every hour ever\npublished — and to the whole published range at `bar: 1d`, whose source\nis one object per month. The window the counts actually covered is\n`interval_start`..`interval_end`, and `notes` says when it was bounded.","format":"uint","minimum":0,"nullable":true,"type":"integer"},"scope":{"default":null,"description":"`crypto` ⟨44 unchanged words⟩
Changed the definition of "funding_divergence", "get_universe", "list_fields" and 4 more
⟨11 unchanged words⟩ benchmark (default ETH) over a trailing window. Pick bar (1d, the default, or 1h on a Pro key) to read completed days or completed hours. metric=rate compares meandailyfundingfunding;over the window; metric=cum_funding_spread compares funding accumulated over the window. Returns ⟨18 unchanged words⟩
{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"bar":{"default":null,"description":"`1d` (the default) for completed UTC days, `1h` for the most recent\ncompleted UTC hour.","nullable":true,"type":"string"},"benchmark":{"default":null,"description":"The ⟨32 unchanged words⟩ `rate` (the default) ranks each market's mean
Changed the definition of "get_universe"
⟨167 unchanged words⟩ "min_day":{"description":"The oldest dayavailable.the counts below cover: the published range start, or the\ncaller's history floor when the plan clips it (the response says so in\n`notes`).","type":"string"},"months_covered":{ ⟨90 unchanged words⟩
Changed the definition of "query_cross_section"
⟨72 unchanged words⟩ fields; min_usd_volume_7d_avg keeps dust out of the ranking. Field names come from list_fields — never guess them, they are snake_case compound names; for a cut ('top decile by X') use screen_universe.
Added "funding_divergence", "get_universe", "list_fields" and 4 more; removed "get_download_url", "list_partitions" and "read_dataset"; changed the definition of "describe_dataset" and "list_datasets" (5 tools before, 9 now)
Get theThe fulldatadictionary foroneONE downloadable dataset:prosedescription plus every column's type, nullability and plain-English meaning.UsePassbeforearead_datasetnametofromchoose
Certificate recorded, valid to 2026-12-23
Authorization not required
First tool surface recorded: 5 tools (server version 0.1.0)
Showing the latest 12 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨6 unchanged words⟩ a screen.","properties":{"column":{"default":null,"description":"The field to test, from `list_fields`. Accepted under either name —\n`field`, which is what every other argument on this surface calls it, or\nits original `column`. Validated as present rather than required by the\nschema, so a condition that names no field is rejected by name below\ninstead of by a deserializer message no caller can act on.","nullable":true,"type":"string"},"op":{"description" ⟨58 unchanged words⟩ ,"type":"number"}},"required":["column","op","value"],"type":"object" ⟨236 unchanged words⟩
⟨10 unchanged words⟩ default) for completed UTC days, `1h` for completed UTC hours.\nAn interval, at either grain, is stamped by themostinstantrecent\ncompleteditUTC**closes**hour.—\nan hourly `…T09:00:00Z` is the hour that ended at 09:00.","nullable":true,"type":"string"} ⟨13 unchanged words⟩ at `bar: 1d`, a\ncompleted `YYYY-MM-DDTHH:00:00Z`or(the`latest`hour that *ended* there) or\n`latest` at `bar: 1h`.","nullable":true," ⟨127 unchanged words⟩
⟨10 unchanged words⟩ default) for completed UTC days, `1h` for completed UTC hours.\nAn interval, at either grain, is stamped by themostinstantrecent\ncompleteditUTC**closes**hour.—\nan hourly `…T09:00:00Z` is the hour that ended at 09:00.","nullable":true,"type":"string"} ⟨82 unchanged words⟩ : 1h`, a completed hour\nas `YYYY-MM-DDTHH:00:00Z`,or—`latest`.the hour that *ended* at that instant — or\n`latest`.","nullable":true,"type":"string"} ⟨191 unchanged words⟩
⟨11 unchanged words⟩ completed hour (`YYYY-MM-DDTHH:00:00Z`) the\nanswer describes. An interval is stamped by the instant it closes, so an\nhourly `…T09:00:00Z` is the hour that ended at 09:00.","type":"string"},"bar":{ ⟨186 unchanged words⟩
⟨12 unchanged words⟩ completed UTC days, `1h` for completed UTChours.hours.\nAn interval, at either grain, is stamped by the instant it **closes** —\nan hourly `…T09:00:00Z` is the hour that ended at 09:00.","nullable":true,"type":"string"} ⟨56 unchanged words⟩ at `bar: 1d`, a\ncompleted `YYYY-MM-DDTHH:00:00Z`or(the`latest`hour that *ended* there) or\n`latest` at `bar: 1h`.","nullable":true," ⟨54 unchanged words⟩
⟨97 unchanged words⟩ default) for completed UTC days, `1h` for completed UTC hours.\nAn interval, at either grain, is stamped by themostinstantrecent\ncompleteditUTC**closes**hour.—\nan hourly `…T09:00:00Z` is the hour that ended at 09:00.","nullable":true,"type":"string"} ⟨72 unchanged words⟩ at `bar: 1d`, a\ncompleted `YYYY-MM-DDTHH:00:00Z`or(the`latest`hour that *ended* there) or\n`latest` at `bar: 1h`.","nullable":true," ⟨98 unchanged words⟩
⟨122 unchanged words⟩ description":"Distinct markets in scope over thewholecounted range.","format":"int64","type":"integer"},"interval_count":{"description":"Distinct intervals in therange.range the counts below cover.","format":"int64","type":"integer"},"interval_end":{"description":"The newestcompleteinterval the counts below cover — theonesame`latest`intervalresolves`as_of`\ndescribes,to.since the counts are the history behind those populations.","type":"string"},"interval_start":{ ⟨5 unchanged words⟩ counts below cover: the published range start,or\nthe\nthe caller's history floor when the plan clips it,(or the start of the\nwindow `days` bounded them to. The response saysso\ninwhich,`notes`).in `notes`.","type":"string"},"market_count_crypto":{ ⟨34 unchanged words⟩ description":"Distinct markets in scope over thewholecounted range.","format":"int64","type":"integer"},"matched_count":{"description":"Markets the counted range actually represents — the ones with at leastoneone\nrowrowinin\nitit, which is every market in `eligible_count` at thedescribed interval.described\ninterval.","format":"int64","type":"integer ⟨12 unchanged words⟩ {"description":"Rows in scope over thewholecounted range.","format":"int64","type": ⟨6 unchanged words⟩ (intervals × markets) — how densely therangecounted\nrangeis\npopulated.is populated. Below 1.0 means some markets are missingsome intervals.some\nintervals.","format":"double","type":"number ⟨64 unchanged words⟩
⟨50 unchanged words⟩ {"as_of":{"type":"string"},"bar":{"description":"The grain this answer was computed at: `1d` or `1h`.","type":"string"},"benchmark":{"type":"string"},"benchmark_value" ⟨9 unchanged words⟩ ":"double","type":"number"},"coin_counteligible_count":{"description":"HowMarketsmanyleftmarketsafter your explicit market filter.","format":"int64","type":"integer"},"matched_count":{"description":"Markets that had a funding reading in thewindow;window.marketsMarketswithout\nonewithoutareoneexcludedare\nexcluded from both lists and from thiscount.count — a missing reading must\nnever appear as an extreme.","format":"int64","type":"integer ⟨48 unchanged words⟩ ,"truncated":{"type":"boolean"},"visible_count":{"description":"Markets in your plan's slice on this interval, before any filter you\npassed.","format":"int64","type":"integer"},"window_days":{"format":"uint","minimum":0,"type":"integer"}},"required":["bar","source","as_of","scope","coin_countvisible_count","eligible_count","matched_count","metric","benchmark","window_days","benchmark_value ⟨8 unchanged words⟩
The coverage picture: the last completedayinterval, how many markets are in the universe ⟨8 unchanged words⟩ them, and how densely it is populated. Pick bar (1d, the default, or 1h on a Pro key) to describe completed days or completed hours. A compact SUMMARY by default — pass top_n (1..50) only if you need the per-marketdaycounts.
{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"bar":{"default":null,"description":"`1d` (the default) for completed UTC days, `1h` for the most recent\ncompleted UTC hour.","nullable":true,"type":"string"},"day":{"default":null,"description":"The day or hour to describe,: `YYYY-MM-DD` or`latest`.`latest` at `bar: 1d`, a\ncompleted `YYYY-MM-DDTHH:00:00Z` or `latest` at `bar: 1h`.","nullable":true,"type":"string"} ⟨49 unchanged words⟩
⟨11 unchanged words⟩ {"coin":{"type":"string"},"daysobservations":{"description":"How manydaysintervals of the range this market appearson.on — days at\n`bar: 1d`, completed hours at `bar: 1h`.","format":"int64","type":"integer"}},"required":["coin","daysobservations"],"type":"object"}},"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"as_of":{"description":"Thedayinterval the per-population counts describe.","type":"string"},"coin_count_crypto":{"description":"Markets without a deployer prefix on the described day, whatever scope\nwas asked for.","format":"int64","type":"integer"},"coin_count_hip3bar":{"description":"Markets with aThedeployergrainprefixthisonanswerthewasdescribedcomputedday.","format":"int64","type":"integer"},"coin_count_total":{"description"
Every field the query tools accept, each with its meaning, unitand, whether it can bemissing.missing, and which bars (1d, 1h) it exists on. Open — no key needed. Call this before ⟨24 unchanged words⟩
⟨26 unchanged words⟩ JSON the same thing.","properties":{"grains":{"description":"Plane grains on which this field is available, in canonical order.","items":{"type":"string"},"type":"array"},"kind":{"description":"`stored` (a column in thedailyplane's own source) or `factor` (computedatat\nqueryquery\ntimetime over a trailing window, or from theend-dayselected end row).","type":"string"},"meaning ⟨18 unchanged words⟩ can be absent for a market on aday.selected interval.","type":"boolean"},"type":{ ⟨67 unchanged words⟩ ","meaning","unit","nullable","kind","grains"],"type":"object"}},"$schema" ⟨39 unchanged words⟩
⟨35 unchanged words⟩ was read. Use this for 'now' questions; thedailybar=1d and bar=1h tools answer completeddaysintervals only.
Rank the whole market on ONE completeddayinterval: pick bar (1d, the default, or 1h on a Pro key), columns, an order_by field and top_n. Answers 'top markets by funding / open interest / returns on the latestday'day or hour' and 'what percentile is BTC on open interest'. day defaults to the last completeday;interval; scope defaults to crypto (HIP-3 markets track ⟨7 unchanged words⟩ is not comparable); stat=percentile|zscore ranks within yourvisibleeligible markets; window_days recomputes the trailing-window fields; min_usd_volume_7d_avg keeps dust out of theranking.ranking and the ranking is computed after it. Field names come from list_fields — never guess them, they are snake_case compoundnames;names and each one lists the bars it exists on; for a cut ('top decile by X') use screen_universe.
{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"bar":{"default":null,"description":"`1d` (the default) for completed UTC days, `1h` for the most recent\ncompleted UTC hour.","nullable":true,"type":"string"},"coins":{"default":null,"description":"Restrict ⟨36 unchanged words⟩ Defaults to price, traded notional and theday'sinterval's return.","items":{"type":"string" ⟨5 unchanged words⟩ {"default":null,"description":"The day or hour torankrank. For `bar: 1d`, `YYYY-MM-DD`,or `latest` (the defaultthe\ndefault: the mostrecent\ncompleterecent complete day). For `bar: 1h`, a completed hour\nas `YYYY-MM-DDTHH:00:00Z`, or `latest`.","nullable":true,"type":"string"} ⟨56 unchanged words⟩ by. Need not appear in `columns`. Defaults tothe\nday'sthe\ninterval's traded notional.","nullable":true,"type": ⟨121 unchanged words⟩
⟨4 unchanged words⟩ "as_of":{"description":"The UTC daythe(`YYYY-MM-DD`)answeror completed hour (`YYYY-MM-DDTHH:00:00Z`) the\nanswer describes.","type":"string"},"coin_countbar":{"description":"Thenumbergrainofthismarketsanswerinwas computed at: `1d` or `1h`.","type":"string"},"eligible_count":{"description":"Markets left after yourvisibleexplicitslicemarketonfilterthatanddayany traded-notional\nfloor
Thedailyseries for one market or a few (max 10): one row per market perdayinterval over a trailing window, oldest first. Pick bar (1d, the default, for one row per day, or 1h on a Pro key for one row per completed hour). Answers 'is this move backed by real flow' and 'how has positioning built up'. ending_day defaults to the last completeday.interval. The whole answer is capped, so markets times window_days (times 24 at bar 1h) must stay inside the row cap; the response ⟨5 unchanged words⟩
{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"bar":{"default":null,"description":"`1d` (the default) for completed UTC days, `1h` for completed UTC hours.","nullable":true,"type":"string"},"coins":{"description":"The markets to return ⟨10 unchanged words⟩ "Fields to return per row, from `list_fields`. The interval column\n(`day` at 1d, `hour` at 1h) and `coin`are\nalwaysare always included.","items":{"type":"string"} ⟨5 unchanged words⟩ {"default":null,"description":"The lastdayinterval to include,: `YYYY-MM-DD` or`latest`.`latest` at `bar: 1d`, a\ncompleted `YYYY-MM-DDTHH:00:00Z` or `latest` at `bar: 1h`.","nullable":true,"type":"string"} ⟨21 unchanged words⟩ trailing window in days, 1..365. Defaults to 7. At\n`bar: 1h` one window day is 24 hourly rows.","format":"uint","minimum":0, ⟨10 unchanged words⟩
⟨4 unchanged words⟩ :{"as_of":{"description":"The lastdayinterval in the series.","type":"string"},"coin_countbar":{"description":"The grain this answer was computed at: `1d` or `1h`.","type":"string"},"eligible_count":{"description":"The markets you asked for, after the plan's slice and your filter were\nintersected.","format":"int64","type":"integer"},"matched_count":{"description":"How many of the requested markets the seriescovers.actually has rows for — less\nthan `eligible_count` when one of them has no data in the window.","format":"int64","type":"integer ⟨24 unchanged words⟩ ,"truncated":{"type":"boolean"},"visible_count":{"description":"Markets in your plan's slice with a row on the last interval.","format":"int64","type":"integer"},"window_days":{"description":"The window the trailing fields were computedover.over, in days.","format":"uint","minimum":0,"type":"integer"}},"required":["bar","source","as_of","scope","window_days","coin_countvisible_count","eligible_count","matched_count","row_count","truncated","rows","notes ⟨4 unchanged words⟩
Screen the whole market on ONE completeddayinterval with several conditions ANDed together. Pick bar (1d, the default, or 1h on a Pro key; a free key is screened at 1d). Conditions use op >, <, >=, <=, between, top_pct or bottom_pct; top_pct/bottom_pct are deciles oftheyour eligible markets, and the liquidity floor is applied before the deciles so they are measured over the population youcanaresee.choosing from. Answers 'top-decile funding with bottom-decile open-interest change' and ⟨20 unchanged words⟩
⟨87 unchanged words⟩ "$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"bar":{"default":null,"description":"`1d` (the default) for completed UTC days, `1h` for the most recent\ncompleted UTC hour.","nullable":true,"type":"string"},"coins":{"default":null,"description":"Restrict ⟨55 unchanged words⟩ {"default":null,"description":"The day or hour to screen,: `YYYY-MM-DD` or`latest`.`latest` at `bar: 1d`, a\ncompleted `YYYY-MM-DDTHH:00:00Z` or `latest` at `bar: 1h`.","nullable":true,"type":"string"} ⟨62 unchanged words⟩ to rank the matches by. Defaults to theday's tradedinterval'snotional.traded\nnotional.","nullable":true,"type":"string"} ⟨20 unchanged words⟩
⟨4 unchanged words⟩ {"as_of":{"type":"string"},"coin_countbar":{"description":"Thenumbergrainofthismarketsanswerinwasyourcomputedvisibleat:slice`1d`onorthat`1h`.","type":"string"},"eligible_count":{"description":"Marketsdayleft—afterthe\ndenominatoryourtheexplicit
{"$schema":"https://json-schema.org/draft/2020-12/schema","description":"Which dataset's dictionary to return.","properties":{"asset":{"description":"Dataset name,e.g.as`gold_ohlcv_1m`.returned by `list_datasets`.","type":"string"}},"required":["asset"],"title":"AssetArgDatasetArg","type":"object"}
⟨278 unchanged words⟩ ,"properties":{"cadence":{"description":"GranularityHow+frequentlypartitioningthe data is sampled, e.g. \"1-minutebars, partitioned per (coin, month)\bars\".","type":"string"},"category" ⟨95 unchanged words⟩ "},"name":{"description":"Dataset name,/exactlyassetaskey,`list_datasets`e.g.reports`gold_ohlcv_1m`.it.","type":"string"},"note":{ ⟨138 unchanged words⟩
List theavailabledownloadableTesseradatasets:Analyticsone-linegoldsummary,datasetsthewithplansummariesrequired, and theplanmonth(free/pro)rangeeachavailable.requires.OpenCall—firstnotokeydiscoverneeded.what'sThenavailable.use describe_dataset for one dataset's columns, or list_fields for the fields the query tools accept.
{"$defs":{"CatalogEntry":{"description":"One dataset in the public catalog.","properties":{"cadence":{"type":"string" ⟨6 unchanged words⟩ "minimum":0,"type":"integer"},"months":{"description":"The published month range, `[earliest, latest]`. Absent when the catalog\nlists no months for it.","items":{"type":"string"},"nullable":true,"type":"array"},"name":{"type":"string"},"summary" ⟨39 unchanged words⟩ ,"type":"array"},"generated_at":{"description":"When this catalog was produced.","type":"string"},"your_tier":{"description":"The caller's own plan (`free`, `pro` or`pro``anonymous`).Datasets whose `tier` is `pro`\nwhile this is `free` are visible for discovery but require an upgrade to\nread.","type":"string"}},"required": ⟨7 unchanged words⟩
Rank markets by how far their funding has diverged from a benchmark (default ETH) over a trailing window. metric=rate compares mean daily funding; metric=cum_funding_spread compares funding accumulated over the window. Returns the most diverged in each direction. Markets with no funding reading are excluded from both lists. Descriptive only.
The coverage picture: the last complete day, how many markets are in the universe for a scope, how much history sits behind them, and how densely it is populated. A compact SUMMARY by default — pass top_n (1..50) only if you need the per-market day counts.
Every field the query tools accept, each with its meaning, unit and whether it can be missing. Open — no key needed. Call this before query_cross_section, screen_universe or query_series. Percentile, z-score and the top_pct/bottom_pct conditions rank within the markets your plan can see, so they need a wide slice.
What is happening right now: mark price, current hourly funding, open interest, 24-hour traded notional and premium for up to 25 markets, taken straight from the venue's public API and stamped with the moment it was read. Use this for 'now' questions; the daily tools answer completed days only.
Rank the whole market on ONE completed day: pick columns, an order_by field and top_n. Answers 'top markets by funding / open interest / returns on the latest day' and 'what percentile is BTC on open interest'. day defaults to the last complete day; scope defaults to crypto (HIP-3 markets track an underlying that closes, so their flow is not comparable); stat=percentile|zscore ranks within your visible markets; window_days recomputes the trailing-window fields; min_usd_volume_7d_avg keeps dust out of the ranking.
The daily series for one market or a few (max 10): one row per market per day over a trailing window, oldest first. Answers 'is this move backed by real flow' and 'how has positioning built up'. ending_day defaults to the last complete day. The whole answer is capped, so markets times window_days must stay inside the row cap; the response states the window it used.
Screen the whole market on ONE completed day with several conditions ANDed together. Conditions use op >, <, >=, <=, between, top_pct or bottom_pct; top_pct/bottom_pct are deciles of the markets you can see. Answers 'top-decile funding with bottom-decile open-interest change' and 'open interest rising faster than volume'. A market that does not report a field never satisfies a condition on it.
Return a short-lived presigned URL to download the full parquet for one (asset, coin, month) partition. Use for bulk access beyond read_dataset's row cap.
List a dataset's (coin, month) partitions the caller's plan can read. Defaults to a compact SUMMARY (coin/month counts, month range, totals) — pass summary=false to enumerate (paginated via limit/offset). Filter with `coin` and/or `month`. Use to choose a valid coin/month for read_dataset.
Read actual data rows from one (asset, coin, month) partition. Defaults to the latest 200 rows. Pass `columns` to limit width and `limit` (max 1000) to limit rows — a partition can be tens of thousands of rows. For a whole partition use get_download_url.