Perpetual futures

One perps market

One perp market right now, venue by venue: price and premium to the index or stock, open interest, funding, max leverage, liquidation levels, whale trades, positioning; a stock perp's weekend move.

TOOLget_perps
Server
https://mcp.optimistfi.com/mcp
Authentication
None
Access
Read-only: it changes nothing
Example call
curl https://mcp.optimistfi.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_perps","arguments":{"entity":"NVDA"}}}'

When a model calls it

Models choose a tool from its description. This is the one the server publishes:

One perp market right now, venue by venue: price and premium to the index or stock, open interest, funding, max leverage, liquidation levels, whale trades, positioning; a stock perp's weekend move. Use when the user asks: X funding rate; where do X longs get liquidated. Not for: trends or book depth → get_perps_history. Args: entity.
  • X funding rate
  • where do X longs get liquidated

For something else: get_perps_history.

Parameters

entitystringrequired

The market: a ticker or symbol (NVDA, BTC, XAU), a company name (Tesla) or a common asset name (bitcoin, gold, crude oil).

Response

A real response to the example call, trimmed: lists cut to two items, long text cut short. The result's content holds the answer as JSON text; parsed, it reads:

result.content · parsed
{
  "entity": {
    "figi": "BBG000BBJQV0",
    "cik": "0001045810",
    "ticker": "NVDA",
    "name": "NVIDIA CORP"
  },
  "type": "perps",
  "as_of": "2026-10-12T17:00:00Z",
  "confidence": "reported",
  "source": {
    "name": "OptimistFi perps data layer — each venue's public market data, read hourly",
    "url": "https://optimistfi.com/perps/markets/nvda",
    "license": "computed"
  },
  "data": {
    "base": "NVDA",
    "assetClass": "equity",
    "asOf": "2026-10-12T17:00:00Z",
    "venues": 26,
    "totals": {
      "openInterestUsd": 180869754,
      "openInterestChange24h": -0.06502,
      "fundingRateHourlyOiWeighted": 0.000004607,
      "fundingRateAnnualizedOiWeighted": 0.04036,
      "priceLow": 226.21,
      "priceHigh": 226.65
    },
    "fundingCumulative": {
      "1d": {
        "aevo": 0.000238,
        "aster": 0.0000898,
        "bitget": 0,
        "deribit": 0.0004263,
        "edgex": 0.001138,
        "extended": 0.000477,
        "gate": 0,
        "grvt": 0.000076,
        "htx": 0.00003143,
        "kucoin": -0.000047,
        "lighter": 0.000108,
        "nado": 0.0001598,
        "orderly": 0.0002001,
        "pacifica": 0.00025,
        "paradex": 0.0002055,
        "polymarket": 0.0004601,
        "qfex": 0.0001,
        "tradexyz": 0.00009984,
        "vest": 0.0001313
      },
      "7d": {
        "aevo": 0.002156,
        "aster": 0.0009475,
        "bitget": 0.001075,
        "deribit": 0.002339,
        "edgex": 0.001825,
        "extended": 0.002126,
        "gate": 0,
        "grvt": 0.000445,
        "htx": 0.00003143,
        "kucoin": 0.000343,
        "lighter": 0.000769,
        "nado": 0.001453,
        "orderly": 0.001999,
        "pacifica": 0.002078,
        "polymarket": 0.002856,
        "qfex": 0.0008052,
        "tradexyz": 0.001004,
        "vest": 0.0009536
      },
      "30d": {
        "aevo": 0.009244,
        "aster": 0.004964,
        "bitget": 0.007302,
        "edgex": 0.02159,
        "extended": 0.005263,
        "gate": -0.00057,
        "grvt": 0.002321,
        "htx": 0.0003632,
        "kucoin": 0.008153,
        "lighter": 0.007008,
        "nado": 0.004773,
        "orderly": 0.008899,
        "pacifica": 0.008444,
        "polymarket": 0.006762,
        "qfex": 0.003133,
        "tradexyz": 0.004729,
        "vest": 0.004609
      }
    },
    "units": {
      "rates": "fractions (0.0001 = 0.01%)",
      "funding": "what a long pays per hour (negative: shorts pay longs); fundingCumulative sums a venue's hourly rates over the window; predictedFunding is a venue's own estimate of a settlement still to come, where its reading publishes one",
      "money": "US dollars",
      "openInterestCap": "on Hyperliquid and its builder dexes: whether the market sits at its open-interest cap in the latest hourly reading (where it cannot grow its open interest), since when, and the cap in USD of one side's open interest where the dex publishes one"
    },
    "markets": [
      {
        "venue": "tradexyz",
        "symbol": "xyz:NVDA",
        "price": 226.21,
        "openInterestUsd": 102735341,
        "fundingRateHourly": 0.00000625,
        "fundingRateAnnualized": 0.05475,
        "volume24hUsd": 53370946,
        "maxLeverage": 20,
        "premiumToIndexBps": -1.77,
        "readAt": "2026-10-12T17:00:00Z",
        "openInterestCap": {
          "atCap": false,
          "readAt": "2026-10-12T16:00:00Z",
          "capUsd": 500000000
        }
      },
      {
        "venue": "gate",
        "symbol": "NVDA_USDT",
        "price": 226.65,
        "openInterestUsd": 26821308,
        "fundingRateHourly": 0,
        "fundingRateAnnualized": 0,
        "volume24hUsd": 12127613,
        "maxLeverage": 100,
        "premiumToIndexBps": 4.28,
        "readAt": "2026-10-12T17:00:00Z"
      },
      "… 24 more"
    ],
    "priceChange": {
      "venue": "tradexyz",
      "24h": -0.02192,
      "7d": -0.04496
    },
    "liquidations": {
      "asOf": "2026-10-12T17:00:00Z",
      "mapPrice": 226.32,
      "mapPriceVenue": "tradexyz",
      "longsLiquidatedIfPriceFalls": {
        "1%": 1329549,
        "2%": 1430980,
        "5%": 1667375,
        "10%": 2072022,
        "20%": 3945091
      },
      "shortsLiquidatedIfPriceRises": {
        "1%": 0,
        "2%": 0,
        "5%": 97428,
        "10%": 275995,
        "20%": 1399015
      },
      "largestLongClustersBelow": [
        {
          "priceLow": 224.057,
          "priceHigh": 225.188,
          "distancePct": -0.75,
          "usd": 942423
        },
        {
          "priceLow": 202.556,
          "priceHigh": 203.688,
          "distancePct": -10.25,
          "usd": 555665
        },
        "… 1 more"
      ],
      "largestShortClustersAbove": [
        {
          "priceLow": 270.452,
          "priceHigh": 271.584,
          "distancePct": 19.75,
          "usd": 1066989
        },
        {
          "priceLow": 247.82,
          "priceHigh": 248.952,
          "distancePct": 9.75,
          "usd": 98518
        },
        "… 1 more"
      ],
      "noLiquidationPriceUsd": {
        "long": 23830022,
        "short": 0
      },
      "coverage": {
        "longShareOfOpenInterest": 0.388,
        "shortShareOfOpenInterest": 0.446,
        "venues": [
          {
            "venue": "tradexyz",
            "symbol": "xyz:NVDA",
            "accounts": 523
          }
        ]
      },
      "method": "Open positions of Hyperliquid accounts worth $10K or more (and on its builder dexes, such as trade.xyz), read in rotation and mapped hourly at the price Hyperliquid reports each is liquidated. Amounts are position sizes in US dollars. Positions whose collateral covers them hav…"
    },
    "whaleTrades24h": [
      {
        "venue": "tradexyz",
        "at": "2026-10-12T14:10:33Z",
        "kind": "trade",
        "side": "sell",
        "usd": 481062,
        "price": 225.375
      },
      {
        "venue": "tradexyz",
        "at": "2026-10-12T14:10:02Z",
        "kind": "trade",
        "side": "sell",
        "usd": 432309,
        "price": 225.78
      },
      "… 3 more"
    ],
    "largeAccountPositioning": [
      {
        "venue": "tradexyz",
        "cohort": "accounts worth $10M+ that traded $1M+ in the week",
        "at": "2026-10-12T17:00:00Z",
        "longUsd": 5739822,
        "shortUsd": 4321718,
        "longAccounts": 7,
        "shortAccounts": 8,
        "longShare": 0.57
      },
      {
        "venue": "tradexyz",
        "cohort": "accounts worth $1M-$10M that traded $1M+ in the week",
        "at": "2026-10-12T17:00:00Z",
        "longUsd": 14606583,
        "shortUsd": 5355960,
        "longAccounts": 30,
        "shortAccounts": 17,
        "longShare": 0.732
      }
    ],
    "longShort": {
      "accounts": {
        "definition": "Accounts long per account short.",
        "venues": [
          {
            "venue": "gate",
            "symbol": "NVDA_USDT",
            "at": "2026-10-12T15:00:00Z",
            "latest": 2.404,
            "dayBefore": 2.466
          },
          {
            "venue": "kraken",
            "symbol": "PF_NVDAXUSD",
            "at": "2026-10-12T13:00:00Z",
            "latest": 2.021,
            "dayBefore": 1.712
          },
          "… 2 more"
        ]
      },
      "topAccounts": {
        "definition": "Among the venue's top traders by position, accounts long per account short.",
        "venues": [
          {
            "venue": "gate",
            "symbol": "NVDA_USDT",
            "at": "2026-10-12T15:00:00Z",
            "latest": 0.6353,
            "dayBefore": 0.6136
          },
          {
            "venue": "htx",
            "symbol": "NVDA-USDT",
            "at": "2026-10-12T12:00:00Z",
            "latest": 1.283,
            "dayBefore": 1.259
          },
          "… 1 more"
        ]
      },
      "topPositions": {
        "definition": "Among the venue's top traders, long position size per unit of short.",
        "venues": [
          {
            "venue": "gate",
            "symbol": "NVDA_USDT",
            "at": "2026-10-12T15:00:00Z",
            "latest": 0.9709,
            "dayBefore": 0.9941
          },
          {
            "venue": "htx",
            "symbol": "NVDA-USDT",
            "at": "2026-10-12T12:00:00Z",
            "latest": 1,
            "dayBefore": 1
          },
          "… 1 more"
        ]
      },
      "openInterest": {
        "definition": "Open interest held long per dollar held short.",
        "venues": [
          {
            "venue": "ostium",
            "symbol": "NVDA/USD",
            "at": "2026-10-12T17:00:00Z",
            "latest": 354.7,
            "dayBefore": 355.4
          },
          {
            "venue": "variational",
            "symbol": "NVDA",
            "at": "2026-10-12T17:00:00Z",
            "latest": 2.064,
            "dayBefore": 1.774
          },
          "… 2 more"
        ]
      }
    }
  }
}

Fields are explained in Reading a response.

Errors

A call the server cannot run (a missing or invalid argument) comes back with isError: true and the reason in words. A company or market the server cannot match comes back as a result naming what was not found. See Errors and limits.
ScoutJUST THIS STORY

LET’S MAKE THIS USEFUL · 1 OF 5

How would you like me to explain this?

Tell me what you want from this read. Start with a quick note, then adjust the details. Your other stories stay as they are.

We’ll remember your view of this story. The published article stays unchanged.

THIS STORY’S READING VIEWStandard · The whole picture

Clear explanations with context. Both sides of the evidence.