The agent feed, MCP methodology
A read-only, descriptive cross-exchange microstructure feed exposed over MCP (Model Context Protocol) for AI agents: seven assets across four venues, reported as facts and normalization with no verdicts.
Connect an agent at /agents.
What it is
One MCP call returns one normalized market-state object. The agent feed covers seven assets, BTC, ETH, SOL, BNB, XRP, DOGE, HYPE, across Binance, Bybit, OKX and Hyperliquid, published under the registry name ai.markettrace/agent-feed and hosted at https://api.markettrace.ai/mcp.
The feed reports what it can measure and self-declares how much to trust each number. It never returns a trade recommendation; it reports history and coverage-honest facts. It reports history, not predictions.
Data sources
The feed reuses the same cross-exchange pipeline that powers the site , all-Rust, zero Python daemons. Each metric carries its own provenance and links to a deeper per-metric methodology:
- Funding. An OI-informed cross-venue rate plus a multi-year percentile over a consistent, deep venue set. Funding methodology →
- Open interest. A 4-venue native-USD sum: Bybit
openInterestValue, OKXoiUsd, Hyperliquidcoins × markPx, Binancecoins × mark. - Volume. A 30-day consolidated tape.
- CVD & order-book imbalance. Cross-venue taker flow and flow-weighted OBI. Positioning methodology →
- Liquidations. Three venues, Binance, Bybit, OKX; Hyperliquid is deliberately skipped. Liquidations methodology →
- Basis. Perp-vs-spot in basis points; positive means the perp trades above the spot index, where the index is a multi-exchange spot composite.
- Price / OHLCV. Consolidated cross-exchange candles.
Open interest sums the four venues in native USD, Bybit openInterestValue, OKX oiUsd, Hyperliquid coins × markPx, Binance coins × mark. oi.rel compares the current value against its trailing hourly median (1d / 1w / 1m), and oi.chg_1h_pct is the change over the previous complete hour. The baseline joins on the live venue set, so legacy Binance-only rows drop out of the median, an honest re-accrual rather than a silent blend of old and new coverage.
volume.usd_24h is the consolidated 24-hour traded notional across venues; volume.rel expresses that against its trailing hourly median, as a multiplier.
price.last is the consolidated mid. The chg_*_pct fields are returns versus a tolerance-matched baseline; atr_1h_pct is ATR(14) on hourly bars, as a percent of price; and rv_24h_pct is realized volatility annualized from minute returns.
Coverage honesty
Every metric carries a coverage entry. A thin or young metric is answered honestly, with its depth disclosed, and is never faked to look deep.
coverage: { venues, window_days, n_samples, partial, reason }
reason ∈ { accruing | unavailable | degraded | stale }age_seconds is the worst-case age across the live sources that fed the non-null fields, so a single stale sub-feed cannot hide behind fresher ones. A feed beacon on every response , feed.version and feed.tools, lets an agent detect a stale, cached tool catalog and re-read the schema.
Conditional outcomes
The flagship tool measures base rates of forward returns after a caller-stated condition. It replaces folklore, “high funding means a squeeze”, with the base rate drawn from the feed's own data. The mechanics are deliberately conservative:
- As-of percentile. At each historical hour
t, a condition stated as a percentile is ranked only against data at or beforet, no look-ahead. A structural floor applies: an as-of rank exists only once its series holds 12 samples, because a rank among two points is degenerate. Raw-value thresholds carry no such floor. - Matching. A match is any hour where every stated condition field holds at once, the fields AND together.
- Forward returns. Per horizon (default 4h / 24h / 72h):
r_h(t) = close(t+h) / close(t) − 1 // forward return at horizon h maxDD_h = min( low(t+1 … t+h) ) / close(t) − 1 // worst hourly low in (t, t+h]
- Overlap collapse. Overlapping forward windows are not independent samples, so matches are thinned to at least one horizon apart, yielding
n_effective; the rawn_matchesis reported alongside it. Every statistic is computed onn_effective. - Cluster warning. The response reports the share of effective matches falling inside the densest 14-day window, a guard against one squeeze episode masquerading as N independent episodes.
- The
history_silentverdict. Below 12 effective matches on every horizon, the statistics are null and the verdict readshistory_silent. This is a first-class answer, “the history is silent; you would be trading on belief, so size accordingly”, not an error. - Price series. Returns are computed on Binance 1-hour closes (
coverage.price_src), by design: no consolidated or venue-stitched series inside a single backtest. - Archive-feature (v2) conditions. Conditions on
obi_skew,oi_chg_1h_pct,taker_buy_ratioorbasis_bpsintersect the funding window with the young 15-minute archive; the response window reports that intersection honestly.
State history
A 15-minute archive stores the full served market-state per asset. get_state_history returns parallel time-series arrays of any numeric dotted field, funding.percentile, oi.usd, obi.skew, downsampled to max_points. The stride used is reported, and the newest row is never sampled away. The archive is young, it was born 2026-07-03, and grows forward, so thin answers are honest, not broken.
Tools
get_market_state, one normalized market-state object for an asset.get_funding_percentile, funding rate with its multi-year percentile.get_liquidations_recent, recent liquidations across the three covered venues.get_ohlcv, consolidated cross-exchange candles.get_conditional_outcomes, base-rate forward returns after a stated condition.get_state_history, time-series arrays from the 15-minute archive.
For how to connect an agent, see /agents.
Limitations
- Binance-only price in the backtest. The conditional-outcomes series uses Binance 1-hour closes; the delta versus a consolidated price is small at the 4h-and-longer horizons it reports.
- The state archive is young. It grows forward from 2026-07-03, so archive-feature conditions and
get_state_historyreturn short windows until it fills. - Inherited coverage caveats.Each underlying metric's own caveats carry through, weight any reading by its
coverageentry. - Read-only, descriptive. The feed is read-only and never a trade recommendation. It reports history, not predictions.
Versioning
Methodology version v1.4.1 · updated 2026-07-04. Material changes (new sources, formula tweaks, threshold changes) bump the version and update dateModified in the structured data above.
v1.4.1 (2026-07-04): first published methodology for the MCP agent feed, the coverage-honesty model, conditional-outcomes statistics, and the 15-minute state archive.