TraderSpy MCP
An official MCP server provided by TraderSpy that allows AI agents to access crypto futures market data. It exposes 17 read-only tools including AI trading signals, smart-money positions, prices, technical indicators, funding rates, open interest, market screening, and condition backtests across multiple exchanges like Binance, Hyperliquid, Bybit, and OKX.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://mcp.traderspy.app/mcpWhat its tools do
17 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to traderspy.app ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Retrieve AI trading signals with entry/exit levels
- Track smart-money positions on major exchanges
- Run market-wide screeners for momentum or indicators
- Backtest alert conditions on historical candle data
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- TraderSpy 3.0.2
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 17 advertised
- Resources
- 3 advertised
- Resource templates
- 0 advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
},
"logging": {},
"resources": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
17 advertised
get_signals
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"coin": {
"type": "string",
"description": "Filter by coin symbol, e.g. BTC, ETH"
},
"skip": {
"type": "number",
"default": 0,
"minimum": 0,
"description": "Offset for pagination"
},
"limit": {
"type": "number",
"default": 20,
"maximum": 50,
"minimum": 1,
"description": "Number of signals to return"
},
"strategy": {
"type": "string",
"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."
},
"importance": {
"enum": [
"high",
"medium",
"low",
"all"
],
"type": "string",
"default": "all",
"description": "Filter by signal importance"
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"tip": {
"anyOf": [
{
"type": "object",
"properties": {
"text": {
"type": [
"string",
"null"
]
},
"links": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": [
"string",
"null"
]
},
"label": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": true
}
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
},
{
"type": "null"
}
],
"description": "Rare: one sentence about a TraderSpy feature this connector cannot do, with the page it leads to"
},
"data": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": [
"string",
"null"
],
"description": "Signal id — pass to get_signal_details"
},
"url": {
"type": [
"string",
"null"
],
"description": "This signal's page on traderspy.app: chart, levels and outcome"
},
"coin": {
"type": [
"string",
"null"
]
},
"price": {
"type": [
"number",
"null"
],
"description": "Price when the signal triggered"
},
"action": {
"type": [
"string",
"null"
],
"description": "buy or sell"
},
"targets": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {},
"additionalProperties": true
}
},
{
"type": "null"
}
],
"description": "Take-profit and stop levels: { label, type, pct }"
},
"createdAt": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "string",
"format": "date-time"
}
]
},
{
"type": "null"
}
]
},
"timeframe": {
"type": [
"string",
"null"
],
"description": "Chart timeframe the preset evaluated, e.g. 4h"
},
"importance": {
"type": [
"string",
"null"
],
"description": "high | medium | low"
},
"strategyName": {
"type": [
"string",
"null"
],
"description": "Preset that produced the signal"
},
"signalStrength": {
"type": [
"string",
"null"
],
"description": "weak | moderate | strong | very_strong"
},
"resolutionStatus": {
"type": [
"string",
"null"
],
"description": "pending | stop | tp1_hit | tp2_hit | tp3_hit | profit_locked | expired"
},
"triggeredConditions": {
"anyOf": [
{
"type": "array",
"items": {}
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
}
},
{
"type": "null"
}
],
"description": "Signals, newest first"
},
"warning": {
"type": [
"string",
"null"
],
"description": "Set when a strategy filter could not be applied or matched nothing (with the closest preset names)"
},
"pagination": {
"anyOf": [
{
"type": "object",
"properties": {
"skip": {
"type": [
"number",
"null"
]
},
"limit": {
"type": [
"number",
"null"
]
},
"total": {
"type": [
"number",
"null"
]
},
"hasMore": {
"type": [
"boolean",
"null"
]
}
},
"additionalProperties": true
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
}{
"title": "Get AI Signals",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_signal_details
Use this when the user needs full details for one AI signal by ID, including review and resolution data.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"signalId"
],
"properties": {
"signalId": {
"type": "string",
"description": "The ID of the signal to retrieve"
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"id": {
"type": [
"string",
"null"
],
"description": "Signal id — pass to get_signal_details"
},
"tip": {
"anyOf": [
{
"type": "object",
"properties": {
"text": {
"type": [
"string",
"null"
]
},
"links": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": [
"string",
"null"
]
},
"label": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": true
}
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
},
{
"type": "null"
}
],
"description": "Rare: one sentence about a TraderSpy feature this connector cannot do, with the page it leads to"
},
"url": {
"type": [
"string",
"null"
],
"description": "This signal's page on traderspy.app: chart, levels and outcome"
},
"coin": {
"type": [
"string",
"null"
]
},
"price": {
"type": [
"number",
"null"
],
"description": "Price when the signal triggered"
},
"action": {
"type": [
"string",
"null"
],
"description": "buy or sell"
},
"history": {
"anyOf": [
{
"type": "object",
"properties": {
"entryPrice": {
"type": [
"number",
"null"
]
},
"resolution": {
"anyOf": [
{
"type": "object",
"properties": {},
"additionalProperties": true
},
{
"type": "null"
}
],
"description": "{ status, at, price, stopAt? } once resolved: status = the highest take-profit reached before price touched the stop (stop | tp1_hit | tp2_hit | tp3_hit | profit_locked | expired); stopAt = price came back to the stop after that target, the signal ended there"
},
"lowestPrice": {
"type": [
"number",
"null"
]
},
"currentPrice": {
"type": [
"number",
"null"
]
},
"highestPrice": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": true
},
{
"type": "null"
}
]
},
"targets": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {},
"additionalProperties": true
}
},
{
"type": "null"
}
],
"description": "Take-profit and stop levels: { label, type, pct }"
},
"aiReview": {
"anyOf": [
{
"type": "object",
"properties": {
"score": {
"type": [
"number",
"null"
]
},
"analysis": {
"type": [
"string",
"null"
]
},
"decision": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": true
},
{
"type": "null"
}
]
},
"createdAt": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "string",
"format": "date-time"
}
]
},
{
"type": "null"
}
]
},
"howToRead": {
"type": [
"string",
"null"
],
"description": "How the outcome was judged, in one sentence"
},
"livePrice": {
"type": [
"number",
"null"
],
"description": "Current price, so the model can judge whether the signal still stands"
},
"timeframe": {
"type": [
"string",
"null"
],
"description": "Chart timeframe the preset evaluated, e.g. 4h"
},
"importance": {
"type": [
"string",
"null"
],
"description": "high | medium | low"
},
"strategyName": {
"type": [
"string",
"null"
],
"description": "Preset that produced the signal"
},
"signalStrength": {
"type": [
"string",
"null"
],
"description": "weak | moderate | strong | very_strong"
},
"indicatorValues": {
"anyOf": [
{
"type": "object",
"properties": {},
"additionalProperties": true
},
{
"type": "null"
}
],
"description": "Indicator readings at trigger time"
},
"resolutionStatus": {
"type": [
"string",
"null"
],
"description": "pending | stop | tp1_hit | tp2_hit | tp3_hit | profit_locked | expired"
},
"triggeredConditions": {
"anyOf": [
{
"type": "array",
"items": {}
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
}{
"title": "Get Signal Details",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_signal_stats
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"period": {
"enum": [
"4h",
"8h",
"24h",
"7d"
],
"type": "string",
"default": "24h",
"description": "Time period for statistics"
},
"strategy": {
"type": "string",
"description": "Only the signals of one AI strategy (preset), matched by part of its name, case-insensitive."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"url": {
"type": [
"string",
"null"
],
"description": "The signal feed on traderspy.app, every signal listed with its outcome"
},
"total": {
"type": [
"number",
"null"
],
"description": "Signals published in the period"
},
"pending": {
"type": [
"number",
"null"
],
"description": "Still open at the end of the period"
},
"stopped": {
"type": [
"number",
"null"
]
},
"warning": {
"type": [
"string",
"null"
],
"description": "Set when a strategy filter could not be applied or matched nothing (with the closest preset names)"
},
"winRate": {
"type": [
"number",
"null"
],
"description": "targetHits / resolved, as a percentage; null when nothing resolved"
},
"strategy": {
"type": [
"string",
"null"
],
"description": "The strategy filter that was applied, if any"
},
"highCount": {
"type": [
"number",
"null"
],
"description": "High-importance signals"
},
"howToRead": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "How an outcome is judged and what winRate counts; quote it when the user asks how the statistics work"
},
"byStrategy": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"total": {
"type": [
"number",
"null"
]
},
"pending": {
"type": [
"number",
"null"
]
},
"stopped": {
"type": [
"number",
"null"
]
},
"winRate": {
"type": [
"number",
"null"
],
"description": "targetHits / resolved, as a percentage; null when nothing resolved"
},
"targetHits": {
"type": [
"number",
"null"
]
},
"strategyName": {
"type": [
"string",
"null"
],
"description": "The preset — pass it to get_signals as `strategy`"
}
},
"additionalProperties": true
}
},
{
"type": "null"
}
],
"description": "The same counts per strategy (preset) that fired in the period, most signals first"
},
"targetHits": {
"type": [
"number",
"null"
],
"description": "Signals that reached a take-profit or locked profit"
}
},
"additionalProperties": true
}{
"title": "Get Signal Statistics",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_top_traders
Use this when the user wants ranked smart-money traders across supported exchanges with sorting and filtering.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "number",
"default": 20,
"maximum": 200,
"minimum": 1,
"description": "Number of traders to return"
},
"order": {
"enum": [
"ASC",
"DESC"
],
"type": "string",
"default": "DESC",
"description": "Sort direction"
},
"sortBy": {
"enum": [
"ROI",
"PNL",
"SCORE"
],
"type": "string",
"description": "Sort metric (defaults to ranking type)"
},
"source": {
"enum": [
"all",
"binance",
"hyperliquid",
"bybit",
"okx"
],
"type": "string",
"default": "all",
"description": "Exchange to filter by"
},
"timeRange": {
"enum": [
"24h",
"3D",
"7D",
"30D"
],
"type": "string",
"default": "30D",
"description": "Performance time range"
},
"rankingType": {
"enum": [
"ROI",
"PNL"
],
"type": "string",
"default": "ROI",
"description": "Ranking snapshot type"
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"data": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {},
"additionalProperties": true
}
},
{
"type": "null"
}
],
"description": "Ranked traders: source, topTraderId, traderName, roi, pnl, winRate, smartScore, rank, rankings[], url (the trader page)"
}
},
"additionalProperties": true
}{
"title": "Get Top Traders",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_elite_leaderboard
Use this when the user specifically asks for the elite leaderboard by SmartScore across exchanges.
{
"type": "object",
"properties": {}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"key": {
"type": [
"string",
"null"
]
},
"title": {
"type": [
"string",
"null"
]
},
"source": {
"type": [
"string",
"null"
]
},
"leaders": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {},
"additionalProperties": true
}
},
{
"type": "null"
}
],
"description": "Ranked traders with score, scoreBreakdown, metrics, rationale[], tier and url (the trader page)"
},
"summary": {
"anyOf": [
{
"type": "object",
"properties": {},
"additionalProperties": true
},
{
"type": "null"
}
],
"description": "Coverage of the run: traders scored, trades counted"
},
"lastRunAt": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "string",
"format": "date-time"
}
]
},
{
"type": "null"
}
]
},
"updatedAt": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "string",
"format": "date-time"
}
]
},
{
"type": "null"
}
]
},
"algorithmDetails": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {},
"additionalProperties": true
}
},
{
"type": "null"
}
],
"description": "How each scoring component is weighted"
},
"algorithmVersion": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": true
}{
"title": "Get Elite Leaderboard",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_trader_profile
Use this when the user needs one trader profile, including metrics and latest positions.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"traderId"
],
"properties": {
"source": {
"enum": [
"binance",
"hyperliquid",
"bybit",
"okx"
],
"type": "string",
"default": "binance",
"description": "Exchange the trader is on"
},
"traderId": {
"type": "string",
"description": "The trader ID"
},
"timeRange": {
"enum": [
"24h",
"3D",
"7D",
"30D"
],
"type": "string",
"default": "30D",
"description": "Performance time range"
},
"rankingType": {
"enum": [
"ROI",
"PNL"
],
"type": "string",
"default": "ROI",
"description": "Ranking snapshot type"
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"aum": {
"type": [
"number",
"null"
]
},
"mdd": {
"type": [
"number",
"null"
],
"description": "Maximum drawdown"
},
"pnl": {
"type": [
"number",
"null"
]
},
"roi": {
"type": [
"number",
"null"
]
},
"tip": {
"anyOf": [
{
"type": "object",
"properties": {
"text": {
"type": [
"string",
"null"
]
},
"links": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": [
"string",
"null"
]
},
"label": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": true
}
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
},
{
"type": "null"
}
],
"description": "Rare: one sentence about a TraderSpy feature this connector cannot do, with the page it leads to"
},
"url": {
"type": [
"string",
"null"
],
"description": "The trader's page on traderspy.app: positions, history and Follow"
},
"rank": {
"type": [
"number",
"null"
]
},
"source": {
"type": [
"string",
"null"
]
},
"winRate": {
"type": [
"number",
"null"
]
},
"avatarUrl": {
"type": [
"string",
"null"
]
},
"positions": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"pnl": {
"type": [
"number",
"null"
]
},
"roi": {
"type": [
"number",
"null"
]
},
"side": {
"type": [
"string",
"null"
]
},
"size": {
"type": [
"number",
"null"
]
},
"isOpen": {
"type": [
"boolean",
"null"
]
},
"symbol": {
"type": [
"string",
"null"
]
},
"leverage": {
"type": [
"number",
"null"
]
},
"openTime": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "string",
"format": "date-time"
}
]
},
{
"type": "null"
}
]
},
"closeTime": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "string",
"format": "date-time"
}
]
},
{
"type": "null"
}
]
},
"lastEvent": {
"type": [
"string",
"null"
]
},
"markPrice": {
"type": [
"number",
"null"
]
},
"closePrice": {
"type": [
"number",
"null"
]
},
"entryPrice": {
"type": [
"number",
"null"
]
},
"unrealizedPnl": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": true
}
},
{
"type": "null"
}
],
"description": "Currently tracked positions"
},
"timeRange": {
"type": [
"string",
"null"
]
},
"smartScore": {
"type": [
"number",
"null"
]
},
"traderName": {
"type": [
"string",
"null"
]
},
"rankingType": {
"type": [
"string",
"null"
]
},
"topTraderId": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": true
}{
"title": "Get Trader Profile",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_trader_position_history
Use this when the user asks for closed trade history of a specific trader.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"traderId"
],
"properties": {
"page": {
"type": "number",
"default": 1,
"minimum": 1,
"description": "Page number"
},
"limit": {
"type": "number",
"default": 20,
"maximum": 50,
"minimum": 1,
"description": "Results per page"
},
"source": {
"enum": [
"binance",
"hyperliquid",
"bybit",
"okx"
],
"type": "string",
"default": "binance",
"description": "Exchange"
},
"traderId": {
"type": "string",
"description": "The trader ID"
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"tip": {
"anyOf": [
{
"type": "object",
"properties": {
"text": {
"type": [
"string",
"null"
]
},
"links": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": [
"string",
"null"
]
},
"label": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": true
}
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
},
{
"type": "null"
}
],
"description": "Rare: one sentence about a TraderSpy feature this connector cannot do, with the page it leads to"
},
"url": {
"type": [
"string",
"null"
],
"description": "The trader's page on traderspy.app: positions, history and Follow"
},
"data": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"pnl": {
"type": [
"number",
"null"
]
},
"roi": {
"type": [
"number",
"null"
]
},
"side": {
"type": [
"string",
"null"
]
},
"size": {
"type": [
"number",
"null"
]
},
"isOpen": {
"type": [
"boolean",
"null"
]
},
"symbol": {
"type": [
"string",
"null"
]
},
"leverage": {
"type": [
"number",
"null"
]
},
"openTime": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "string",
"format": "date-time"
}
]
},
{
"type": "null"
}
]
},
"closeTime": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "string",
"format": "date-time"
}
]
},
{
"type": "null"
}
]
},
"lastEvent": {
"type": [
"string",
"null"
]
},
"markPrice": {
"type": [
"number",
"null"
]
},
"closePrice": {
"type": [
"number",
"null"
]
},
"entryPrice": {
"type": [
"number",
"null"
]
},
"unrealizedPnl": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": true
}
},
{
"type": "null"
}
],
"description": "Closed positions, most recently closed first"
},
"pagination": {
"anyOf": [
{
"type": "object",
"properties": {
"page": {
"type": [
"number",
"null"
]
},
"limit": {
"type": [
"number",
"null"
]
},
"total": {
"type": [
"number",
"null"
]
},
"hasMore": {
"type": [
"boolean",
"null"
]
}
},
"additionalProperties": true
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
}{
"title": "Get Trader Position History",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_positions
Use this when the user asks for current or historical smart-money positions, optionally filtered by status, source, or symbol.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "number",
"default": 20,
"maximum": 50,
"minimum": 1,
"description": "Number of positions to return"
},
"offset": {
"type": "number",
"default": 0,
"minimum": 0,
"description": "Offset for pagination"
},
"source": {
"enum": [
"all",
"binance",
"hyperliquid",
"bybit",
"okx"
],
"type": "string",
"default": "all",
"description": "Exchange filter"
},
"status": {
"enum": [
"all",
"open",
"closed"
],
"type": "string",
"default": "all",
"description": "Position status filter"
},
"symbol": {
"type": "string",
"description": "Filter by trading pair, e.g. BTC, ETHUSDT"
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"url": {
"type": [
"string",
"null"
],
"description": "The page on traderspy.app that lists these positions: the coin's holders, or the live feed"
},
"data": {
"anyOf": [
{
"type": "array",
"items": {
"allOf": [
{
"type": "object",
"properties": {
"pnl": {
"type": [
"number",
"null"
]
},
"roi": {
"type": [
"number",
"null"
]
},
"side": {
"type": [
"string",
"null"
]
},
"size": {
"type": [
"number",
"null"
]
},
"isOpen": {
"type": [
"boolean",
"null"
]
},
"symbol": {
"type": [
"string",
"null"
]
},
"leverage": {
"type": [
"number",
"null"
]
},
"openTime": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "string",
"format": "date-time"
}
]
},
{
"type": "null"
}
]
},
"closeTime": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "string",
"format": "date-time"
}
]
},
{
"type": "null"
}
]
},
"lastEvent": {
"type": [
"string",
"null"
]
},
"markPrice": {
"type": [
"number",
"null"
]
},
"closePrice": {
"type": [
"number",
"null"
]
},
"entryPrice": {
"type": [
"number",
"null"
]
},
"unrealizedPnl": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": true
},
{
"type": "object",
"properties": {
"sortDate": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "string",
"format": "date-time"
}
]
},
{
"type": "null"
}
]
},
"traderUrl": {
"type": [
"string",
"null"
],
"description": "The position's trader page on traderspy.app"
}
},
"additionalProperties": true
}
]
}
},
{
"type": "null"
}
],
"description": "Smart money positions across the tracked exchanges"
},
"pagination": {
"anyOf": [
{
"type": "object",
"properties": {
"limit": {
"type": [
"number",
"null"
]
},
"total": {
"type": [
"number",
"null"
]
},
"offset": {
"type": [
"number",
"null"
]
},
"hasMore": {
"type": [
"boolean",
"null"
]
}
},
"additionalProperties": true
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
}{
"title": "Get Smart Money Positions",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_market_stats
Use this when the user asks for aggregate market stats (positions, PNL, win rate), optionally scoped by source and period.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"period": {
"enum": [
"4h",
"8h",
"24h",
"7d"
],
"type": "string",
"description": "Time period for closed position stats"
},
"source": {
"enum": [
"all",
"binance",
"hyperliquid",
"bybit",
"okx"
],
"type": "string",
"default": "all",
"description": "Exchange filter"
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"avgRoi": {
"type": [
"number",
"null"
]
},
"period": {
"type": [
"string",
"null"
]
},
"winRate": {
"type": [
"number",
"null"
],
"description": "Percentage of closed positions in profit; null when none closed"
},
"byExchange": {
"anyOf": [
{
"type": "object",
"properties": {},
"additionalProperties": true
},
{
"type": "null"
}
],
"description": "Per-exchange { totalPositions, openPositions }, keyed by exchange"
},
"realizedPnl": {
"type": [
"number",
"null"
]
},
"openPositions": {
"type": [
"number",
"null"
]
},
"closedInPeriod": {
"type": [
"number",
"null"
]
},
"totalPositions": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": true
}{
"title": "Get Market Statistics",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_exchanges
Use this when the user asks which exchanges are currently available in TraderSpy smart-money tracking.
{
"type": "object",
"properties": {}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"data": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"source": {
"type": [
"string",
"null"
]
},
"enabled": {
"type": [
"boolean",
"null"
]
}
},
"additionalProperties": true
}
},
{
"type": "null"
}
],
"description": "Tracked exchanges and whether each is currently enabled"
}
},
"additionalProperties": true
}{
"title": "Get Tracked Exchanges",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_price
Get real-time price data for one or more crypto futures symbols. Returns current price, 24h high/low, volume, and 24h price change percentage.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"symbols"
],
"properties": {
"symbols": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 20,
"minItems": 1,
"description": "List of symbols to get prices for, e.g. [\"BTCUSDT\", \"ETHUSDT\"]"
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"data": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": [
"string",
"null"
],
"description": "The coin's chart on traderspy.app"
},
"price": {
"type": [
"number",
"null"
]
},
"low24h": {
"type": [
"number",
"null"
]
},
"symbol": {
"type": [
"string",
"null"
]
},
"high24h": {
"type": [
"number",
"null"
]
},
"change24h": {
"type": [
"number",
"null"
],
"description": "24h change as a percentage"
},
"updatedAt": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "string",
"format": "date-time"
}
]
},
{
"type": "null"
}
]
},
"volume24h": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": true
}
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
}{
"title": "Get Live Price",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_candles
Get OHLCV (Open, High, Low, Close, Volume) candle data for a crypto futures symbol. Useful for charting, price history, and technical analysis.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"symbol"
],
"properties": {
"limit": {
"type": "number",
"default": 100,
"maximum": 500,
"minimum": 1,
"description": "Number of candles to return"
},
"symbol": {
"type": "string",
"description": "Trading pair symbol, e.g. BTCUSDT"
},
"interval": {
"enum": [
"1m",
"5m",
"15m",
"1h",
"4h",
"1d"
],
"type": "string",
"default": "1h",
"description": "Candle interval/timeframe"
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"symbol": {
"type": [
"string",
"null"
]
},
"candles": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"low": {
"type": [
"number",
"null"
]
},
"high": {
"type": [
"number",
"null"
]
},
"open": {
"type": [
"number",
"null"
]
},
"close": {
"type": [
"number",
"null"
]
},
"volume": {
"type": [
"number",
"null"
]
},
"isFinal": {
"type": [
"boolean",
"null"
],
"description": "False for the candle still forming"
},
"openTime": {
"type": [
"number",
"null"
]
},
"closeTime": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": true
}
},
{
"type": "null"
}
],
"description": "Oldest first"
},
"interval": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": true
}{
"title": "Get Candles (OHLCV)",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_tracked_symbols
List all crypto futures symbols currently tracked by TraderSpy with real-time candle data available.
{
"type": "object",
"properties": {}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"count": {
"type": [
"number",
"null"
]
},
"symbols": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
}{
"title": "Get Tracked Symbols",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_technical_indicators
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`.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"symbol": {
"type": "string",
"description": "Trading pair symbol, e.g. BTCUSDT. For several pairs pass `symbols` instead."
},
"history": {
"type": "integer",
"default": 5,
"maximum": 20,
"minimum": 0,
"description": "Prior values returned per indicator as `series` (oldest → newest, length history + 1). 0 = latest only."
},
"periods": {
"type": "object",
"properties": {
"adx": {
"type": "integer",
"maximum": 500,
"minimum": 2,
"description": "ADX period (default 14)"
},
"atr": {
"type": "integer",
"maximum": 500,
"minimum": 2,
"description": "ATR period (default 14)"
},
"cci": {
"type": "integer",
"maximum": 500,
"minimum": 2,
"description": "CCI period (default 20)"
},
"ema": {
"type": "array",
"items": {
"type": "integer",
"maximum": 500,
"minimum": 2
},
"maxItems": 4,
"minItems": 1,
"description": "EMA periods, up to 4 (default [20, 50, 200])"
},
"mfi": {
"type": "integer",
"maximum": 500,
"minimum": 2,
"description": "MFI period (default 14)"
},
"obv": {
"type": "integer",
"maximum": 500,
"minimum": 2,
"description": "OBV averaging window (default 20)"
},
"roc": {
"type": "integer",
"maximum": 500,
"minimum": 2,
"description": "Rate-of-change period (default 12)"
},
"rsi": {
"type": "integer",
"maximum": 500,
"minimum": 2,
"description": "RSI period (default 14)"
},
"sma": {
"type": "array",
"items": {
"type": "integer",
"maximum": 500,
"minimum": 2
},
"maxItems": 4,
"minItems": 1,
"description": "SMA periods, up to 4 (default [20, 50, 200])"
},
"vwap": {
"type": "integer",
"maximum": 500,
"minimum": 2,
"description": "Rolling VWAP window in bars (default 48)"
},
"keltner": {
"type": "integer",
"maximum": 500,
"minimum": 2,
"description": "Keltner EMA period (default 20)"
},
"macdFast": {
"type": "integer",
"maximum": 500,
"minimum": 2,
"description": "MACD fast EMA (default 12)"
},
"macdSlow": {
"type": "integer",
"maximum": 500,
"minimum": 2,
"description": "MACD slow EMA (default 26)"
},
"bollinger": {
"type": "integer",
"maximum": 500,
"minimum": 2,
"description": "Bollinger period (default 20)"
},
"williamsR": {
"type": "integer",
"maximum": 500,
"minimum": 2,
"description": "Williams %R period (default 14)"
},
"keltnerAtr": {
"type": "integer",
"maximum": 500,
"minimum": 2,
"description": "Keltner ATR period (default 10)"
},
"macdSignal": {
"type": "integer",
"maximum": 500,
"minimum": 2,
"description": "MACD signal EMA (default 9)"
},
"stochastic": {
"type": "integer",
"maximum": 500,
"minimum": 2,
"description": "Stochastic %K period (default 14)"
},
"supertrend": {
"type": "integer",
"maximum": 500,
"minimum": 2,
"description": "SuperTrend ATR period (default 10)"
},
"bollingerStdDev": {
"type": "number",
"maximum": 5,
"minimum": 0.5,
"description": "Bollinger std-dev multiplier (default 2)"
},
"stochasticSignal": {
"type": "integer",
"maximum": 500,
"minimum": 2,
"description": "Stochastic %D smoothing (default 3)"
},
"keltnerMultiplier": {
"type": "number",
"maximum": 10,
"minimum": 0.5,
"description": "Keltner ATR multiplier (default 2)"
},
"supertrendMultiplier": {
"type": "number",
"maximum": 10,
"minimum": 0.5,
"description": "SuperTrend ATR multiplier (default 3)"
}
},
"description": "Optional period overrides, e.g. {\"ema\":[9,21,55,200],\"rsi\":7}",
"additionalProperties": false
},
"symbols": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 3,
"minItems": 1,
"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."
},
"interval": {
"enum": [
"1m",
"5m",
"15m",
"1h",
"4h",
"1d"
],
"type": "string",
"default": "1h",
"description": "Candle timeframe. Ignored when `intervals` is given."
},
"intervals": {
"type": "array",
"items": {
"enum": [
"1m",
"5m",
"15m",
"1h",
"4h",
"1d"
],
"type": "string"
},
"maxItems": 3,
"minItems": 1,
"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."
},
"indicators": {
"type": "array",
"items": {
"enum": [
"rsi",
"macd",
"ema",
"sma",
"bollinger",
"atr",
"adx",
"stochastic",
"obv",
"vwap",
"cci",
"mfi",
"williamsR",
"roc",
"supertrend",
"ichimoku",
"keltner",
"pivots",
"levels"
],
"type": "string"
},
"default": [
"rsi",
"macd",
"ema",
"bollinger"
],
"maxItems": 19,
"minItems": 1,
"description": "Indicators to compute. `levels` = swing support/resistance from price structure, `pivots` = classic floor pivots from the previous day."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"tip": {
"anyOf": [
{
"type": "object",
"properties": {
"text": {
"type": [
"string",
"null"
]
},
"links": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": [
"string",
"null"
]
},
"label": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": true
}
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
},
{
"type": "null"
}
],
"description": "Rare: one sentence about a TraderSpy feature this connector cannot do, with the page it leads to"
},
"url": {
"type": [
"string",
"null"
],
"description": "The coin's chart on traderspy.app (a single-symbol answer; each `data` entry carries its own)"
},
"data": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {},
"additionalProperties": true
}
},
{
"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."
},
"count": {
"type": [
"number",
"null"
],
"description": "Entries in `data`"
},
"price": {
"type": [
"number",
"null"
],
"description": "Latest close on the primary timeframe, or null when no candles are stored"
},
"symbol": {
"type": [
"string",
"null"
]
},
"candles": {
"type": [
"number",
"null"
],
"description": "Closed candles the primary timeframe was computed on"
},
"summary": {
"anyOf": [
{
"type": "object",
"properties": {},
"additionalProperties": true
},
{
"type": "null"
}
],
"description": "Single-timeframe call only: bias, score, trend, momentum, volatility, volume, notes[]. Omitted when `timeframes` is present."
},
"interval": {
"type": [
"string",
"null"
],
"description": "Primary timeframe (the first requested one)"
},
"settings": {
"anyOf": [
{
"type": "object",
"properties": {},
"additionalProperties": true
},
{
"type": "null"
}
],
"description": "Echo of what was computed: indicators, history, resolved periods"
},
"warnings": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"confluence": {
"anyOf": [
{
"type": "object",
"properties": {},
"additionalProperties": true
},
{
"type": "null"
}
],
"description": "Multi-timeframe agreement: { aligned, bias, byInterval }"
},
"indicators": {
"anyOf": [
{
"type": "object",
"properties": {},
"additionalProperties": true
},
{
"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."
},
"timeframes": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {},
"additionalProperties": true
}
},
{
"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."
},
"lastCandleOpenTime": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "string",
"format": "date-time"
}
]
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
}{
"title": "Get Technical Indicators",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_derivatives
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"symbols"
],
"properties": {
"symbols": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 5,
"minItems": 1,
"description": "Up to 5 Binance USDⓈ-M futures symbols, e.g. [\"BTCUSDT\", \"ETHUSDT\"]. A bare base asset (\"BTC\") is read as its USDT perpetual."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"data": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {},
"additionalProperties": true
}
},
{
"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[], url (the coin chart) } — or { symbol, error, message } when the symbol is not a Binance USDⓈ-M futures pair"
},
"count": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": true
}{
"title": "Get Funding & Open Interest",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}screen_symbols
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"default": 20,
"maximum": 50,
"minimum": 1,
"description": "Rows to return"
},
"sortBy": {
"enum": [
"volume",
"change24h",
"metric"
],
"type": "string",
"description": "volume (24h quote volume), change24h, or metric (the first condition's metric). Default: metric when conditions are given, else volume."
},
"symbols": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 100,
"minItems": 1,
"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."
},
"interval": {
"enum": [
"1m",
"5m",
"15m",
"1h",
"4h",
"1d"
],
"type": "string",
"default": "4h",
"description": "Candle timeframe to evaluate on"
},
"universe": {
"type": "integer",
"default": 50,
"maximum": 100,
"minimum": 5,
"description": "How many of the most-traded symbols (by 24h volume) to scan when `symbols` is omitted (max 100)"
},
"sortOrder": {
"enum": [
"asc",
"desc"
],
"type": "string",
"default": "desc"
},
"conditions": {
"type": "array",
"items": {
"type": "object",
"required": [
"metric",
"op",
"value"
],
"properties": {
"op": {
"enum": [
"lt",
"gt",
"crossAbove",
"crossBelow"
],
"type": "string",
"description": "lt / gt compare the latest value; crossAbove / crossBelow are one-bar events (previous bar on the other side)."
},
"value": {
"type": "number",
"description": "Threshold, in the metric's own unit (RSI 30, %B 0, spread 0, change −5 …)"
},
"metric": {
"enum": [
"rsi",
"stochastic",
"cci",
"mfi",
"williamsR",
"adx",
"roc",
"macdHistogram",
"atrPct",
"volumeRatio",
"bbPercentB",
"bbWidthPct",
"priceVsEma",
"emaSpread",
"supertrend",
"changePct",
"price"
],
"type": "string",
"description": "Metric. Defaults in brackets. rsi(14): RSI, 0–100; stochastic(14,3): Stochastic %K (period; raw %K, the line TradingView draws with 14,1,3), 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"
},
"period": {
"type": "integer",
"maximum": 200,
"minimum": 2,
"description": "Override the metric's primary period (RSI length, EMA period, bars for changePct)"
},
"period2": {
"type": "integer",
"maximum": 200,
"minimum": 2,
"description": "Second period where the metric has one: slow EMA for emaSpread, slow MACD, stochastic %D"
}
},
"additionalProperties": false
},
"maxItems": 3,
"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}."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"tip": {
"anyOf": [
{
"type": "object",
"properties": {
"text": {
"type": [
"string",
"null"
]
},
"links": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": [
"string",
"null"
]
},
"label": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": true
}
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
},
{
"type": "null"
}
],
"description": "Rare: one sentence about a TraderSpy feature this connector cannot do, with the page it leads to"
},
"sortBy": {
"type": [
"string",
"null"
]
},
"matched": {
"type": [
"number",
"null"
],
"description": "Symbols satisfying every condition (all scanned symbols when no conditions)"
},
"results": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {},
"additionalProperties": true
}
},
{
"type": "null"
}
],
"description": "One row per matching symbol: { symbol, price, change24hPct, volume24hUsd, values { \"<metric label>\": value }, bias, trend, rsi14, adx14, atrPct, volumeRatio, squeeze }"
},
"interval": {
"type": [
"string",
"null"
]
},
"returned": {
"type": [
"number",
"null"
]
},
"universe": {
"anyOf": [
{
"type": "object",
"properties": {},
"additionalProperties": true
},
{
"type": "null"
}
],
"description": "{ source: top_by_volume | explicit, requested, scanned, missing[] }"
},
"warnings": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"sortOrder": {
"type": [
"string",
"null"
]
},
"conditions": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Human-readable conditions, e.g. \"RSI(14) < 30\""
}
},
"additionalProperties": true
}{
"title": "Screen Symbols",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}backtest_condition
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"symbol",
"conditions"
],
"properties": {
"symbol": {
"type": "string",
"description": "Trading pair, e.g. BTCUSDT (a bare \"BTC\" is read as its USDT perpetual)"
},
"horizons": {
"type": "array",
"items": {
"type": "integer",
"maximum": 200,
"minimum": 1
},
"maxItems": 4,
"minItems": 1,
"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]."
},
"interval": {
"enum": [
"1m",
"5m",
"15m",
"1h",
"4h",
"1d"
],
"type": "string",
"default": "4h",
"description": "Candle timeframe"
},
"conditions": {
"type": "array",
"items": {
"type": "object",
"required": [
"metric",
"op",
"value"
],
"properties": {
"op": {
"enum": [
"lt",
"gt",
"crossAbove",
"crossBelow"
],
"type": "string",
"description": "lt / gt compare the latest value; crossAbove / crossBelow are one-bar events (previous bar on the other side)."
},
"value": {
"type": "number",
"description": "Threshold, in the metric's own unit (RSI 30, %B 0, spread 0, change −5 …)"
},
"metric": {
"enum": [
"rsi",
"stochastic",
"cci",
"mfi",
"williamsR",
"adx",
"roc",
"macdHistogram",
"atrPct",
"volumeRatio",
"bbPercentB",
"bbWidthPct",
"priceVsEma",
"emaSpread",
"supertrend",
"changePct",
"price"
],
"type": "string",
"description": "Metric. Defaults in brackets. rsi(14): RSI, 0–100; stochastic(14,3): Stochastic %K (period; raw %K, the line TradingView draws with 14,1,3), 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"
},
"period": {
"type": "integer",
"maximum": 200,
"minimum": 2,
"description": "Override the metric's primary period (RSI length, EMA period, bars for changePct)"
},
"period2": {
"type": "integer",
"maximum": 200,
"minimum": 2,
"description": "Second period where the metric has one: slow EMA for emaSpread, slow MACD, stochastic %D"
}
},
"additionalProperties": false
},
"maxItems": 3,
"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}."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"to": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "string",
"format": "date-time"
}
]
},
{
"type": "null"
}
]
},
"tip": {
"anyOf": [
{
"type": "object",
"properties": {
"text": {
"type": [
"string",
"null"
]
},
"links": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": [
"string",
"null"
]
},
"label": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": true
}
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
},
{
"type": "null"
}
],
"description": "Rare: one sentence about a TraderSpy feature this connector cannot do, with the page it leads to"
},
"url": {
"type": [
"string",
"null"
],
"description": "The coin's chart on traderspy.app"
},
"bars": {
"type": [
"number",
"null"
],
"description": "Candles the study ran on (the whole stored tape)"
},
"from": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "string",
"format": "date-time"
}
]
},
{
"type": "null"
}
]
},
"recent": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {},
"additionalProperties": true
}
},
{
"type": "null"
}
],
"description": "Newest episodes first: { openTime, barsAgo, price, returnsPct { \"<bars>\": pct } }"
},
"symbol": {
"type": [
"string",
"null"
]
},
"horizons": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {},
"additionalProperties": true
}
},
{
"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"
]
},
"warnings": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"activeNow": {
"type": [
"boolean",
"null"
],
"description": "Conditions hold on the latest closed bar"
},
"conditions": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"occurrences": {
"type": [
"number",
"null"
],
"description": "Episodes — the FIRST bar of each run where the conditions held"
},
"horizonHours": {
"anyOf": [
{
"type": "array",
"items": {
"type": "number"
}
},
{
"type": "null"
}
]
},
"coverageHours": {
"type": [
"number",
"null"
]
},
"currentValues": {
"anyOf": [
{
"type": "object",
"properties": {},
"additionalProperties": true
},
{
"type": "null"
}
],
"description": "Latest value of every metric involved"
},
"evaluableBars": {
"type": [
"number",
"null"
]
},
"lastOccurrence": {
"anyOf": [
{
"type": "object",
"properties": {},
"additionalProperties": true
},
{
"type": "null"
}
],
"description": "{ openTime, barsAgo, price }"
}
},
"additionalProperties": true
}{
"title": "Backtest a Condition",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
3 advertised
traderspy-signals-app — TraderSpy AI signals
Interactive card view for the latest public AI trading signals.
ui://traderspy/signals.htmltraderspy-signal-details-app — TraderSpy signal detail
Chart, targets and trigger conditions for one AI trading signal.
ui://traderspy/signal-details.htmltraderspy-technicals-app — TraderSpy technicals
Price chart with EMA, SuperTrend and support/resistance, indicator readings and a summary per timeframe.
ui://traderspy/technicals.html90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
- 2026-11-09: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1346 ms
- 95th percentile latency
- 1346 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1346 ms · metadata changed · 17 tool(s), 3 resource(s), 0 resource template(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http traderspy-mcp https://mcp.traderspy.app/mcpCodex
codex mcp add traderspy-mcp --url https://mcp.traderspy.app/mcpCursor
{
"mcpServers": {
"traderspy-mcp": {
"url": "https://mcp.traderspy.app/mcp"
}
}
}Cline
{
"mcpServers": {
"traderspy-mcp": {
"type": "streamableHttp",
"url": "https://mcp.traderspy.app/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"traderspy-mcp": {
"type": "http",
"url": "https://mcp.traderspy.app/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http traderspy-mcp https://mcp.traderspy.app/mcpClaude Desktop
https://mcp.traderspy.app/mcpWindsurf
{
"mcpServers": {
"traderspy-mcp": {
"serverUrl": "https://mcp.traderspy.app/mcp"
}
}
}Let your agent find its tools
Find servers like TraderSpy MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other data and analytics servers
Do you run TraderSpy MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.