Perpetual futures
Perps market history
One perp market over time (1d to 90d): price, open interest, funding, taker buying vs selling, big accounts' net position; plus the latest book depth (±0.5/1/2%) and big accounts' P&L and leverage.
get_perps_historycurl 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_history","arguments":{"entity":"SOL","window":"7d"}}}'When a model calls it
Models choose a tool from its description. This is the one the server publishes:
One perp market over time (1d to 90d): price, open interest, funding, taker buying vs selling, big accounts' net position; plus the latest book depth (±0.5/1/2%) and big accounts' P&L and leverage. Use when the user asks: X funding this week; are whales adding to X; how deep is X's book. Args: entity; window.
- X funding this week
- are whales adding to X
- how deep is X's book
Parameters
entitystringrequired
The market: a ticker or symbol (NVDA, BTC, XAU), a company name (Tesla) or a common asset name (bitcoin, gold, crude oil).
windowstringdefault "7d"
How far back: 1d (hourly steps), 7d (4-hourly), 30d or 90d (daily).
Accepts 1d, 7d, 30d, 90d.
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:
{
"entity": {
"symbol": "SOL"
},
"type": "perps_history",
"as_of": "2026-10-12T17:30:24Z",
"confidence": "reported",
"source": {
"name": "OptimistFi perps data layer — each venue's public market data, stored hourly",
"url": "https://optimistfi.com/perps/markets/sol",
"license": "computed"
},
"data": {
"base": "SOL",
"found": true,
"asOf": "2026-10-12T17:30:24Z",
"window": "7d",
"stepHours": 4,
"price": {
"venue": "hyperliquid",
"points": [
[
"2026-10-05T16:00:00Z",
120.2
],
[
"2026-10-05T20:00:00Z",
120.78
],
"… 41 more"
]
},
"openInterestUsd": [
[
"2026-10-05T16:00:00Z",
1149400000
],
[
"2026-10-05T20:00:00Z",
1181880000
],
"… 41 more"
],
"openInterestVenuesJoined": [
{
"at": "2026-10-12T04:00:00Z",
"venues": [
"bitget",
"deribit",
"… 5 more"
]
},
{
"at": "2026-10-12T16:00:00Z",
"venues": [
"bitfinex",
"phemex",
"… 1 more"
]
}
],
"openInterestChange": {
"from": "2026-10-05T16:00:00Z",
"to": "2026-10-12T16:00:00Z",
"change": -0.02435,
"venues": 24
},
"fundingAnnualizedOiWeighted": [
[
"2026-10-05T16:00:00Z",
-0.01841
],
[
"2026-10-05T20:00:00Z",
0.08191
],
"… 41 more"
],
"fundingPaid": {
"aevo": {
"1d": 0.000226,
"7d": 0.000393,
"30d": 0.003052
},
"apex": {
"1d": 0.0002508,
"7d": 0.0001405,
"30d": -0.00474
},
"bitfinex": {
"1d": 0,
"7d": 0
},
"bluefin": {
"1d": -0.001351,
"7d": -0.01224,
"30d": -0.0287
},
"deribit": {
"1d": 0.0004496,
"7d": 0.001645,
"30d": 0.003631
},
"dydx": {
"1d": 0.00005962,
"7d": -0.000121,
"30d": -0.0003613
},
"edgex": {
"1d": -0.0001677,
"7d": -0.0004632,
"30d": 0.00571
},
"extended": {
"1d": 0.000234,
"7d": 0.001462,
"30d": 0.006163
},
"gmx": {
"1d": 0.0002255,
"7d": 0.00182,
"30d": 0.01162
},
"hibachi": {
"1d": 0.000511,
"7d": 0.000905,
"30d": -0.003263
},
"hyperliquid": {
"1d": 0.000275,
"7d": 0.001753,
"30d": 0.006987
},
"lighter": {
"1d": 0.000264,
"7d": -0.002839,
"30d": 0.001427
},
"nado": {
"1d": 0.0002659,
"7d": 0.0005586,
"30d": 0.003676
},
"pacifica": {
"1d": 0.0002375,
"7d": 0.001792,
"30d": 0.005348
},
"paradex": {
"1d": 0.0002148,
"7d": 0.001082,
"30d": 0.004844
},
"phemex": {
"1d": 0.0002159,
"7d": 0.001556,
"30d": 0.005414
},
"polymarket": {
"1d": 0.0002657,
"7d": 0.00112,
"30d": 0.005022
},
"vest": {
"1d": 8e-8,
"7d": -0.00128,
"30d": -0.001449
},
"woox": {
"1d": 0.0002188,
"7d": 0.0005142,
"30d": 0.003194
}
},
"takerFlowUsd": [
{
"at": "2026-10-05T16:00:00Z",
"buy": 32220252,
"sell": 25572684,
"net": 6647568,
"venues": [
"aster",
"dydx",
"… 4 more"
]
},
{
"at": "2026-10-05T20:00:00Z",
"buy": 111535429,
"sell": 116638576,
"net": -5103147,
"venues": [
"aster",
"dydx",
"… 4 more"
]
},
"… 41 more"
],
"longShort": {
"accounts": {
"definition": "Accounts long per account short.",
"venues": [
{
"venue": "bitget",
"symbol": "SOLUSDT",
"at": "2026-10-12T16:00:00Z",
"latest": 4.8,
"dayBefore": 4.777,
"points": [
[
"2026-10-11T08:00:00Z",
4.78
],
[
"2026-10-11T12:00:00Z",
4.701
],
"… 7 more"
]
},
{
"venue": "gate",
"symbol": "SOL_USDT",
"at": "2026-10-12T15:00:00Z",
"latest": 2.022,
"dayBefore": 2.071,
"points": [
[
"2026-10-05T16:00:00Z",
1.485
],
[
"2026-10-05T20:00:00Z",
1.408
],
"… 40 more"
]
},
"… 3 more"
]
},
"topAccounts": {
"definition": "Among the venue's top traders by position, accounts long per account short.",
"venues": [
{
"venue": "gate",
"symbol": "SOL_USDT",
"at": "2026-10-12T15:00:00Z",
"latest": 0.6,
"dayBefore": 0.5897,
"points": [
[
"2026-10-05T16:00:00Z",
0.5802
],
[
"2026-10-05T20:00:00Z",
0.5802
],
"… 40 more"
]
},
{
"venue": "htx",
"symbol": "SOL-USDT",
"at": "2026-10-12T12:00:00Z",
"latest": 1.676,
"dayBefore": 1.75,
"points": [
[
"2026-10-11T08:00:00Z",
1.829
],
[
"2026-10-11T12:00:00Z",
1.829
],
"… 6 more"
]
},
"… 2 more"
]
},
"topPositions": {
"definition": "Among the venue's top traders, long position size per unit of short.",
"venues": [
{
"venue": "gate",
"symbol": "SOL_USDT",
"at": "2026-10-12T15:00:00Z",
"latest": 0.7189,
"dayBefore": 0.7582,
"points": [
[
"2026-10-05T16:00:00Z",
0.8658
],
[
"2026-10-05T20:00:00Z",
0.8904
],
"… 40 more"
]
},
{
"venue": "htx",
"symbol": "SOL-USDT",
"at": "2026-10-12T12:00:00Z",
"latest": 0.912,
"dayBefore": 0.9011,
"points": [
[
"2026-10-11T08:00:00Z",
0.8975
],
[
"2026-10-11T12:00:00Z",
0.9011
],
"… 6 more"
]
},
"… 2 more"
]
},
"openInterest": {
"definition": "Open interest held long per dollar held short.",
"venues": [
{
"venue": "gmx",
"symbol": "arb:SOL/USD [BTC-USDC]",
"at": "2026-10-12T12:00:00Z",
"latest": 1.107,
"dayBefore": 1.075,
"points": [
[
"2026-10-05T16:00:00Z",
2.086
],
[
"2026-10-05T20:00:00Z",
2.086
],
"… 40 more"
]
},
{
"venue": "gmx",
"symbol": "arb:SOL/USD [SOL-SOL]",
"at": "2026-10-12T14:00:00Z",
"latest": 1.11,
"dayBefore": 1.213,
"points": [
[
"2026-10-05T16:00:00Z",
2.215
],
[
"2026-10-05T20:00:00Z",
2.215
],
"… 40 more"
]
},
"… 5 more"
]
}
},
"largeAccounts": {
"net": {
"whales": [
[
"2026-10-05T16:00:00Z",
-160314000
],
[
"2026-10-05T20:00:00Z",
-158372000
],
"… 41 more"
],
"midsize": [
[
"2026-10-05T16:00:00Z",
-4987170
],
[
"2026-10-05T20:00:00Z",
-4174960
],
"… 41 more"
]
},
"latest": {
"whales": {
"longUsd": 52182402,
"shortUsd": 204744895,
"longAccounts": 13,
"shortAccounts": 17,
"longUnrealizedPnlUsd": 461392,
"shortUnrealizedPnlUsd": -15039033,
"longLeverage": 14.9,
"shortLeverage": 12.7
},
"midsize": {
"longUsd": 57979039,
"shortUsd": 36515145,
"longAccounts": 34,
"shortAccounts": 43,
"longUnrealizedPnlUsd": -2553695,
"shortUnrealizedPnlUsd": -1247241,
"longLeverage": 12.2,
"shortLeverage": 15.1
}
}
},
"orderBook": {
"aster": {
"at": "2026-10-12T17:00:00Z",
"mid": 107.755,
"within0_5pct": {
"bidUsd": 4814002,
"askUsd": 5362274
},
"within1pct": {
"bidUsd": 6107106,
"askUsd": 6651201
},
"within2pct": {
"bidUsd": 6586841,
"askUsd": 7158551
}
},
"dydx": {
"at": "2026-10-12T17:00:00Z",
"mid": 107.73,
"within0_5pct": {
"bidUsd": 7235962,
"askUsd": 7131853
},
"within1pct": {
"bidUsd": 32564406,
"askUsd": 36028079
},
"within2pct": {
"bidUsd": 51266709,
"askUsd": 44136267
}
},
"hyperliquid": {
"at": "2026-10-12T17:00:00Z",
"mid": 107.85,
"within0_5pct": {
"bidUsd": 11990071,
"askUsd": 13240601
},
"within1pct": {
"bidUsd": 22786015,
"askUsd": 24513042
}
},
"kraken": {
"at": "2026-10-12T15:00:00Z",
"mid": 108.885,
"within0_5pct": {
"bidUsd": 12862922,
"askUsd": 10280980
},
"within1pct": {
"bidUsd": 16940856,
"askUsd": 14830785
}
},
"lighter": {
"at": "2026-10-12T17:00:00Z",
"mid": 107.756,
"within0_5pct": {
"bidUsd": 5710127,
"askUsd": 5573368
},
"within1pct": {
"bidUsd": 10243165,
"askUsd": 9084730
}
}
}
}
}Fields are explained in Reading a response.
Errors
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.