Skip to Content
f1owdocs
Tool reference

Positioning

Who is on the other side of your trade. Up to eight reads on one coin — who is crowded, who is fragile, who is trapped — plus the price levels the whole board is watching.

Research & riskresearch_positioningGET /research/positioning/{symbol}x402 · $0.05 / callRead-onlyMCP App

What it does

Deterministic positioning read for one coin — the game-state companion to research_regime, answering 'who is crowded, who is paying, who is trapped, and where'. Up to nine axes, each tagged with the market-actor cohort it reads: crowding (annualized funding vs the venue-standard 0.01%/8h anchor, long/short skew, dollars/day the majority pays to hold, crowd-vs-top-trader divergence, and cross-venue funding dispersion), buildup (24h price vs open-interest direction and the funding trend — whether positions are being added into the move or closed out), liquidity (order-book spread and imbalance — makers backing off), basis (perp vs oracle premium — spot-perp froth or hedging pressure, informational), fragility (24h liquidations as a share of market-wide open interest; the axis degrades rather than substituting a single venue's OI, since the liquidation total is cross-exchange), predation (visible on-chain whale positions within 2 daily sigmas of their liquidation price, with defending book depth), trap (share of tracked whale notional underwater on the funding-paying side — attrition fuel), house book (the on-chain exchange's LP-vault inventory, summed across its child sub-vaults — the literal venue counterparty, so the inventory it carries mirrors how traders are crowded; measured as net over its own gross book, since a market maker's net is a rounding error against venue open interest; informational), and disagreement (the most liquid matching prediction market, volume-gated, informational). Each axis reports its state, the numbers, and a +1/0/-1 fragility vote (+1 clean, -1 crowded/fragile); the stance is the disclosed sum-of-votes rule. Also returns a one-line 'farmed' synthesis (which cohort the board is currently farming, or an explicit statement that none is), focal points — reachable liquidation and breakeven price levels the whole market can see — and 'would change the call' thresholds a polling agent can watch statelessly. Reports the board, not a direction: crowding says who is paying, not where price goes. Deterministic — same inputs, same read. Call research_regime first for market context, then this per coin before sizing or timing decisions.

Parameters

NameTypeDescription
symbolrequiredpathstringCoin symbol, e.g. "BTC" or "ETH".

Call it

One API key works for MCP, REST and WebSocket; each call uses one unit. Agents without an account can pay per call with x402.

curl "https://mcp.f1ow.com/v1/research/positioning/BTC" \
  -H "Authorization: Bearer $F1OW_API_KEY"
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "research_positioning",
    "arguments": {
      "symbol": "BTC"
    }
  }
}
const res = await fetch("https://mcp.f1ow.com/v1/research/positioning/BTC", {
  headers: { Authorization: `Bearer ${process.env.F1OW_API_KEY}` },
});
const data = await res.json(); // the tool's result as JSON, typed in the OpenAPI spec
console.log(data);
import os, requests

res = requests.get(
    "https://mcp.f1ow.com/v1/research/positioning/BTC",
    headers={"Authorization": f"Bearer {os.environ['F1OW_API_KEY']}"},
)
data = res.json()  # the tool's result as JSON, typed in the OpenAPI spec
print(data)
// wss://mcp.f1ow.com/v1/ws — subprotocol "jsonrpc-2.0", Authorization: Bearer <key>
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "research_positioning",
    "arguments": {
      "symbol": "BTC"
    }
  }
}

// Or push a fresh result whenever it changes (minimum interval 15 s)
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "subscriptions/subscribe",
  "params": {
    "name": "research_positioning",
    "arguments": {
      "symbol": "BTC"
    },
    "intervalSeconds": 60
  }
}
# No account: the first call answers 402 with a PAYMENT-REQUIRED challenge;
# an x402 client pays it in USDC on Base and retries.
curl "https://mcp.f1ow.com/x402/v1/research/positioning/BTC"

Sample response

A real response captured 2026-11-13. Interactive is the tool's MCP App rendering it, as Claude, ChatGPT and other MCP Apps hosts show it; here it is read-only. JSON is what REST and WebSocket return, and the structuredContent of an MCP call (trimmed for length), with generatedAt for freshness. Text is the report an MCP client hands to a model.

Loading interactive view…
=== BTC Positioning — 2026-11-13 08:05 UTC ===
Stance: LEAN CLEAN (vote score +1 across 9 axes)
Rule: stance = sum of axis votes (+1 clean / 0 neutral / -1 crowded-fragile): >= +3 CLEAN BOARD, +1..+2 LEAN CLEAN, 0 MIXED, -1..-2 CROWDED, <= -3 FRAGILE
Farmed: no cohort clearly farmed — funding near the anchor, no systemic trap, no exposed majors (longs pay the carry, bleeding ~$2.4M/day carry)

  Crowding      STRETCHED SHORT (bottom of its own window) funding +0.0002%/h (ann +1.8% vs anchor +10.9%) | crowd L/S 3.32 vs top traders 2.14 — crowd 1.55x more long-skewed | longs paying ~$2.4M/day market-wide | venue funding +3.3pp vs merged | series at +1.8% ann sits 5th pct of its own 30-point window (+0.1% to +12.2%) | CoinGlass 2026-11-13 08:00 UTC bucket  [funding arbs, retail crowd]
  Buildup       LONG LIQUIDATION   price -6.8% / OI -6.3% over 24h ($50.93B -> $47.73B) | funding +8.5% -> +1.8% ann (falling) | 3th pct of 53 rolling 24h moves (-6.5% to +3.6%) — a move for this tape, under the absolute band — positions closing | CoinGlass 2026-11-13 08:00 UTC bucket  [new entrants, closing leverage]
  Liquidity     TIGHT              spread 0.1 bps | depth $3.9M bid / $12.0M ask | ask-heavy book (-51% imbalance)  [market makers / HFT]
  Basis         FLAT               perp -4.1 bps vs oracle (mark $68654 / oracle $68686) | venue funding +0.0006%/h  [cross-venue / spot-perp arbs]
  Fragility     DELEVERAGING       24h liq $918.6M = 1.92% of $47.73B market-wide OI  [liquidation hunters]
  Predation     NO EXPOSED MAJORS  5 visible positions >=$1.0M ($265.7M = 10.4% of venue OI) | exposed within 2 sigma: 0 ($0) | 30d daily sigma 2.0%  [directional whales, hunters]
  Trap          CLEAN              $4.0M of $265.7M tracked (2%) underwater on the paying side (longs pay) = 0.2% of $2.56B venue OI | single-name (largest $4.0M = 100% of trapped)  [trapped whales]
  House book    BOOK TOO SMALL TO READ HLP holds only $6k gross in BTC against $49.3M vault equity (readable at $246k) — the vault is flat here, not positioned, so its 11% net-to-gross is residue rather than a direction (informational)  [DEX LP vault (HLP)]
  Disagreement  ODDS               Will Bitcoin dip to $45,000 by December 31, 2026? -> 'No' 95% ($9511k volume, resolves 2027-01-01T05:00:00Z) — check against funding's implied lean  [informed flow (proxy)]

Focal points (known price levels, nearest first):
- $68831.3 (long breakeven): visible $4.0M long underwater (-$10k uPnL) entered here — breakeven exit level

Would change the call:
- annualized funding >= +30.9% -> crowded long; <= -9.1% -> crowded short (now +1.8%)
- funding at/above the 85th pct of its own window -> stretched long; at/below the 15th -> stretched short (now 5th)
- crowd and top traders are 1.55x apart — the clean vote is withheld until they converge inside 1.5x
- 24h OI change >= +5.0% -> positions building; <= -5.0% -> unwinding (now -6.3%)
- or a 24h move at/above the 85th pct of this window's own moves (now 3th)
- spread >= 5.0 bps -> makers backing off (now 0.1 bps)
- 24h liquidations >= 1.0% of market-wide OI -> deleveraging (now 1.92%)
- a visible >=$1.0M position moving within 2 daily sigmas of its liquidation flips Predation
- >=50% of tracked AND >=5% of venue OI underwater on the paying side -> trapped majority (now 2% of tracked, 0.2% of venue OI)
- HLP's book in BTC reaching $246k gross (0.5% of its $49.3M equity) makes the axis readable (now $6k)

Inputs: 9/9 axes computed

Options (Deribit; option-holder cohort, informational, no vote):
  OI $22.73B, put/call OI 0.79 → BALANCED | 25Δ RR 30d -4.1 (PUTS OVER CALLS) | next expiry 14 Nov 2026 $160.9M (1% of OI), max pain $73500.00 (theoretical)
  modeled gamma (dealers long calls / short puts, not observed): NEGATIVE MODELED GAMMA, signed -$176.4M of gross $329.8M per 1% | nearest flip $76832.51 (+12.0%) | nearest large gamma strike $70000.00 (+2.0%)
{
  "axes": [
    {
      "actors": "funding arbs, retail crowd",
      "detail": "funding +0.0002%/h (ann +1.8% vs anchor +10.9%) | crowd L/S 3.32 vs top traders 2.14 — crowd 1.55x more long-skewed | longs paying ~$2.4M/day market-wide | venue funding +3.3pp vs merged | series at +1.8% ann sits 5th pct of its own 30-point window (+0.1% to +12.2%) | CoinGlass 2026-11-13 08:00 UTC bucket",
      "metrics": {
        "fundingRatePctPerHour": 0.0002105,
        "annualizedFundingPct": 1.84398,
        "fundingRateIsOiWeighted": 1,
        "anchorAnnualPct": 10.95,
        "fundingDragUsdPerDay": 2411081.02544037,
        "longShortRatio": 3.32,
        "crowdVsTopDivergence": 1.18,
        "crowdLongShortRatio": 3.32,
        "topTraderLongShortRatio": 2.14,
        "crowdVsTopSkewRatio": 1.55140186915888,
        "fundingVenueDispersionPct": 3.316098,
        "fundingWindowPercentile": 5,
        "fundingWindowLowPct": 0.09855,
        "fundingWindowHighPct": 12.20706,
        "fundingWindowSpreadPct": 12.10851,
        "fundingWindowRankedPct": 1.84398
      },
      "name": "Crowding",
      "state": "STRETCHED SHORT (bottom of its own window)",
      "vote": -1
    },
    {
      "actors": "new entrants, closing leverage",
      "detail": "price -6.8% / OI -6.3% over 24h ($50.93B -> $47.73B) | funding +8.5% -> +1.8% ann (falling) | 3th pct of 53 rolling 24h moves (-6.5% to +3.6%) — a move for this tape, under the absolute band — positions closing | CoinGlass 2026-11-13 08:00 UTC bucket",
      "metrics": {
        "priceChangePct24h": -6.79676,
        "oiChangePct24h": -6.28777326501869,
        "oiPriorUsd": 50927482234,
        "oiNowUsd": 47725277621.5434,
        "annualizedFundingPriorPct": 8.482965,
        "annualizedFundingPct": 1.84398,
        "oiChangeWindowPercentile": 2.83018867924528,
        "oiChangeWindowLowPct": -6.48941665693922,
        "oiChangeWindowHighPct": 3.59523545652303,
        "oiBuildThresholdPct": 5
      },
      "name": "Buildup",
      "state": "LONG LIQUIDATION",
      "vote": 0
    },
    {
      "actors": "market makers / HFT",
      "detail": "spread 0.1 bps | depth $3.9M bid / $12.0M ask | ask-heavy book (-51% imbalance)",
      "metrics": {
        "spreadBps": 0.145644147654037,
        "imbalancePct": -50.9388172371789,
        "bidDepthUsd": 3892521.77123,
        "askDepthUsd": 11975508.92851
      },
      "name": "Liquidity",
      "state": "TIGHT",
      "vote": 1
    },
    {
      "actors": "cross-venue / spot-perp arbs",
      "detail": "perp -4.1 bps vs oracle (mark $68654 / oracle $68686) | venue funding +0.0006%/h",
      "metrics": {
        "premiumBps": -4.076522,
        "markPriceUsd": 68654,
        "oraclePriceUsd": 68686
      },
      "name": "Basis",
      "state": "FLAT",
      "vote": 0
    },
    {
      "actors": "liquidation hunters",
      "detail": "24h liq $918.6M = 1.92% of $47.73B market-wide OI",
      "metrics": {
        "liqIntensityPct": 1.92481223638172,
        "liquidation24hUsd": 918621983.506613,
        "marketWideOpenInterestUsd": 47725277621.5434
      },
      "name": "Fragility",
      "state": "DELEVERAGING",
      "vote": -1
    },
    {
      "actors": "directional whales, hunters",
      "detail": "5 visible positions >=$1.0M ($265.7M = 10.4% of venue OI) | exposed within 2 sigma: 0 ($0) | 30d daily sigma 2.0%",
      "metrics": {
        "visiblePositions": 5,
        "visibleNotionalUsd": 265705194.2608,
        "visibleShareOfVenueOi": 0.103786653312487,
        "venueOpenInterestUsd": 2560109472.4656,
        "exposedCount": 0,
        "exposedNotionalUsd": 0,
        "dailySigmaPct": 1.97356463971501,
        "nearestLiqDistanceSigmas": 23.2465772650821,
        "bidDepthUsd": 3892521.77123,
        "askDepthUsd": 11975508.92851
      },
      "name": "Predation",
      "state": "NO EXPOSED MAJORS",
      "vote": 1
    },
    "… 3 more"
  ],
  "axesComputed": 9,
  "axesTotal": 9,
  "farmed": "no cohort clearly farmed — funding near the anchor, no systemic trap, no exposed majors (longs pay the carry, bleeding ~$2.4M/day carry)",
  "focalPoints": [
    {
      "priceUsd": 68831.3,
      "reason": "visible $4.0M long underwater (-$10k uPnL) entered here — breakeven exit level",
      "side": "long breakeven"
    }
  ],
  "skippedAxes": [],
  "stance": "LEAN CLEAN (vote score +1 across 9 axes)",
  "stanceRule": "stance = sum of axis votes (+1 clean / 0 neutral / -1 crowded-fragile): >= +3 CLEAN BOARD, +1..+2 LEAN CLEAN, 0 MIXED, -1..-2 CROWDED, <= -3 FRAGILE",
  "symbol": "BTC",
  "thresholds": [
    {
      "comparator": ">=",
      "current": 1.84398,
      "flipsTo": "CROWDED LONG",
      "metric": "annualizedFundingPct",
      "value": 30.95
    },
    {
      "comparator": "<=",
      "current": 1.84398,
      "flipsTo": "CROWDED SHORT",
      "metric": "annualizedFundingPct",
      "value": -9.05
    },
    {
      "comparator": ">=",
      "current": 5,
      "flipsTo": "STRETCHED LONG",
      "metric": "fundingWindowPercentile",
      "value": 85
    },
    {
      "comparator": "<=",
      "current": 5,
      "flipsTo": "STRETCHED SHORT",
      "metric": "fundingWindowPercentile",
      "value": 15
    },
    {
      "comparator": ">=",
      "current": 1.55140186915888,
      "flipsTo": "COHORTS SPLIT",
      "metric": "crowdVsTopSkewRatio",
      "value": 1.5
    },
    {
      "comparator": ">=",
      "current": -6.28777326501869,
      "flipsTo": "BUILDING",
      "metric": "oiChangePct24h",
      "value": 5
    },
    "… 7 more"
  ],
  "wouldChange": [
    "annualized funding >= +30.9% -> crowded long; <= -9.1% -> crowded short (now +1.8%)",
    "funding at/above the 85th pct of its own window -> stretched long; at/below the 15th -> stretched short (now 5th)",
    "crowd and top traders are 1.55x apart — the clean vote is withheld until they converge inside 1.5x",
    "24h OI change >= +5.0% -> positions building; <= -5.0% -> unwinding (now -6.3%)",
    "or a 24h move at/above the 85th pct of this window's own moves (now 3th)",
    "spread >= 5.0 bps -> makers backing off (now 0.1 bps)",
    "… 4 more"
  ],
  "options": {
    "informational": true,
    "nextExpiry": "2026-11-14T08:00:00Z",
    "nextExpiryMaxPainTheoretical": 73500,
    "observedAt": "2026-11-13T08:05:16Z",
    "oiNotionalUsd": 22726606453.448,
    "provider": "Deribit",
    "putCallOi": 0.786936722608645,
    "riskReversal25At30d": -4.13282585233276,
    "skewState": "PUTS OVER CALLS",
    "state": "BALANCED",
    "gamma": {
      "flips": [
        76832.5074174907
      ],
      "gammaState": "NEGATIVE MODELED GAMMA",
      "grossUsdPer1Pct": 329834819.687822,
      "largestGammaStrikes": [
        70000,
        72000,
        80000
      ],
      "observed": false,
      "regime": [
        "NEGATIVE MODELED GAMMA"
      ],
      "scenario": "calls_long_puts_short",
      "signedUsdPer1Pct": -176374379.632186,
      "spotUsd": 68625.86
    }
  },
  "generatedAt": "2026-11-13T08:05:50.6034395+00:00"
}

Call Positioning from your agent

Sign in, get an API key and make your first call in under a minute. No card required.

For agents: this page as Markdown · all docs

On this page