MarketTrace agent-feed
Server Details
Crypto perps for AI agents: funding, open interest, liquidations, order book, CVD, volume profile.
Glama couldn't complete the latest health check. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.
If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.
- Status
- Unhealthy
- Uptime
- 0.7% over 58 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- MarketTrace/markettrace-agent-feed
- GitHub Stars
- 0
- Server Listing
- markettrace-agent-feed
TDQS
Score is being calculated.
Available Tools
10 toolsget_big_tradesRead-onlyInspect
Large aggressive orders ("big trades") from the trade tape of Binance, Bybit, OKX and Hyperliquid for a symbol. Answers: "Any whale market orders on BTC in the last hour?", "Were the big prints buying or selling?", "Which venue took the largest hit?". One big trade = all fills that share venue, taker side and exchange timestamp: a market order sweeping several price levels prints as many fills at one instant, and they are summed back into one trade. aggressor: buy = the taker bought, sell = the taker sold. Per trade: t = exchange timestamp, epoch ms; venue; price = volume-weighted fill price, USD; usd = notional, whole dollars. min_usd = smallest notional that counts, at least 50000; default = the asset's threshold on the MarketTrace chart (BTC and ETH 1000000; SOL, BNB, XRP, DOGE and HYPE 500000; ZEC and ENA 100000); the response echoes the value used. totals = count (n) and summed usd of every trade at or above min_usd in the window, per side. trades = at most limit of them (1..=150, default 50): when there are more, the LARGEST are kept and truncated=true; the list is ordered by time. Window: from/to as RFC3339, YYYY-MM-DD or epoch ms; default the last hour; at most 12 h per call and from no older than 31 days, beyond either is an error, not a clamp. settled=false means the window reaches into the last 3 minutes, which the tape may not hold in full yet. coverage.venues lists the venues with tape in the window; an empty list means no tape there, not no trades (ZEC and ENA keep a 14-day tape). An order the trader split into separate child orders shows up as separate smaller trades. Descriptive: a big trade is executed flow, not a signal. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Window end (exclusive), same formats. Default: now. At most 12 h after `from`. | |
| from | No | Window start: RFC3339, `YYYY-MM-DD` (UTC midnight) or epoch ms. Default: `to` minus one hour. No older than 31 days. | |
| limit | No | Trades listed, 1..=150 (default 50); the largest are kept. | |
| symbol | Yes | Asset symbol: BTC, ETH, SOL, BNB, XRP, DOGE, HYPE, ZEC or ENA (case-insensitive; a `USDT` suffix is accepted). | |
| min_usd | No | Smallest notional that counts, whole USD, at least 50000. Default: the asset's chart threshold (echoed in the response). Read as any JSON value and checked in [`big_trades_query`], so a fractional, negative or non-numeric value is an invalid_params NAMING the parameter (a typed `u64` would fail inside rmcp's deserializer with serde's "expected u64" and no field name). The schema says integer. |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | Yes | Window end (exclusive), RFC3339 UTC. |
| from | Yes | Window start (inclusive), RFC3339 UTC. |
| symbol | Yes | Uppercase asset symbol, e.g. `BTC`. |
| totals | Yes | |
| trades | Yes | At most `limit` trades — the largest by `usd` — ordered by `t`, then `venue`, then `aggressor`. |
| min_usd | Yes | Smallest notional that counts, whole USD — the value actually used. |
| settled | Yes | `false` while the window reaches into the last 3 minutes, which the tape may not hold in full yet. |
| coverage | Yes | `venues` = venues whose tape holds at least one print inside the window (empty = no tape there, not no trades). |
| truncated | Yes | `true` when the window held more big trades than `limit`. |
get_conditional_outcomesRead-onlyInspect
Measured HISTORY of forward returns after a stated condition — the base rate from this feed's own data, replacing folklore like "high funding = squeeze". Answers: "What happened historically after funding above the 90th percentile?", "When OBI stayed bid-heavy while funding was positive, what did the next 24h look like?". Condition fields AND together (state at least one). Funding (multi-year series): funding_pct_gte/lte (AS-OF percentile 0..100 — the rank the live endpoint showed at that moment, no look-ahead), streak_h_gte (hours funding kept its sign), funding_sign (positive|negative). Archive (v2, 15-min state archive — YOUNG series, growing daily): archive_feature ∈ obi_skew (−1..+1) | oi_chg_1h_pct (%) | taker_buy_ratio (0..1) | basis_bps, with archive_gte/lte (raw value, no sample floor) and archive_pct_gte/lte (as-of percentile). An archive condition shrinks the match window to the INTERSECTION of the series' spans — the response window and coverage.archive.{window_days,n_samples} disclose exactly how thin the evidence is; weight accordingly. horizons: ["4h","24h","72h"] default, each 1h..168h. Per horizon: n_matches (raw), n_effective (overlap-collapsed — overlapping forward windows are NOT independent samples; all stats use the collapsed set), median/p10/p90 forward return in PERCENT, hit_rate_up (RATIO 0..1), max_dd_median_pct (median worst drawdown before the horizon resolves, ≤0). verdict=history_silent means the condition matched too rarely to measure (n_effective<12 on every horizon): a first-class answer — you are trading on belief, size accordingly; stats are null, never noise. warnings flag overlap collapse, 14-day clustering and silenced horizons. matches_sample = up to 50 audit timestamps. current = where the LAST hour of the same series sits on the condition axes (funding_pct as-of percentile, null below the floor; streak_h; sign) — read the band it falls in, then ask about that band; null only when there is no funding series. Percentile-form conditions exist only once the ranked series has coverage.warmup_samples (12) points — a STRUCTURAL floor (a rank among 2 points is degenerate), not a maturity gate; nothing time-based is withheld. Prices: Binance 1h closes (coverage.price_src). REPORTS HISTORY, NOT PREDICTIONS — past conditional distributions do not imply future returns. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Asset symbol: BTC, ETH, SOL, BNB, XRP, DOGE, HYPE, ZEC or ENA (case-insensitive; a `USDT` suffix is accepted). | |
| horizons | No | Forward horizons as `<hours>h` labels, each 1h..=168h (default `["4h","24h","72h"]`). | |
| archive_gte | No | Match hours where the archive feature's RAW value ≥ this (raw thresholds have no sample floor — they exist from the first point). | |
| archive_lte | No | Match hours where the archive feature's RAW value ≤ this. | |
| funding_sign | No | Funding sign filter: `positive` (longs pay shorts) or `negative`. | |
| streak_h_gte | No | Match hours where funding had kept its sign for at least this many hours. | |
| archive_feature | No | v2: condition on ONE archived state feature (15-min archive): `obi_skew` (−1..+1), `oi_chg_1h_pct` (%), `taker_buy_ratio` (0..1), `basis_bps`. ANDs with the funding fields; the match window becomes the INTERSECTION of the constrained series' spans. Needs at least one archive threshold below. | |
| archive_pct_gte | No | Match hours where the feature's AS-OF percentile ≥ this (0..=100; the rank exists only once its series has warmup_samples points). | |
| archive_pct_lte | No | Match hours where the feature's as-of percentile ≤ this (0..=100). | |
| funding_pct_gte | No | Match hours where the AS-OF funding percentile was ≥ this (0..=100). "As-of" = the rank the live endpoint reported at that moment — computed only from data available then, no look-ahead. | |
| funding_pct_lte | No | Match hours where the as-of funding percentile was ≤ this (0..=100). |
Output Schema
| Name | Required | Description |
|---|---|---|
| symbol | Yes | Uppercase asset symbol, e.g. `BTC`. |
| window | Yes | |
| current | No | The last hour of the matched series on the condition axes; `null` only when there is no funding series at all. |
| verdict | Yes | |
| coverage | Yes | |
| horizons | Yes | Keyed by horizon label (`"4h"`, `"24h"`, `"72h"`). |
| warnings | Yes | Honest caveats: overlap collapse counts, clustering, silenced horizons. |
| condition | Yes | The condition as parsed — verify the server understood your hypothesis. |
| matches_sample | Yes | Up to 50 raw match timestamps, oldest first, RFC3339 UTC — the audit trail: any episode can be checked by hand. |
get_footprint_eventsRead-onlyInspect
Order-book wall events from the 1-minute footprint of a symbol, built on the consolidated book and trade tape of Binance, Bybit, OKX and Hyperliquid. Answers: "Did a large resting order get absorbed on BTC in the last hour?", "Were bid walls pulled before this drop?", "How thin was the book this hour?". A wall = a resting price row far larger than the book's typical row (above median + 5 MAD of row sizes). kind=absorbed: trades hit the wall for at least 5% of its peak size, it still held at least 85% of that peak at the minute's close, and price did not break through it. kind=pulled: the wall fell below half of its peak while trades covered less than 30% of the drop, it did not refill within 2 seconds, and price had come within reach of it (cancelled, not filled). Scope: only price rows that traded in that minute and lie within the nearest 60 rows per side of mid are examined, so distant or untouched walls are not reported. wall_side: bid = resting buy orders, ask = resting sell orders. Per event: t = minute open, epoch ms; price = USD, lower edge of a bucket-wide row; peak_usd = largest resting size seen in the minute; executed_usd = volume traded against the wall; close_usd = resting size at the minute's close (whole dollars). At most 4 events of each kind are kept per minute, the largest peaks. thin_minutes = minutes whose resting depth near mid (within 25 bps, capped at the nearest 60 rows per side) was below the 20th percentile of the previous 2 hours, per side (bid, ask, both); classified = minutes of the window classified so far (the newest 2-3 minutes are still pending). Window: from/to as RFC3339, YYYY-MM-DD or epoch ms; default the last hour; at most 24 h per call, longer is an error, not a clamp. kinds = absorbed and/or pulled (default both); min_usd filters by peak_usd; limit 1..=150 (default 50) keeps the NEWEST events, counts cover the whole window and truncated=true says the list was cut. coverage.archive_from is when recording began; the archive only grows forward, so a window before it is honestly empty. Descriptive: an event states what the book did, not what price will do. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Window end (exclusive), same formats. Default: now. At most 24 h after `from` — longer is an error, not a clamp. | |
| from | No | Window start: RFC3339 (`2026-10-12T09:10:00Z`), `YYYY-MM-DD` (UTC midnight) or epoch milliseconds. Default: `to` minus one hour. | |
| kinds | No | Event kinds to return: `absorbed` and/or `pulled` (default both). | |
| limit | No | Events returned, 1..=150 (default 50). When the window holds more, the NEWEST are kept and `truncated` is true; `counts` still cover the window. | |
| symbol | Yes | Asset symbol: BTC, ETH, SOL, BNB, XRP, DOGE, HYPE, ZEC or ENA (case-insensitive; a `USDT` suffix is accepted). | |
| min_usd | No | Smallest `peak_usd` that counts, USD, >= 0 (default 0 = every event). |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | Yes | Window end (exclusive), RFC3339 UTC. |
| from | Yes | Window start (inclusive, on the minute open), RFC3339 UTC. |
| bucket | Yes | Price-row width of the symbol, USD. |
| counts | Yes | |
| events | Yes | Ordered by `t`, then `kind`, then `price`; at most `limit`, the newest. |
| symbol | Yes | Uppercase asset symbol, e.g. `BTC`. |
| coverage | Yes | |
| truncated | Yes | `true` when the window held more events than `limit`. |
| thin_minutes | Yes |
get_funding_percentileRead-onlyInspect
Current perpetual funding rate for a symbol, ranked vs its own multi-year history as a percentile (0-100). Answers: "Is BTC funding unusually high?", "What percentile is ETH funding at?". Returns rate_bps (basis points, 8h-normalized, cross-venue; positive = longs pay shorts), percentile (0-100), streak_h (hours the rate has kept its sign), and the coverage (venues + history depth backing the rank). Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Asset symbol: BTC, ETH, SOL, BNB, XRP, DOGE, HYPE, ZEC or ENA (case-insensitive; a `USDT` suffix is accepted, e.g. `BTCUSDT`). |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | Yes | Assembly wall-time of the underlying state, RFC3339 UTC. |
| symbol | Yes | Uppercase symbol, e.g. `BTC`. |
| coverage | Yes | Availability of the funding metric (venues, window depth, reason). |
| rate_bps | No | Current cross-venue funding rate, 8h-normalized, in bps. |
| streak_h | No | Same-sign streak of the rate, in hours. |
| percentile | No | Rank (0–100) of the current rate in its own trailing distribution. |
| source_age_ms | No | Age of that source when the state was assembled. |
| source_event_ts_ms | No | Oldest source event backing the cross-venue value, epoch ms. |
get_liquidations_recentRead-onlyInspect
Recent cross-exchange liquidation notional estimates for a symbol. Answers: "How much got liquidated on ETH in the last hour?", "Mostly longs or shorts?". Covers Binance, Bybit, OKX (not Hyperliquid). USD values are base quantity multiplied by each venue's source reference price; Bybit/OKX expose bankruptcy price, so these are estimates rather than execution notionals. Returns whole-dollar estimates, long_ratio (0..1 share of LONGS liquidated), notional_semantics, and event count for the window (window_s, default 3600, max 86400). Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Asset symbol: BTC, ETH, SOL, BNB, XRP, DOGE, HYPE, ZEC or ENA (case-insensitive; a `USDT` suffix is accepted). | |
| window_s | No | Look-back window in seconds, 1..=86400 (default 3600). Values beyond 24 h are rejected, not clamped. |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | Yes | Upstream read time, RFC3339 UTC. |
| symbol | Yes | Uppercase symbol, e.g. `BTC`. |
| long_usd | Yes | Liquidated LONG notional, USD (whole dollars). |
| n_events | Yes | Number of liquidation events in the window. |
| window_s | Yes | The window actually used, seconds (upstream clamps to at most 86400). |
| short_usd | Yes | Liquidated SHORT notional, USD (whole dollars). |
| usd_total | Yes | Total liquidated notional in the window, USD (whole dollars). |
| long_ratio | No | Share of LONGS liquidated, RATIO 0..1 (0.71 = 71 % longs). `null` when the window had zero notional. |
| notional_semantics | Yes | These are estimates (`base qty × source reference price`), not exchange- reported execution notionals. Bybit/OKX publish bankruptcy prices. |
get_market_stateRead-onlyInspect
Single normalized perpetual-futures microstructure snapshot for one crypto symbol, aggregated across Binance, Bybit, OKX and Hyperliquid. Answers: "What's the market state for BTC?", "Is ETH positioning stretched?". Covers BTC, ETH, SOL, BNB, XRP, DOGE, HYPE, ZEC, ENA. Returns funding+2y-percentile, OI, volume, CVD aggression, order-book imbalance, recent liquidation pressure, basis, and key drivers. Scales: _ratio fields are 0..1, percentiles are 0-100, rel. are multipliers of the trailing median (1.4 = 140%), obi.skew is -1..+1 (positive = bid-heavy), cvd.delta_usd positive = net taker buying, basis_bps positive = perp above spot index. Every metric carries a coverage entry (venues, window depth, partial reason) — weight confidence by it. Read-only, ~30s fresh. Use first for market context; for the historical base rate of a condition you observe here (e.g. funding percentile ≥ 90), follow with get_conditional_outcomes. For volume-profile levels (POC, value area, naked POCs) use get_volume_profile; for large aggressive orders use get_big_trades. For absorbed or pulled order-book walls use get_footprint_events. For stacked buy or sell imbalances in the footprint use get_stacked_imbalances.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Asset symbol: BTC, ETH, SOL, BNB, XRP, DOGE, HYPE, ZEC or ENA (case-insensitive; a `USDT` suffix is accepted, e.g. `BTCUSDT`). |
Output Schema
| Name | Required | Description |
|---|---|---|
| oi | Yes | |
| cvd | Yes | |
| liq | Yes | |
| obi | Yes | |
| feed | Yes | Server self-description: compare `feed.tools` with the tools you can call — fewer on your side means a stale connector catalog (reconnect). |
| as_of | Yes | Assembly wall-time, RFC3339 UTC. |
| depth | Yes | |
| price | Yes | |
| symbol | Yes | Uppercase asset symbol, e.g. `BTC`. |
| venues | Yes | |
| volume | Yes | |
| drivers | Yes | Fact-strings for fields that have data; no verdict. |
| funding | Yes | |
| calendar | Yes | |
| coverage | Yes | |
| basis_bps | No | Perp-vs-spot basis in bps: POSITIVE = perp trades ABOVE the spot index ((mark − index) / index × 1e4). |
| age_seconds | Yes | Worst-case age (seconds) across the live sources that fed the non-null live fields. |
| stale_venues | Yes | Venues currently degraded / dropped from consensus this cycle. |
get_ohlcvRead-onlyInspect
Consolidated cross-exchange OHLCV candles for a symbol (all four venues' trades merged onto one timeline). Answers: "Show me BTC 1h candles", "What's the 24h range?". Use for stop placement, position sizing (ATR), R:R and realized-volatility math — the exact-candle complement to get_market_state's approximate price block. Intervals: 5m, 15m, 1h, 4h, 1d (default 1h); limit 1..=200 candles (default 100), oldest first. The consolidated tape holds 31 days, so limit × interval must fit inside it: 1d ≤ 31, 4h ≤ 186, 1h and finer reach the full 200 — beyond that is an error, not a clamp. ZEC and ENA keep a 14-day tape that started filling when they were added, so their longer windows return fewer candles than asked — count what comes back. The NEWEST candle may be partial:true (bucket still forming) — exclude it from ATR/RV math. Fields: t = bucket open epoch ms, o/h/l/c = USD, v = traded volume in BASE units (BTC, ETH, ...), NOT USD — multiply by price for approximate notional. delta = taker-buy minus taker-sell volume inside the candle, BASE units like v (positive = net aggressive buying); the running sum of delta over the returned candles is the CVD of that window. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of candles, newest last: 1..=200 (default 100). | |
| symbol | Yes | Asset symbol: BTC, ETH, SOL, BNB, XRP, DOGE, HYPE, ZEC or ENA (case-insensitive; a `USDT` suffix is accepted). | |
| interval | No | Candle interval: 5m, 15m, 1h, 4h or 1d (default 1h). |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Number of candles returned (may be fewer than `limit` at history edges). |
| symbol | Yes | Uppercase symbol, e.g. `BTC`. |
| candles | Yes | Oldest→newest. |
| interval | Yes | The interval actually used. |
get_stacked_imbalancesRead-onlyInspect
Stacked imbalances in the footprint of a symbol, computed on the consolidated trade tape of Binance, Bybit, OKX and Hyperliquid. Answers: "Any stacked buying imbalance on BTC in the last hour?", "Where did aggressive selling stack up this morning?", "Which price bands saw one-sided market orders?". Rule (diagonal, the same as the MarketTrace footprint chart): each candle is split into price rows bucket wide; rows with no trades are skipped, so a row's neighbour is the nearest traded row above or below. A row is a buy imbalance when its taker-buy volume is at least ratio × the taker-sell volume of the nearest traded row below it, and a sell imbalance when its taker-sell volume is at least ratio × the taker-buy volume of the nearest traded row above it; a zero opposite side counts, zero against zero does not. A row counts only if its total volume is at least 10% of the candle's largest row. A stacked imbalance = 3 or more consecutive traded rows flagged on the same side within one candle; a row can sit in a buy run and a sell run at once. ratio = 2, 3 or 4 (default 3). interval = 1m, 5m, 15m or 1h candles (default 1m). Per event: t = candle open, epoch ms; kind = buy (aggressive buying) or sell (aggressive selling); low/high = USD band from the lower edge of the run's lowest row to the upper edge of its highest row (it may include untraded rows); rows = flagged rows in the run; usd = dominant-side volume of the run × row price, whole dollars; partial = true while the candle is still forming or closed less than 3 minutes ago (the tape may still add trades). candles = candles with trades in the window. counts = runs per kind in the whole window; events lists at most limit of them (1..=150, default 50): when there are more, the LARGEST by usd are kept and truncated=true; the list is ordered by time. kinds = buy and/or sell (default both). On BTC at ratio 3 a typical hour has about 38 runs on 1m candles, 13 on 5m, 4 on 15m and 1 on 1h. Window: from/to as RFC3339, YYYY-MM-DD or epoch ms; default the last hour; a candle is included when its open lies in [from, to); at most 12 h per call and from no older than 31 days, beyond either is an error, not a clamp. Rows are never merged: when zoomed out the chart merges rows and outlines fewer, wider runs, so it matches this output only at a zoom where each row is one bucket. coverage.venues lists the venues with tape in the window; an empty list means no tape there (ZEC and ENA keep a 14-day tape). Descriptive: an imbalance states where aggressive volume was one-sided, not what price will do. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Window end (exclusive), same formats. Default: now. At most 12 h after `from`. | |
| from | No | Window start: RFC3339, `YYYY-MM-DD` (UTC midnight) or epoch ms. Default: `to` minus one hour. No older than 31 days. | |
| kinds | No | Sides to return: `buy` and/or `sell` (default both). | |
| limit | No | Runs listed, 1..=150 (default 50); the largest by usd are kept. | |
| ratio | No | Dominance ratio: 2, 3 or 4 (default 3). Read as any JSON value and checked in [`stacked_imbalances_query`], so 2.5 or "3" is an invalid_params NAMING the parameter (a typed `u32` would fail inside rmcp's deserializer with no field name). The schema says integer. | |
| symbol | Yes | Asset symbol: BTC, ETH, SOL, BNB, XRP, DOGE, HYPE, ZEC or ENA (case-insensitive; a `USDT` suffix is accepted). | |
| interval | No | Candle interval: 1m, 5m, 15m or 1h (default 1m). |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | Yes | Window end as given (exclusive), RFC3339 UTC. |
| from | Yes | Window start as given (inclusive), RFC3339 UTC. |
| ratio | Yes | Dominance ratio used: 2, 3 or 4. |
| bucket | Yes | Price-row width of the symbol, USD (rows are never merged). |
| counts | Yes | |
| events | Yes | At most `limit` runs — the largest by `usd` — ordered by `t`, then `kind` (buy first), then `low`. |
| symbol | Yes | Uppercase asset symbol, e.g. `BTC`. |
| candles | Yes | Candles of the window with trades. |
| coverage | Yes | `venues` = venues with at least one footprint cell in the window (empty = no tape there). |
| interval | Yes | Candle length: `1m`, `5m`, `15m` or `1h`. |
| truncated | Yes | `true` when the window held more runs than `limit`. |
get_state_historyRead-onlyInspect
Time series of any numeric market-state fields from the 15-minute full-state archive — the derivative/trend view get_market_state cannot give. Answers: "How did OI build over the last 3 days?", "Is funding percentile rising or falling this week?", "When did the book skew flip?". fields = dotted numeric paths of get_market_state (1..=16), e.g. funding.percentile, oi.usd, obi.skew, cvd.delta_usd, basis_bps, price.last, depth.bid_usd.10bps, venues.binance.oi_usd. Returns parallel arrays: t (epoch ms, ascending) + series[field] aligned with t; null = that field was not populated in the archived row (honest hole, common near the archive's start — blocks accrue at their own pace). Downsampling: max_points 1..=1000 (default 200); stride in the response says how many 15-min rows each point skips; the newest row is never sampled away. coverage.archive_from/to are the WHOLE archive's bounds — the archive is YOUNG (born 2026-07-03) and grows a row per 15 min per asset; a thin answer is honest, not broken. from/to accept RFC3339, YYYY-MM-DD or epoch ms. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Range end, same formats. Default: the whole archive. | |
| from | No | Range start: RFC3339 (`2026-07-03T08:00:00Z`), `YYYY-MM-DD` (UTC midnight), or epoch milliseconds. Default: the whole archive. | |
| fields | Yes | Dotted numeric paths of the market state, 1..=16 per request — e.g. `funding.percentile`, `oi.usd`, `obi.skew`, `cvd.delta_usd`, `basis_bps`, `price.last`, `depth.bid_usd.10bps`, `venues.binance.oi_usd`. Typos get an error naming the offender. | |
| symbol | Yes | Asset symbol: BTC, ETH, SOL, BNB, XRP, DOGE, HYPE, ZEC or ENA (case-insensitive; a `USDT` suffix is accepted). | |
| max_points | No | Points returned after downsampling, 1..=1000 (default 200). The response's `stride` says how many archived rows each point skips. |
Output Schema
| Name | Required | Description |
|---|---|---|
| t | Yes | Epoch-ms per returned point, ascending (ms like `get_ohlcv`'s `t`). |
| to | Yes | Last returned point, RFC3339 UTC (empty string when no points). |
| from | Yes | First returned point, RFC3339 UTC (empty string when no points). |
| series | Yes | Requested dotted field → one value per point (aligned with `t`). |
| stride | Yes | Downsampling stride actually applied (1 = every archived row). |
| symbol | Yes | Uppercase asset symbol, e.g. `BTC`. |
| coverage | Yes | |
| n_points | Yes | Points returned (= `t.len()`). |
| n_available | Yes | Rows available in the requested range BEFORE downsampling. |
get_volume_profileRead-onlyInspect
Volume-profile reference levels for a symbol, from the consolidated trade tape of Binance, Bybit, OKX and Hyperliquid. Answers: "Where are the key volume levels on BTC?", "Is price inside yesterday's value area?", "Any untested POCs nearby?". Sessions are UTC days. poc = price row with the most traded volume; vah/val = top and bottom of the value area, the band around the POC that holds 70% of the session's volume. Returns today (the session still forming, developing:true, its levels still move), days (the last N complete days, days 1..=30, default 7, oldest first), composite (one profile over those days plus today) and naked_pocs (POCs of the last 30 complete days that price has not traded back to since). Per profile: poc/vah/val in USD (lower edge of a bucket-wide price row), va_width_pct = (vah − val) / poc × 100, volume in BASE units (BTC, ETH, ...), taker_buy_ratio 0..1 (share of volume that was aggressive buying). va_width_rank.percentile (0-100) ranks the latest complete day's va_width_pct among the last n_days complete days: low = an unusually tight day; null below 12 days. Levels only, no histogram. For where price sits against these levels read price.last from get_market_state. ZEC and ENA were added later, so fewer days come back for them: count what is returned and read coverage. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Complete UTC days to return, 1..=30 (default 7). Out of range is an error, not a clamp. | |
| symbol | Yes | Asset symbol: BTC, ETH, SOL, BNB, XRP, DOGE, HYPE, ZEC or ENA (case-insensitive; a `USDT` suffix is accepted). |
Output Schema
| Name | Required | Description |
|---|---|---|
| days | Yes | The last N complete UTC days that have data, oldest first. |
| as_of | Yes | Coverage time of today's session, RFC3339 UTC (build time when today is `null`). |
| today | No | Today's developing session; `null` when it could not be served. |
| bucket | Yes | Price-row width, USD. |
| symbol | Yes | Uppercase asset symbol, e.g. `BTC`. |
| coverage | Yes | |
| composite | Yes | |
| naked_pocs | Yes | Ascending by date. |
| va_width_rank | Yes | |
| naked_lookback_days | Yes | Complete days actually checked for naked POCs (≤ 30). |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
- First observed
get_big_trades - First observed
get_conditional_outcomes - First observed
get_footprint_events - First observed
get_funding_percentile - First observed
get_liquidations_recent - First observed
get_market_state - First observed
get_ohlcv - First observed
get_stacked_imbalances - First observed
get_state_history - First observed
get_volume_profile
Related MCP Connectors
Live crypto market signals for AI agents: perp liquidations, funding, OI positioning, yield, FX.
Exchange-exact crypto derivatives data for AI agents: OI, funding, liquidations, 13 venues.
Crypto positioning and macro for agents: funding, open interest, execution cost, volatility
Agent-native crypto market-data over MCP+REST: order flow, whales, liquidations, calibrated scores
Related MCP Servers
- AlicenseBqualityFmaintenanceCross-exchange crypto orderflow for AI agents. 20 exchanges, 26 tokens, 9 tools — CVD, whale activity, funding/OI, 7-year OHLCV, on-chain address risk (EVM + Solana). Pay-per-call USDC via x402, no API key.927 npm1MIT
- AlicenseAqualityDmaintenanceReal-time crypto intelligence for AI agents. Technical analysis, liquidation heatmaps, sentiment, and funding rates for 50+ Hyperliquid perpetuals via x402 micropayments.1568 PyPI1MIT

usenami-mcpofficial
AlicenseAqualityFmaintenancePerp-first funding rate & RWA spread data for AI agents. 30+ CEX/DEX venues, 6 tools (4 x402-paywalled, 2 free), bring-your-own-wallet via Base mainnet.61MIT- AlicenseAqualityAmaintenanceAI-native quantitative trading signal engine for crypto and TradFi perpetuals. Multi-factor composite BUY/SELL/HOLD signals, cross-venue funding rate arbitrage scanning, and market regime detection powered by Hyperliquid data.8841 npm10MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.