MCP playground

Ask the intelligence layer a real question

These are not screenshots. Each question is one real tool call to the shipped MCP server at tesseralytics.dev/mcp — the same endpoint your agent connects to.

7 questions, each a real call to /mcp

tessera.mcp · playground anonymous trial

No key, no signup — these run on the anonymous trial

Every market at the daily grain over the trailing 7 days, ranked lists up to 25 rows, 12 calls an hour and 20 a day from this address. Each answer names its own limits; a free key raises the lists to 100 rows and Pro adds the hourly grain and full history.

  1. query_cross_section

    Which markets are paying the most to hold a long?

    Markets trading at least $5M a day, ranked by mean hourly funding on the last complete day and shown as an annualised rate. Funding is a step function, not a smooth score: the venue's neutral print is about 11%/yr and a large block of markets prints exactly that, so the list ties from the fifth row down. Only the head is actually crowded — which is the finding, not a gap in the data.

    Run it yourself
    curl -sS https://tesseralytics.dev/mcp \
      -H "Content-Type: application/json" \
      --data '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "tools/call",
      "params": {
        "name": "query_cross_section",
        "arguments": {
          "order_by": "funding_rate_mean",
          "descending": true,
          "top_n": 10,
          "min_usd_volume_7d_avg": 5000000,
          "columns": [
            "coin",
            "funding_rate_mean",
            "usd_volume_7d_avg",
            "oi_usd"
          ]
        }
      }
    }'
  2. query_cross_section

    Which HIP-3 markets are trading the most?

    Markets that track an underlying trading elsewhere — equities, commodities, oil, semis — ranked by average daily notional over the last week, with their return and what longs are paying. They are 39% of the universe and invisible to a crypto-only view.

    Run it yourself
    curl -sS https://tesseralytics.dev/mcp \
      -H "Content-Type: application/json" \
      --data '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "tools/call",
      "params": {
        "name": "query_cross_section",
        "arguments": {
          "scope": "hip3",
          "order_by": "usd_volume_7d_avg",
          "descending": true,
          "top_n": 10,
          "columns": [
            "coin",
            "usd_volume_7d_avg",
            "ret_1d",
            "funding_rate_mean"
          ]
        }
      }
    }'
  3. query_cross_section

    Where is open interest moving out of character?

    Ranked by how many standard deviations each market's open-interest change sits from its own last 30 days — a tell that a position is being built or unwound, not just a big book. The percentile column places that move against the other markets above $5M/day, which is what stat: percentile computes.

    Run it yourself
    curl -sS https://tesseralytics.dev/mcp \
      -H "Content-Type: application/json" \
      --data '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "tools/call",
      "params": {
        "name": "query_cross_section",
        "arguments": {
          "order_by": "oi_change_z_30d",
          "descending": true,
          "top_n": 10,
          "stat": "percentile",
          "min_usd_volume_7d_avg": 5000000,
          "columns": [
            "coin",
            "oi_change_z_30d",
            "oi_usd",
            "usd_volume_7d_avg"
          ]
        }
      }
    }'
  4. screen_universe

    Where are longs paying up while open interest drains?

    Two conditions, both required: funding in the top decile of the floored slice AND open-interest change per unit of traded notional in the bottom half. Longs paying up while the book empties is a squeeze forming — and the conditions are measured over the $5M/day population, not over the dust.

    Run it yourself
    curl -sS https://tesseralytics.dev/mcp \
      -H "Content-Type: application/json" \
      --data '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "tools/call",
      "params": {
        "name": "screen_universe",
        "arguments": {
          "min_usd_volume_7d_avg": 5000000,
          "conditions": [
            {
              "column": "funding_rate_7d_avg",
              "op": "top_pct",
              "value": 10
            },
            {
              "column": "oi_change_over_volume_7d",
              "op": "bottom_pct",
              "value": 50
            }
          ],
          "columns": [
            "coin",
            "funding_rate_7d_avg",
            "oi_change_over_volume_7d",
            "usd_volume_7d_avg"
          ],
          "order_by": "funding_rate_7d_avg",
          "descending": true,
          "max_results": 10
        }
      }
    }'
  5. funding_divergence

    Which markets' funding is furthest from ETH's?

    Each market's mean hourly funding over the trailing week minus ETH's, both directions, within the $5M/day population — with the liquidity beside it, because the widest spread in the cross-section is usually one quiet day pulling a seven-day mean in a market nobody can size.

    Run it yourself
    curl -sS https://tesseralytics.dev/mcp \
      -H "Content-Type: application/json" \
      --data '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "tools/call",
      "params": {
        "name": "funding_divergence",
        "arguments": {
          "benchmark": "ETH",
          "metric": "rate",
          "window_days": 7,
          "top_n": 5,
          "min_usd_volume_7d_avg": 5000000
        }
      }
    }'
  6. query_series

    Is BTC's recent move backed by real flow?

    BTC's last seven complete days: close, return, traded notional, taker-side open interest and the change in open interest.

    Run it yourself
    curl -sS https://tesseralytics.dev/mcp \
      -H "Content-Type: application/json" \
      --data '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "tools/call",
      "params": {
        "name": "query_series",
        "arguments": {
          "coins": [
            "BTC"
          ],
          "window_days": 7,
          "columns": [
            "close",
            "ret_1d",
            "usd_volume",
            "net_taker_open",
            "d_open_interest"
          ]
        }
      }
    }'
  7. query_series

    The last 24 completed hours of BTC flow Pro

    The same question at the hourly grain, which needs a Pro key because the hourly plane is Pro-only: return, volume, taker flow and open-interest change per completed hour.

    The hourly grain is Pro-only, so this one is not sent keyless. See plans

    Run it yourself
    curl -sS https://tesseralytics.dev/mcp \
      -H "Authorization: Bearer $TESSERA_API_KEY" \
      -H "Content-Type: application/json" \
      --data '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "tools/call",
      "params": {
        "name": "query_series",
        "arguments": {
          "bar": "1h",
          "coins": [
            "BTC"
          ],
          "window_days": 1,
          "columns": [
            "ret_1h",
            "usd_volume",
            "net_taker_open",
            "d_open_interest"
          ]
        }
      }
    }'

The counts under each answer are the server's own populations: eligible is what survives your filters, and every rank, percentile and decile is computed inside it — so raising a floor changes the ranking rather than trimming its tail.

Take the same call to your agent

Each card carries the exact request it makes, so the one you care about moves to your own terminal unchanged — and once a card has run, its request is pinned to the day the answer described (day), which is what makes a read reproducible. The playground is a convenience over the same API, not a wrapper around it.

curl -sS https://tesseralytics.dev/mcp \
  -H "Content-Type: application/json" \
  --data '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "query_cross_section",
    "arguments": {
      "order_by": "funding_rate_mean",
      "descending": true,
      "top_n": 10,
      "min_usd_volume_7d_avg": 5000000,
      "columns": [
        "coin",
        "funding_rate_mean",
        "usd_volume_7d_avg",
        "oi_usd"
      ]
    }
  }
}'

What a key adds

The trial above ran without one. A free key is the same data on a stable identity and a longer leash: ranked lists up to 100 rows instead of 25, 20 calls a day per key rather than per address. Pro is a different question set — full history, the hourly grain, no call cap. All three cover the whole universe, crypto and HIP-3.