> ## Documentation Index
> Fetch the complete documentation index at: https://docs.0xmonaco.com/llms.txt
> Use this file to discover all available pages before exploring further.

# V1.0.86

# Monaco Protocol SDK v1.0.86

Public open interest is now one-sided: long positions only, each open contract counted once. Reported values halve, and field names and types are unchanged. The screener's `openInterestBase` is `null` when no sample was recorded in the last five minutes. Off-hours, the mark on a stock, FX or commodity market may now sit up to 3% from the oracle (5% on MSTR, COIN and HOOD). **Action items:** rescale any open-interest thresholds, alerts or charts that assumed the gross (longs plus shorts) figure, and handle a `null` screener `openInterestBase` on a perp.

## Changed

### One-sided open interest

Open interest now counts long positions only, so each open contract is counted once. It previously added longs and shorts, so every value below is half what it was. Field names, types and units are unchanged.

* `getOpenInterest` (`GET /api/v1/market/pairs/{tradingPairId}/open-interest`; gRPC `MarketService.GetOpenInterest`): `openInterestBase` and `openInterestNotional`
* `getPerpMarketSummary` (`GET /api/v1/market/pairs/{tradingPairId}/perp/summary`; gRPC `MarketService.GetPerpMarketSummary`): `openInterest`, `openInterestBase` and `openInterestNotional`
* `getScreener` (`GET /api/v1/market/screener`; gRPC `MarketService.GetScreener`): `openInterestBase`, `openInterestNotional`, `openInterestNotionalAvg1h` / `24h` / `7d`, and `snapshot7d[].openInterestNotionalAvg`
* `sdk.ws.marketStats` and `sdk.ws.marketStatsAll` frames: `openInterest` and `openInterestNotional`
* The MCP server's `get_open_interest` tool

`openInterestLimit` and `openInterestHeadroom` on `market_stats` frames still measure the market's cap against gross open interest (longs plus shorts), so headroom is not derivable from `openInterest` alone. Candle `openInterestBase` was already one-sided and is unchanged. See [Markets](/developers/markets) and [Market](/sdk/typescript/market).

### Screener open interest freshness

`getScreener` now reads `openInterestBase` from the latest completed-minute sample, and returns `null` (not `"0"`) when no sample was recorded in the last five minutes. `"0"` still means a perp with no open positions. See [Market Screener](/sdk/typescript/market#market-screener).

### Off-hours mark band

The mark price sits at most 1% from the oracle in session. While a stock, FX or commodity market's provider reports it closed, the band widens to 3% (5% for MSTR, COIN and HOOD), so a sustained off-hours move in the book can show in the mark. At the reopen it narrows back over about a minute rather than in one step. See [Perps](/trading-mechanics/perps#the-numbers-to-understand).

## Upgrade

```bash theme={null}
npm install @0xmonaco/core@1.0.86 @0xmonaco/types@1.0.86 @0xmonaco/react@1.0.86
# or bun
bun add @0xmonaco/core@1.0.86 @0xmonaco/types@1.0.86 @0xmonaco/react@1.0.86
```

No code change is required. Recheck any logic that compares open interest against a fixed number.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.