Server definition
- Hash
- sha256:25a3793e390d48fde169512dbdd9d6df5c64e6658264228b8414940c098d213f
- What it is
- What a remote MCP server returned when asked what it offers: 17 tools
The blob, as servednamed by its sha256
{
"instructions": "TraderSpy serves live crypto futures data: AI-generated trading signals, smart-money (whale) positioning\nacross Binance, Hyperliquid, Bybit and OKX, prices, candles, technical indicators, derivatives, and a\ncondition screener/backtester.\n\nEvery tool is read-only. This connector cannot place, close or modify an order, and has no withdrawal or\ntransfer tool. When the user wants to act, say so plainly and leave the trade to them.\n\nWhich tool answers what:\n- price, 24h change, volume -> get_price (pass several symbols at once). OHLCV -> get_candles.\n- \"analyse X\", oversold/overbought, trend, support/resistance -> get_technical_indicators. Pass up to 3\n intervals in ONE call, e.g. [\"1h\",\"4h\",\"1d\"] — that is one quota unit and it returns the confluence.\n Several coins: pass up to 3 as `symbols` in that same call, not one call per coin.\n- funding rate, open interest, long/short ratio, taker flow -> get_derivatives.\n- \"which coins are ...\", \"find setups\", \"compare BTC ETH SOL\" -> screen_symbols. One call scans the\n most-traded pairs; never loop get_technical_indicators symbol by symbol.\n- \"what usually happens after <condition>\" -> backtest_condition.\n- AI signals -> get_signals, get_signal_details, get_signal_stats.\n- whales, best traders, who is long X -> get_top_traders, get_elite_leaderboard, get_trader_profile,\n get_trader_position_history, get_positions.\n- coverage and venue context -> get_tracked_symbols, get_exchanges, get_market_stats.\n\nCalls are metered per day, so batch — several symbols in one get_price, several symbols and intervals\nin one get_technical_indicators, screen_symbols instead of a loop.\n\nReport what the data shows and leave the decision to the user. Signal statistics and backtests describe\nwhat already happened; never present them as a forecast, a guarantee or financial advice.",
"tools": [
{
"description": "What happened AFTER a condition in the past, on one symbol and timeframe — \"how did BTC do after RSI dropped below 30 on 4h\", \"is a golden cross on ETH daily actually bullish\", \"what usually follows a −5% day on SOL\". Runs an event study over the whole stored tape (up to 1000 candles: ~41 days on 1h, ~166 days on 4h, ~3 years on 1d): occurrences, average / median forward return, win rate, average best and worst excursion per horizon, the unconditional baseline over the same tape and the EDGE the condition adds over it, the last five episodes, and whether the condition is active on the latest bar. Same condition vocabulary as screen_symbols. Quote the edge and the sample size together — a 3-sample stat is an anecdote.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"conditions": {
"description": "Up to 3 conditions, AND-ed. Examples: RSI oversold = {\"metric\":\"rsi\",\"op\":\"lt\",\"value\":30}; above the 200 EMA = {\"metric\":\"priceVsEma\",\"op\":\"gt\",\"value\":0,\"period\":200}; golden cross = {\"metric\":\"emaSpread\",\"op\":\"crossAbove\",\"value\":0,\"period\":50,\"period2\":200}; MACD bullish cross = {\"metric\":\"macdHistogram\",\"op\":\"crossAbove\",\"value\":0}; dumped 5% in a day = {\"metric\":\"changePct\",\"op\":\"lt\",\"value\":-5,\"period\":24}.",
"items": {
"additionalProperties": false,
"properties": {
"metric": {
"description": "Metric. Defaults in brackets. rsi(14): RSI, 0–100; stochastic(14,3): Slow stochastic %K (period, %D smoothing), 0–100; cci(20): Commodity Channel Index; mfi(14): Money Flow Index, 0–100; williamsR(14): Williams %R, −100–0; adx(14): Average Directional Index; roc(12): Rate of change in %; macdHistogram(12,26): MACD histogram (fast, slow; signal 9); atrPct(14): ATR as % of price; volumeRatio(20): Bar volume ÷ average of the previous N bars; bbPercentB(20): Position inside Bollinger (20, 2): 0 = lower band, 1 = upper band; bbWidthPct(20): Bollinger band width as % of the middle band; priceVsEma(50): % distance of close from EMA(period); > 0 = above; emaSpread(50,200): % of EMA(period) over EMA(period2); crossAbove 0 = golden cross; supertrend(10): +1 in an up-trend, −1 in a down-trend (ATR period, multiplier 3); changePct(24): % change of close over the last N bars; price: Close price",
"enum": [
"rsi",
"stochastic",
"cci",
"mfi",
"williamsR",
"adx",
"roc",
"macdHistogram",
"atrPct",
"volumeRatio",
"bbPercentB",
"bbWidthPct",
"priceVsEma",
"emaSpread",
"supertrend",
"changePct",
"price"
],
"type": "string"
},
"op": {
"description": "lt / gt compare the latest value; crossAbove / crossBelow are one-bar events (previous bar on the other side).",
"enum": [
"lt",
"gt",
"crossAbove",
"crossBelow"
],
"type": "string"
},
"period": {
"description": "Override the metric's primary period (RSI length, EMA period, bars for changePct)",
"maximum": 200,
"minimum": 2,
"type": "integer"
},
"period2": {
"description": "Second period where the metric has one: slow EMA for emaSpread, slow MACD, stochastic %D",
"maximum": 200,
"minimum": 2,
"type": "integer"
},
"value": {
"description": "Threshold, in the metric's own unit (RSI 30, %B 0, spread 0, change −5 …)",
"type": "number"
}
},
"required": [
"metric",
"op",
"value"
],
"type": "object"
},
"maxItems": 3,
"type": "array"
},
"horizons": {
"description": "Bars ahead to measure returns over (≤ 4). Default per interval ≈ 4h / 1d / 3d: 1h → [4, 24, 72], 4h → [6, 18, 42], 1d → [1, 3, 7].",
"items": {
"maximum": 200,
"minimum": 1,
"type": "integer"
},
"maxItems": 4,
"minItems": 1,
"type": "array"
},
"interval": {
"default": "4h",
"description": "Candle timeframe",
"enum": [
"1m",
"5m",
"15m",
"1h",
"4h",
"1d"
],
"type": "string"
},
"symbol": {
"description": "Trading pair, e.g. BTCUSDT (a bare \"BTC\" is read as its USDT perpetual)",
"type": "string"
}
},
"required": [
"symbol",
"conditions"
],
"type": "object"
},
"name": "backtest_condition",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"activeNow": {
"description": "Conditions hold on the latest closed bar",
"type": [
"boolean",
"null"
]
},
"bars": {
"description": "Candles the study ran on (the whole stored tape)",
"type": [
"number",
"null"
]
},
"conditions": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
},
"coverageHours": {
"type": [
"number",
"null"
]
},
"currentValues": {
"anyOf": [
{
"additionalProperties": true,
"properties": {},
"type": "object"
},
{
"type": "null"
}
],
"description": "Latest value of every metric involved"
},
"evaluableBars": {
"type": [
"number",
"null"
]
},
"from": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"format": "date-time",
"type": "string"
}
]
},
{
"type": "null"
}
]
},
"horizonHours": {
"anyOf": [
{
"items": {
"type": "number"
},
"type": "array"
},
{
"type": "null"
}
]
},
"horizons": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"properties": {},
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Per look-ahead: { bars, samples, avgReturnPct, medianReturnPct, winRatePct, avgMaxUpPct, avgMaxDownPct, bestPct, worstPct, baselineAvgReturnPct, edgePct } — edge = avg − unconditional baseline"
},
"interval": {
"type": [
"string",
"null"
]
},
"lastOccurrence": {
"anyOf": [
{
"additionalProperties": true,
"properties": {},
"type": "object"
},
{
"type": "null"
}
],
"description": "{ openTime, barsAgo, price }"
},
"occurrences": {
"description": "Episodes — the FIRST bar of each run where the conditions held",
"type": [
"number",
"null"
]
},
"recent": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"properties": {},
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Newest episodes first: { openTime, barsAgo, price, returnsPct { \"<bars>\": pct } }"
},
"symbol": {
"type": [
"string",
"null"
]
},
"to": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"format": "date-time",
"type": "string"
}
]
},
{
"type": "null"
}
]
},
"warnings": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
}
},
"type": "object"
}
},
{
"description": "Get OHLCV (Open, High, Low, Close, Volume) candle data for a crypto futures symbol. Useful for charting, price history, and technical analysis.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"interval": {
"default": "1h",
"description": "Candle interval/timeframe",
"enum": [
"1m",
"5m",
"15m",
"1h",
"4h",
"1d"
],
"type": "string"
},
"limit": {
"default": 100,
"description": "Number of candles to return",
"maximum": 500,
"minimum": 1,
"type": "number"
},
"symbol": {
"description": "Trading pair symbol, e.g. BTCUSDT",
"type": "string"
}
},
"required": [
"symbol"
],
"type": "object"
},
"name": "get_candles",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"candles": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"properties": {
"close": {
"type": [
"number",
"null"
]
},
"closeTime": {
"type": [
"number",
"null"
]
},
"high": {
"type": [
"number",
"null"
]
},
"isFinal": {
"description": "False for the candle still forming",
"type": [
"boolean",
"null"
]
},
"low": {
"type": [
"number",
"null"
]
},
"open": {
"type": [
"number",
"null"
]
},
"openTime": {
"type": [
"number",
"null"
]
},
"volume": {
"type": [
"number",
"null"
]
}
},
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Oldest first"
},
"interval": {
"type": [
"string",
"null"
]
},
"symbol": {
"type": [
"string",
"null"
]
}
},
"type": "object"
}
},
{
"description": "Funding rate, open interest and positioning for Binance USDⓈ-M perpetual futures — the derivatives questions candles cannot answer: is funding high (who is paying whom, annualized), is open interest building or unwinding (24h/4h change, and the OI×price regime: new longs, short covering, new shorts, long liquidation), and which way accounts lean (top-trader long/short by position, all-account ratio, taker buy/sell flow). Each symbol carries plain-language notes — quote those. Up to 5 symbols per call; data is 60s fresh.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"symbols": {
"description": "Up to 5 Binance USDⓈ-M futures symbols, e.g. [\"BTCUSDT\", \"ETHUSDT\"]. A bare base asset (\"BTC\") is read as its USDT perpetual.",
"items": {
"type": "string"
},
"maxItems": 5,
"minItems": 1,
"type": "array"
}
},
"required": [
"symbols"
],
"type": "object"
},
"name": "get_derivatives",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"count": {
"type": [
"number",
"null"
]
},
"data": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"properties": {},
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "One entry per symbol: { symbol, markPrice, indexPrice, premiumPct, funding { rate, ratePct, annualizedPct, nextFundingTime, minutesToNextFunding, avg24hPct, avg3dPct, label }, openInterest { contracts, valueUsd, change4hPct, change24hPct, priceChange24hPct, regime }, positioning { globalLongShortRatio, globalLongPct, topTraderLongShortRatio, topTraderLongPct, takerBuySellRatio, label }, notes[] } — or { symbol, error, message } when the symbol is not a Binance USDⓈ-M futures pair"
}
},
"type": "object"
}
},
{
"description": "Use this when the user specifically asks for the elite leaderboard by SmartScore across exchanges.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "get_elite_leaderboard",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"algorithmDetails": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"properties": {},
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "How each scoring component is weighted"
},
"algorithmVersion": {
"type": [
"string",
"null"
]
},
"key": {
"type": [
"string",
"null"
]
},
"lastRunAt": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"format": "date-time",
"type": "string"
}
]
},
{
"type": "null"
}
]
},
"leaders": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"properties": {},
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Ranked traders with score, scoreBreakdown, metrics, rationale[] and tier"
},
"source": {
"type": [
"string",
"null"
]
},
"summary": {
"anyOf": [
{
"additionalProperties": true,
"properties": {},
"type": "object"
},
{
"type": "null"
}
],
"description": "Coverage of the run: traders scored, trades counted"
},
"title": {
"type": [
"string",
"null"
]
},
"updatedAt": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"format": "date-time",
"type": "string"
}
]
},
{
"type": "null"
}
]
}
},
"type": "object"
}
},
{
"description": "Use this when the user asks which exchanges are currently available in TraderSpy smart-money tracking.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "get_exchanges",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"data": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"properties": {
"enabled": {
"type": [
"boolean",
"null"
]
},
"source": {
"type": [
"string",
"null"
]
}
},
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Tracked exchanges and whether each is currently enabled"
}
},
"type": "object"
}
},
{
"description": "Use this when the user asks for aggregate market stats (positions, PNL, win rate), optionally scoped by source and period.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"period": {
"description": "Time period for closed position stats",
"enum": [
"4h",
"8h",
"24h",
"7d"
],
"type": "string"
},
"source": {
"default": "all",
"description": "Exchange filter",
"enum": [
"all",
"binance",
"hyperliquid",
"bybit",
"okx"
],
"type": "string"
}
},
"type": "object"
},
"name": "get_market_stats",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"avgRoi": {
"type": [
"number",
"null"
]
},
"byExchange": {
"anyOf": [
{
"additionalProperties": true,
"properties": {},
"type": "object"
},
{
"type": "null"
}
],
"description": "Per-exchange { totalPositions, openPositions }, keyed by exchange"
},
"closedInPeriod": {
"type": [
"number",
"null"
]
},
"openPositions": {
"type": [
"number",
"null"
]
},
"period": {
"type": [
"string",
"null"
]
},
"realizedPnl": {
"type": [
"number",
"null"
]
},
"totalPositions": {
"type": [
"number",
"null"
]
},
"winRate": {
"description": "Percentage of closed positions in profit; null when none closed",
"type": [
"number",
"null"
]
}
},
"type": "object"
}
},
{
"description": "Use this when the user asks for current or historical smart-money positions, optionally filtered by status, source, or symbol.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"limit": {
"default": 20,
"description": "Number of positions to return",
"maximum": 50,
"minimum": 1,
"type": "number"
},
"offset": {
"default": 0,
"description": "Offset for pagination",
"minimum": 0,
"type": "number"
},
"source": {
"default": "all",
"description": "Exchange filter",
"enum": [
"all",
"binance",
"hyperliquid",
"bybit",
"okx"
],
"type": "string"
},
"status": {
"default": "all",
"description": "Position status filter",
"enum": [
"all",
"open",
"closed"
],
"type": "string"
},
"symbol": {
"description": "Filter by trading pair, e.g. BTC, ETHUSDT",
"type": "string"
}
},
"type": "object"
},
"name": "get_positions",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"data": {
"anyOf": [
{
"items": {
"allOf": [
{
"additionalProperties": true,
"properties": {
"closePrice": {
"type": [
"number",
"null"
]
},
"closeTime": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"format": "date-time",
"type": "string"
}
]
},
{
"type": "null"
}
]
},
"entryPrice": {
"type": [
"number",
"null"
]
},
"isOpen": {
"type": [
"boolean",
"null"
]
},
"lastEvent": {
"type": [
"string",
"null"
]
},
"leverage": {
"type": [
"number",
"null"
]
},
"markPrice": {
"type": [
"number",
"null"
]
},
"openTime": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"format": "date-time",
"type": "string"
}
]
},
{
"type": "null"
}
]
},
"pnl": {
"type": [
"number",
"null"
]
},
"roi": {
"type": [
"number",
"null"
]
},
"side": {
"type": [
"string",
"null"
]
},
"size": {
"type": [
"number",
"null"
]
},
"symbol": {
"type": [
"string",
"null"
]
},
"unrealizedPnl": {
"type": [
"number",
"null"
]
}
},
"type": "object"
},
{
"additionalProperties": true,
"properties": {
"sortDate": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"format": "date-time",
"type": "string"
}
]
},
{
"type": "null"
}
]
}
},
"type": "object"
}
]
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Smart money positions across the tracked exchanges"
},
"pagination": {
"anyOf": [
{
"additionalProperties": true,
"properties": {
"hasMore": {
"type": [
"boolean",
"null"
]
},
"limit": {
"type": [
"number",
"null"
]
},
"offset": {
"type": [
"number",
"null"
]
},
"total": {
"type": [
"number",
"null"
]
}
},
"type": "object"
},
{
"type": "null"
}
]
}
},
"type": "object"
}
},
{
"description": "Get real-time price data for one or more crypto futures symbols. Returns current price, 24h high/low, volume, and 24h price change percentage.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"symbols": {
"description": "List of symbols to get prices for, e.g. [\"BTCUSDT\", \"ETHUSDT\"]",
"items": {
"type": "string"
},
"maxItems": 20,
"minItems": 1,
"type": "array"
}
},
"required": [
"symbols"
],
"type": "object"
},
"name": "get_price",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"data": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"properties": {
"change24h": {
"description": "24h change as a percentage",
"type": [
"number",
"null"
]
},
"high24h": {
"type": [
"number",
"null"
]
},
"low24h": {
"type": [
"number",
"null"
]
},
"price": {
"type": [
"number",
"null"
]
},
"symbol": {
"type": [
"string",
"null"
]
},
"updatedAt": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"format": "date-time",
"type": "string"
}
]
},
{
"type": "null"
}
]
},
"volume24h": {
"type": [
"number",
"null"
]
}
},
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
]
}
},
"type": "object"
}
},
{
"description": "Use this when the user needs full details for one AI signal by ID, including review and resolution data.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"signalId": {
"description": "The ID of the signal to retrieve",
"type": "string"
}
},
"required": [
"signalId"
],
"type": "object"
},
"name": "get_signal_details",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"action": {
"description": "buy or sell",
"type": [
"string",
"null"
]
},
"aiReview": {
"anyOf": [
{
"additionalProperties": true,
"properties": {
"analysis": {
"type": [
"string",
"null"
]
},
"decision": {
"type": [
"string",
"null"
]
},
"score": {
"type": [
"number",
"null"
]
}
},
"type": "object"
},
{
"type": "null"
}
]
},
"coin": {
"type": [
"string",
"null"
]
},
"createdAt": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"format": "date-time",
"type": "string"
}
]
},
{
"type": "null"
}
]
},
"history": {
"anyOf": [
{
"additionalProperties": true,
"properties": {
"currentPrice": {
"type": [
"number",
"null"
]
},
"entryPrice": {
"type": [
"number",
"null"
]
},
"highestPrice": {
"type": [
"number",
"null"
]
},
"lowestPrice": {
"type": [
"number",
"null"
]
},
"resolution": {
"anyOf": [
{
"additionalProperties": true,
"properties": {},
"type": "object"
},
{
"type": "null"
}
],
"description": "{ status, price, time } once resolved"
}
},
"type": "object"
},
{
"type": "null"
}
]
},
"id": {
"description": "Signal id — pass to get_signal_details",
"type": [
"string",
"null"
]
},
"importance": {
"description": "high | medium | low",
"type": [
"string",
"null"
]
},
"indicatorValues": {
"anyOf": [
{
"additionalProperties": true,
"properties": {},
"type": "object"
},
{
"type": "null"
}
],
"description": "Indicator readings at trigger time"
},
"livePrice": {
"description": "Current price, so the model can judge whether the signal still stands",
"type": [
"number",
"null"
]
},
"price": {
"description": "Price when the signal triggered",
"type": [
"number",
"null"
]
},
"resolutionStatus": {
"description": "pending | stop | tp1_hit | tp2_hit | tp3_hit | profit_locked | expired",
"type": [
"string",
"null"
]
},
"signalStrength": {
"description": "weak | moderate | strong | very_strong",
"type": [
"string",
"null"
]
},
"strategyName": {
"description": "Preset that produced the signal",
"type": [
"string",
"null"
]
},
"targets": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"properties": {},
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Take-profit and stop levels: { label, type, pct }"
},
"timeframe": {
"description": "Chart timeframe the preset evaluated, e.g. 4h",
"type": [
"string",
"null"
]
},
"triggeredConditions": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
]
}
},
"type": "object"
}
},
{
"description": "Use this when the user asks for aggregate AI signal performance statistics over a specific period — overall, or for one strategy (preset) by name. The answer also breaks the period down per strategy (byStrategy), which is how to learn the strategy names for get_signals.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"period": {
"default": "24h",
"description": "Time period for statistics",
"enum": [
"4h",
"8h",
"24h",
"7d"
],
"type": "string"
},
"strategy": {
"description": "Only the signals of one AI strategy (preset), matched by part of its name, case-insensitive.",
"type": "string"
}
},
"type": "object"
},
"name": "get_signal_stats",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"byStrategy": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"properties": {
"pending": {
"type": [
"number",
"null"
]
},
"stopped": {
"type": [
"number",
"null"
]
},
"strategyName": {
"description": "The preset — pass it to get_signals as `strategy`",
"type": [
"string",
"null"
]
},
"targetHits": {
"type": [
"number",
"null"
]
},
"total": {
"type": [
"number",
"null"
]
},
"winRate": {
"description": "targetHits / resolved, as a percentage; null when nothing resolved",
"type": [
"number",
"null"
]
}
},
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "The same counts per strategy (preset) that fired in the period, most signals first"
},
"highCount": {
"description": "High-importance signals",
"type": [
"number",
"null"
]
},
"pending": {
"description": "Still open at the end of the period",
"type": [
"number",
"null"
]
},
"stopped": {
"type": [
"number",
"null"
]
},
"strategy": {
"description": "The strategy filter that was applied, if any",
"type": [
"string",
"null"
]
},
"targetHits": {
"description": "Signals that reached a take-profit or locked profit",
"type": [
"number",
"null"
]
},
"total": {
"description": "Signals published in the period",
"type": [
"number",
"null"
]
},
"warning": {
"description": "Set when a strategy filter could not be applied or matched nothing (with the closest preset names)",
"type": [
"string",
"null"
]
},
"winRate": {
"description": "targetHits / resolved, as a percentage; null when nothing resolved",
"type": [
"number",
"null"
]
}
},
"type": "object"
}
},
{
"description": "Use this when the user asks for recent public AI crypto trading signals, optionally filtered by coin, importance, strategy (the preset that produced them, by name) or pagination. When the user names a count (\"last 5 signals\"), pass it as `limit` — the card view renders exactly what was fetched, so over-fetching shows more cards than the user asked for.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"coin": {
"description": "Filter by coin symbol, e.g. BTC, ETH",
"type": "string"
},
"importance": {
"default": "all",
"description": "Filter by signal importance",
"enum": [
"high",
"medium",
"low",
"all"
],
"type": "string"
},
"limit": {
"default": 20,
"description": "Number of signals to return",
"maximum": 50,
"minimum": 1,
"type": "number"
},
"skip": {
"default": 0,
"description": "Offset for pagination",
"minimum": 0,
"type": "number"
},
"strategy": {
"description": "Filter by the AI strategy (preset) that produced the signal — part of its name, words in order, case-insensitive, e.g. \"ATR Squeeze\" or \"Triple Oversold\". get_signal_stats (period 7d) lists the strategies that fired recently with their names; a filter that matches nothing answers with the closest names.",
"type": "string"
}
},
"type": "object"
},
"name": "get_signals",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"data": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"properties": {
"action": {
"description": "buy or sell",
"type": [
"string",
"null"
]
},
"coin": {
"type": [
"string",
"null"
]
},
"createdAt": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"format": "date-time",
"type": "string"
}
]
},
{
"type": "null"
}
]
},
"id": {
"description": "Signal id — pass to get_signal_details",
"type": [
"string",
"null"
]
},
"importance": {
"description": "high | medium | low",
"type": [
"string",
"null"
]
},
"price": {
"description": "Price when the signal triggered",
"type": [
"number",
"null"
]
},
"resolutionStatus": {
"description": "pending | stop | tp1_hit | tp2_hit | tp3_hit | profit_locked | expired",
"type": [
"string",
"null"
]
},
"signalStrength": {
"description": "weak | moderate | strong | very_strong",
"type": [
"string",
"null"
]
},
"strategyName": {
"description": "Preset that produced the signal",
"type": [
"string",
"null"
]
},
"targets": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"properties": {},
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Take-profit and stop levels: { label, type, pct }"
},
"timeframe": {
"description": "Chart timeframe the preset evaluated, e.g. 4h",
"type": [
"string",
"null"
]
},
"triggeredConditions": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
]
}
},
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Signals, newest first"
},
"pagination": {
"anyOf": [
{
"additionalProperties": true,
"properties": {
"hasMore": {
"type": [
"boolean",
"null"
]
},
"limit": {
"type": [
"number",
"null"
]
},
"skip": {
"type": [
"number",
"null"
]
},
"total": {
"type": [
"number",
"null"
]
}
},
"type": "object"
},
{
"type": "null"
}
]
},
"warning": {
"description": "Set when a strategy filter could not be applied or matched nothing (with the closest preset names)",
"type": [
"string",
"null"
]
}
},
"type": "object"
}
},
{
"description": "Technical analysis for a crypto futures symbol. 19 indicators: RSI, MACD, EMA, SMA, Bollinger Bands, ATR, ADX (+DI/−DI), Stochastic, OBV (with price divergence), VWAP, CCI, MFI, Williams %R, ROC, SuperTrend, Ichimoku, Keltner Channels, classic pivot points and swing support/resistance levels. Every indicator returns its current value, the previous bar, a rising/falling/flat direction, a short `series` history and — where it applies — zones and crossovers. EMA/SMA accept several periods at once (default 20/50/200); every period is overridable via `periods`. Pass `intervals` (up to 3) to get 1h/4h/1d in ONE call with a multi-timeframe `confluence` verdict. Each timeframe also carries a `summary` (bias, trend, momentum, volatility, volume, plain-language notes) computed from a fixed indicator set — quote its notes rather than the raw score. For several coins pass `symbols` (up to 3) instead of one call per coin: ONE call and one quota unit, one entry per symbol in `data`.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"history": {
"default": 5,
"description": "Prior values returned per indicator as `series` (oldest → newest, length history + 1). 0 = latest only.",
"maximum": 20,
"minimum": 0,
"type": "integer"
},
"indicators": {
"default": [
"rsi",
"macd",
"ema",
"bollinger"
],
"description": "Indicators to compute. `levels` = swing support/resistance from price structure, `pivots` = classic floor pivots from the previous day.",
"items": {
"enum": [
"rsi",
"macd",
"ema",
"sma",
"bollinger",
"atr",
"adx",
"stochastic",
"obv",
"vwap",
"cci",
"mfi",
"williamsR",
"roc",
"supertrend",
"ichimoku",
"keltner",
"pivots",
"levels"
],
"type": "string"
},
"maxItems": 19,
"minItems": 1,
"type": "array"
},
"interval": {
"default": "1h",
"description": "Candle timeframe. Ignored when `intervals` is given.",
"enum": [
"1m",
"5m",
"15m",
"1h",
"4h",
"1d"
],
"type": "string"
},
"intervals": {
"description": "Up to 3 timeframes in ONE call (one quota unit), e.g. [\"1h\",\"4h\",\"1d\"]. The response then carries per-timeframe results plus a `confluence` verdict.",
"items": {
"enum": [
"1m",
"5m",
"15m",
"1h",
"4h",
"1d"
],
"type": "string"
},
"maxItems": 3,
"minItems": 1,
"type": "array"
},
"periods": {
"additionalProperties": false,
"description": "Optional period overrides, e.g. {\"ema\":[9,21,55,200],\"rsi\":7}",
"properties": {
"adx": {
"description": "ADX period (default 14)",
"maximum": 500,
"minimum": 2,
"type": "integer"
},
"atr": {
"description": "ATR period (default 14)",
"maximum": 500,
"minimum": 2,
"type": "integer"
},
"bollinger": {
"description": "Bollinger period (default 20)",
"maximum": 500,
"minimum": 2,
"type": "integer"
},
"bollingerStdDev": {
"description": "Bollinger std-dev multiplier (default 2)",
"maximum": 5,
"minimum": 0.5,
"type": "number"
},
"cci": {
"description": "CCI period (default 20)",
"maximum": 500,
"minimum": 2,
"type": "integer"
},
"ema": {
"description": "EMA periods, up to 4 (default [20, 50, 200])",
"items": {
"maximum": 500,
"minimum": 2,
"type": "integer"
},
"maxItems": 4,
"minItems": 1,
"type": "array"
},
"keltner": {
"description": "Keltner EMA period (default 20)",
"maximum": 500,
"minimum": 2,
"type": "integer"
},
"keltnerAtr": {
"description": "Keltner ATR period (default 10)",
"maximum": 500,
"minimum": 2,
"type": "integer"
},
"keltnerMultiplier": {
"description": "Keltner ATR multiplier (default 2)",
"maximum": 10,
"minimum": 0.5,
"type": "number"
},
"macdFast": {
"description": "MACD fast EMA (default 12)",
"maximum": 500,
"minimum": 2,
"type": "integer"
},
"macdSignal": {
"description": "MACD signal EMA (default 9)",
"maximum": 500,
"minimum": 2,
"type": "integer"
},
"macdSlow": {
"description": "MACD slow EMA (default 26)",
"maximum": 500,
"minimum": 2,
"type": "integer"
},
"mfi": {
"description": "MFI period (default 14)",
"maximum": 500,
"minimum": 2,
"type": "integer"
},
"obv": {
"description": "OBV averaging window (default 20)",
"maximum": 500,
"minimum": 2,
"type": "integer"
},
"roc": {
"description": "Rate-of-change period (default 12)",
"maximum": 500,
"minimum": 2,
"type": "integer"
},
"rsi": {
"description": "RSI period (default 14)",
"maximum": 500,
"minimum": 2,
"type": "integer"
},
"sma": {
"description": "SMA periods, up to 4 (default [20, 50, 200])",
"items": {
"maximum": 500,
"minimum": 2,
"type": "integer"
},
"maxItems": 4,
"minItems": 1,
"type": "array"
},
"stochastic": {
"description": "Stochastic %K period (default 14)",
"maximum": 500,
"minimum": 2,
"type": "integer"
},
"stochasticSignal": {
"description": "Stochastic %D smoothing (default 3)",
"maximum": 500,
"minimum": 2,
"type": "integer"
},
"supertrend": {
"description": "SuperTrend ATR period (default 10)",
"maximum": 500,
"minimum": 2,
"type": "integer"
},
"supertrendMultiplier": {
"description": "SuperTrend ATR multiplier (default 3)",
"maximum": 10,
"minimum": 0.5,
"type": "number"
},
"vwap": {
"description": "Rolling VWAP window in bars (default 48)",
"maximum": 500,
"minimum": 2,
"type": "integer"
},
"williamsR": {
"description": "Williams %R period (default 14)",
"maximum": 500,
"minimum": 2,
"type": "integer"
}
},
"type": "object"
},
"symbol": {
"description": "Trading pair symbol, e.g. BTCUSDT. For several pairs pass `symbols` instead.",
"type": "string"
},
"symbols": {
"description": "Up to 3 trading pairs in ONE call (one quota unit), e.g. [\"BTCUSDT\",\"ETHUSDT\",\"SOLUSDT\"]. The response then carries one entry per symbol in `data`, each shaped like the single-symbol response.",
"items": {
"type": "string"
},
"maxItems": 3,
"minItems": 1,
"type": "array"
}
},
"type": "object"
},
"name": "get_technical_indicators",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"candles": {
"description": "Closed candles the primary timeframe was computed on",
"type": [
"number",
"null"
]
},
"confluence": {
"anyOf": [
{
"additionalProperties": true,
"properties": {},
"type": "object"
},
{
"type": "null"
}
],
"description": "Multi-timeframe agreement: { aligned, bias, byInterval }"
},
"count": {
"description": "Entries in `data`",
"type": [
"number",
"null"
]
},
"data": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"properties": {},
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Present when `symbols` was passed, and then the only place the results are: one entry per symbol, in the requested order, each exactly the single-symbol response above ({ symbol, interval, price, candles, indicators + summary or timeframes + confluence, settings, warnings }) — or { symbol, error: \"no_data\", message } when no candles are stored for it."
},
"indicators": {
"anyOf": [
{
"additionalProperties": true,
"properties": {},
"type": "object"
},
{
"type": "null"
}
],
"description": "Single-timeframe call only: requested indicators keyed by name. Each carries value, previous, direction, series and indicator-specific fields (zone, crossover, stack, levels…); { value: null, reason: \"insufficient_data\" } when the tape is too short. Omitted when `timeframes` is present — read them there."
},
"interval": {
"description": "Primary timeframe (the first requested one)",
"type": [
"string",
"null"
]
},
"lastCandleOpenTime": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"format": "date-time",
"type": "string"
}
]
},
{
"type": "null"
}
]
},
"price": {
"description": "Latest close on the primary timeframe, or null when no candles are stored",
"type": [
"number",
"null"
]
},
"settings": {
"anyOf": [
{
"additionalProperties": true,
"properties": {},
"type": "object"
},
{
"type": "null"
}
],
"description": "Echo of what was computed: indicators, history, resolved periods"
},
"summary": {
"anyOf": [
{
"additionalProperties": true,
"properties": {},
"type": "object"
},
{
"type": "null"
}
],
"description": "Single-timeframe call only: bias, score, trend, momentum, volatility, volume, notes[]. Omitted when `timeframes` is present."
},
"symbol": {
"type": [
"string",
"null"
]
},
"timeframes": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"properties": {},
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Present when several intervals were requested: one { interval, price, candles, indicators, summary } per timeframe, in the requested order. The top-level indicators/summary are omitted in that case."
},
"warnings": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
}
},
"type": "object"
}
},
{
"description": "Use this when the user wants ranked smart-money traders across supported exchanges with sorting and filtering.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"limit": {
"default": 20,
"description": "Number of traders to return",
"maximum": 200,
"minimum": 1,
"type": "number"
},
"order": {
"default": "DESC",
"description": "Sort direction",
"enum": [
"ASC",
"DESC"
],
"type": "string"
},
"rankingType": {
"default": "ROI",
"description": "Ranking snapshot type",
"enum": [
"ROI",
"PNL"
],
"type": "string"
},
"sortBy": {
"description": "Sort metric (defaults to ranking type)",
"enum": [
"ROI",
"PNL",
"SCORE"
],
"type": "string"
},
"source": {
"default": "all",
"description": "Exchange to filter by",
"enum": [
"all",
"binance",
"hyperliquid",
"bybit",
"okx"
],
"type": "string"
},
"timeRange": {
"default": "30D",
"description": "Performance time range",
"enum": [
"24h",
"3D",
"7D",
"30D"
],
"type": "string"
}
},
"type": "object"
},
"name": "get_top_traders",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"data": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"properties": {},
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Ranked traders: source, topTraderId, traderName, roi, pnl, winRate, smartScore, rank, rankings[]"
}
},
"type": "object"
}
},
{
"description": "List all crypto futures symbols currently tracked by TraderSpy with real-time candle data available.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "get_tracked_symbols",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"count": {
"type": [
"number",
"null"
]
},
"symbols": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
}
},
"type": "object"
}
},
{
"description": "Use this when the user asks for closed trade history of a specific trader.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"limit": {
"default": 20,
"description": "Results per page",
"maximum": 50,
"minimum": 1,
"type": "number"
},
"page": {
"default": 1,
"description": "Page number",
"minimum": 1,
"type": "number"
},
"source": {
"default": "binance",
"description": "Exchange",
"enum": [
"binance",
"hyperliquid",
"bybit",
"okx"
],
"type": "string"
},
"traderId": {
"description": "The trader ID",
"type": "string"
}
},
"required": [
"traderId"
],
"type": "object"
},
"name": "get_trader_position_history",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"data": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"properties": {
"closePrice": {
"type": [
"number",
"null"
]
},
"closeTime": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"format": "date-time",
"type": "string"
}
]
},
{
"type": "null"
}
]
},
"entryPrice": {
"type": [
"number",
"null"
]
},
"isOpen": {
"type": [
"boolean",
"null"
]
},
"lastEvent": {
"type": [
"string",
"null"
]
},
"leverage": {
"type": [
"number",
"null"
]
},
"markPrice": {
"type": [
"number",
"null"
]
},
"openTime": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"format": "date-time",
"type": "string"
}
]
},
{
"type": "null"
}
]
},
"pnl": {
"type": [
"number",
"null"
]
},
"roi": {
"type": [
"number",
"null"
]
},
"side": {
"type": [
"string",
"null"
]
},
"size": {
"type": [
"number",
"null"
]
},
"symbol": {
"type": [
"string",
"null"
]
},
"unrealizedPnl": {
"type": [
"number",
"null"
]
}
},
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Closed positions, most recently closed first"
},
"pagination": {
"anyOf": [
{
"additionalProperties": true,
"properties": {
"hasMore": {
"type": [
"boolean",
"null"
]
},
"limit": {
"type": [
"number",
"null"
]
},
"page": {
"type": [
"number",
"null"
]
},
"total": {
"type": [
"number",
"null"
]
}
},
"type": "object"
},
{
"type": "null"
}
]
}
},
"type": "object"
}
},
{
"description": "Use this when the user needs one trader profile, including metrics and latest positions.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"rankingType": {
"default": "ROI",
"description": "Ranking snapshot type",
"enum": [
"ROI",
"PNL"
],
"type": "string"
},
"source": {
"default": "binance",
"description": "Exchange the trader is on",
"enum": [
"binance",
"hyperliquid",
"bybit",
"okx"
],
"type": "string"
},
"timeRange": {
"default": "30D",
"description": "Performance time range",
"enum": [
"24h",
"3D",
"7D",
"30D"
],
"type": "string"
},
"traderId": {
"description": "The trader ID",
"type": "string"
}
},
"required": [
"traderId"
],
"type": "object"
},
"name": "get_trader_profile",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"aum": {
"type": [
"number",
"null"
]
},
"avatarUrl": {
"type": [
"string",
"null"
]
},
"mdd": {
"description": "Maximum drawdown",
"type": [
"number",
"null"
]
},
"pnl": {
"type": [
"number",
"null"
]
},
"positions": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"properties": {
"closePrice": {
"type": [
"number",
"null"
]
},
"closeTime": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"format": "date-time",
"type": "string"
}
]
},
{
"type": "null"
}
]
},
"entryPrice": {
"type": [
"number",
"null"
]
},
"isOpen": {
"type": [
"boolean",
"null"
]
},
"lastEvent": {
"type": [
"string",
"null"
]
},
"leverage": {
"type": [
"number",
"null"
]
},
"markPrice": {
"type": [
"number",
"null"
]
},
"openTime": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"format": "date-time",
"type": "string"
}
]
},
{
"type": "null"
}
]
},
"pnl": {
"type": [
"number",
"null"
]
},
"roi": {
"type": [
"number",
"null"
]
},
"side": {
"type": [
"string",
"null"
]
},
"size": {
"type": [
"number",
"null"
]
},
"symbol": {
"type": [
"string",
"null"
]
},
"unrealizedPnl": {
"type": [
"number",
"null"
]
}
},
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Currently tracked positions"
},
"rank": {
"type": [
"number",
"null"
]
},
"rankingType": {
"type": [
"string",
"null"
]
},
"roi": {
"type": [
"number",
"null"
]
},
"smartScore": {
"type": [
"number",
"null"
]
},
"source": {
"type": [
"string",
"null"
]
},
"timeRange": {
"type": [
"string",
"null"
]
},
"topTraderId": {
"type": [
"string",
"null"
]
},
"traderName": {
"type": [
"string",
"null"
]
},
"winRate": {
"type": [
"number",
"null"
]
}
},
"type": "object"
}
},
{
"description": "Screen MANY crypto futures symbols at once on one timeframe — \"which coins are oversold on 4h\", \"what is above its 200 EMA with rising volume\", \"show me squeezes\". Give up to 3 AND-ed conditions from a fixed metric list (RSI, stochastic, CCI, MFI, Williams %R, ADX, ROC, MACD histogram, ATR%, volume ratio, Bollinger %B / width, price vs EMA, EMA spread, SuperTrend, change %, price) with lt / gt / crossAbove / crossBelow. Scans the most-traded symbols by 24h volume (default 50, max 100) or an explicit list; every row carries the metric values plus bias, trend, RSI, ADX, ATR% and 24h change. With NO conditions and explicit `symbols` it is a side-by-side comparison table (\"compare BTC, ETH, SOL\"). ONE quota unit however many symbols — always prefer this over calling get_technical_indicators in a loop.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"conditions": {
"description": "Up to 3 conditions, AND-ed. Examples: RSI oversold = {\"metric\":\"rsi\",\"op\":\"lt\",\"value\":30}; above the 200 EMA = {\"metric\":\"priceVsEma\",\"op\":\"gt\",\"value\":0,\"period\":200}; golden cross = {\"metric\":\"emaSpread\",\"op\":\"crossAbove\",\"value\":0,\"period\":50,\"period2\":200}; MACD bullish cross = {\"metric\":\"macdHistogram\",\"op\":\"crossAbove\",\"value\":0}; dumped 5% in a day = {\"metric\":\"changePct\",\"op\":\"lt\",\"value\":-5,\"period\":24}.",
"items": {
"additionalProperties": false,
"properties": {
"metric": {
"description": "Metric. Defaults in brackets. rsi(14): RSI, 0–100; stochastic(14,3): Slow stochastic %K (period, %D smoothing), 0–100; cci(20): Commodity Channel Index; mfi(14): Money Flow Index, 0–100; williamsR(14): Williams %R, −100–0; adx(14): Average Directional Index; roc(12): Rate of change in %; macdHistogram(12,26): MACD histogram (fast, slow; signal 9); atrPct(14): ATR as % of price; volumeRatio(20): Bar volume ÷ average of the previous N bars; bbPercentB(20): Position inside Bollinger (20, 2): 0 = lower band, 1 = upper band; bbWidthPct(20): Bollinger band width as % of the middle band; priceVsEma(50): % distance of close from EMA(period); > 0 = above; emaSpread(50,200): % of EMA(period) over EMA(period2); crossAbove 0 = golden cross; supertrend(10): +1 in an up-trend, −1 in a down-trend (ATR period, multiplier 3); changePct(24): % change of close over the last N bars; price: Close price",
"enum": [
"rsi",
"stochastic",
"cci",
"mfi",
"williamsR",
"adx",
"roc",
"macdHistogram",
"atrPct",
"volumeRatio",
"bbPercentB",
"bbWidthPct",
"priceVsEma",
"emaSpread",
"supertrend",
"changePct",
"price"
],
"type": "string"
},
"op": {
"description": "lt / gt compare the latest value; crossAbove / crossBelow are one-bar events (previous bar on the other side).",
"enum": [
"lt",
"gt",
"crossAbove",
"crossBelow"
],
"type": "string"
},
"period": {
"description": "Override the metric's primary period (RSI length, EMA period, bars for changePct)",
"maximum": 200,
"minimum": 2,
"type": "integer"
},
"period2": {
"description": "Second period where the metric has one: slow EMA for emaSpread, slow MACD, stochastic %D",
"maximum": 200,
"minimum": 2,
"type": "integer"
},
"value": {
"description": "Threshold, in the metric's own unit (RSI 30, %B 0, spread 0, change −5 …)",
"type": "number"
}
},
"required": [
"metric",
"op",
"value"
],
"type": "object"
},
"maxItems": 3,
"type": "array"
},
"interval": {
"default": "4h",
"description": "Candle timeframe to evaluate on",
"enum": [
"1m",
"5m",
"15m",
"1h",
"4h",
"1d"
],
"type": "string"
},
"limit": {
"default": 20,
"description": "Rows to return",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"sortBy": {
"description": "volume (24h quote volume), change24h, or metric (the first condition's metric). Default: metric when conditions are given, else volume.",
"enum": [
"volume",
"change24h",
"metric"
],
"type": "string"
},
"sortOrder": {
"default": "desc",
"enum": [
"asc",
"desc"
],
"type": "string"
},
"symbols": {
"description": "Explicit symbols to scan (≤ 100, e.g. [\"BTC\",\"ETH\",\"SOL\"]). Omit to scan the most-traded symbols instead. With no `conditions`, every listed symbol is returned as a comparison table.",
"items": {
"type": "string"
},
"maxItems": 100,
"minItems": 1,
"type": "array"
},
"universe": {
"default": 50,
"description": "How many of the most-traded symbols (by 24h volume) to scan when `symbols` is omitted (max 100)",
"maximum": 100,
"minimum": 5,
"type": "integer"
}
},
"type": "object"
},
"name": "screen_symbols",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"conditions": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Human-readable conditions, e.g. \"RSI(14) < 30\""
},
"interval": {
"type": [
"string",
"null"
]
},
"matched": {
"description": "Symbols satisfying every condition (all scanned symbols when no conditions)",
"type": [
"number",
"null"
]
},
"results": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"properties": {},
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "One row per matching symbol: { symbol, price, change24hPct, volume24hUsd, values { \"<metric label>\": value }, bias, trend, rsi14, adx14, atrPct, volumeRatio, squeeze }"
},
"returned": {
"type": [
"number",
"null"
]
},
"sortBy": {
"type": [
"string",
"null"
]
},
"sortOrder": {
"type": [
"string",
"null"
]
},
"universe": {
"anyOf": [
{
"additionalProperties": true,
"properties": {},
"type": "object"
},
{
"type": "null"
}
],
"description": "{ source: top_by_volume | explicit, requested, scanned, missing[] }"
},
"warnings": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
]
}
},
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:25a3793e390d48fde169512dbdd9d6df5c64e6658264228b8414940c098d213f | sha256sum