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.

  1. contracting — share that OI shrinks over the next 24 hours.
  2. neutral — share that OI stays roughly flat.
  3. 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:

  1. Confirm scope / symbol and horizon.
  2. Read regime.label and regime.confidence for context only.
  3. Open probabilities.open_interest — not probabilities.breadth.
  4. Report contracting, neutral, expanding, and confidence.
  5. Say whether contracting is the clear lead. If the three buckets are almost equal, say the OI head is uninformative.
  6. 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:

BTC panel on the same page:

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):

FieldValue
regime.labelrange_low_vol
regime.nameRange / Low Volatility
regime.confidence0.5781
candles_in_regime1
open_interest.contracting0.3268
open_interest.neutral0.3273
open_interest.expanding0.3459
open_interest.confidence0.0003
meta.model_version2.0.0
meta.model_familyhmm

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.

  1. Confirm symbol is BTC and horizon is 24h.
  2. Read contracting. On the page sample it was 0.3268.
  3. Read neutral (0.3273) and expanding (0.3459).
  4. Read confidence (0.0003).
  5. Compare to regime.label. On the sample it was range_low_vol at confidence 0.5781. Keep that separate from the OI head.
  6. If contracting is 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.

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:

  1. list_capabilities — no key needed. See what exists and what each tier unlocks.
  2. create_free_api_key — only if you lack a key. Use a real email.
  3. Confirm that email. Confirming lifts the same key from 100 to 1,000 requests a day and switches Pro on for 24 hours.
  4. get_daily_snapshot — optional orientation. One cached market overview.
  5. get_market_regime — Pro. Whole-market regime plus probability buckets.
  6. Read probabilities.open_interest.contracting (and neutral, expanding, confidence).
  7. For one coin, follow with GET /api/v1/quant/coins/{symbol} (or query_api). Read the same OI head on that coin.
  8. If you need the raw OI notional, call get_open_interest as a separate step. Do not substitute it for the probability bucket.

Example agent prompt:

Call get_market_regime with horizon 24h. Then pull BTC via /api/v1/quant/coins/BTC?horizon=24h. Report only probabilities.open_interest (contracting, neutral, expanding, confidence). Also report regime.label as 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):