Skip to main content
Glama

Tessera Analytics - Hyperliquid Market Intelligence

Query cross-section

query_cross_section
Read-only

Rank the whole market on ONE completed interval: pick bar (1d, the default, or 1h for completed hours), 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 (USD/day at either bar) 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.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "query_cross_section"
  }
}

Input 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..100 (values outside are clamped to the nearest bound and the response says so). 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 trailing window is below this value, in USD/day at either bar — a floor chosen at `1d` means the same thing at `1h` — so dust cannot top a ranking.

Output 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`.
published_atNoWhen the newest interval in this answer was actually published (written), UTC. Absent at the daily grain, whose coverage comes from the manifest rather than the object's write time. Compare with `bar_age_hours` to see the publication lag.
bar_age_hoursYesHow many hours ago the newest interval closed. The published hourly source is written ~1.5–2.5 h after its bar, so `bar_age_hours` is the decision lag: the bar is already this old before anyone can trade on it.
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
    • addedOutput schema / properties / bar_age_hours
      Added value: +{
      +  "description": "How many hours ago the newest interval closed. The published hourly source\nis written ~1.5–2.5 h after its bar, so `bar_age_hours` is the decision\nlag: the bar is already this old before anyone can trade on it.",
      +  "format": "double",
      +  "type": "number"
      +}
    • addedOutput schema / properties / published_at
      Added value: +{
      +  "description": "When the newest interval in this answer was actually published (written),\nUTC. Absent at the daily grain, whose coverage comes from the manifest\nrather than the object's write time. Compare with `bar_age_hours` to see\nthe publication lag.",
      +  "nullable": true,
      +  "type": "string"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "bar",
      -  "source",
      -  "as_of",
      -  "scope",
      -  "visible_count",
      -  "eligible_count",
      -  "matched_count",
      -  "row_count",
      -  "truncated",
      -  "stat",
      -  "rows",
      -  "notes"
      -]New value: +[
      +  "bar",
      +  "source",
      +  "as_of",
      +  "bar_age_hours",
      +  "scope",
      +  "visible_count",
      +  "eligible_count",
      +  "matched_count",
      +  "row_count",
      +  "truncated",
      +  "stat",
      +  "rows",
      +  "notes"
      +]
  2. Changed2 schema fields changed
    • changedInput schema / properties / min_usd_volume_7d_avg / description
      Previous value: -"Drop markets whose average daily traded notional over the window is\nbelow this value, so dust cannot top a ranking."New value: +"Drop markets whose average **daily** traded notional over the trailing\nwindow is below this value, in USD/day at either bar — a floor chosen at\n`1d` means the same thing at `1h` — so dust cannot top a ranking."
    • changedInput schema / properties / top_n / description
      Previous value: -"How many markets to return, 1..50. Defaults to 20."New value: +"How many markets to return, 1..100 (values outside are clamped to the\nnearest bound and the response says so). Defaults to 20."
  3. 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."
  4. 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"
      +]
  5. Added
  6. Removed
  7. First observed

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources