Tessera Analytics

Created By
3 days ago
Tessera Analytics turns raw Hyperliquid DEX trade data into clean, analysis-ready datasets and serves them over MCP. Browse the catalog, inspect column dictionaries, and read gold datasets — 1-minute OHLCV, hourly funding rates, and derivatives positioning — or run cross-sectional queries across the coin universe. Includes quantitative funding/realized-volatility and wallet-behaviour forecasts. Free tier covers OHLCV and the funding forecast on BTC, ETH, SOL, and HYPE; Pro unlocks funding, positioning, HIP-3 markets, and the full coin universe.
Overview
	<!-- Favicons -->
	<link rel="icon" href="./favicon.ico" sizes="32x32" />
	<link rel="icon" href="./favicon.svg" type="image/svg+xml" />
	<link rel="apple-touch-icon" href="./apple-touch-icon.png" />

	<!-- title, description + canonical are per-page (svelte:head). Open Graph /
	     Twitter tags are emitted once by <Seo> in the root +layout.svelte,
	     driven by page.data.meta with site defaults — see $lib/seo.ts. Keeping
	     them out of here guarantees exactly one of each property so per-page
	     overrides are honoured. -->

	<link href="./_app/immutable/entry/start.BBGsO4lV.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/Cu4Sq0y7.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/C--if0Cq.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/DDcdGUOQ.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/OA8UcISh.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/9jCRIOPm.js" rel="modulepreload">
	<link href="./_app/immutable/entry/app.BbZgdUBZ.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/C1FmrZbK.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/DkRQccgZ.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/DoQXDt6e.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/C20WhMb8.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/CDs3mRF_.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/DbYzANqX.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/BHV2v6Uf.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/DNAPQNej.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/CD_Tr_Jq.js" rel="modulepreload">
	<link href="./_app/immutable/nodes/0.D9buckMM.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/RnF8O7qn.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/Bz-Hk2KL.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/DDmuCwZD.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/FTMsDSRq.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/6CHuagz6.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/84_Gf4tm.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/By5_t60L.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/CT2tKW37.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/DhaDs5YL.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/CO2Itu5d.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/BTV-Kwzx.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/Z-G-lnDE.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/Dwjep2xL.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/kKGMRTh4.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/D-I75ZP0.js" rel="modulepreload">
	<link href="./_app/immutable/nodes/14.BBeg1BNP.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/Yepf5Tyz.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/Bo64Esu1.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/BEH7LFWW.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/CPv6mVyv.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/DKCC8gPu.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/CqfozFHK.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/Bp45ypXP.js" rel="modulepreload">
	<link href="./_app/immutable/chunks/CNVCects.js" rel="modulepreload">
	<!--gsrl61--><meta property="og:type" content="website"/> <meta property="og:url" content="https://tesseralytics.dev/mcp-server"/> <meta property="og:title" content="Tessera Analytics — Hyperliquid DEX data, as an API"/> <meta property="og:description" content="Clean, query-ready OHLCV, funding and positioning datasets built from raw Hyperliquid trade data — downloadable as Parquet over a REST API."/> <meta property="og:image" content="https://tesseralytics.dev/og.png"/> <meta property="og:image:width" content="1200"/> <meta property="og:image:height" content="630"/> <!--[-1--><!--]--> <meta name="twitter:card" content="summary_large_image"/> <meta name="twitter:title" content="Tessera Analytics — Hyperliquid DEX data, as an API"/> <meta name="twitter:description" content="Clean, query-ready OHLCV, funding and positioning datasets built from raw Hyperliquid trade data — downloadable as Parquet over a REST API."/> <meta name="twitter:image" content="https://tesseralytics.dev/og.png"/><!----><!--1e7ozup--><meta name="description" content="Connect Tessera Analytics' Hyperliquid derivatives data to Claude and other MCP clients. Explore the catalog and read funding, positioning, and funding/RV + wallet forecasts conversationally — authed with your API key."/> <link rel="canonical" href="https://tesseralytics.dev/mcp-server"/><!----><title>Tessera Analytics — MCP Server</title>
	<link href="./_app/immutable/assets/0.DGp9VNJW.css" rel="stylesheet">
</head>
<body data-sveltekit-preload-data="hover">
	<div style="display: contents"><!--[--><!--[0--><!--[--><!----> <div class="flex min-h-screen flex-col"><header class="border-border bg-background/80 supports-[backdrop-filter]:bg-background/60 sticky top-0 z-50 border-b backdrop-blur"><div class="mx-auto flex h-14 max-w-[1100px] items-center justify-between gap-4 px-6"><a class="flex items-center gap-2 no-underline" href="/"><svg class="h-6 w-6" viewBox="0 0 187.7 215.74" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><g fill="#6084c3"><polygon points="87.26 212.47 .89 162.59 29.69 112.71 32.45 107.9 53.58 71.31 82.22 79.72 82.22 79.75 83.35 80.08 71.42 118.91 67.74 130.83 67.74 130.86 67.72 130.86 58.15 161.99 58.68 162.9 59.21 163.79 87.26 212.47"></polygon><polygon points="26.92 107.9 0 154.51 0 61.28 26.92 107.9"></polygon><polygon points="187.7 61.28 187.7 154.51 161.5 109.1 160.8 107.9 187.7 61.28"></polygon><polygon points="186.81 162.59 94.74 215.74 63.34 161.41 72.31 132.25 72.67 131.1 97.19 138.6 100.68 139.65 104.12 140.66 136.38 150.16 158.01 112.71 158.71 113.91 186.81 162.59"></polygon><polygon points=".87 53.15 92.94 0 124.33 54.33 115.37 83.49 115.01 84.64 90.49 77.14 87 76.09 83.56 75.08 51.3 65.58 29.66 103.03 28.97 101.83 .87 53.15"></polygon></g><polygon fill="currentColor" points="100.44 3.32 186.81 53.21 158.01 103.09 155.25 107.9 134.12 144.49 105.49 136.07 105.49 136.05 104.36 135.71 116.28 96.89 119.96 84.96 119.96 84.94 119.98 84.94 129.55 53.81 129.02 52.89 128.49 52.01 100.44 3.32"></polygon></svg><!----> <span class="text-lg font-bold tracking-tight">Tessera Analytics</span></a> <nav class="hidden items-center gap-1 md:flex"><!--[--><a href="/datasets" class="rounded-md px-3 py-1.5 text-sm transition-colors text-muted-foreground hover:text-foreground">Datasets</a><a href="/mcp-server" class="rounded-md px-3 py-1.5 text-sm transition-colors text-foreground font-medium">MCP</a><a href="/pricing" class="rounded-md px-3 py-1.5 text-sm transition-colors text-muted-foreground hover:text-foreground">Pricing</a><a href="/api-docs" class="rounded-md px-3 py-1.5 text-sm transition-colors text-muted-foreground hover:text-foreground">API Docs</a><a href="/sdks" class="rounded-md px-3 py-1.5 text-sm transition-colors text-muted-foreground hover:text-foreground">SDKs</a><a href="/blog" class="rounded-md px-3 py-1.5 text-sm transition-colors text-muted-foreground hover:text-foreground">Blog</a><a href="/faq" class="rounded-md px-3 py-1.5 text-sm transition-colors text-muted-foreground hover:text-foreground">FAQ</a><!--]--></nav> <div class="flex items-center gap-2"><div class="hidden items-center gap-2 md:flex"><!--[-1--><!--[0--><a data-slot="button" class="focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-lg border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-3 active:not-aria-[haspopup]:translate-y-px aria-invalid:ring-3 [&amp;_svg:not([class*='size-'])]:size-4 group/button inline-flex shrink-0 items-center justify-center whitespace-nowrap transition-all outline-none select-none disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:shrink-0 hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2" href="/login"><!---->Sign in<!----></a><!--]--><!----> <!--[0--><a data-slot="button" class="focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-lg border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-3 active:not-aria-[haspopup]:translate-y-px aria-invalid:ring-3 [&amp;_svg:not([class*='size-'])]:size-4 group/button inline-flex shrink-0 items-center justify-center whitespace-nowrap transition-all outline-none select-none disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:shrink-0 bg-primary text-primary-foreground [a]:hover:bg-primary/80 h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2" href="/signup"><!---->Get API key<!----></a><!--]--><!----><!--]--></div> <div class="md:hidden"><!--[--><!--[--><!--[--><!--[--><!--$s1--><!--[0--><!--[-1--><button data-slot="sheet-trigger" class="focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-lg border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-3 active:not-aria-[haspopup]:translate-y-px aria-invalid:ring-3 [&amp;_svg:not([class*='size-'])]:size-4 group/button inline-flex shrink-0 items-center justify-center whitespace-nowrap transition-all outline-none select-none disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:shrink-0 hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground size-8" type="button" aria-label="Open menu" id="bits-s1" aria-haspopup="dialog" aria-expanded="false" data-dialog-trigger="" data-state="closed"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="lucide-icon lucide lucide-menu"><!--[--><!----><path d="M4 5h16"><!----></path><!----><!----><path d="M4 12h16"><!----></path><!----><!----><path d="M4 19h16"><!----></path><!----><!--]--><!----></svg><!----></button><!--]--><!----><!--]--><!--]--><!--]--> <!--[--><!--[--><!--[-1--><!--]--><!--]--><!--]--><!----><!--]--><!--]--></div></div></div></header><!----> <div class="flex-1"><!--[-1--><!--[--><main><section class="px-6 pt-16 pb-8 text-center"><!----><span data-slot="badge" class="h-5 gap-1 rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&amp;>svg]:size-3! focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive group/badge inline-flex w-fit shrink-0 items-center justify-center overflow-hidden whitespace-nowrap transition-colors focus-visible:ring-[3px] [&amp;>svg]:pointer-events-none bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80 mb-4"><!---->Model Context Protocol<!----><!----></span><!----><!----> <h1 class="text-4xl font-bold tracking-tight sm:text-5xl">Tessera Analytics MCP server</h1> <p class="text-muted-foreground mx-auto mt-4 max-w-2xl text-lg">Point Claude — or any MCP client — at Tessera Analytics' Hyperliquid datasets and explore them
		in plain language. Discover the catalog, read the data dictionary, and pull actual rows of
		funding, positioning, and the funding/RV and wallet forecasts, all authed with your API key.</p> <div class="mt-6 flex flex-wrap justify-center gap-3"><!--[0--><a data-slot="button" class="focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-lg border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-3 active:not-aria-[haspopup]:translate-y-px aria-invalid:ring-3 [&amp;_svg:not([class*='size-'])]:size-4 group/button inline-flex shrink-0 items-center justify-center whitespace-nowrap transition-all outline-none select-none disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:shrink-0 bg-primary text-primary-foreground [a]:hover:bg-primary/80 h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2" href="/account"><!---->Get an API key<!----></a><!--]--><!----> <!--[0--><a data-slot="button" class="focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-lg border bg-clip-padding text-sm font-medium focus-visible:ring-3 active:not-aria-[haspopup]:translate-y-px aria-invalid:ring-3 [&amp;_svg:not([class*='size-'])]:size-4 group/button inline-flex shrink-0 items-center justify-center whitespace-nowrap transition-all outline-none select-none disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:shrink-0 border-border bg-background hover:bg-muted hover:text-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 aria-expanded:bg-muted aria-expanded:text-foreground h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2" href="/datasets"><!---->Browse the catalog<!----></a><!--]--><!----></div></section> <div class="mx-auto flex max-w-[860px] flex-col gap-10 px-6 py-8"><section><h2 class="mb-3 text-xl font-semibold tracking-tight">What it is</h2> <p class="text-muted-foreground">The <a class="text-primary underline-offset-4 hover:underline" href="https://modelcontextprotocol.io" rel="noopener noreferrer">Model Context Protocol</a> lets an AI assistant call external tools. Our hosted MCP server exposes Tessera Analytics' gold
			datasets as a small set of tools, so instead of writing download scripts you can just ask — <em>"what's the latest funding-innovation forecast for BTC?"</em> — and the model calls <code class="font-mono text-xs">read_dataset</code> and reasons over the rows. It's a single
			hosted endpoint (<code class="font-mono text-xs">https://tesseralytics.dev/mcp</code>), authed with the same API
			key you use for the REST API.</p></section> <section><h2 class="mb-3 text-xl font-semibold tracking-tight">Installation</h2> <p class="text-muted-foreground mb-4">First, <a class="text-primary underline-offset-4 hover:underline" href="/account">create an API key</a> on your account page. Then wire it into your client — replace <code class="font-mono text-xs">YOUR_TESSERA_API_KEY</code> with your key.</p> <div class="flex flex-col gap-6"><div data-slot="card" data-size="default" class="ring-foreground/10 bg-card text-card-foreground group/card flex flex-col gap-4 overflow-hidden rounded-xl py-4 text-sm ring-1 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl"><div data-slot="card-header" class="group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3"><div data-slot="card-title" class="text-base leading-snug font-medium group-data-[size=sm]/card:text-sm"><!---->Claude Code<!----></div><!----> <p data-slot="card-description" class="text-muted-foreground text-sm"><!---->One command — native streamable-HTTP transport with a header.<!----></p><!----><!----></div><!----> <div data-slot="card-content" class="px-4 group-data-[size=sm]/card:px-3"><div class="group bg-card border-border relative rounded-lg border"><button type="button" class="text-muted-foreground hover:text-foreground hover:bg-accent absolute top-2 right-2 rounded-md p-1.5 opacity-0 transition group-hover:opacity-100 focus-visible:opacity-100" aria-label="Copy code"><!--[-1--><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="lucide-icon lucide lucide-copy size-4"><!--[--><!----><rect width="14" height="14" x="8" y="8" rx="2" ry="2"><!----></rect><!----><!----><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"><!----></path><!----><!--]--><!----></svg><!--]--></button> <pre class="tessera-code overflow-x-auto p-4 text-left text-sm"><code class="hljs language-bash"><!---->claude mcp add --transport http tessera https://tesseralytics.dev/mcp \

--header "Authorization: Bearer $TESSERA_API_KEY"

Clients with native header auth

For MCP clients that accept a remote URL plus custom headers, add this to your MCP config.

{
"mcpServers": {
"tessera": {
"type": "http",
"url": "https://tesseralytics.dev/mcp",
"headers": {
"Authorization": "Bearer YOUR_TESSERA_API_KEY"
}
}
}
}
Claude Desktop (via mcp-remote)

Some desktop clients don't yet send custom headers to remote servers. The mcp-remote bridge proxies the connection and injects your key. Add this to claude_desktop_config.json, then restart the app.

{
"mcpServers": {
"tessera": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://tesseralytics.dev/mcp",
"--header", "Authorization: Bearer ${TESSERA_API_KEY}"
],
"env": {
"TESSERA_API_KEY": "YOUR_TESSERA_API_KEY"
}
}
}
}

Tools

ToolArgumentsWhat it does
list_datasetsDiscover every gold dataset with a one-line summary and the plan (free/pro) each requires.
describe_datasetassetFull data dictionary for one dataset: every column’s type, nullability and plain-English meaning.
list_partitionsasset, coin?Available (coin, month) partitions you can read, filtered to your plan.
read_datasetasset, coin, month, columns?, limit?, order?Read actual data rows. Defaults to the latest 200; pass columns + limit (max 1000) to stay in context.
get_download_urlasset, coin, monthA short-lived link to the full parquet partition — the bulk escape hatch beyond read_dataset.

Example prompts

Once connected, drive it in natural language. A few things to try:

Free vs Pro

Any valid API key can use the MCP server. A free key reads gold_ohlcv_1m and the funding/RV forecast (gold_positioning_funding_factors_1d) for BTC, ETH, SOL and HYPE — enough to explore the forecast end-to-end.

Pro ($50/mo) unlocks every coin (incl. HIP-3), the raw funding and positioning datasets, and the wallet-behaviour factors. Discovery tools show the whole catalog regardless of plan; reading a slice outside your plan returns a clear "requires Pro" message. See Pricing.

		<script>
			{
				__sveltekit_13qqchq = {
					base: new URL(".", location).pathname.slice(0, -1)
				};

				const element = document.currentScript.parentElement;

				Promise.all([
					import("./_app/immutable/entry/start.BBGsO4lV.js"),
					import("./_app/immutable/entry/app.BbZgdUBZ.js")
				]).then(([kit, app]) => {
					kit.start(app, element, {
						node_ids: [0, 14],
						data: [null,null],
						form: null,
						error: null
					});
				});
			}
		</script>
	</div>
</body>

Server Config

{
  "mcpServers": {
    "tessera": {
      "type": "http",
      "url": "https://tesseralytics.dev/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_TESSERA_API_KEY"
      }
    }
  }
}
Project Info
Created At
3 days ago
Updated At
3 days ago
Author Name
-
Star
-
Language
-
License
-
Category

Recommend Servers

View All
Tavily Mcp
@tavily-ai

JavaScript
a year ago