Hyperliquid Market Data — OHLCV, Funding Rates & Positioning (Tessera)
REMOTE · TESSERALYTICS.DEV · SCANNED SEP 28
Hyperliquid perp market data for LLMs: OHLCV, funding, open interest, positioning & forecasts.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security63
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation not fully verified: no authorisation is required to call this server, and 9 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability71
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 1839 tokens (~204/item across 9 items; 9 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management40
- Stability check failed: schema churn in the 30 days we've observed: 3 tool removals, 1 breaking changes, 0 auth/transport breaks, 6 additions. See how to fix → Fail
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 9 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 10 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities40
- Spec-recency check failed: implements MCP spec 2025-03-26; the latest is 2026-07-28. See how to fix → Fail
How do I install the Hyperliquid Market Data — OHLCV, Funding Rates… MCP server?
Hyperliquid Market Data — OHLCV, Funding Rates… is a hosted endpoint at https://tesseralytics.dev/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · tesseralytics.dev
claude mcp add --transport http dev-tesseralytics-hyperliquid-data 'https://tesseralytics.dev/mcp'
{
"mcpServers": {
"dev-tesseralytics-hyperliquid-data": {
"url": "https://tesseralytics.dev/mcp"
}
}
} {
"servers": {
"dev-tesseralytics-hyperliquid-data": {
"type": "http",
"url": "https://tesseralytics.dev/mcp"
}
}
} [mcp_servers.dev-tesseralytics-hyperliquid-data] url = "https://tesseralytics.dev/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"dev-tesseralytics-hyperliquid-data": {
"type": "remote",
"url": "https://tesseralytics.dev/mcp",
"enabled": true
}
}
} openclaw mcp add dev-tesseralytics-hyperliquid-data --url 'https://tesseralytics.dev/mcp' --transport streamable-http
mcp_servers:
dev-tesseralytics-hyperliquid-data:
url: "https://tesseralytics.dev/mcp" {
"McpServers": {
"dev-tesseralytics-hyperliquid-data": {
"Transport": "http",
"Url": "https://tesseralytics.dev/mcp"
}
}
} assistant mcp add dev-tesseralytics-hyperliquid-data -t streamable-http -u 'https://tesseralytics.dev/mcp'
{
"mcpServers": {
"dev-tesseralytics-hyperliquid-data": {
"type": "http",
"url": "https://tesseralytics.dev/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 22 Sept 26 0
- The server rewrote its instructions, which are the text every model session reads security
- 19 Sept 26 0
- Tool “query_cross_section” rewrote its description, which is the text the model reads security
- 16 Sept 26 −6
- A breaking change shipped without a version bump: still 0.1.0 ▼ security
- Tool “get_download_url” was removed ▼ security
- Tool “list_partitions” was removed ▼ security
- Tool “read_dataset” was removed ▼ security
- The server rewrote its instructions, which are the text every model session reads security
- Tool “describe_dataset” rewrote its description, which is the text the model reads security
- Tool “list_datasets” rewrote its description, which is the text the model reads security
- Schema quality: 169 → 197 ▼ functional
- Tool coverage: 94% → 100% ▲ functional
- New tool “funding_divergence” functional
- New tool “get_universe” functional
- New tool “list_fields” functional
- New tool “live_market” functional
- New tool “query_cross_section” functional
- New tool “query_series” functional
- New tool “screen_universe” functional
- “describe_dataset” reworded the description of “asset” cosmetic
- 4 Sept 26 −2
- Stability: pass → fail ▼ security
- A breaking change shipped without a version bump: still 0.1.0 ▼ security
- Tool “query_cross_section” was removed ▼ security
- The server rewrote its instructions, which are the text every model session reads security
- Schema quality: 200 → 169 ▲ functional
- “describe_dataset” reworded the description of “asset” cosmetic
- “read_dataset” reworded the description of “asset” cosmetic
- “read_dataset” reworded the description of “coin” cosmetic
- 26 Aug 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Aug 26 0
- Stability: 0.97 → pass security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 28 Sept 2026 · Probed https://tesseralytics.dev/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=tesseralytics.dev | CN=Amazon RSA 2048 M04,O=Amazon,C=US | 9 Jun 2026 | 23 Dec 2026 | RSA 2048 | SHA256-RSA | 52f3915bb4d7c3d12d6c4dd3fb729e2 |
| SANs: tesseralytics.dev, www.tesseralytics.dev | ||||||
| CN=Amazon RSA 2048 M04,O=Amazon,C=US (CA) | CN=Amazon Root CA 1,O=Amazon,C=US | 23 Aug 2022 | 23 Aug 2030 | RSA 2048 | SHA256-RSA | 773124f2a952e3ed18a58bdb85d1bc0ce5f27 |
| CN=Amazon Root CA 1,O=Amazon,C=US (CA) | CN=Starfield Services Root Certificate Authority - G2,O=Starfield Technologies\, Inc.,L=Scottsdale,ST=Arizona,C=US | 25 May 2015 | 31 Dec 2037 | RSA 2048 | SHA256-RSA | 67f944a2a27cdf3fac2ae2b01f908eeb9c4c6 |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of tesseralytics.dev. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| dev. | present | 60074 | 8 | Verified |
| tesseralytics.dev. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=63072000; includeSubDomains; preload |
| content-security-policy | default-src 'none'; frame-ancestors 'none' |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://tesseralytics.dev/mcp | Verified | 200 | |
| http (plaintext) | http://tesseralytics.dev/mcp | HTTPS enforced | 301 | https://tesseralytics.dev/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
describe_dataset ~73
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.
| Name | Type | Req | Description |
|---|---|---|---|
| asset | string | yes | Dataset name, as returned by `list_datasets`. |
| Name | Type | Req | Description |
|---|---|---|---|
| cadence | string | yes | How frequently the data is sampled, e.g. "1-minute bars". |
| category | string | yes | Presentation category, e.g. `raw-tiles` or `forecast-layer`. |
| column_count | integer | yes | Number of documented columns. |
| column_groups | array | yes | Columns, grouped for presentation, in schema order. |
| description | string | yes | Longer prose — the dictionary page header. |
| direct_answer | string | – | 40-60 word keyword-first lead answer — the definitional "what is this" blurb, and the strongest AI-citation extraction target. Defaulted for forward/backward compatibility with snapshots predating th… |
| keywords | array | – | Per-dataset discovery keywords (schema.org keywords on the web). |
| name | string | yes | Dataset name, exactly as `list_datasets` reports it. |
| note | string | – | Optional "how to use this" callout. |
| seo_title | string | – | Keyword-first SEO title tag (web `<title>`). Defaulted so older snapshots without the field still deserialize. |
| summary | string | yes | One-line intuitive summary — the catalog card. |
| temporal | – | – | Machine-readable timestamp/interval contract: what the label marks and how to join without leaking the future. Defaulted so snapshots predating the field still deserialize. |
| tier | string | yes | Display tier: `free` or `pro`. Re-derived from `policy.rs` on read, so it always matches actual entitlement regardless of the on-disk value. |
| title | string | yes | Human-friendly title, e.g. "Order-flow OHLCV (1-minute)". |
| use_case | string | – | One-line "what you'd use it for" (buyer-intent) copy. |
No examples provided.
funding_divergence ~227
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.
| Name | Type | Req | Description |
|---|---|---|---|
| benchmark | string | – | The market whose funding is the yardstick. Defaults to ETH. |
| coins | array | – | Restrict to these markets. |
| metric | string | – | `rate` (the default) ranks each market's mean daily funding minus the benchmark's; `cum_funding_spread` ranks funding accumulated over the window, high minus low, minus the benchmark's. |
| scope | string | – | `crypto` (the default), `hip3`, or `all`. |
| top_n | integer | – | Markets per ranked list, 1..50. Defaults to 10. |
| window_days | integer | – | Length of the trailing window in days, 1..365. Defaults to 7. |
| Name | Type | Req | Description |
|---|---|---|---|
| as_of | string | yes | – |
| benchmark | string | yes | – |
| benchmark_value | number | yes | The benchmark's own value for the metric. |
| coin_count | integer | yes | How many markets had a funding reading in the window; markets without one are excluded from both lists and from this count. |
| metric | string | yes | – |
| notes | array | yes | – |
| scope | string | yes | – |
| source | string | yes | – |
| top_negative | array | yes | The largest divergences toward the benchmark's opposite, most extreme first. |
| top_positive | array | yes | The largest divergences away from the benchmark, most extreme first. |
| truncated | boolean | yes | – |
| window_days | integer | yes | – |
No examples provided.
get_universe ~145
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.
| Name | Type | Req | Description |
|---|---|---|---|
| day | string | – | The day to describe, `YYYY-MM-DD` or `latest`. |
| scope | string | – | `crypto` (the default), `hip3`, or `all`. |
| top_n | integer | – | Per-market detail is off by default; passing a value (1..50) returns that many markets, listed by name, alongside the summary. |
| Name | Type | Req | Description |
|---|---|---|---|
| as_of | string | yes | The day the per-population counts describe. |
| coin_count_crypto | integer | yes | Markets without a deployer prefix on the described day, whatever scope was asked for. |
| coin_count_hip3 | integer | yes | Markets with a deployer prefix on the described day. |
| coin_count_total | integer | yes | Distinct markets in scope over the whole range. |
| coins | array | – | Per-market detail, only when requested. Markets are listed by name. |
| coverage_from_manifest | boolean | yes | True when the day range came from the published coverage manifest, false when it had to be read from the data itself. |
| day_count | integer | yes | Distinct days in the range. |
| max_complete_day | string | yes | The newest complete day — the day `latest` resolves to. |
| min_day | string | yes | The oldest day the counts below cover: the published range start, or the caller's history floor when the plan clips it (the response says so in `notes`). |
| months_covered | integer | yes | – |
| notes | array | yes | – |
| row_count | integer | yes | Rows in scope over the whole range. |
| rows_per_market_day | number | yes | `row_count` divided by (days × markets) — how densely the range is populated. Below 1.0 means some markets are missing some days. |
| scope | string | yes | – |
| source | string | yes | – |
| truncated | boolean | yes | True when more markets exist than the detail list returned. |
No examples provided.
list_datasets ~55
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.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| datasets | array | yes | – |
| generated_at | string | yes | When this catalog was produced. |
| your_tier | string | yes | The caller's own plan (`free`, `pro` or `anonymous`). |
No examples provided.
list_fields ~77
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.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | array | yes | Every field the query tools accept. |
| generated_at | string | yes | When this vocabulary was produced. |
| notes | array | yes | – |
No examples provided.
live_market ~88
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.
| Name | Type | Req | Description |
|---|---|---|---|
| coins | array | yes | The markets to snapshot, 1..25. |
| Name | Type | Req | Description |
|---|---|---|---|
| as_of | string | yes | When the snapshot was taken, UTC. |
| coin_count | integer | yes | – |
| notes | array | yes | – |
| rows | array | yes | – |
| source | string | yes | `hyperliquid_rest` — this is the live market, not the completed-day data. |
No examples provided.
query_cross_section ~489
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.
| Name | Type | Req | Description |
|---|---|---|---|
| coins | array | – | Restrict to these markets. A market outside your plan's coverage is ignored rather than widening the answer. |
| columns | array | – | Fields to return per market, from `list_fields`. `coin` is always included. Defaults to price, traded notional and the day's return. |
| day | string | – | The day to rank, `YYYY-MM-DD`, or `latest` (the default: the most recent complete day). |
| descending | boolean | – | Rank largest first (the default). Set false for the smallest. |
| min_usd_volume_7d_avg | number | – | Drop markets whose average daily traded notional over the window is below this value, so dust cannot top a ranking. |
| order_by | string | – | The field to rank by. Need not appear in `columns`. Defaults to the day's traded notional. |
| scope | string | – | `crypto` (the default), `hip3`, or `all`. Restricted markets track an underlying that closes, so their flow is not comparable on a weekend. |
| stat | string | – | `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. |
| top_n | integer | – | How many markets to return, 1..50. Defaults to 20. |
| window_days | integer | – | Recompute the trailing-window fields over this many days, 1..365 (default 7). The response always states the window it used. |
| Name | Type | Req | Description |
|---|---|---|---|
| as_of | string | yes | The UTC day the answer describes. |
| coin_count | integer | yes | The number of markets in your visible slice on that day — the denominator every statistic and floor below is measured against. |
| notes | array | yes | – |
| ranked_count | integer | yes | How many markets had a value for the ranked field and passed the floor. |
| row_count | integer | yes | How many markets are in `rows`. |
| rows | array | yes | – |
| scope | string | yes | The market population the ranking ran over. |
| source | string | yes | `tessera_daily` — the answer is from completed days, not the live market. |
| stat | string | yes | The ranking treatment actually applied: `raw`, `percentile` or `zscore`. |
| truncated | boolean | yes | True when `ranked_count` exceeds `row_count`. |
No examples provided.
query_series ~202
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.
| Name | Type | Req | Description |
|---|---|---|---|
| coins | array | yes | The markets to return, 1..10. |
| columns | array | – | Fields to return per row, from `list_fields`. `day` and `coin` are always included. |
| ending_day | string | – | The last day to include, `YYYY-MM-DD` or `latest`. |
| scope | string | – | `crypto` (the default), `hip3`, or `all`. |
| window_days | integer | – | Length of the trailing window in days, 1..365. Defaults to 7. |
| Name | Type | Req | Description |
|---|---|---|---|
| as_of | string | yes | The last day in the series. |
| coin_count | integer | yes | The markets the series covers. |
| notes | array | yes | – |
| row_count | integer | yes | – |
| rows | array | yes | – |
| scope | string | yes | – |
| source | string | yes | – |
| truncated | boolean | yes | – |
| window_days | integer | yes | The window the trailing fields were computed over. |
No examples provided.
screen_universe ~281
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.
| Name | Type | Req | Description |
|---|---|---|---|
| coins | array | – | Restrict to these markets. |
| columns | array | – | Fields to return per market, from `list_fields`. |
| conditions | array | yes | Conditions, all of which must hold. A market that does not report a field never satisfies a condition on it. |
| day | string | – | The day to screen, `YYYY-MM-DD` or `latest`. |
| descending | boolean | – | Rank largest first (the default). |
| max_results | integer | – | How many markets to return, 1..50. Defaults to 25. |
| min_usd_volume_7d_avg | number | – | Drop markets below this average daily traded notional over the window. |
| order_by | string | – | The field to rank the matches by. Defaults to the day's traded notional. |
| scope | string | – | `crypto` (the default), `hip3`, or `all`. |
| Name | Type | Req | Description |
|---|---|---|---|
| as_of | string | yes | – |
| coin_count | integer | yes | The number of markets in your visible slice on that day — the denominator the percentage conditions and the floor were measured against. |
| matched_count | integer | yes | How many markets met every condition. |
| notes | array | yes | – |
| row_count | integer | yes | – |
| rows | array | yes | – |
| scope | string | yes | – |
| source | string | yes | – |
| truncated | boolean | yes | – |
No examples provided.
What is the Hyperliquid Market Data — OHLCV, Funding Rates… MCP server?
Hyperliquid Market Data — OHLCV, Funding Rates… is an MCP server listed in the public MCP registry as dev.tesseralytics/hyperliquid-data. Hyperliquid perp market data for LLMs: OHLCV, funding, open interest, positioning & forecasts. This page covers its hosted endpoint (https://tesseralytics.dev/mcp).
Is the Hyperliquid Market Data — OHLCV, Funding Rates… MCP server safe to use?
Hyperliquid Market Data — OHLCV, Funding Rates… scores 69 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Hyperliquid Market Data — OHLCV, Funding Rates… MCP server expose?
Hyperliquid Market Data — OHLCV, Funding Rates… exposes 9 tools: get_universe, screen_universe, funding_divergence, list_datasets, query_cross_section, and 4 more. Their descriptions and schemas cost roughly 1,637 tokens of context every time the server is loaded.
Does the Hyperliquid Market Data — OHLCV, Funding Rates… MCP server require authentication?
No. We connected to Hyperliquid Market Data — OHLCV, Funding Rates… without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Hyperliquid Market Data — OHLCV, Funding Rates… MCP server still maintained?
Hyperliquid Market Data — OHLCV, Funding Rates… is still listed as active in the MCP registry. We last reached this channel on 28 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.