Hyperliquid Market Data — OHLCV, Funding Rates & Positioning (Tessera)
REMOTE · TESSERALYTICS.DEV · SCANNED AUG 3
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 →
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 6 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 Usability65
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 1201 tokens (~200/item across 6 items; 6 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 Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage99
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 96% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities40
- Spec-recency check failed: implements MCP spec 2025-03-26; the latest is 2026-07-28. See how to fix → Fail
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
remote · tesseralytics.dev
claude mcp add --transport http dev-tesseralytics-hyperliquid-data 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": {
"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.
- 3 Aug 26 +1
- Schema quality: good → excellent functional
- 2 Aug 26 0
- Schema quality: excellent → good functional
- 31 Jul 26 +2
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 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
- 28 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 27 Jul 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Jul 26 59
First indexed and scored.
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 3 Aug 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 |
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 |
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.
describe_dataset ~63
Get the full data dictionary for one dataset: prose plus every column's type, nullability and plain-English meaning. Use before read_dataset to choose columns.
| Name | Type | Req | Description |
|---|---|---|---|
| asset | string | yes | Dataset name, e.g. `gold_positioning_funding_factors_1d`. |
| Name | Type | Req | Description |
|---|---|---|---|
| cadence | string | yes | Granularity + partitioning, e.g. "1-minute bars, partitioned per (coin, month)". |
| 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 / asset key, e.g. `gold_ohlcv_1m`. |
| 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.
get_download_url ~91
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.
| Name | Type | Req | Description |
|---|---|---|---|
| asset | string | yes | — |
| coin | string | — | Coin symbol, e.g. `BTC`. Omit for market-wide datasets that have no coin dimension. |
| month | string | yes | Partition month, `YYYY-MM`. |
| Name | Type | Req | Description |
|---|---|---|---|
| expires_at | string | yes | RFC3339 expiry. |
| url | string | yes | Presigned Tigris URL for the full parquet partition. |
No examples provided.
list_datasets ~36
List the available Tessera Analytics gold datasets with summaries and the plan (free/pro) each requires. Call first to discover what's available.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| datasets | array | yes | — |
| generated_at | string | yes | — |
| your_tier | string | yes | The caller's own plan (`free` or `pro`). Datasets whose `tier` is `pro` while this is `free` are visible for discovery but require an upgrade to read. |
No examples provided.
list_partitions ~275
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.
| Name | Type | Req | Description |
|---|---|---|---|
| asset | string | yes | Dataset name, e.g. `gold_funding_1h`. |
| coin | string | — | Optional: only partitions for this coin, e.g. `BTC`. |
| limit | integer | — | Full mode only (`summary=false`): max partitions to return (clamped to 1000). Defaults to 200. |
| month | string | — | Optional: only partitions for this month, `YYYY-MM`. |
| offset | integer | — | Full mode only (`summary=false`): partitions to skip, for pagination. Defaults to 0; pass the previous response's `next_offset` for the next page. |
| summary | boolean | — | Return compact coverage stats (coin/month counts, range, totals) instead of every `(coin, month)` row. Defaults to **true** — the full cross-product is hundreds of rows for some datasets. Set `false`… |
| Name | Type | Req | Description |
|---|---|---|---|
| asset | string | yes | — |
| generated_at | string | yes | — |
| next_offset | integer | — | Full mode only: pass as `offset` to fetch the next page, or null when the listing is exhausted. |
| note | string | — | Set when the dataset exists but requires a plan the caller doesn't have. |
| partitions | array | yes | Present in full mode (`summary=false`): this page of partitions. Empty in summary mode. |
| summary | — | — | Present in summary mode (the default): compact coverage stats. |
| total_matching | integer | yes | Full mode only: total partitions matching the filter, before pagination. |
| your_tier | string | yes | — |
No examples provided.
query_cross_section ~328
Rank all coins for one day of a daily cross-section dataset (one row per coin per day, e.g. gold_positioning_funding_factors_1d) in a single call. Pass `order_by` (a numeric column), `day` (YYYY-MM-DD or "latest"), optional `top_n` (default 20), `descending` (default true), `columns`, and `coins`. Replaces fanning out read_dataset per coin. For a single coin's series use read_dataset.
| Name | Type | Req | Description |
|---|---|---|---|
| asset | string | yes | Dataset name. Must be a daily coin cross-section (one row per coin per `day`), e.g. `gold_positioning_funding_factors_1d`. |
| coins | array | — | Optional: restrict to these coins. Coins outside the caller's plan are dropped. Omit to rank every coin the plan allows. |
| columns | array | — | Extra columns to include per row (besides `coin`, `day`, and `order_by`). Omit to return every column. |
| day | string | yes | UTC day to rank, `YYYY-MM-DD`, or `"latest"` for the newest available day. |
| descending | boolean | — | Sort direction. Defaults to true — highest `order_by` first. |
| order_by | string | yes | Numeric column to rank coins by, e.g. a `factor_*` column. Call `describe_dataset` to see the options. |
| top_n | integer | — | Max coins to return (clamped to 1000). Defaults to 20. |
| Name | Type | Req | Description |
|---|---|---|---|
| asset | string | yes | — |
| coin_count | integer | yes | Number of coins ranked (rows returned). |
| columns | array | yes | Columns present in each returned row. |
| day | string | yes | The day actually ranked (resolved when `day="latest"`), `YYYY-MM-DD`. |
| descending | boolean | yes | — |
| note | string | — | Advisories: latest-day resolution, coins with no row that day (coverage varies by day), coins excluded for a null/non-numeric `order_by`, and any partitions skipped on a read error. |
| order_by | string | yes | — |
| rows | array | yes | One object per coin, ranked; each includes `coin`, `day`, `order_by` and any requested `columns`. |
No examples provided.
read_dataset ~247
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.
| Name | Type | Req | Description |
|---|---|---|---|
| asset | string | yes | Dataset name, e.g. `gold_positioning_funding_factors_1d`. |
| coin | string | — | Coin symbol, e.g. `BTC`. Omit for market-wide datasets (e.g. `gold_wallet_flow_1mo`) that have no coin dimension. |
| columns | array | — | Columns to return. Strongly recommended — omitting returns every column, which is wide for some datasets. Use `describe_dataset` to see columns. |
| limit | integer | — | Max rows to return (clamped to 1000). Defaults to the latest 200. |
| month | string | yes | Partition month, `YYYY-MM`. |
| order | — | — | Which end of the partition to read. `latest` (default) returns the most recent rows — usually what you want for a "what's the current…" question. |
| Name | Type | Req | Description |
|---|---|---|---|
| asset | string | yes | — |
| coin | string | — | Coin symbol; absent for market-wide datasets. |
| columns | array | yes | The columns actually returned, in order. |
| month | string | yes | — |
| note | string | — | Guidance when the result was capped, or other advisories. |
| row_count | integer | yes | — |
| rows | array | yes | One JSON object per row. |
| total_rows_in_partition | integer | yes | Total rows in the partition (before the row cap / limit). |
| truncated | boolean | yes | True when `total_rows_in_partition` exceeds the rows returned. |
No examples provided.