Perpetual futures

Whole perps market

Perps across ~1,600 assets: trending, movers, funding, funding_gaps, premium, open_interest, liquidations, whales, new_listings, weekend, lean, leverage, builds, venues, market_series, funding_heatmap, returns, rsi, sessions.

TOOLget_perps_market
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_market","arguments":{"view":"funding_gaps","limit":5}}}'

When a model calls it

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

Perps across ~1,600 assets: trending, movers, funding, funding_gaps, premium, open_interest, liquidations, whales, new_listings, weekend, lean, leverage, builds, venues, market_series, funding_heatmap, returns, rsi, sessions. Use when the user asks: where can I trade 100x. Not for: one market → get_perps. Args: view; window; market; leverage.
  • where can I trade 100x

For something else: get_perps.

Parameters

viewstringdefault "trending"

trending
where open interest is building over window (1h, 4h or 24h), and the most active markets
movers
the largest 24-hour price moves up and down
funding
the highest and lowest funding now, annualized and weighted by open interest
funding_gaps
the same market long on one venue and short on another, what each leg pays or earns after funding and borrow, and the gap
funding_matrix
every market on every venue, largest open interest first: its funding now (hourly, per 8 hours and annualized), the venue's predicted rate where it publishes one, the funding interval, stablecoin- or coin-margined, and open interest
premium
listings trading furthest above or below the index they settle on (for a stock perp, the stock's price)
open_interest
the largest markets by open interest, with the 24-hour change
liquidations
per market, the dollars of longs and shorts liquidated over window, most first
whales
single trades of $100K or more and single liquidations of $10K or more over window, largest first, plus the newest trades, each market's net whale buying or selling, totals over time, and big accounts' long and short positioning
new_listings
markets venues listed within window
weekend
while US stocks are shut, every stock perp's move since the close (one stock: get_perps)
lean
where Hyperliquid's accounts worth $1M or more lean on each market, long against short, with each side's leverage and open profit
hl_cohorts
every Hyperliquid account's positioning across its markets, or one market's with `market`: accounts and dollars long and short, the share of open interest held, and cohorts by account equity and by all-time P&L, each with its accounts in profit and in loss
position_changes
the largest changes in Hyperliquid accounts' positions over window (15m, 1h, 4h or 24h), what each did (opened, added, reduced, closed, flipped) and the account's size cohort, never the account
twaps
Hyperliquid TWAP orders running now, their remaining size and the buying and selling they schedule over the next hour and day
leverage
every perp offered at `leverage` or more, the venues and their caps, and the move that liquidates at each
builds
markets where open interest kept building for two to seven days while the price lagged, ranked
venues
every venue on OptimistFi's perps pages, with its network, settlement, funding interval and markets
hlp
HLP, Hyperliquid's liquidation backstop vault: its account value and cumulative P&L now, its return month by month and year by year, annualized, and its max drawdowns
oi_caps
on Hyperliquid and each of its builder dexes, the markets at their open-interest cap and since when, and each market's cap against its open interest now, nearest the cap first
basis
for one coin (market), each dated future's premium to its index on Deribit, OKX, Kraken and Gate, annualized, and the 90-day constant-maturity basis over 30 days
options
for one coin (market), Deribit's options by expiry: ATM implied volatility (the term structure), 25-delta call and put IVs and skew, call and put open interest and their ratio, volume, max pain, open interest by strike, and the 30-day ATM IV and skew over 30 days
market_series
open interest and 24-hour volume in total and per venue over window (24h hourly, 7d every 4 hours, 30d, 90d or 1y daily), the share of BTC, ETH and the rest, each point with the venues it covers, the venues first read inside the window, the like-for-like total over the venues read across all of it (sameVenues), and each venue's liquidations over the hours it recorded
funding_heatmap
funding weighted by open interest, annualized, every 4 hours over the last week, for each market holding $10M or more
returns
how many markets moved how far over window (24h or 7d) in 5% buckets, and the largest gainers and losers with their open-interest change
rsi
RSI(14) on completed hourly, 4-hour and daily closes, each with its last close; window picks the one ranked (1h, 4h, or 24h for daily), or market reads one
sessions
for one market over 30 days, the average return by UTC hour and weekday and the cumulative return of the Asia, Europe and US sessions

Accepts trending, movers, funding, funding_gaps, funding_matrix, premium, open_interest, liquidations, whales, new_listings, weekend, lean, hl_cohorts, position_changes, twaps, leverage, builds, venues, hlp, oi_caps, basis, options, market_series, funding_heatmap, returns, rsi, sessions.

asset_classstring

Only this kind of market; unset reads every class.

Accepts crypto, equity, index, commodity, fx.

windowstringdefault "24h"

Look-back for liquidations, whales, new_listings and trending (positions building over 1h, 4h or 24h), position_changes (15m, 1h, 4h or 24h; 7d reads 24h), returns (24h or 7d) and market_series (24h, 7d, 30d, 90d or 1y; only it reads 30d to 1y); rsi's 1h, 4h or 24h picks the closes ranked. movers covers 24 hours; funding, funding_gaps, funding_matrix, premium and open_interest read the latest hourly reading.

Accepts 15m, 1h, 4h, 24h, 7d, 30d, 90d, 1y.

limitintegerdefault 10

Rows per list, up to 25.

marketstring

One market (BTC, NVDA, gold) for whales, funding_gaps, funding_matrix, premium, new_listings, oi_caps, funding_heatmap, rsi, hl_cohorts, position_changes and twaps; the market sessions reads; for basis and options, the coin they read (BTC, ETH, SOL). Unset reads every market.

venuestring

One venue id (hyperliquid, dydx, aster, lighter, gmx, …) for whales and new_listings.

sidestring

whales only: buys or sells (a short liquidated counts as a buy, a long as a sell).

Accepts buy, sell.

min_usdnumber

whales: smallest trade in USD; funding_gaps and premium: smallest open interest per listing (default $100K).

At least 0.

leverageinteger

leverage view only: the leverage, one of 5, 10, 20, 50, 100, 200 or 500.

provenbooleandefault false

whales only: true keeps the trades of proven whales, accounts whose large positions kept winning after they were picked.

offsetintegerdefault 0

Rows to skip in each list: with limit, pages through a list's full length (count gives it where a view reports one; funding_matrix pages every row, the other views reach 2,000).

At least 0.

marginstring

funding_matrix only: stablecoin-margined markets (settled in a dollar stablecoin or US dollars), coin-margined (settled in the market's own coin), or either (each position takes a coin or a stablecoin); unset reads every market.

Accepts stablecoin, coin, either.

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
{
  "type": "perps_market",
  "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/funding",
    "license": "computed"
  },
  "data": {
    "view": "funding_gaps",
    "asOf": "2026-10-12T17:00:00Z",
    "gaps": [
      {
        "base": "GTC",
        "assetClass": "crypto",
        "long": {
          "venue": "aster",
          "fundingAnnualized": -21.9,
          "openInterestUsd": 190983
        },
        "short": {
          "venue": "kucoin",
          "fundingAnnualized": -1.53,
          "openInterestUsd": 2493840
        },
        "gapAnnualized": 20.37,
        "gapHourly": 0.002325,
        "thinnerLegOpenInterestUsd": 190983,
        "venues": 3,
        "priceGapBps": 98.7
      },
      {
        "base": "NATGAS",
        "assetClass": "commodity",
        "long": {
          "venue": "phemex",
          "fundingAnnualized": 0.1095,
          "openInterestUsd": 4164501
        },
        "short": {
          "venue": "kraken",
          "fundingAnnualized": 14.62,
          "openInterestUsd": 205014
        },
        "gapAnnualized": 14.51,
        "gapHourly": 0.001656,
        "thinnerLegOpenInterestUsd": 205014,
        "venues": 20,
        "priceGapBps": 351
      },
      "… 3 more"
    ],
    "note": "Posted funding and borrow rates only, from each venue's latest hourly reading; trading fees, slippage and rates moving before the next settlement are outside these numbers."
  }
}

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.