Skip to main content
Glama

MarketTrace agent-feed

Server Details

Crypto perps for AI agents: funding, open interest, liquidations, order book, CVD, volume profile.

Ownership verified

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 tools
get_big_trades
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoWindow end (exclusive), same formats. Default: now. At most 12 h after `from`.
fromNoWindow start: RFC3339, `YYYY-MM-DD` (UTC midnight) or epoch ms. Default: `to` minus one hour. No older than 31 days.
limitNoTrades listed, 1..=150 (default 50); the largest are kept.
symbolYesAsset symbol: BTC, ETH, SOL, BNB, XRP, DOGE, HYPE, ZEC or ENA (case-insensitive; a `USDT` suffix is accepted).
min_usdNoSmallest 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

ParametersJSON Schema
NameRequiredDescription
toYesWindow end (exclusive), RFC3339 UTC.
fromYesWindow start (inclusive), RFC3339 UTC.
symbolYesUppercase asset symbol, e.g. `BTC`.
totalsYes
tradesYesAt most `limit` trades — the largest by `usd` — ordered by `t`, then `venue`, then `aggressor`.
min_usdYesSmallest notional that counts, whole USD — the value actually used.
settledYes`false` while the window reaches into the last 3 minutes, which the tape may not hold in full yet.
coverageYes`venues` = venues whose tape holds at least one print inside the window (empty = no tape there, not no trades).
truncatedYes`true` when the window held more big trades than `limit`.
get_conditional_outcomes
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesAsset symbol: BTC, ETH, SOL, BNB, XRP, DOGE, HYPE, ZEC or ENA (case-insensitive; a `USDT` suffix is accepted).
horizonsNoForward horizons as `<hours>h` labels, each 1h..=168h (default `["4h","24h","72h"]`).
archive_gteNoMatch hours where the archive feature's RAW value ≥ this (raw thresholds have no sample floor — they exist from the first point).
archive_lteNoMatch hours where the archive feature's RAW value ≤ this.
funding_signNoFunding sign filter: `positive` (longs pay shorts) or `negative`.
streak_h_gteNoMatch hours where funding had kept its sign for at least this many hours.
archive_featureNov2: 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_gteNoMatch hours where the feature's AS-OF percentile ≥ this (0..=100; the rank exists only once its series has warmup_samples points).
archive_pct_lteNoMatch hours where the feature's as-of percentile ≤ this (0..=100).
funding_pct_gteNoMatch 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_lteNoMatch hours where the as-of funding percentile was ≤ this (0..=100).

Output Schema

ParametersJSON Schema
NameRequiredDescription
symbolYesUppercase asset symbol, e.g. `BTC`.
windowYes
currentNoThe last hour of the matched series on the condition axes; `null` only when there is no funding series at all.
verdictYes
coverageYes
horizonsYesKeyed by horizon label (`"4h"`, `"24h"`, `"72h"`).
warningsYesHonest caveats: overlap collapse counts, clustering, silenced horizons.
conditionYesThe condition as parsed — verify the server understood your hypothesis.
matches_sampleYesUp to 50 raw match timestamps, oldest first, RFC3339 UTC — the audit trail: any episode can be checked by hand.
get_footprint_events
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoWindow end (exclusive), same formats. Default: now. At most 24 h after `from` — longer is an error, not a clamp.
fromNoWindow start: RFC3339 (`2026-10-12T09:10:00Z`), `YYYY-MM-DD` (UTC midnight) or epoch milliseconds. Default: `to` minus one hour.
kindsNoEvent kinds to return: `absorbed` and/or `pulled` (default both).
limitNoEvents returned, 1..=150 (default 50). When the window holds more, the NEWEST are kept and `truncated` is true; `counts` still cover the window.
symbolYesAsset symbol: BTC, ETH, SOL, BNB, XRP, DOGE, HYPE, ZEC or ENA (case-insensitive; a `USDT` suffix is accepted).
min_usdNoSmallest `peak_usd` that counts, USD, >= 0 (default 0 = every event).

Output Schema

ParametersJSON Schema
NameRequiredDescription
toYesWindow end (exclusive), RFC3339 UTC.
fromYesWindow start (inclusive, on the minute open), RFC3339 UTC.
bucketYesPrice-row width of the symbol, USD.
countsYes
eventsYesOrdered by `t`, then `kind`, then `price`; at most `limit`, the newest.
symbolYesUppercase asset symbol, e.g. `BTC`.
coverageYes
truncatedYes`true` when the window held more events than `limit`.
thin_minutesYes
get_funding_percentile
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesAsset symbol: BTC, ETH, SOL, BNB, XRP, DOGE, HYPE, ZEC or ENA (case-insensitive; a `USDT` suffix is accepted, e.g. `BTCUSDT`).

Output Schema

ParametersJSON Schema
NameRequiredDescription
as_ofYesAssembly wall-time of the underlying state, RFC3339 UTC.
symbolYesUppercase symbol, e.g. `BTC`.
coverageYesAvailability of the funding metric (venues, window depth, reason).
rate_bpsNoCurrent cross-venue funding rate, 8h-normalized, in bps.
streak_hNoSame-sign streak of the rate, in hours.
percentileNoRank (0–100) of the current rate in its own trailing distribution.
source_age_msNoAge of that source when the state was assembled.
source_event_ts_msNoOldest source event backing the cross-venue value, epoch ms.
get_liquidations_recent
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesAsset symbol: BTC, ETH, SOL, BNB, XRP, DOGE, HYPE, ZEC or ENA (case-insensitive; a `USDT` suffix is accepted).
window_sNoLook-back window in seconds, 1..=86400 (default 3600). Values beyond 24 h are rejected, not clamped.

Output Schema

ParametersJSON Schema
NameRequiredDescription
as_ofYesUpstream read time, RFC3339 UTC.
symbolYesUppercase symbol, e.g. `BTC`.
long_usdYesLiquidated LONG notional, USD (whole dollars).
n_eventsYesNumber of liquidation events in the window.
window_sYesThe window actually used, seconds (upstream clamps to at most 86400).
short_usdYesLiquidated SHORT notional, USD (whole dollars).
usd_totalYesTotal liquidated notional in the window, USD (whole dollars).
long_ratioNoShare of LONGS liquidated, RATIO 0..1 (0.71 = 71 % longs). `null` when the window had zero notional.
notional_semanticsYesThese are estimates (`base qty × source reference price`), not exchange- reported execution notionals. Bybit/OKX publish bankruptcy prices.
get_market_state
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesAsset symbol: BTC, ETH, SOL, BNB, XRP, DOGE, HYPE, ZEC or ENA (case-insensitive; a `USDT` suffix is accepted, e.g. `BTCUSDT`).

Output Schema

ParametersJSON Schema
NameRequiredDescription
oiYes
cvdYes
liqYes
obiYes
feedYesServer self-description: compare `feed.tools` with the tools you can call — fewer on your side means a stale connector catalog (reconnect).
as_ofYesAssembly wall-time, RFC3339 UTC.
depthYes
priceYes
symbolYesUppercase asset symbol, e.g. `BTC`.
venuesYes
volumeYes
driversYesFact-strings for fields that have data; no verdict.
fundingYes
calendarYes
coverageYes
basis_bpsNoPerp-vs-spot basis in bps: POSITIVE = perp trades ABOVE the spot index ((mark − index) / index × 1e4).
age_secondsYesWorst-case age (seconds) across the live sources that fed the non-null live fields.
stale_venuesYesVenues currently degraded / dropped from consensus this cycle.
get_ohlcv
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of candles, newest last: 1..=200 (default 100).
symbolYesAsset symbol: BTC, ETH, SOL, BNB, XRP, DOGE, HYPE, ZEC or ENA (case-insensitive; a `USDT` suffix is accepted).
intervalNoCandle interval: 5m, 15m, 1h, 4h or 1d (default 1h).

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYesNumber of candles returned (may be fewer than `limit` at history edges).
symbolYesUppercase symbol, e.g. `BTC`.
candlesYesOldest→newest.
intervalYesThe interval actually used.
get_stacked_imbalances
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoWindow end (exclusive), same formats. Default: now. At most 12 h after `from`.
fromNoWindow start: RFC3339, `YYYY-MM-DD` (UTC midnight) or epoch ms. Default: `to` minus one hour. No older than 31 days.
kindsNoSides to return: `buy` and/or `sell` (default both).
limitNoRuns listed, 1..=150 (default 50); the largest by usd are kept.
ratioNoDominance 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.
symbolYesAsset symbol: BTC, ETH, SOL, BNB, XRP, DOGE, HYPE, ZEC or ENA (case-insensitive; a `USDT` suffix is accepted).
intervalNoCandle interval: 1m, 5m, 15m or 1h (default 1m).

Output Schema

ParametersJSON Schema
NameRequiredDescription
toYesWindow end as given (exclusive), RFC3339 UTC.
fromYesWindow start as given (inclusive), RFC3339 UTC.
ratioYesDominance ratio used: 2, 3 or 4.
bucketYesPrice-row width of the symbol, USD (rows are never merged).
countsYes
eventsYesAt most `limit` runs — the largest by `usd` — ordered by `t`, then `kind` (buy first), then `low`.
symbolYesUppercase asset symbol, e.g. `BTC`.
candlesYesCandles of the window with trades.
coverageYes`venues` = venues with at least one footprint cell in the window (empty = no tape there).
intervalYesCandle length: `1m`, `5m`, `15m` or `1h`.
truncatedYes`true` when the window held more runs than `limit`.
get_state_history
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoRange end, same formats. Default: the whole archive.
fromNoRange start: RFC3339 (`2026-07-03T08:00:00Z`), `YYYY-MM-DD` (UTC midnight), or epoch milliseconds. Default: the whole archive.
fieldsYesDotted 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.
symbolYesAsset symbol: BTC, ETH, SOL, BNB, XRP, DOGE, HYPE, ZEC or ENA (case-insensitive; a `USDT` suffix is accepted).
max_pointsNoPoints returned after downsampling, 1..=1000 (default 200). The response's `stride` says how many archived rows each point skips.

Output Schema

ParametersJSON Schema
NameRequiredDescription
tYesEpoch-ms per returned point, ascending (ms like `get_ohlcv`'s `t`).
toYesLast returned point, RFC3339 UTC (empty string when no points).
fromYesFirst returned point, RFC3339 UTC (empty string when no points).
seriesYesRequested dotted field → one value per point (aligned with `t`).
strideYesDownsampling stride actually applied (1 = every archived row).
symbolYesUppercase asset symbol, e.g. `BTC`.
coverageYes
n_pointsYesPoints returned (= `t.len()`).
n_availableYesRows available in the requested range BEFORE downsampling.
get_volume_profile
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoComplete UTC days to return, 1..=30 (default 7). Out of range is an error, not a clamp.
symbolYesAsset symbol: BTC, ETH, SOL, BNB, XRP, DOGE, HYPE, ZEC or ENA (case-insensitive; a `USDT` suffix is accepted).

Output Schema

ParametersJSON Schema
NameRequiredDescription
daysYesThe last N complete UTC days that have data, oldest first.
as_ofYesCoverage time of today's session, RFC3339 UTC (build time when today is `null`).
todayNoToday's developing session; `null` when it could not be served.
bucketYesPrice-row width, USD.
symbolYesUppercase asset symbol, e.g. `BTC`.
coverageYes
compositeYes
naked_pocsYesAscending by date.
va_width_rankYes
naked_lookback_daysYesComplete days actually checked for naked POCs (≤ 30).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updates
    • First observedget_big_trades
    • First observedget_conditional_outcomes
    • First observedget_footprint_events
    • First observedget_funding_percentile
    • First observedget_liquidations_recent
    • First observedget_market_state
    • First observedget_ohlcv
    • First observedget_stacked_imbalances
    • First observedget_state_history
    • First observedget_volume_profile

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Real-time crypto intelligence for AI agents. Technical analysis, liquidation heatmaps, sentiment, and funding rates for 50+ Hyperliquid perpetuals via x402 micropayments.
    15
    68 PyPI
    1
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    Perp-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.
    6
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.