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 OCT 15

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

0 this week 68 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 Usability64
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 3094 tokens (~343/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 Management38
  • Stability check failed: schema churn in the 30 days we've observed: 3 tool removals, 0 breaking changes, 0 auth/transport breaks, 7 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.

  • 15 Oct 26 0
    • Tool “funding_divergence” rewrote its description, which is the text the model reads security
    • “funding_divergence” reworded the description of “metric” cosmetic
  • 14 Oct 26 0
    • Tool “funding_divergence” rewrote its description, which is the text the model reads security
    • “funding_divergence” reworded the description of “metric” cosmetic
  • 10 Oct 26 0
    • Schema quality: 272 → 314 ▼ functional
  • 3 Oct 26 −1
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “funding_divergence” rewrote its description, which is the text the model reads security
    • Tool “get_universe” rewrote its description, which is the text the model reads security
    • Tool “list_fields” rewrote its description, which is the text the model reads security
    • Tool “live_market” rewrote its description, which is the text the model reads security
    • Tool “query_cross_section” rewrote its description, which is the text the model reads security
    • Tool “query_series” rewrote its description, which is the text the model reads security
    • Tool “screen_universe” rewrote its description, which is the text the model reads security
    • Schema quality: 204 → 272 ▼ functional
    • “funding_divergence” added an optional parameter “bar” cosmetic
    • “get_universe” added an optional parameter “bar” cosmetic
    • “query_cross_section” added an optional parameter “bar” cosmetic
    • “query_series” added an optional parameter “bar” cosmetic
    • “screen_universe” added an optional parameter “bar” cosmetic
    • “funding_divergence” reworded the description of “metric” cosmetic
    • “get_universe” reworded the description of “day” cosmetic
    • “query_cross_section” reworded the description of “columns” cosmetic
    • “query_cross_section” reworded the description of “day” cosmetic
    • “query_cross_section” reworded the description of “order_by” cosmetic
    • “query_series” reworded the description of “columns” cosmetic
    • “query_series” reworded the description of “ending_day” cosmetic
    • “query_series” reworded the description of “window_days” cosmetic
    • “screen_universe” reworded the description of “day” cosmetic
    • “screen_universe” reworded the description of “order_by” cosmetic
  • 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
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 15 Oct 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 · ~2,824 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 ~592

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.

NameTypeReqDescription
barstring–`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:0…
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 funding over the window minus the benchmark's; `cum_funding_spread` ranks the **spread of the cumulative funding level** over the window — its high minus…
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–
barstringyesThe grain this answer was computed at: `1d` or `1h`.
benchmarkstringyes–
benchmark_valuenumberyesThe benchmark's own value for the metric.
eligible_countintegeryesMarkets left after your explicit market filter.
matched_countintegeryesMarkets that had a funding reading in the window. Markets without one are excluded from both lists and from this count — a missing reading must never appear as an extreme.
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–
visible_countintegeryesMarkets in your plan's slice on this interval, before any filter you passed.
window_daysintegeryes–

No examples provided.

get_universe ~435

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.

NameTypeReqDescription
barstring–`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:0…
daystring–The day or hour to describe: `YYYY-MM-DD` or `latest` at `bar: 1d`, a completed `YYYY-MM-DDTHH:00:00Z` (the hour that *ended* there) or `latest` at `bar: 1h`.
daysinteger–How many days of completed intervals the range counts cover, 1..30. Defaults to 7 at `bar: 1h` — the hourly source publishes one object per completed hour, so an unbounded inventory would open every…
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 interval the per-population counts describe.
barstringyesThe grain this answer was computed at: `1d` or `1h`.
coinsarray–Per-market detail, only when requested. Markets are listed by name.
coverage_from_manifestbooleanyesTrue when the interval range came from the published coverage manifest, false when it had to be read from the data or the object listing itself.
eligible_countintegeryesDistinct markets in scope over the counted range.
interval_countintegeryesDistinct intervals in the range the counts below cover.
interval_endstringyesThe newest interval the counts below cover — the same interval `as_of` describes, since the counts are the history behind those populations.
interval_startstringyesThe oldest interval the counts below cover: the published range start, the caller's history floor when the plan clips it, or the start of the window `days` bounded them to. The response says which, i…
market_count_cryptointegeryesMarkets without a deployer prefix on the described interval, whatever scope was asked for.
market_count_hip3integeryesMarkets with a deployer prefix on the described interval.
market_count_totalintegeryesDistinct markets in scope over the counted range.
matched_countintegeryesMarkets the counted range actually represents — the ones with at least one row in it, which is every market in `eligible_count` at the described interval.
months_coveredintegeryes–
notesarrayyes–
row_countintegeryesRows in scope over the counted range.
rows_per_market_intervalnumberyes`row_count` divided by (intervals × markets) — how densely the counted range is populated. Below 1.0 means some markets are missing some intervals.
scopestringyes–
sourcestringyes–
truncatedbooleanyesTrue when more markets exist than the detail list returned.
visible_countintegeryesMarkets in your plan's slice on the described interval, before any scope class is applied.

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 ~92

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.

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 ~96

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.

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 ~645

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.

NameTypeReqDescription
barstring–`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:0…
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 interval's return.
daystring–The 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…
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 interval'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 (`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.
barstringyesThe grain this answer was computed at: `1d` or `1h`.
eligible_countintegeryesMarkets left after your explicit market filter and any traded-notional floor — the population the percentile, z-score and deciles were computed over.
matched_countintegeryesMarkets that reported the ranked field and passed every filter. This is the count the rows are drawn from.
notesarrayyes–
row_countintegeryesHow many markets are in `rows`.
rowsarrayyes–
scopestringyesThe market population the ranking ran over.
sourcestringyes`tessera_daily` or `tessera_hourly` — the clock this answer came from, never the live market.
statstringyesThe ranking treatment actually applied: `raw`, `percentile` or `zscore`.
truncatedbooleanyesTrue when `matched_count` exceeds `row_count`.
visible_countintegeryesMarkets 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.

No examples provided.

query_series ~389

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.

NameTypeReqDescription
barstring–`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:0…
coinsarrayyesThe markets to return, 1..10.
columnsarray–Fields to return per row, from `list_fields`. The interval column (`day` at 1d, `hour` at 1h) and `coin` are always included.
ending_daystring–The last interval to include: `YYYY-MM-DD` or `latest` at `bar: 1d`, a completed `YYYY-MM-DDTHH:00:00Z` (the hour that *ended* there) or `latest` at `bar: 1h`.
scopestring–`crypto` (the default), `hip3`, or `all`.
window_daysinteger–Length of the trailing window in days, 1..365. Defaults to 7. At `bar: 1h` one window day is 24 hourly rows.
NameTypeReqDescription
as_ofstringyesThe last interval in the series.
barstringyesThe grain this answer was computed at: `1d` or `1h`.
eligible_countintegeryesThe markets you asked for, after the plan's slice and your filter were intersected.
matched_countintegeryesHow many of the requested markets the series actually has rows for — less than `eligible_count` when one of them has no data in the window.
notesarrayyes–
row_countintegeryes–
rowsarrayyes–
scopestringyes–
sourcestringyes–
truncatedbooleanyes–
visible_countintegeryesMarkets in your plan's slice with a row on the last interval.
window_daysintegeryesThe window the trailing fields were computed over, in days.

No examples provided.

screen_universe ~447

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.

NameTypeReqDescription
barstring–`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:0…
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 or hour to screen: `YYYY-MM-DD` or `latest` at `bar: 1d`, a completed `YYYY-MM-DDTHH:00:00Z` (the hour that *ended* there) or `latest` at `bar: 1h`.
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 interval's traded notional.
scopestring–`crypto` (the default), `hip3`, or `all`.
NameTypeReqDescription
as_ofstringyes–
barstringyesThe grain this answer was computed at: `1d` or `1h`.
eligible_countintegeryesMarkets left after your explicit market filter and any traded-notional floor — the population the percentage conditions were measured against.
matched_countintegeryesMarkets that met every condition.
notesarrayyes–
row_countintegeryes–
rowsarrayyes–
scopestringyes–
sourcestringyes–
truncatedbooleanyes–
visible_countintegeryesMarkets in your plan's slice with a row on this interval, before any filter you passed.

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 68 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: query_cross_section, query_series, describe_dataset, funding_divergence, get_universe, and 4 more. Their descriptions and schemas cost roughly 2,824 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 15 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.