Crypto Data & Market Analysis Agent
One-call market verdict, plus funding, open interest, execution cost, volatility and macro
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (1)
- LOWin get_market_quotes
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"crypto-data-market-analysis": {
"url": "https://asistent-crypto.vercel.app/mcp"
}
}
}Remote-Endpunkte
https://asistent-crypto.vercel.app/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (17)
🟢get_crypto_market(ids, vs_currency)
Live crypto prices and market data: spot price, market cap, 24h volume and change for any coins (Bitcoin, Ethereum, Solana, altcoins). Call for any price, market cap or volume question.
Eingabe-Schema
{
"type": "object",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Coin IDs as lowercase slugs, e.g. ['bitcoin','ethereum','solana']"
},
"vs_currency": {
"type": "string",
"description": "Quote currency, defaults to 'usd'"
}
},
"required": []
}Ausgabe-Schema
{
"type": "object",
"properties": {
"result": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Coin id, e.g. `bitcoin`."
},
"symbol": {
"type": "string"
},
"name": {
"type": "string"
},
"price": {
"type": "number"
},
"change24h": {
"type": [
"number",
"null"
],
"description": "Percent."
},
"change7d": {
"type": [
"number",
"null"
],
"description": "Percent."
},
"marketCap": {
"type": [
"number",
"null"
]
},
"volume24h": {
"type": [
"number",
"null"
]
}
},
"required": [
"id",
"symbol",
"name",
"price"
]
}
}
},
"required": [
"result"
]
}🟢get_fear_greed
Crypto Fear & Greed Index: current and previous value plus classification (Extreme Fear to Extreme Greed), with recent history. Best used as a contrarian sentiment signal, not on its own.
Eingabe-Schema
{
"type": "object",
"properties": {}
}Ausgabe-Schema
{
"type": "object",
"properties": {
"value": {
"type": "number",
"description": "0-100. Low is fear, high is greed."
},
"classification": {
"type": "string"
},
"previousValue": {
"type": [
"number",
"null"
]
},
"previousClassification": {
"type": [
"string",
"null"
]
},
"history": {
"type": "array",
"items": {
"type": "object",
"properties": {
"time": {
"type": "number"
},
"value": {
"type": "number"
}
},
"required": [
"time",
"value"
]
}
}
},
"required": [
"value",
"classification",
"history"
]
}🟢get_derivatives(symbol)
Venue-by-venue breakdown for a single coin: what each major liquid venue — Binance, Bybit, OKX and Hyperliquid, the largest perpetual DEX — shows for funding and open interest, taken from that venue's largest-open-interest perpetual. Returns the per-venue rows plus the average funding, total open interest in USD and the funding spread. Reach for this when divergence between venues matters — one venue far more positive or negative than the rest signals localised positioning rather than market consensus. Takes one coin only; to sweep several at once, call get_derivatives_aggregate. Funding is returned in PERCENT per 8 hours (0.0061 means 0.0061%, not 0.61%) and also ANNUALIZED as a percent per year, so it can be compared directly against any other yield; open interest is in USD. Errors if the coin has no major-venue data. Current snapshot.
Eingabe-Schema
{
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "Coin or pair, e.g. BTC, BTCUSDT, ETH"
}
},
"required": [
"symbol"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"coin": {
"type": "string"
},
"avgFundingRate": {
"type": [
"number",
"null"
],
"description": "Percent per 8 hours. 0.0067 means 0.0067%, not 0.67%."
},
"avgFundingAnnualizedPct": {
"type": [
"number",
"null"
],
"description": "The same funding as a yearly percentage, comparable to any other yield."
},
"totalOpenInterestUsd": {
"type": [
"number",
"null"
],
"description": "Summed across the major venues."
},
"fundingSpread": {
"type": [
"number",
"null"
],
"description": "Highest minus lowest venue funding. A wide spread marks localised positioning."
},
"exchangeCount": {
"type": "number",
"description": "How many major venues backed the numbers."
},
"perExchange": {
"type": "array",
"description": "Per-venue breakdown, from each venue's largest-open-interest perpetual.",
"items": {
"type": "object",
"properties": {
"exchange": {
"type": "string",
"enum": [
"Binance",
"Bybit",
"OKX",
"Hyperliquid"
],
"description": "Venue name. Hyperliquid is the only DEX in the set; its native hourly funding is already converted to the same percent-per-8h unit as the others."
},
"fundingRate": {
"type": [
"number",
"null"
],
"description": "Percent per 8 hours."
},
"openInterestUsd": {
"type": [
"number",
"null"
]
}
},
"required": [
"exchange"
]
}
}
},
"required": [
"coin",
"perExchange",
"exchangeCount"
]
}🟢get_macro_rates
Live US macro data with the derived signals, not just the raw levels: Fed funds rate, 2Y and 10Y Treasury yields plus the 2s10s YIELD CURVE SPREAD (with its direction — steepening or flattening — and an inverted flag), CPI inflation year-over-year, the broad trade-weighted dollar index (a different index from the ICE dollar index, so read its direction rather than comparing its level), VIX and M2 money supply. Every series carries its previous reading, so direction is available without a second call. The curve slope, not the level of any single yield, is the liquidity and cycle signal: inversion has preceded every US recession, and re-steepening out of an inversion usually marks the start of easing — the moment that matters for risk assets. VIX explains crypto drawdowns that have no crypto-native cause.
Eingabe-Schema
{
"type": "object",
"properties": {}
}Ausgabe-Schema
{
"type": "object",
"properties": {
"fedFunds": {
"type": [
"object",
"null"
],
"properties": {
"value": {
"type": "number"
},
"date": {
"type": "string",
"description": "ISO date of the observation."
},
"previous": {
"type": [
"number",
"null"
],
"description": "Prior observation, for direction."
}
},
"required": [
"value",
"date"
]
},
"ust2y": {
"type": [
"object",
"null"
],
"properties": {
"value": {
"type": "number"
},
"date": {
"type": "string",
"description": "ISO date of the observation."
},
"previous": {
"type": [
"number",
"null"
],
"description": "Prior observation, for direction."
}
},
"required": [
"value",
"date"
]
},
"ust10y": {
"type": [
"object",
"null"
],
"properties": {
"value": {
"type": "number"
},
"date": {
"type": "string",
"description": "ISO date of the observation."
},
"previous": {
"type": [
"number",
"null"
],
"description": "Prior observation, for direction."
}
},
"required": [
"value",
"date"
]
},
"cpiYoY": {
"type": [
"object",
"null"
],
"properties": {
"value": {
"type": "number"
},
"date": {
"type": "string",
"description": "ISO date of the observation."
},
"previous": {
"type": [
"number",
"null"
],
"description": "Prior observation, for direction."
}
},
"required": [
"value",
"date"
]
},
"dollarIndex": {
"type": [
"object",
"null"
],
"properties": {
"value": {
"type": "number"
},
"date": {
"type": "string",
"description": "ISO date of the observation."
},
"previous": {
"type": [
"number",
"null"
],
"description": "Prior observation, for direction."
}
},
"required": [
"value",
"date"
]
},
"vix": {
"type": [
"object",
"null"
],
"properties": {
"value": {
"type": "number"
},
"date": {
"type": "string",
"description": "ISO date of the observation."
},
"previous": {
"type": [
"number",
"null"
],
"description": "Prior observation, for direction."
}
},
"required": [
"value",
"date"
]
},
"m2": {
"type": [
"object",
"null"
],
"properties": {
"value": {
"type": "number"
},
"date": {
"type": "string",
"description": "ISO date of the observation."
},
"previous": {
"type": [
"number",
"null"
],
"description": "Prior observation, for direction."
}
},
"required": [
"value",
"date"
]
},
"yieldCurve2s10s": {
"type": [
"object",
"null"
],
"description": "10Y minus 2Y. Inversion has preceded every recent US recession.",
"properties": {
"value": {
"type": "number"
},
"previous": {
"type": [
"number",
"null"
]
},
"direction": {
"type": [
"string",
"null"
],
"enum": [
"steepening",
"flattening",
"flat",
null
]
},
"inverted": {
"type": "boolean"
}
},
"required": [
"value",
"inverted"
]
}
}
}🟢get_economic_calendar(days)
Scheduled macro events (CPI, PCE, NFP / Employment Situation, GDP, Retail Sales, FOMC) from the official US release calendar. Call for upcoming economic catalysts. Returns the scheduled date and indicator, not analyst consensus.
Eingabe-Schema
{
"type": "object",
"properties": {
"days": {
"type": "number",
"description": "How many days ahead to cover, defaults to 14"
}
}
}Ausgabe-Schema
{
"type": "object",
"properties": {
"result": {
"type": "array",
"description": "Scheduled macro releases ahead, soonest first.",
"items": {
"type": "object",
"properties": {
"event": {
"type": "string"
},
"country": {
"type": "string"
},
"time": {
"type": "string"
},
"impact": {
"type": "string"
},
"estimate": {
"type": [
"number",
"null"
]
},
"previous": {
"type": [
"number",
"null"
]
},
"actual": {
"type": [
"number",
"null"
],
"description": "Null until the release lands."
}
},
"required": [
"event",
"country",
"time",
"impact"
]
}
}
},
"required": [
"result"
]
}🟢get_defi_overview
Live DeFi overview: total value locked (TVL), top chains by TVL and stablecoin market cap. Call for DeFi flows, liquidity and dry powder, or risk-on/risk-off reads.
Eingabe-Schema
{
"type": "object",
"properties": {}
}Ausgabe-Schema
{
"type": "object",
"properties": {
"totalTvl": {
"type": "number",
"description": "Total value locked across DeFi, in USD."
},
"topChains": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"tvl": {
"type": "number"
}
},
"required": [
"name",
"tvl"
]
}
},
"stablecoinMarketCap": {
"type": [
"number",
"null"
],
"description": "Dry powder waiting on the sidelines."
}
},
"required": [
"totalTvl",
"topChains"
]
}🟢get_btc_network
Live Bitcoin network health: hashrate, difficulty, transaction count, estimated volume, miner revenue and the largest recent mempool transactions (>10 BTC). Call for on-chain Bitcoin activity. Miner revenue is null when the source stops publishing it, never a misleading zero.
Eingabe-Schema
{
"type": "object",
"properties": {}
}Ausgabe-Schema
{
"type": "object",
"properties": {
"marketPrice": {
"type": "number"
},
"hashRate": {
"type": "number"
},
"difficulty": {
"type": "number"
},
"txCount24h": {
"type": "number"
},
"estimatedTxVolumeUsd": {
"type": "number"
},
"minersRevenueUsd": {
"type": [
"number",
"null"
],
"description": "null when the source does not publish it. Never 0 - miner revenue cannot be zero while blocks are produced."
},
"tradeVolumeUsd": {
"type": "number"
},
"btcLargeMempool": {
"type": "array",
"description": "Largest transactions currently waiting in the mempool.",
"items": {
"type": "object",
"properties": {
"txHash": {
"type": "string"
},
"totalBtc": {
"type": "number"
},
"timestamp": {
"type": "number"
}
},
"required": [
"txHash",
"totalBtc",
"timestamp"
]
}
}
}
}🟢get_eth_address(address)
Ethereum address activity: ETH balance plus recent large transfers in and out. Call when a specific wallet or exchange address is named and needs to be tracked.
Eingabe-Schema
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "Ethereum address (0x...)"
}
},
"required": [
"address"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"address": {
"type": "string"
},
"balanceEth": {
"type": "number"
},
"recentLargeTransfers": {
"type": "array",
"description": "Transfers above 1 ETH, newest first.",
"items": {
"type": "object",
"properties": {
"hash": {
"type": "string"
},
"from": {
"type": "string"
},
"to": {
"type": "string"
},
"valueEth": {
"type": "number"
},
"timestamp": {
"type": "number",
"description": "Unix seconds."
},
"direction": {
"type": "string",
"enum": [
"in",
"out"
]
}
},
"required": [
"hash",
"from",
"to",
"valueEth",
"timestamp",
"direction"
]
}
}
},
"required": [
"address",
"balanceEth",
"recentLargeTransfers"
]
}🟢get_eth_whale_flows
Large ETH transfers (>100 ETH) to and from live exchange hot wallets (Binance, Coinbase, Bitfinex) in the last 2 hours. Inflows to exchanges suggest potential selling pressure, outflows suggest accumulation. Call for smart-money signals and exchange flows. Wallets that could not be read are listed under "unavailable" rather than dropped, so an empty result is never mistaken for a quiet market. The response also states how far back each wallet could actually be read: the busiest exchange wallets produce thousands of transfers an hour, and a tool that silently sees only the last few minutes of one reports calm that was never measured.
Eingabe-Schema
{
"type": "object",
"properties": {}
}Ausgabe-Schema
{
"type": "object",
"properties": {
"flows": {
"type": "array",
"description": "Large ETH transfers to and from known exchange wallets, largest first.",
"items": {
"type": "object",
"properties": {
"exchange": {
"type": "string"
},
"counterparty": {
"type": "string",
"description": "The non-exchange side of the transfer."
},
"valueEth": {
"type": "number"
},
"direction": {
"type": "string",
"enum": [
"in",
"out"
],
"description": "`in` is flow toward the exchange (distribution pressure), `out` is away."
},
"timestamp": {
"type": "number",
"description": "Unix seconds."
},
"hash": {
"type": "string"
}
},
"required": [
"exchange",
"valueEth",
"direction",
"timestamp",
"hash"
]
}
},
"windowMinutes": {
"type": "number",
"description": "The window asked for, in minutes."
},
"coverage": {
"type": "array",
"description": "How much of that window each wallet could actually be read back over. A busy wallet can exhaust one page before reaching the far end.",
"items": {
"type": "object",
"properties": {
"exchange": {
"type": "string"
},
"minutesCovered": {
"type": "number"
},
"truncated": {
"type": "boolean",
"description": "true means the wallet is too busy for a single page, so older transfers in the window were not seen."
}
},
"required": [
"exchange",
"minutesCovered",
"truncated"
]
}
},
"unavailable": {
"type": "array",
"items": {
"type": "string"
},
"description": "Exchange wallets that could not be read. An empty flows list with entries here means nothing was read, not that nothing moved."
}
},
"required": [
"flows",
"windowMinutes",
"coverage",
"unavailable"
]
}🟢get_crypto_news
Recent crypto headlines for narrative context and catalysts. Summarize in your own words with attribution to the reporting outlet; do not reproduce articles.
Eingabe-Schema
{
"type": "object",
"properties": {}
}Ausgabe-Schema
{
"type": "object",
"properties": {
"result": {
"type": "array",
"description": "Recent headlines, newest first. Summaries are our own words, not article text.",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"source": {
"type": "string"
},
"url": {
"type": "string"
},
"publishedAt": {
"type": "string"
},
"summary": {
"type": "string"
}
},
"required": [
"title",
"source",
"url",
"publishedAt"
]
}
}
},
"required": [
"result"
]
}🟢get_derivatives_aggregate(coins)
Watchlist sweep over up to 10 coins in one call: the headline funding and open interest figures per coin — average funding, total open interest in USD, funding spread — with no per-venue rows, which keeps the response compact enough to compare positioning across a basket. Costs a single upstream call no matter how many coins you request, so prefer it over repeated single-coin calls. Figures come from the major liquid venues — Binance, Bybit, OKX and Hyperliquid; thin venues are excluded, since their outlier rates would otherwise distort the average by an order of magnitude. Coins with no major-venue data are listed in "unavailable" instead of failing the whole request. Reach for get_derivatives instead when you need the per-venue detail on one coin. Funding is returned in PERCENT per 8 hours (0.0061 means 0.0061%, not 0.61%) and also ANNUALIZED as a percent per year — 0.0067% per 8h is 7.3% a year, which says immediately whether a long is paying more than a bond yields. Open interest is in USD. Current snapshot.
Eingabe-Schema
{
"type": "object",
"properties": {
"coins": {
"type": "array",
"items": {
"type": "string"
},
"description": "Base coins, e.g. [\"BTC\",\"ETH\",\"SOL\"]. Maximum 10. Defaults to BTC and ETH."
}
}
}Ausgabe-Schema
{
"type": "object",
"properties": {
"coins": {
"type": "array",
"items": {
"type": "object",
"properties": {
"coin": {
"type": "string"
},
"avgFundingRate": {
"type": [
"number",
"null"
],
"description": "Percent per 8 hours. 0.0067 means 0.0067%, not 0.67%."
},
"avgFundingAnnualizedPct": {
"type": [
"number",
"null"
],
"description": "The same funding as a yearly percentage, comparable to any other yield."
},
"totalOpenInterestUsd": {
"type": [
"number",
"null"
],
"description": "Summed across the major venues."
},
"fundingSpread": {
"type": [
"number",
"null"
],
"description": "Highest minus lowest venue funding. A wide spread marks localised positioning."
},
"exchangeCount": {
"type": "number",
"description": "How many major venues backed the numbers."
}
},
"required": [
"coin",
"exchangeCount"
]
}
},
"unavailable": {
"type": "array",
"items": {
"type": "string"
},
"description": "Requested coins with no major-venue perpetual. Never silently dropped."
}
},
"required": [
"coins",
"unavailable"
]
}🟢get_market_quotes
Live quotes for the S&P 500 (SPY ETF), gold (GLD ETF) and Nasdaq 100 (QQQ ETF). Macro context for risk-on/risk-off and the correlation of traditional markets with crypto. These are ETFs priced in USD per share, so use direction and percent change rather than the absolute index level.
Eingabe-Schema
{
"type": "object",
"properties": {}
}Ausgabe-Schema
{
"type": "object",
"properties": {
"quotes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"symbol": {
"type": "string"
},
"name": {
"type": "string"
},
"price": {
"type": [
"number",
"null"
]
},
"change": {
"type": [
"number",
"null"
]
},
"changePercent": {
"type": [
"number",
"null"
]
},
"previousClose": {
"type": [
"number",
"null"
]
},
"time": {
"type": [
"number",
"null"
],
"description": "Unix seconds."
}
},
"required": [
"symbol",
"name",
"price"
]
}
}
},
"required": [
"quotes"
]
}🟢get_market_dominance
Crypto market dominance: BTC.D, ETH.D and USDT.D as a percentage of total crypto market cap. Use as a regime filter (risk-on/off) and a BTC vs altcoin rotation signal.
Eingabe-Schema
{
"type": "object",
"properties": {}
}Ausgabe-Schema
{
"type": "object",
"properties": {
"btcDominance": {
"type": [
"number",
"null"
]
},
"ethDominance": {
"type": [
"number",
"null"
]
},
"usdtDominance": {
"type": [
"number",
"null"
]
}
},
"description": "Share of total crypto market cap, in percent."
}🟢get_market_history(hours)
Where the current reading sits in its own recent distribution, from a series captured every ~10 minutes: funding, open interest, Fear & Greed and BTC dominance, each as current, median, min, max and percentile over the window. This is the one question a snapshot cannot answer — "is funding high right now?" has no absolute answer, only one relative to where it has been. A percentile near 0 means the reading is at the low end of the window, near 100 the high end. Check "samples" before trusting the percentile: a window with few measurements is not a distribution. Window defaults to 24 hours, maximum 168. Funding is in percent per 8 hours.
Eingabe-Schema
{
"type": "object",
"properties": {
"hours": {
"type": "number",
"description": "How many hours back the window covers. Defaults to 24, maximum 168."
}
}
}Ausgabe-Schema
{
"type": "object",
"properties": {
"windowHours": {
"type": "number"
},
"samples": {
"type": "number",
"description": "Snapshots in the window, captured every ~10 minutes."
},
"from": {
"type": "string"
},
"to": {
"type": "string"
},
"funding": {
"type": "object",
"description": "Current reading placed in its own distribution over the window.",
"properties": {
"current": {
"type": [
"number",
"null"
]
},
"median": {
"type": [
"number",
"null"
]
},
"min": {
"type": [
"number",
"null"
]
},
"max": {
"type": [
"number",
"null"
]
},
"percentile": {
"type": [
"number",
"null"
],
"description": "0-100. Where `current` sits among the samples."
},
"samples": {
"type": "number",
"description": "How many measurements back these numbers. Lower than the window's total when the series has gaps — or, for open interest, when older readings came from a different set of venues and are therefore not comparable."
}
},
"required": [
"current",
"median",
"min",
"max",
"percentile"
]
},
"openInterestUsd": {
"type": "object",
"description": "Current reading placed in its own distribution over the window.",
"properties": {
"current": {
"type": [
"number",
"null"
]
},
"median": {
"type": [
"number",
"null"
]
},
"min": {
"type": [
"number",
"null"
]
},
"max": {
"type": [
"number",
"null"
]
},
"percentile": {
"type": [
"number",
"null"
],
"description": "0-100. Where `current` sits among the samples."
},
"samples": {
"type": "number",
"description": "How many measurements back these numbers. Lower than the window's total when the series has gaps — or, for open interest, when older readings came from a different set of venues and are therefore not comparable."
}
},
"required": [
"current",
"median",
"min",
"max",
"percentile"
]
},
"fearGreed": {
"type": "object",
"description": "Current reading placed in its own distribution over the window.",
"properties": {
"current": {
"type": [
"number",
"null"
]
},
"median": {
"type": [
"number",
"null"
]
},
"min": {
"type": [
"number",
"null"
]
},
"max": {
"type": [
"number",
"null"
]
},
"percentile": {
"type": [
"number",
"null"
],
"description": "0-100. Where `current` sits among the samples."
},
"samples": {
"type": "number",
"description": "How many measurements back these numbers. Lower than the window's total when the series has gaps — or, for open interest, when older readings came from a different set of venues and are therefore not comparable."
}
},
"required": [
"current",
"median",
"min",
"max",
"percentile"
]
},
"btcDominance": {
"type": "object",
"description": "Current reading placed in its own distribution over the window.",
"properties": {
"current": {
"type": [
"number",
"null"
]
},
"median": {
"type": [
"number",
"null"
]
},
"min": {
"type": [
"number",
"null"
]
},
"max": {
"type": [
"number",
"null"
]
},
"percentile": {
"type": [
"number",
"null"
],
"description": "0-100. Where `current` sits among the samples."
},
"samples": {
"type": "number",
"description": "How many measurements back these numbers. Lower than the window's total when the series has gaps — or, for open interest, when older readings came from a different set of venues and are therefore not comparable."
}
},
"required": [
"current",
"median",
"min",
"max",
"percentile"
]
}
},
"required": [
"windowHours",
"samples",
"from",
"to"
]
}🟢get_implied_volatility(coins, windowDays)
How far the market EXPECTS price to move, priced off options (the DVOL index). Every other derivatives tool here describes how the market is POSITIONED; this one prices how expensive protection is. Returns the current 30-day implied volatility, annualized, in PERCENT (34.95 means 34.95%), together with its min, median, max and PERCENTILE over the window — an IV of 35% says nothing alone, but at the 5th percentile of the last month it says optionality is cheap and the market is complacent. Also returns the derived expected move (plus or minus percent over 1, 7 and 30 days), which scales with the square root of time, not linearly: dividing annualized IV by 365 instead of by the root understates a one-day move roughly nineteenfold. Distinct from the VIX reported by get_macro_rates, which is US equity volatility, not crypto. Published for BTC and ETH only; any other coin comes back under "unavailable" rather than failing the request.
Eingabe-Schema
{
"type": "object",
"properties": {
"coins": {
"type": "array",
"items": {
"type": "string"
},
"description": "Coins, e.g. [\"BTC\",\"ETH\"]. Defaults to both. Only BTC and ETH have a published index."
},
"windowDays": {
"type": "number",
"description": "How many days the percentile distribution covers. Defaults to 30, maximum 365."
}
}
}Ausgabe-Schema
{
"type": "object",
"properties": {
"windowDays": {
"type": "number"
},
"coins": {
"type": "array",
"items": {
"type": "object",
"properties": {
"coin": {
"type": "string"
},
"current": {
"type": "number",
"description": "30-day implied volatility, annualized, in percent. 34.95 means 34.95%, not 0.3495."
},
"min": {
"type": "number"
},
"median": {
"type": "number"
},
"max": {
"type": "number"
},
"percentile": {
"type": "number",
"description": "0-100. Where `current` sits in its own distribution over the window."
},
"samples": {
"type": "number",
"description": "Measurements backing the distribution."
},
"expectedMove1d": {
"type": "number",
"description": "Expected move over 1 day, plus or minus percent. Scales with sqrt(time)."
},
"expectedMove7d": {
"type": "number"
},
"expectedMove30d": {
"type": "number"
}
},
"required": [
"coin",
"current",
"percentile",
"samples"
]
}
},
"unavailable": {
"type": "array",
"items": {
"type": "string"
},
"description": "Requested coins with no published volatility index. Never silently dropped."
}
},
"required": [
"windowDays",
"coins",
"unavailable"
]
}🟢get_execution_cost(coin, sizesUsd)
What a given trade size actually costs to execute right now, walked through the live order books of Bybit and OKX. Every other tool here reports where price is; this one reports the price YOU would get at YOUR size. Returns, per requested notional and separately for buying and selling: the average fill price, slippage against mid in basis points AND in dollars, the spread, the depth sitting within 1% of mid, and which venue is cheapest for that size. The floor is half the spread; anything above it is the size eating through levels. A size the book cannot absorb comes back as "filled": false with the amount that could actually be filled, never an extrapolated price. This is the number that decides whether a correct thesis still makes money after costs.
Eingabe-Schema
{
"type": "object",
"properties": {
"coin": {
"type": "string",
"description": "Coin symbol, e.g. \"BTC\", \"ETH\", \"SOL\". The USDT perpetual is read."
},
"sizesUsd": {
"type": "array",
"items": {
"type": "number"
},
"description": "Trade sizes to price, in US dollars. Defaults to 10000, 50000 and 250000. At most five."
}
},
"required": [
"coin"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"coin": {
"type": "string"
},
"sizesUsd": {
"type": "array",
"items": {
"type": "number"
}
},
"bandPct": {
"type": "number",
"description": "Half-width of the depth band around mid, in percent."
},
"venues": {
"type": "array",
"items": {
"type": "object",
"properties": {
"venue": {
"type": "string",
"enum": [
"Bybit",
"OKX"
]
},
"symbol": {
"type": "string"
},
"bestBid": {
"type": "number"
},
"bestAsk": {
"type": "number"
},
"mid": {
"type": "number"
},
"spreadBps": {
"type": "number",
"description": "Quoted spread in basis points. Half of it is the floor for any slippage."
},
"bidDepthUsd": {
"type": "number",
"description": "Notional resting within bandPct of mid on the bid side, in USD."
},
"askDepthUsd": {
"type": "number"
},
"levels": {
"type": "object",
"properties": {
"bids": {
"type": "number"
},
"asks": {
"type": "number"
}
}
},
"buy": {
"type": "array",
"items": {
"type": "object",
"properties": {
"notionalUsd": {
"type": "number"
},
"filledUsd": {
"type": "number",
"description": "How much of the size the book could actually absorb. Equals notionalUsd only when filled is true."
},
"avgPrice": {
"type": "number",
"description": "Volume-weighted price the order would actually get."
},
"slippageBps": {
"type": "number",
"description": "Cost against mid in basis points. Always positive, for buys and sells alike."
},
"costUsd": {
"type": "number",
"description": "The same cost in dollars."
},
"filled": {
"type": "boolean",
"description": "false means the book ran out before the requested size; the price is NOT extrapolated."
}
},
"required": [
"notionalUsd",
"filledUsd",
"avgPrice",
"slippageBps",
"costUsd",
"filled"
]
}
},
"sell": {
"type": "array",
"items": {
"type": "object",
"properties": {
"notionalUsd": {
"type": "number"
},
"filledUsd": {
"type": "number",
"description": "How much of the size the book could actually absorb. Equals notionalUsd only when filled is true."
},
"avgPrice": {
"type": "number",
"description": "Volume-weighted price the order would actually get."
},
"slippageBps": {
"type": "number",
"description": "Cost against mid in basis points. Always positive, for buys and sells alike."
},
"costUsd": {
"type": "number",
"description": "The same cost in dollars."
},
"filled": {
"type": "boolean",
"description": "false means the book ran out before the requested size; the price is NOT extrapolated."
}
},
"required": [
"notionalUsd",
"filledUsd",
"avgPrice",
"slippageBps",
"costUsd",
"filled"
]
}
}
},
"required": [
"venue",
"symbol",
"mid",
"spreadBps",
"buy",
"sell"
]
}
},
"unavailable": {
"type": "array",
"items": {
"type": "string"
},
"description": "Venues with no usable book for this coin. Never dropped silently."
},
"unavailableDetail": {
"type": "array",
"description": "The same venues with the reason each one failed, so a missing venue is diagnosable.",
"items": {
"type": "object",
"properties": {
"venue": {
"type": "string"
},
"reason": {
"type": "string"
}
},
"required": [
"venue",
"reason"
]
}
},
"cheapest": {
"type": "array",
"description": "Per requested size, the venue with the lowest slippage among those that can fill it.",
"items": {
"type": "object",
"properties": {
"notionalUsd": {
"type": "number"
},
"buyVenue": {
"type": [
"string",
"null"
]
},
"buySlippageBps": {
"type": [
"number",
"null"
]
},
"sellVenue": {
"type": [
"string",
"null"
]
},
"sellSlippageBps": {
"type": [
"number",
"null"
]
}
},
"required": [
"notionalUsd",
"buyVenue",
"sellVenue"
]
}
}
},
"required": [
"coin",
"sizesUsd",
"venues",
"unavailable",
"cheapest"
]
}🟢get_market_brief(coin, sizeUsd)
The verdict in one call, not the ingredients. Composes positioning (funding and open interest with their percentiles), sentiment, implied volatility, the macro regime and the cost of execution into a single stance — risk-on, risk-off, fragile or neutral — with a confidence level, the signals that produced it and what would invalidate it. The rules are DETERMINISTIC, not a model opinion: the same numbers always give the same verdict, and every driver is returned with its value and its reading, so any part of it can be argued with rather than taken on faith. "Fragile" is a state rather than a direction: crowded positioning TOGETHER WITH cheap implied volatility, meaning the market is leaning one way and paying almost nothing for protection. A source that fails lowers confidence and is named under "missing" instead of being counted as a neutral zero. Percentile context exists only for BTC; for other coins the level is reported without the crowded label.
Eingabe-Schema
{
"type": "object",
"properties": {
"coin": {
"type": "string",
"description": "Coin, e.g. \"BTC\" (default), \"ETH\", \"SOL\"."
},
"sizeUsd": {
"type": "number",
"description": "Trade size the execution cost is measured at, in US dollars. Defaults to 100000."
}
}
}Ausgabe-Schema
{
"type": "object",
"properties": {
"coin": {
"type": "string"
},
"asOf": {
"type": "string",
"description": "ISO timestamp the brief was computed at."
},
"stance": {
"type": "string",
"enum": [
"risk-on",
"risk-off",
"fragile",
"neutral"
],
"description": "fragile is a state, not a direction: crowded positioning together with cheap implied volatility."
},
"confidence": {
"type": "string",
"enum": [
"low",
"medium",
"high"
]
},
"verdict": {
"type": "string",
"description": "The read in one or two sentences."
},
"drivers": {
"type": "array",
"description": "Every signal that fed the verdict, so it can be argued with instead of taken on faith.",
"items": {
"type": "object",
"properties": {
"signal": {
"type": "string"
},
"value": {
"type": "string"
},
"reading": {
"type": "string"
},
"direction": {
"type": "number",
"description": "-1 toward risk, +1 toward support, 0 relevant but neutral."
}
},
"required": [
"signal",
"value",
"reading",
"direction"
]
}
},
"invalidation": {
"type": "array",
"items": {
"type": "string"
},
"description": "Concrete, numeric conditions that would make this verdict wrong."
},
"tradeable": {
"type": [
"object",
"null"
],
"description": "null when no venue could be read.",
"properties": {
"sizeUsd": {
"type": "number"
},
"costBps": {
"type": "number"
},
"venue": {
"type": "string"
}
}
},
"missing": {
"type": "array",
"items": {
"type": "string"
},
"description": "Sources that did not answer. A missing signal is never counted as a neutral one."
}
},
"required": [
"coin",
"asOf",
"stance",
"confidence",
"verdict",
"drivers",
"invalidation",
"missing"
]
}Community
Nachweis