Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

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.

0 this week 69 Trust /100
Trust breakdown (7 categories)

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
Transport & Reachability100
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
Install

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

# add to Claude Code
claude mcp add --transport http dev-tesseralytics-hyperliquid-data 'https://tesseralytics.dev/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "dev-tesseralytics-hyperliquid-data": {
      "url": "https://tesseralytics.dev/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "dev-tesseralytics-hyperliquid-data": {
      "type": "http",
      "url": "https://tesseralytics.dev/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.dev-tesseralytics-hyperliquid-data]
url = "https://tesseralytics.dev/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "dev-tesseralytics-hyperliquid-data": {
      "type": "remote",
      "url": "https://tesseralytics.dev/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add dev-tesseralytics-hyperliquid-data --url 'https://tesseralytics.dev/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  dev-tesseralytics-hyperliquid-data:
    url: "https://tesseralytics.dev/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "dev-tesseralytics-hyperliquid-data": {
      "Transport": "http",
      "Url": "https://tesseralytics.dev/mcp"
    }
  }
}
# add to Vellum
assistant mcp add dev-tesseralytics-hyperliquid-data -t streamable-http -u 'https://tesseralytics.dev/mcp'
// mcp.json
{
  "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.

Changelog

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
Diagnostics

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
MCP tools · 9 exposed · ~1,637 tokens

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 →

Tool Tokens
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.

NameTypeReqDescription
assetstringyesDataset name, as returned by `list_datasets`.
NameTypeReqDescription
cadencestringyesHow frequently the data is sampled, e.g. "1-minute bars".
categorystringyesPresentation category, e.g. `raw-tiles` or `forecast-layer`.
column_countintegeryesNumber of documented columns.
column_groupsarrayyesColumns, grouped for presentation, in schema order.
descriptionstringyesLonger prose — the dictionary page header.
direct_answerstring–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…
keywordsarray–Per-dataset discovery keywords (schema.org keywords on the web).
namestringyesDataset name, exactly as `list_datasets` reports it.
notestring–Optional "how to use this" callout.
seo_titlestring–Keyword-first SEO title tag (web `<title>`). Defaulted so older snapshots without the field still deserialize.
summarystringyesOne-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.
tierstringyesDisplay tier: `free` or `pro`. Re-derived from `policy.rs` on read, so it always matches actual entitlement regardless of the on-disk value.
titlestringyesHuman-friendly title, e.g. "Order-flow OHLCV (1-minute)".
use_casestring–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.

NameTypeReqDescription
benchmarkstring–The market whose funding is the yardstick. Defaults to ETH.
coinsarray–Restrict to these markets.
metricstring–`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.
scopestring–`crypto` (the default), `hip3`, or `all`.
top_ninteger–Markets per ranked list, 1..50. Defaults to 10.
window_daysinteger–Length of the trailing window in days, 1..365. Defaults to 7.
NameTypeReqDescription
as_ofstringyes–
benchmarkstringyes–
benchmark_valuenumberyesThe benchmark's own value for the metric.
coin_countintegeryesHow many markets had a funding reading in the window; markets without one are excluded from both lists and from this count.
metricstringyes–
notesarrayyes–
scopestringyes–
sourcestringyes–
top_negativearrayyesThe largest divergences toward the benchmark's opposite, most extreme first.
top_positivearrayyesThe largest divergences away from the benchmark, most extreme first.
truncatedbooleanyes–
window_daysintegeryes–

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.

NameTypeReqDescription
daystring–The day to describe, `YYYY-MM-DD` or `latest`.
scopestring–`crypto` (the default), `hip3`, or `all`.
top_ninteger–Per-market detail is off by default; passing a value (1..50) returns that many markets, listed by name, alongside the summary.
NameTypeReqDescription
as_ofstringyesThe day the per-population counts describe.
coin_count_cryptointegeryesMarkets without a deployer prefix on the described day, whatever scope was asked for.
coin_count_hip3integeryesMarkets with a deployer prefix on the described day.
coin_count_totalintegeryesDistinct markets in scope over the whole range.
coinsarray–Per-market detail, only when requested. Markets are listed by name.
coverage_from_manifestbooleanyesTrue when the day range came from the published coverage manifest, false when it had to be read from the data itself.
day_countintegeryesDistinct days in the range.
max_complete_daystringyesThe newest complete day — the day `latest` resolves to.
min_daystringyesThe 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_coveredintegeryes–
notesarrayyes–
row_countintegeryesRows in scope over the whole range.
rows_per_market_daynumberyes`row_count` divided by (days × markets) — how densely the range is populated. Below 1.0 means some markets are missing some days.
scopestringyes–
sourcestringyes–
truncatedbooleanyesTrue 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.

NameTypeReqDescription
datasetsarrayyes–
generated_atstringyesWhen this catalog was produced.
your_tierstringyesThe 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.

NameTypeReqDescription
fieldsarrayyesEvery field the query tools accept.
generated_atstringyesWhen this vocabulary was produced.
notesarrayyes–

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.

NameTypeReqDescription
coinsarrayyesThe markets to snapshot, 1..25.
NameTypeReqDescription
as_ofstringyesWhen the snapshot was taken, UTC.
coin_countintegeryes–
notesarrayyes–
rowsarrayyes–
sourcestringyes`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.

NameTypeReqDescription
coinsarray–Restrict to these markets. A market outside your plan's coverage is ignored rather than widening the answer.
columnsarray–Fields to return per market, from `list_fields`. `coin` is always included. Defaults to price, traded notional and the day's return.
daystring–The day to rank, `YYYY-MM-DD`, or `latest` (the default: the most recent complete day).
descendingboolean–Rank largest first (the default). Set false for the smallest.
min_usd_volume_7d_avgnumber–Drop markets whose average daily traded notional over the window is below this value, so dust cannot top a ranking.
order_bystring–The field to rank by. Need not appear in `columns`. Defaults to the day's traded notional.
scopestring–`crypto` (the default), `hip3`, or `all`. Restricted markets track an underlying that closes, so their flow is not comparable on a weekend.
statstring–`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_ninteger–How many markets to return, 1..50. Defaults to 20.
window_daysinteger–Recompute the trailing-window fields over this many days, 1..365 (default 7). The response always states the window it used.
NameTypeReqDescription
as_ofstringyesThe UTC day the answer describes.
coin_countintegeryesThe number of markets in your visible slice on that day — the denominator every statistic and floor below is measured against.
notesarrayyes–
ranked_countintegeryesHow many markets had a value for the ranked field and passed the floor.
row_countintegeryesHow many markets are in `rows`.
rowsarrayyes–
scopestringyesThe market population the ranking ran over.
sourcestringyes`tessera_daily` — the answer is from completed days, not the live market.
statstringyesThe ranking treatment actually applied: `raw`, `percentile` or `zscore`.
truncatedbooleanyesTrue 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.

NameTypeReqDescription
coinsarrayyesThe markets to return, 1..10.
columnsarray–Fields to return per row, from `list_fields`. `day` and `coin` are always included.
ending_daystring–The last day to include, `YYYY-MM-DD` or `latest`.
scopestring–`crypto` (the default), `hip3`, or `all`.
window_daysinteger–Length of the trailing window in days, 1..365. Defaults to 7.
NameTypeReqDescription
as_ofstringyesThe last day in the series.
coin_countintegeryesThe markets the series covers.
notesarrayyes–
row_countintegeryes–
rowsarrayyes–
scopestringyes–
sourcestringyes–
truncatedbooleanyes–
window_daysintegeryesThe 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.

NameTypeReqDescription
coinsarray–Restrict to these markets.
columnsarray–Fields to return per market, from `list_fields`.
conditionsarrayyesConditions, all of which must hold. A market that does not report a field never satisfies a condition on it.
daystring–The day to screen, `YYYY-MM-DD` or `latest`.
descendingboolean–Rank largest first (the default).
max_resultsinteger–How many markets to return, 1..50. Defaults to 25.
min_usd_volume_7d_avgnumber–Drop markets below this average daily traded notional over the window.
order_bystring–The field to rank the matches by. Defaults to the day's traded notional.
scopestring–`crypto` (the default), `hip3`, or `all`.
NameTypeReqDescription
as_ofstringyes–
coin_countintegeryesThe number of markets in your visible slice on that day — the denominator the percentage conditions and the floor were measured against.
matched_countintegeryesHow many markets met every condition.
notesarrayyes–
row_countintegeryes–
rowsarrayyes–
scopestringyes–
sourcestringyes–
truncatedbooleanyes–

No examples provided.

Common questions

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.