Skip to main content
Glama

Tessera Analytics - Hyperliquid Market Intelligence

query_cross_section

Rank the whole market on ONE completed interval: 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 latest day or hour' and 'what percentile is BTC on open interest'. day defaults to the last complete interval; scope defaults to crypto (HIP-3 markets track an underlying that closes, so their flow is not comparable); stat=percentile|zscore ranks within your eligible markets; window_days recomputes the trailing-window fields; min_usd_volume_7d_avg keeps dust out of the ranking and the ranking is computed after it. Field names come from list_fields — never guess them, they are snake_case compound names and each one lists the bars it exists on; for a cut ('top decile by X') use screen_universe.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
barNo`1d` (the default) for completed UTC days, `1h` for completed UTC hours. An interval, at either grain, is stamped by the instant it **closes** — an hourly `…T09:00:00Z` is the hour that ended at 09:00.
dayNoThe day or hour to rank. For `bar: 1d`, `YYYY-MM-DD` or `latest` (the default: the most recent complete day). For `bar: 1h`, a completed hour as `YYYY-MM-DDTHH:00:00Z` — the hour that *ended* at that instant — or `latest`.
statNo`raw` (the default), `percentile`, or `zscore`. Percentile and z-score are ranked **within the markets your plan can see**, so they need a slice of at least four markets.
coinsNoRestrict to these markets. A market outside your plan's coverage is ignored rather than widening the answer.
scopeNo`crypto` (the default), `hip3`, or `all`. Restricted markets track an underlying that closes, so their flow is not comparable on a weekend.
top_nNoHow many markets to return, 1..50. Defaults to 20.
columnsNoFields to return per market, from `list_fields`. `coin` is always included. Defaults to price, traded notional and the interval's return.
order_byNoThe field to rank by. Need not appear in `columns`. Defaults to the interval's traded notional.
descendingNoRank largest first (the default). Set false for the smallest.
window_daysNoRecompute the trailing-window fields over this many days, 1..365 (default 7). The response always states the window it used.
min_usd_volume_7d_avgNoDrop markets whose average daily traded notional over the window is below this value, so dust cannot top a ranking.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
barYesThe grain this answer was computed at: `1d` or `1h`.
rowsYes
statYesThe ranking treatment actually applied: `raw`, `percentile` or `zscore`.
as_ofYesThe UTC day (`YYYY-MM-DD`) or completed hour (`YYYY-MM-DDTHH:00:00Z`) the answer describes. An interval is stamped by the instant it closes, so an hourly `…T09:00:00Z` is the hour that ended at 09:00.
notesYes
scopeYesThe market population the ranking ran over.
sourceYes`tessera_daily` or `tessera_hourly` — the clock this answer came from, never the live market.
row_countYesHow many markets are in `rows`.
truncatedYesTrue when `matched_count` exceeds `row_count`.
matched_countYesMarkets that reported the ranked field and passed every filter. This is the count the rows are drawn from.
visible_countYesMarkets in your plan's slice with a row on this interval, before any filter you passed. This is the universe the answer is a statement about.
eligible_countYesMarkets left after your explicit market filter and any traded-notional floor — the population the percentile, z-score and deciles were computed over.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / bar / description
      Previous value: -"`1d` (the default) for completed UTC days, `1h` for the most recent\ncompleted UTC hour."New value: +"`1d` (the default) for completed UTC days, `1h` for completed UTC 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."
    • changedInput schema / properties / day / description
      Previous value: -"The day or hour to rank. For `bar: 1d`, `YYYY-MM-DD` or `latest` (the\ndefault: the most recent complete day). For `bar: 1h`, a completed hour\nas `YYYY-MM-DDTHH:00:00Z`, or `latest`."New value: +"The day or hour to rank. For `bar: 1d`, `YYYY-MM-DD` or `latest` (the\ndefault: the most recent complete day). For `bar: 1h`, a completed hour\nas `YYYY-MM-DDTHH:00:00Z` — the hour that *ended* at that instant — or\n`latest`."
    • changedOutput schema / properties / as_of / description
      Previous value: -"The UTC day (`YYYY-MM-DD`) or completed hour (`YYYY-MM-DDTHH:00:00Z`) the\nanswer describes."New value: +"The UTC day (`YYYY-MM-DD`) or 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."
  2. Changed14 schema fields changed
    • addedInput schema / properties / bar
      Added value: +{
      +  "default": null,
      +  "description": "`1d` (the default) for completed UTC days, `1h` for the most recent\ncompleted UTC hour.",
      +  "nullable": true,
      +  "type": "string"
      +}
    • changedInput schema / properties / columns / description
      Previous value: -"Fields to return per market, from `list_fields`. `coin` is always\nincluded. Defaults to price, traded notional and the day's return."New value: +"Fields to return per market, from `list_fields`. `coin` is always\nincluded. Defaults to price, traded notional and the interval's return."
    • changedInput schema / properties / day / description
      Previous value: -"The day to rank, `YYYY-MM-DD`, or `latest` (the default: the most recent\ncomplete day)."New value: +"The day or hour to rank. For `bar: 1d`, `YYYY-MM-DD` or `latest` (the\ndefault: the most recent complete day). For `bar: 1h`, a completed hour\nas `YYYY-MM-DDTHH:00:00Z`, or `latest`."
    • changedInput schema / properties / order_by / description
      Previous value: -"The field to rank by. Need not appear in `columns`. Defaults to the\nday's traded notional."New value: +"The field to rank by. Need not appear in `columns`. Defaults to the\ninterval's traded notional."
    • changedOutput schema / properties / as_of / description
      Previous value: -"The UTC day the answer describes."New value: +"The UTC day (`YYYY-MM-DD`) or completed hour (`YYYY-MM-DDTHH:00:00Z`) the\nanswer describes."
    • addedOutput schema / properties / bar
      Added value: +{
      +  "description": "The grain this answer was computed at: `1d` or `1h`.",
      +  "type": "string"
      +}
    • removedOutput schema / properties / coin_count
      Removed value: -{
      -  "description": "The number of markets in your visible slice on that day — the\ndenominator every statistic and floor below is measured against.",
      -  "format": "int64",
      -  "type": "integer"
      -}
    • addedOutput schema / properties / eligible_count
      Added value: +{
      +  "description": "Markets left after your explicit market filter and any traded-notional\nfloor — the population the percentile, z-score and deciles were computed\nover.",
      +  "format": "int64",
      +  "type": "integer"
      +}
    • addedOutput schema / properties / matched_count
      Added value: +{
      +  "description": "Markets that reported the ranked field and passed every filter. This is\nthe count the rows are drawn from.",
      +  "format": "int64",
      +  "type": "integer"
      +}
    • removedOutput schema / properties / ranked_count
      Removed value: -{
      -  "description": "How many markets had a value for the ranked field and passed the floor.",
      -  "format": "int64",
      -  "type": "integer"
      -}
    • changedOutput schema / properties / source / description
      Previous value: -"`tessera_daily` — the answer is from completed days, not the live market."New value: +"`tessera_daily` or `tessera_hourly` — the clock this answer came from,\nnever the live market."
    • changedOutput schema / properties / truncated / description
      Previous value: -"True when `ranked_count` exceeds `row_count`."New value: +"True when `matched_count` exceeds `row_count`."
    • addedOutput schema / properties / visible_count
      Added value: +{
      +  "description": "Markets in your plan's slice with a row on this interval, before any\nfilter you passed. This is the universe the answer is a statement about.",
      +  "format": "int64",
      +  "type": "integer"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "source",
      -  "as_of",
      -  "scope",
      -  "coin_count",
      -  "ranked_count",
      -  "row_count",
      -  "truncated",
      -  "stat",
      -  "rows",
      -  "notes"
      -]New value: +[
      +  "bar",
      +  "source",
      +  "as_of",
      +  "scope",
      +  "visible_count",
      +  "eligible_count",
      +  "matched_count",
      +  "row_count",
      +  "truncated",
      +  "stat",
      +  "rows",
      +  "notes"
      +]
  3. Added
  4. Removed
  5. First observed

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources