# Hyperliquid Market Data — OHLCV, Funding Rates & Positioning (Tessera)

> Hyperliquid perp market data for LLMs: OHLCV, funding, open interest, positioning & forecasts.

- name: dev.tesseralytics/hyperliquid-data
- version: 0.1.0
- connection class: R1 (autonomous)
- trust: 73/100 flags: no-repository
- quality: 73/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/dev.tesseralytics%2Fhyperliquid-data
- tools: https://api.protogrid.dev/v1/servers/dev.tesseralytics%2Fhyperliquid-data/tools

**An agent can connect on its own if it already holds `HYPERLIQUID_DATA_TOKEN`.** Remote endpoint behind a static API key or header. The registry never sees the value; the agent fills the placeholder.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "hyperliquid-data": {
      "type": "http",
      "url": "https://tesseralytics.dev/mcp",
      "headers": {
        "Authorization": "Bearer ${HYPERLIQUID_DATA_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${HYPERLIQUID_DATA_TOKEN}`.

## Trust

- hygiene: 80
- liveness: 100
- freshness: 65
- provenance: 45
- drivers: +dns-namespace +reachable +uptime-100% ~updated-106d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 73/100 (needs work)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-03-26; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: screen_universe (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_universe (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); list_datasets (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 3,849 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 75 (weight 15)

- warn `stability.changes`: 16 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 9, about 3,849 tokens to load them all
- tool set hash: 9b480ff2702ec4aa29313c8eea353e05
- tools last changed: 2026-10-15T21:01:04.037Z
- badge: [![protogrid quality](https://protogrid.dev/badge/dev.tesseralytics/hyperliquid-data.svg)](https://protogrid.dev/servers/dev.tesseralytics/hyperliquid-data)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-15 `live_market` changed (description, outputSchema)
  - before: 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 bar=1d and bar=1h tools answer completed intervals only.
  - after: What is happening right now: 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 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 bar=1d and bar=1h tools answer completed intervals only.
- 2026-10-14 `screen_universe` changed (inputSchema)
- 2026-10-14 `funding_divergence` changed (description, inputSchema)
  - before: Rank markets by how far their funding has diverged from a 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 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, which is 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. Markets with no funding reading are excluded from both lists. Descriptive only.
  - after: Rank markets by how far their funding has diverged from a 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 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, which is funding_paid_7d (or funding_rate_7d_avg times the window's completed-interval count). Returns the most diverged in each direction. Markets with no funding reading are excluded from both lists. Descriptive only.
- 2026-10-13 `funding_divergence` changed (description, inputSchema)
  - before: Rank markets by how far their funding has diverged from a 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 mean funding over the window; 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.
  - after: Rank markets by how far their funding has diverged from a 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 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, which is 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. Markets with no funding reading are excluded from both lists. Descriptive only.
- 2026-10-08 `funding_divergence` changed (inputSchema)
- 2026-10-08 `get_universe` changed (description, inputSchema, outputSchema)
  - before: The coverage picture: the last complete interval, how many markets are in the universe for a scope, how much history sits behind 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-market counts.
  - after: The coverage picture: the last complete interval, how many markets are in the universe for a scope, how much history sits behind 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. 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 (1..50) only if you need the per-market counts.
- 2026-10-08 `query_series` changed (inputSchema)
- 2026-10-08 `query_cross_section` changed (inputSchema, outputSchema)
- 2026-10-08 `screen_universe` changed (inputSchema)
- 2026-10-02 `query_cross_section` changed (description, inputSchema, outputSchema)
  - before: 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. 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.
  - after: 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.

Full history: https://api.protogrid.dev/v1/servers/dev.tesseralytics%2Fhyperliquid-data/changes

## Remotes

- https://tesseralytics.dev/mcp (streamable-http, auth api_key ${HYPERLIQUID_DATA_TOKEN}, reachable true, uptime30d 1)

## Packages

_none_

## Tools (9)

- `describe_dataset`: The full dictionary for ONE downloadable dataset: description plus every column's type, nullability and plain-English meaning. Pass a name from list_datasets. Open — no key needed. For the fields the query tools accept, use list_fields.
- `funding_divergence`: Rank markets by how far their funding has diverged from a 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 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, which is funding_paid_7d (or funding_rate_7d_avg times the window's completed-interval count). Returns the most diverged in each direction. Markets with no funding reading are excluded from both lists. Descriptive only.
- `get_universe`: The coverage picture: the last complete interval, how many markets are in the universe for a scope, how much history sits behind 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. 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 (1..50) only if you need the per-market counts.
- `list_datasets`: List the downloadable datasets: one-line summary, the plan required, and the month range available. Open — no key needed. Then use describe_dataset for one dataset's columns, or list_fields for the fields the query tools accept.
- `list_fields`: Every field the query tools accept, each with its meaning, unit, whether it can be missing, and which bars (1d, 1h) it exists on. 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.
- `live_market`: What is happening right now: 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 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 bar=1d and bar=1h tools answer completed intervals only.
- `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.
- `query_series`: The series for one market or a few (max 10): one row per market per interval 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 complete interval. The whole answer is capped, so markets times window_days (times 24 at bar 1h) must stay inside the row cap; the response states the window it used.
- `screen_universe`: Screen the whole market on ONE completed interval 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 of your eligible markets, and the liquidity floor is applied before the deciles so they are measured over the population you are choosing from. 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.
