What It Is
The live board is https://cryptodataapi.com/market-regimes.
The search is contracting. This post owns that label inside the open-interest probability head. The JSON path is probabilities.open_interest.contracting. The MCP tool is get_market_regime. The REST calls are GET /api/v1/quant/market?horizon=24h and GET /api/v1/quant/coins/{symbol}.
I am Sam Deering. I built this so an agent can read whether open interest is more likely to shrink, stay flat, or grow over the next 24 hours. Agents read. They do not trade. We are not a broker.
contracting is one of three calibrated shares under probabilities.open_interest.
The three keys the live BTC sample prints are contracting, neutral, and expanding. Each is a probability over the next 24 hours. Together they describe how open interest is expected to move. They do not replace the six-state regime label.
On the human page the same head is labeled Open interest (next 24h). The bars read Contracting, Neutral, Expanding. The snake_case keys in the JSON sample match those bars.
contracting means the model share that open interest shrinks over the horizon. It is not a raw open-interest notional. It is not a funding rate. It is not the served HMM state name.
The page says this engine refreshes about every 15 minutes. The page says the model is a nowcast. It names the state and the probability heads now. It does not sell a direction call.
Where to See It
Open https://cryptodataapi.com/market-regimes. Scroll to the live BTC probability object. Find the Open interest (next 24h) block. Read the Contracting bar first.
The whole-market curl on the page is:
curl -H "X-API-Key: cdk_live_your_key" \
-H "User-Agent: cryptodataapi-python/1.0" \
"https://cryptodataapi.com/api/v1/quant/market?horizon=24h"The page says /quant/coins/{symbol} is the per-coin read. The printed sample is the BTC probability object. Per-coin and market probability calls are Pro.
https://cryptodataapi.com/llms.txt maps GET /api/v1/quant/market to MCP tool get_market_regime. https://cryptodataapi.com/ai-agents/mcp-server lists the same tool name. The regimes page itself does not print the tool name. Do not invent an MCP tool named contracting.
Raw open-interest notionals are a different free path: get_open_interest and GET /api/v1/derivatives/open-interest. That path answers how large the book is now. This post answers the probability that OI contracts next. Do not collapse those two reads.
How to Read the open_interest Bucket
Read the three shares side by side.
contracting— share that OI shrinks over the next 24 hours.neutral— share that OI stays roughly flat.expanding— share that OI grows.
Then read probabilities.open_interest.confidence. On a near-uniform three-way split, confidence is low. Treat a flat head as uninformative. Do not size a story off a 0.33 / 0.33 / 0.35 print.
Read the HMM regime.label as a separate field. On the live BTC sample in this session the label was range_low_vol. The OI head is not that label. A coin can sit in Range / Low Volatility while the OI head leans expanding, contracting, or flat.
Read funding as a different head. The funding bucket uses falls, stable, and rises. That is not contracting. Funding crowd labels on the funding board are a different product page.
Read liquidation risk as a different head. liquidation_risk is not open interest.
One more head shares the exact label: the market-scope breadth bucket also uses contracting, neutral, and expanding as its key names — but breadth measures how many coins are trending together, not open interest. probabilities.breadth.contracting and probabilities.open_interest.contracting are two different signals that happen to share a label string. This post is about the open-interest bucket only. Do not conflate the two heads because the keys read the same.
Example agent read order on one coin object:
- Confirm
scope/symbolandhorizon. - Read
regime.labelandregime.confidencefor context only. - Open
probabilities.open_interest— notprobabilities.breadth. - Report
contracting,neutral,expanding, andconfidence. - Say whether
contractingis the clear lead. If the three buckets are almost equal, say the OI head is uninformative. - Do not invent a boolean named
is_contracting.
What It Is Not
This is not the six-state HMM tour. The six labels (strong_trend_bull, strong_trend_bear, range_low_vol, choppy_high_vol, vol_spike, squeeze) are a different head on the same page. Mention that head once for orientation. Do not expand it here. The HMM six-state piece is a draft sibling with no live URL yet. Product page for both: https://cryptodataapi.com/market-regimes.
This is not the funding-regime board. That board owns LONG_CROWDED, the 8h field, and APR at https://cryptodataapi.com/funding-rates. That post is live at https://cryptodataapi.com/blog/market-get-funding-regime. Do not paste funding APR into the OI bucket.
This is not the breadth head. probabilities.breadth reuses the same three key names (contracting, neutral, expanding) for a market-scope signal about how many coins move together — not open interest. Same label, different head.
This is not a raw open-interest dollar print. Raw OI lives on https://cryptodataapi.com/open-interest and on get_open_interest.
This is not candles. Bars cannot tell you the OI probability head. Do not open with a kline poll for this query.
This is not a direction forecast. The page says the HMM is a nowcast and that historical P(up | bull) had no edge. The OI head is also a probability bucket, not an order.
This is not expanding and not neutral. Those are the sibling keys in the same object. Report all three.
What the Board Showed
Fetched from https://cryptodataapi.com/market-regimes on 10 Sep 2026, afternoon Brisbane time (AEST, UTC+10). These figures are the page sample. A later refresh will differ. The page says the model refreshes about every 15 minutes.
Whole-market card on this fetch:
- Regime: Squeeze
- In regime: 13h
- Model confidence: 98%
- Chance of a vol spike (24h): 1% (1,000 simulations)
- Chance of a >5% drop (24h): 4% (1,000 simulations)
- Tomorrow outcomes: Strong fall 10%, Mild fall 23%, Sideways 36%, Mild rise 22%, Strong rise 9%
BTC panel on the same page:
- Regime: Range / Low Volatility
- Model sure: 58%
- Next 24h direction card: balanced odds
Live BTC probability object printed on the page (timestamp 2026-09-10T03:48:47.913000Z, which is 1:48 PM AEST on 10 Sep 2026):
| Field | Value |
|---|---|
regime.label | range_low_vol |
regime.name | Range / Low Volatility |
regime.confidence | 0.5781 |
candles_in_regime | 1 |
open_interest.contracting | 0.3268 |
open_interest.neutral | 0.3273 |
open_interest.expanding | 0.3459 |
open_interest.confidence | 0.0003 |
meta.model_version | 2.0.0 |
meta.model_family | hmm |
The HTML Open interest bars on that same BTC card rounded to Contracting 33%, Neutral 33%, Expanding 35%. The JSON is the source of truth for agents. The bars are the same head for humans.
On this print, expanding is a hair ahead of contracting. Confidence on the OI head is 0.0003. That is a near-flat three-way split. An agent should report the numbers and say the OI head is uninformative here. Do not force a contracting story when the lead is not clear.
Directional head on the same sample (context only, not this post's lead): strong_down 0.1018, mild_down 0.225, flat 0.3273, mild_up 0.2381, strong_up 0.1077, directional confidence 0.0584.
One Concrete Live Example
Call GET /api/v1/quant/coins/BTC?horizon=24h (or the market path, then the per-coin path).
Read probabilities.open_interest.
- Confirm
symbolis BTC andhorizonis24h. - Read
contracting. On the page sample it was 0.3268. - Read
neutral(0.3273) andexpanding(0.3459). - Read
confidence(0.0003). - Compare to
regime.label. On the sample it wasrange_low_volat confidence 0.5781. Keep that separate from the OI head. - If
contractingis not clearly larger than the other two, say so. On this sample it was not.
I called the REST paths in this session with a named User-Agent and no key.
GET /api/v1/quant/market?horizon=24h→ HTTP 402. Body error:payment_required(x402). I did not invent a payload from that body.GET /api/v1/quant/coins/BTC?horizon=24h→ HTTP 401. Body error:api_key_required. Message pointed atPOST /api/v1/auth/keys.- Same market path with an invalid
X-API-Key→ HTTP 401. Body error:invalid_api_key.
llms.txt says a 403 is the expected free-tier answer on the paid decision layer. Leave 401, 402, and 403 as the server returns them. Read the body. Do not retry a gate.
For Agents: MCP Truth and Tool Order
The real MCP tool is get_market_regime. That name is on https://cryptodataapi.com/llms.txt and https://cryptodataapi.com/ai-agents/mcp-server. It maps to GET /api/v1/quant/market. For a per-coin object, use REST GET /api/v1/quant/coins/{symbol} or the MCP escape hatch query_api against that path. Do not call a tool named contracting.
Do not open with a candle poll. Candles are the commodity layer. They cannot tell you the OI probability head.
Tool order:
list_capabilities— no key needed. See what exists and what each tier unlocks.create_free_api_key— only if you lack a key. Use a real email.- Confirm that email. Confirming lifts the same key from 100 to 1,000 requests a day and switches Pro on for 24 hours.
get_daily_snapshot— optional orientation. One cached market overview.get_market_regime— Pro. Whole-market regime plus probability buckets.- Read
probabilities.open_interest.contracting(andneutral,expanding,confidence). - For one coin, follow with
GET /api/v1/quant/coins/{symbol}(orquery_api). Read the same OI head on that coin. - If you need the raw OI notional, call
get_open_interestas a separate step. Do not substitute it for the probability bucket.
Example agent prompt:
Call
get_market_regimewith horizon 24h. Then pull BTC via/api/v1/quant/coins/BTC?horizon=24h. Report onlyprobabilities.open_interest(contracting,neutral,expanding,confidence). Also reportregime.labelas context. Do not invent keys. If the OI head is near-uniform, say it is uninformative.
A gate on that tool is expected without Pro. Read the body. Do not retry it. Python's built-in urllib needs a named User-Agent or the CDN returns HTML 403 before the API sees the call.
REST
Market-wide:
curl -H "X-API-Key: cdk_live_your_key" \
-H "User-Agent: cryptodataapi-python/1.0" \
"https://cryptodataapi.com/api/v1/quant/market?horizon=24h"Per coin:
curl -H "X-API-Key: cdk_live_your_key" \
-H "User-Agent: cryptodataapi-python/1.0" \
"https://cryptodataapi.com/api/v1/quant/coins/BTC?horizon=24h"horizon is 4h or 24h. The page curl uses 24h.
Related paths (not this post's lead):
GET /api/v1/quant/coins— heatmap list across Hyperliquid perps (Pro)GET /api/v1/quant/regimes— six-regime vocabulary, any valid keyGET /api/v1/quant/regimes/history— 2020→now Parquet archive (Pro Plus)GET /api/v1/derivatives/open-interest— raw OI notionals (free tier)
Docs Links
- Product page: https://cryptodataapi.com/market-regimes
- Machine map: https://cryptodataapi.com/llms.txt
- MCP tools: https://cryptodataapi.com/ai-agents/mcp-server
- API docs: https://cryptodataapi.com/api/docs
- Raw open interest board: https://cryptodataapi.com/open-interest
- Sibling HMM six-state draft — no live URL yet; owns the six labels on https://cryptodataapi.com/market-regimes (not this piece)
- Sibling funding-regime post: https://cryptodataapi.com/blog/market-get-funding-regime — owns
LONG_CROWDED/ 8h / APR on https://cryptodataapi.com/funding-rates (not this piece)



