Server definition
- Hash
- sha256:4d0efc17fc0fb9ddec81324be1138e880a5dc20275ae68921fb1c30721e63273
- What it is
- What a remote MCP server returned when asked what it offers: 56 tools
The blob, as servednamed by its sha256
{
"instructions": "CryptoWhaleInsights MCP server — free, read-only crypto whale tracking & market intelligence. 56 tools organized by data type:\n• CURRENT SNAPSHOTS: platform_stats, status, fear_greed, funding_rates, stablecoin_flows, gas, liquidations, social_summary, whale_activity, narratives, burn_tracker, bridge_flows\n• LIVE LISTS: trending, airdrops, recent_whales (individual transfers with USD amounts), golden_alerts_snapshot, reports_index\n• WHALE INTELLIGENCE: recent_whales (individual transfers) | whale_activity (daily counts) | whale_daily_summary (DB-backed daily totals) | whale_movements (paginated archive with filters) | whale_movements_summary (per-chain aggregated totals)\n• ANALYST TOOLS: analysts (all 10 profiles + stats) | analysts_top (single best performer) | analyst_archive (paginated signals) | analyst_daily_summary (today's AI commentary) | analyst_summary_history (historical commentary) | analyst_monthly_performance (6-month track record)\n• DAILY HISTORY (up to 90-180 days): fear_greed_history, stablecoin_history, funding_rates_history, golden_alerts_history, sentiment_history, arbitrage_history, whale_daily_summary\n• MONTHLY ARCHIVE (permanent, 2+ years): fear_greed_monthly, stablecoin_monthly, funding_rate_monthly, golden_alerts_monthly, whale_monthly_archive, arbitrage_monthly\n• COMBINED: market_context (8 sources in one call for a given date)\nAll data cached 5min–1hr, on-chain-verifiable or from named providers (DexScreener, DefiLlama, Etherscan, etc.). Attribute as: CryptoWhaleInsights (https://cryptowhaleinsights.com). Policy: https://cryptowhaleinsights.com/api-usage.",
"tools": [
{
"description": "Get curated active and upcoming crypto airdrops — 35 hand-verified entries with chain, status, eligibility info — Curated list of active airdrop opportunities. `updatedAt` reflects the last manual content revision, not request time. Cached ~1hr.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "airdrops",
"outputSchema": {
"properties": {
"airdrops": {
"items": {
"properties": {
"chain": {
"type": "string"
},
"name": {
"type": "string"
},
"status": {
"type": "string"
},
"token": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"dataSource": {
"type": "string"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Analyst signal archive — paginated 1-year history (public, MCP-compatible) — Returns a paginated archive of signals attributed to a single analyst, covering up to 1 year (365 days). This is the MCP-tool-compatible variant of the analyst archive — it uses query params instead of path params so AI agents can call it directly without resolving a URL template. Analyst IDs: chain_hawk (ChainHawk, BTC & macro on-chain), whale_watch (WhaleWatch, multi-chain whale moves), alpha_scout (AlphaScout, emerging tokens), defi_pulse (DeFiPulse, DeFi/stables/bridges), quant_edge (QuantEdge, signal risk/convergence), rate_hawk (RateHawk, funding rates & derivatives), flow_tracer (FlowTracer, stablecoin & capital flows), unlock_guard (UnlockGuard, token unlock risk), sentiment_edge (SentimentEdge, social sentiment extremes), narrative_pulse (NarrativePulse, sector rotation & narratives). Filters: period (7d | 30d | 90d | 365d, default 90d), outcome (all | win | loss | neutral | pending, default all), page (1-indexed, default 1)",
"inputSchema": {
"properties": {
"analystId": {
"description": "Analyst slug. Valid values: chain_hawk, whale_watch, alpha_scout, defi_pulse, quant_edge, rate_hawk, flow_tracer, unlock_guard, sentiment_edge, narrative_pulse.",
"enum": [
"chain_hawk",
"whale_watch",
"alpha_scout",
"defi_pulse",
"quant_edge",
"rate_hawk",
"flow_tracer",
"unlock_guard",
"sentiment_edge",
"narrative_pulse"
],
"type": "string"
},
"limit": {
"default": 100,
"description": "Results per page (10–100, default 100).",
"maximum": 100,
"minimum": 10,
"type": "integer"
},
"outcome": {
"default": "all",
"description": "Filter by outcome: all | win | loss | neutral | pending (default all).",
"enum": [
"all",
"win",
"loss",
"neutral",
"pending"
],
"type": "string"
},
"page": {
"default": 1,
"description": "Page number (1-indexed, default 1).",
"minimum": 1,
"type": "integer"
},
"period": {
"default": "90d",
"description": "Time window: 7d | 30d | 90d | 365d (default 90d). Use 365d to access up to 1 year of history.",
"enum": [
"7d",
"30d",
"90d",
"365d"
],
"type": "string"
}
},
"required": [
"analystId"
],
"type": "object"
},
"name": "analyst_archive",
"outputSchema": {
"properties": {
"analystId": {
"description": "Echoed analyst slug",
"type": "string"
},
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"page": {
"description": "Current page number (1-indexed)",
"type": "number"
},
"pages": {
"description": "Total number of pages",
"type": "number"
},
"signals": {
"description": "Signals attributed to the requested analyst in reverse-chronological order.",
"items": {
"properties": {
"analystId": {
"description": "Analyst slug",
"type": "string"
},
"createdAt": {
"format": "date-time",
"type": "string"
},
"id": {
"description": "Unique signal row ID",
"type": "number"
},
"outcome": {
"description": "'win' | 'loss' | 'neutral' | null (pending)",
"nullable": true,
"type": "string"
},
"returnPct": {
"description": "Percentage-point return, e.g. 8.4 = +8.4%. Null if unresolved.",
"nullable": true,
"type": "number"
},
"tokens": {
"description": "Symbols involved, e.g. ['BTC']",
"items": {
"type": "string"
},
"type": "array"
},
"typeLabel": {
"description": "Human-readable signal type, e.g. 'Whale Move', 'Volume Breakout'",
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"tier": {
"description": "Always 'starter' (up to 365-day depth) for this public endpoint",
"type": "string"
},
"total": {
"description": "Total number of matching signals in the window",
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Get today's AI-generated commentary for all 10 analysts — 2-sentence summaries with signal count, confluence score, BTC trend (generated 9:00 UTC) — Returns today's AI-generated daily commentary for all 10 analyst personas. Summaries are generated each morning at 9:00 UTC using gpt-4o-mini based on the previous 24h of signals, Fear & Greed score, BTC trend, and cross-analyst confluence. Public endpoint — no authentication required. Only shortSummary is returned (2 sentences). Full commentary is available via the authenticated Pro endpoint /api/analysts/:id/daily-summary. Fields per analyst: analystId, analystName, summaryDate (YYYY-MM-DD), shortSummary, signalCount (signals in the past 24h), confluenceScore (0-100: % of other analysts with overlapping tokens in last 2h), fearGreedScore (0-100), btcTrend ('up'|'down'|'sideways'|null). Cached 30 minutes. Returns empty summaries array before 9:00 UTC on any given day. 60 req/min rate limit.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "analyst_daily_summary",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"summaries": {
"items": {
"description": "One daily summary per analyst.",
"properties": {
"analystId": {
"description": "Analyst slug, e.g. chain_hawk",
"type": "string"
},
"analystName": {
"description": "Display name, e.g. ChainHawk",
"type": "string"
},
"btcTrend": {
"description": "BTC 24h trend at generation time",
"enum": [
"up",
"down",
"sideways"
],
"nullable": true,
"type": "string"
},
"confluenceScore": {
"description": "0-100: % of other analysts with overlapping tokens in the last 2h — higher = more cross-analyst agreement",
"nullable": true,
"type": "number"
},
"fearGreedScore": {
"description": "Market Fear & Greed score at time of generation (0=Extreme Fear, 100=Extreme Greed)",
"nullable": true,
"type": "number"
},
"shortSummary": {
"description": "2-sentence AI commentary on the analyst's day (public)",
"type": "string"
},
"signalCount": {
"description": "Number of signals this analyst generated in the past 24h",
"type": "integer"
},
"summaryDate": {
"description": "YYYY-MM-DD date of this summary",
"format": "date",
"type": "string"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"total": {
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Monthly performance summary for all analysts (last 6 months) — Returns win_rate, avg_return, and total_signals per analyst per calendar month for exactly the last 6 calendar months (current month + 5 prior full months, enforced with DATE_TRUNC('month') boundaries — never more than 6 month buckets). All 10 canonical analysts (chain_hawk, whale_watch, alpha_scout, defi_pulse, quant_edge, rate_hawk, flow_tracer, unlock_guard, sentiment_edge, narrative_pulse) are always present in the response with an empty array [] when they have no signals in the window. Data is computed directly from the signal_history PostgreSQL table — no separate snapshot table required. winRate is a fraction (0–1, e.g. 0.71 = 71%) and is null when fewer than 5 resolved signals exist for that month. avgReturn is in percentage points (e.g. 12.3 = +12.3% average return) and is null when no resolved+priced signals exist for that month. Useful for AI agents answering 'How did WhaleWatch perform in May?' or 'Who was the best analyst last month?'",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "analyst_monthly_performance",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"months": {
"description": "Look-back window in months (always 6).",
"type": "integer"
},
"performance": {
"additionalProperties": {
"items": {
"properties": {
"avgReturn": {
"description": "Average return in pct-points. Null when no resolved+priced signals.",
"nullable": true,
"type": "number"
},
"losses": {
"type": "integer"
},
"month": {
"description": "Calendar month in YYYY-MM format, e.g. '2026-05'.",
"type": "string"
},
"resolved": {
"description": "Signals with a win or loss outcome in this month (neutral excluded from denominator, consistent with analyst stats logic).",
"type": "integer"
},
"totalSignals": {
"description": "All signals attributed to this analyst in this month (resolved + unresolved).",
"type": "integer"
},
"winRate": {
"description": "Fraction 0–1. Null when resolved < 5.",
"nullable": true,
"type": "number"
},
"wins": {
"type": "integer"
}
},
"type": "object"
},
"type": "array"
},
"description": "Keys are analyst slugs (chain_hawk, whale_watch, …); values are arrays of monthly performance objects ordered newest-first.",
"type": "object"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Get historical daily AI analyst summaries — query by date or by analyst+days (max 90 days; use analyst_daily_summary for today's data) — Returns a paginated history of daily AI analyst summaries. Query by specific date (?date=YYYY-MM-DD) to see all analyst summaries for one day, or by analystId (?analystId=chain_hawk&days=30) to get the last N days for one analyst. Maximum 90 days. Only shortSummary is returned (full commentary is Pro-only). Fields per record: analystId, analystName, summaryDate (YYYY-MM-DD), shortSummary, summaryAr, summaryHi, summaryZh, summaryRu, signalCount, confluenceScore, fearGreedScore, btcTrend. No auth required. 60 req/min. — Use this for daily historical data; use the corresponding live snapshot tool for current conditions and the monthly tool for long-term trends.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "analyst_summary_history",
"outputSchema": {
"properties": {
"analystId": {
"nullable": true,
"type": "string"
},
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"date": {
"nullable": true,
"type": "string"
},
"days": {
"type": "number"
},
"summaries": {
"items": {
"description": "One daily summary record.",
"properties": {
"analystId": {
"description": "Analyst ID, e.g. chain_hawk",
"type": "string"
},
"analystName": {
"description": "Display name, e.g. ChainHawk",
"type": "string"
},
"btcTrend": {
"enum": [
"up",
"down",
"sideways"
],
"nullable": true,
"type": "string"
},
"confluenceScore": {
"description": "Cross-analyst agreement 0-100",
"nullable": true,
"type": "number"
},
"fearGreedScore": {
"description": "Fear & Greed at generation time",
"nullable": true,
"type": "number"
},
"shortSummary": {
"description": "2-sentence AI commentary (English)",
"type": "string"
},
"signalCount": {
"description": "Signals generated that day",
"type": "integer"
},
"summaryAr": {
"description": "Arabic translation",
"nullable": true,
"type": "string"
},
"summaryDate": {
"description": "YYYY-MM-DD",
"format": "date",
"type": "string"
},
"summaryHi": {
"description": "Hindi translation",
"nullable": true,
"type": "string"
},
"summaryRu": {
"description": "Russian translation",
"nullable": true,
"type": "string"
},
"summaryZh": {
"description": "Chinese translation",
"nullable": true,
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"total": {
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Top predicted tokens per analyst — win-rate aggregates over last 90 days (MCP-compatible) — Returns the top 5 tokens (by win rate) attributed to a single analyst over the last 90 days. Only tokens with ≥ 3 resolved (win/loss) signals are included — this ensures the win-rate figures are statistically meaningful and not based on a single lucky trade. Use ?analystId= with one of: chain_hawk (ChainHawk, BTC & macro on-chain), whale_watch (WhaleWatch, multi-chain whale moves), alpha_scout (AlphaScout, emerging tokens), defi_pulse (DeFiPulse, DeFi/stables/bridges), quant_edge (QuantEdge, signal risk/convergence), rate_hawk (RateHawk, funding rates & derivatives), flow_tracer (FlowTracer, stablecoin & capital flows), unlock_guard (UnlockGuard, token unlock risk), sentiment_edge (SentimentEdge, social sentiment extremes), narrative_pulse (NarrativePulse, sector rotation & narratives). Each token entry returns: token (symbol string), total (all signals in window including pending), resolved (signals with a win/loss ou",
"inputSchema": {
"properties": {
"analystId": {
"description": "Analyst slug. Valid values: chain_hawk, whale_watch, alpha_scout, defi_pulse, quant_edge, rate_hawk, flow_tracer, unlock_guard, sentiment_edge, narrative_pulse.",
"enum": [
"chain_hawk",
"whale_watch",
"alpha_scout",
"defi_pulse",
"quant_edge",
"rate_hawk",
"flow_tracer",
"unlock_guard",
"sentiment_edge",
"narrative_pulse"
],
"type": "string"
}
},
"type": "object"
},
"name": "analyst_top_tokens",
"outputSchema": {
"properties": {
"analystId": {
"description": "Echoed analyst slug, e.g. chain_hawk. Null when analystId param was omitted.",
"nullable": true,
"type": "string"
},
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"hint": {
"description": "Guidance string returned when analystId was omitted; null otherwise.",
"nullable": true,
"type": "string"
},
"tokens": {
"description": "Top 5 tokens by win rate for this analyst (last 90 days, min 3 resolved signals each). Empty when no qualifying tokens exist or analystId was omitted.",
"items": {
"properties": {
"resolved": {
"description": "Number of signals with a win or loss outcome determined.",
"type": "integer"
},
"token": {
"description": "Token symbol, e.g. BTC, ETH, SOL.",
"type": "string"
},
"total": {
"description": "Total signals in the last 90 days (including pending/unresolved).",
"type": "integer"
},
"winRate": {
"description": "Win rate as an integer percentage (0–100). Null when resolved=0.",
"nullable": true,
"type": "integer"
},
"wins": {
"description": "Number of winning resolved signals.",
"type": "integer"
}
},
"type": "object"
},
"type": "array"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Analyst personas with live performance stats — Returns all 10 pseudonymous CryptoWhaleInsights analyst personas — ChainHawk (BTC & Macro On-Chain), WhaleWatch (Multi-Chain Whale Tracking), AlphaScout (Emerging Tokens & Narratives), DeFiPulse (DeFi, Stablecoins & Bridges), QuantEdge (Signal Performance & Risk), RateHawk (Funding Rates & Derivatives), FlowTracer (Stablecoin & Capital Flows), UnlockGuard (Token Unlock Risk & Recovery), SentimentEdge (Social Sentiment Extremes), NarrativePulse (Sector Rotation & Narratives). These are algorithmic signal-attribution identities, not human analysts: every signal generated by the platform's on-chain monitoring engine is automatically attributed to the analyst whose domain matches the alert type and chain. Stats are 100% real — computed from the live signalHistory PostgreSQL table using the same resolved-signal logic as the Signal Performance Proof page. winRate is a fraction (0.71 = 71% win rate); avgReturn is a percentage (12.3 = +12.3% average return per signal). B",
"inputSchema": {
"properties": {
"analyst": {
"description": "Optional analyst slug filter. When provided, only the matching analyst is returned. One of: chain_hawk, whale_watch, alpha_scout, defi_pulse, quant_edge.",
"enum": [
"chain_hawk",
"whale_watch",
"alpha_scout",
"defi_pulse",
"quant_edge"
],
"type": "string"
}
},
"type": "object"
},
"name": "analysts",
"outputSchema": {
"properties": {
"analysts": {
"items": {
"properties": {
"alertTypes": {
"items": {
"description": "Signal alert types routed to this analyst (whale_move, volume_breakout, accumulation, smart_money_loading, fear_buy, whale_convergence)",
"type": "string"
},
"type": "array"
},
"bio": {
"description": "Short description of the analyst's focus",
"type": "string"
},
"color": {
"type": "string"
},
"icon": {
"type": "string"
},
"id": {
"description": "Unique analyst slug. One of: chain_hawk, whale_watch, alpha_scout, defi_pulse, quant_edge, rate_hawk, flow_tracer, unlock_guard, sentiment_edge, narrative_pulse",
"type": "string"
},
"name": {
"description": "Display name, e.g. ChainHawk",
"type": "string"
},
"specialization": {
"description": "Domain covered, e.g. BTC & Macro On-Chain",
"type": "string"
},
"stats": {
"description": "Live performance stats computed from signalHistory DB. Null values mean < 5 resolved signals.",
"properties": {
"avgReturn": {
"description": "Average return in percentage points (e.g. 12.3 = +12.3%). Null if < 5 resolved signals.",
"nullable": true,
"type": "number"
},
"lastSignalAt": {
"format": "date-time",
"nullable": true,
"type": "string"
},
"losses": {
"type": "number"
},
"resolvedSignals": {
"description": "Signals with a win/loss outcome determined",
"type": "number"
},
"totalSignals": {
"description": "Total signals ever attributed to this analyst",
"type": "number"
},
"winRate": {
"description": "Fraction (0–1). Multiply by 100 for %. Null if < 5 resolved signals.",
"nullable": true,
"type": "number"
},
"wins": {
"type": "number"
}
},
"type": "object"
}
},
"type": "object"
},
"type": "array"
},
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Analyst signal history — single or multi-analyst (public, free-tier, MCP-compatible) — Returns the last 7 days of signals for one or more analysts in a single request. Pass a single id (e.g. ?id=chain_hawk) for one analyst or a comma-separated list (e.g. ?id=chain_hawk,whale_watch) to compare multiple analysts without extra round-trips. Analyst ids: chain_hawk (ChainHawk, BTC & macro), whale_watch (WhaleWatch, multi-chain whales), alpha_scout (AlphaScout, emerging tokens), defi_pulse (DeFiPulse, DeFi/stables/bridges), quant_edge (QuantEdge, signal risk/convergence). Always free-tier depth (last 7 days, up to 200 signals per analyst). No authentication required. Single-id response: { analystId, tier, signals[], updatedAt }. Multi-id response (comma-separated): { results: { [analystId]: signals[] }, tier, updatedAt }. To fetch all 10 analysts at once, use GET /api/public/analysts/signals/all. Each signal: id (number), tokens (array), typeLabel, outcome ('win'|'loss'|null), returnPct (null if unresolved), create",
"inputSchema": {
"properties": {
"id": {
"description": "Analyst slug(s). Single: chain_hawk. Comma-separated for multi: chain_hawk,whale_watch. Valid values: chain_hawk, whale_watch, alpha_scout, defi_pulse, quant_edge.",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "analysts_signals",
"outputSchema": {
"properties": {
"analystId": {
"description": "Echoed analyst slug (single-id mode only), e.g. chain_hawk",
"type": "string"
},
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"results": {
"additionalProperties": {
"items": {
"type": "object"
},
"type": "array"
},
"description": "Present in multi-id mode. Keys are analyst slugs; values are arrays of signal objects.",
"type": "object"
},
"signals": {
"description": "Present in single-id mode. Array of signal objects for the requested analyst.",
"items": {
"properties": {
"analystId": {
"description": "Analyst slug",
"type": "string"
},
"createdAt": {
"format": "date-time",
"type": "string"
},
"id": {
"description": "Unique signal row ID",
"type": "number"
},
"outcome": {
"description": "'win' | 'loss' | null if unresolved",
"nullable": true,
"type": "string"
},
"returnPct": {
"description": "Pct-point return, e.g. 8.4 = +8.4%. Null if unresolved.",
"nullable": true,
"type": "number"
},
"tokens": {
"description": "Symbols involved, e.g. ['BTC']",
"items": {
"type": "string"
},
"type": "array"
},
"typeLabel": {
"description": "Human-readable signal type, e.g. 'Whale Move', 'Volume Breakout'",
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"tier": {
"description": "Always 'free' for this public endpoint",
"type": "string"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "All analysts' signal history in one request (public, free-tier, MCP-compatible) — Returns the last 7 days of signals for all 10 analysts grouped by analystId in a single response — ideal for AI agents that need a cross-analyst comparison without 10 round-trips. Analyst ids in the response: chain_hawk (ChainHawk, BTC & macro), whale_watch (WhaleWatch, multi-chain whales), alpha_scout (AlphaScout, emerging tokens), defi_pulse (DeFiPulse, DeFi/stables/bridges), quant_edge (QuantEdge, signal risk/convergence). Always free-tier depth (last 7 days, up to 200 signals per analyst). No authentication required. No query parameters needed. Response: { results: { [analystId]: signals[] }, tier: 'free', updatedAt }. Each signal: id (number), tokens (array), typeLabel, outcome ('win'|'loss'|null), returnPct (null if unresolved), createdAt (ISO-8601), analystId. To fetch a subset of analysts, use GET /api/public/analysts/signals?id=chain_hawk,whale_watch. — Use this for all analyst signals in one response; use analysts_sign",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "analysts_signals_all",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"results": {
"description": "Keys are analyst slugs (chain_hawk, whale_watch, alpha_scout, defi_pulse, quant_edge); values are arrays of signal objects.",
"properties": {
"alpha_scout": {
"items": {
"type": "object"
},
"type": "array"
},
"chain_hawk": {
"items": {
"type": "object"
},
"type": "array"
},
"defi_pulse": {
"items": {
"type": "object"
},
"type": "array"
},
"quant_edge": {
"items": {
"type": "object"
},
"type": "array"
},
"whale_watch": {
"items": {
"type": "object"
},
"type": "array"
}
},
"type": "object"
},
"tier": {
"description": "Always 'free' for this public endpoint",
"type": "string"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Get the highest win-rate analyst right now — one analyst with win rate, avg return, last 3 signals (min 5 resolved trades required) — Returns the single analyst with the highest win rate among those with at least 5 resolved signals, plus their last 3 recent signals (using the free 7-day window). Useful for AI agents that want to surface the best-performing signal source without iterating over all 10 analysts. Returns { analyst: null } when no analyst yet has 5+ resolved signals. Analyst IDs map to: chain_hawk=ChainHawk (BTC), whale_watch=WhaleWatch (multi-chain), alpha_scout=AlphaScout (emerging tokens), defi_pulse=DeFiPulse (DeFi/stables), quant_edge=QuantEdge (risk/convergence). winRate is a fraction (0.71 = 71%); avgReturn is percentage points (12.3 = +12.3%). Cached ~10min.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "analysts_top",
"outputSchema": {
"properties": {
"analyst": {
"description": "The analyst with the highest win rate (min 5 resolved signals). Null if no analyst qualifies yet.",
"nullable": true,
"properties": {
"avgReturn": {
"description": "Average return in percentage points.",
"type": "number"
},
"bio": {
"type": "string"
},
"id": {
"type": "string"
},
"lastSignalAt": {
"format": "date-time",
"nullable": true,
"type": "string"
},
"name": {
"type": "string"
},
"recentSignals": {
"items": {
"description": "Last 3 signals attributed to this analyst (free 7-day window)",
"properties": {
"createdAt": {
"format": "date-time",
"type": "string"
},
"outcome": {
"nullable": true,
"type": "string"
},
"returnPct": {
"nullable": true,
"type": "number"
},
"tokens": {
"items": {
"type": "string"
},
"type": "array"
},
"typeLabel": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"resolvedSignals": {
"type": "number"
},
"specialization": {
"type": "string"
},
"totalSignals": {
"type": "number"
},
"winRate": {
"description": "Fraction (0–1). Multiply by 100 for %.",
"type": "number"
}
},
"type": "object"
},
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Historical arbitrage opportunities — top 5 per day (MCP-compatible) — Returns a daily history of the top 5 cross-exchange arbitrage opportunities detected by the platform. Each day entry lists the 5 highest-spread opportunities saved by the cron job, including token symbol, spread percentage, buy/sell exchanges, and average USD volume. Useful for AI agents answering questions like 'which tokens appear most frequently in arbitrage?' or 'what is the average daily spread?'. Data is accumulated daily; older than 180 days is automatically purged. Response: { days, history: [{date, opportunities: [{symbol, spreadPct, buyExchange, sellExchange, usdVolume}]}], total, updatedAt }. Query parameter: ?days=7 (default 7, max 180). No authentication required. 60 requests/min rate limit. 5-min in-process cache. — Use this for daily historical data; use the corresponding live snapshot tool for current conditions and the monthly tool for long-term trends.",
"inputSchema": {
"properties": {
"days": {
"default": 7,
"description": "Number of days to look back (default 7, max 180).",
"maximum": 180,
"minimum": 1,
"type": "integer"
}
},
"type": "object"
},
"name": "arbitrage_history",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"days": {
"type": "number"
},
"history": {
"description": "Per-day list of top arbitrage opportunities, newest first.",
"items": {
"properties": {
"date": {
"description": "Snapshot date (YYYY-MM-DD).",
"type": "string"
},
"opportunities": {
"description": "Top arbitrage opportunities for this day (up to 5), sorted by spread descending.",
"items": {
"properties": {
"buyExchange": {
"description": "DEX/chain where the token is cheapest (buy here).",
"type": "string"
},
"sellExchange": {
"description": "DEX/chain where the token is most expensive (sell here).",
"type": "string"
},
"spreadPct": {
"description": "Price spread between exchanges as a percentage, e.g. 1.23 = 1.23%.",
"type": "number"
},
"symbol": {
"description": "Token symbol, e.g. 'ETH'.",
"type": "string"
},
"usdVolume": {
"description": "Average 24h USD volume across the buy and sell pairs.",
"type": "number"
}
},
"type": "object"
},
"type": "array"
}
},
"type": "object"
},
"type": "array"
},
"total": {
"description": "Total number of individual opportunity rows returned.",
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Cross-exchange arbitrage permanent monthly archive — Returns the permanent monthly archive of cross-exchange arbitrage opportunities — one row per symbol per calendar month, aggregated from daily snapshots before they are purged after 180 days. This archive is never deleted and grows indefinitely, enabling AI agents to answer historical questions like 'which token consistently had the highest arbitrage spread?' across months of data. Each row includes: month (YYYY-MM-01), symbol, avgSpreadPct (average % spread that cycle), occurrenceCount (how many daily snapshots contributed), buyExchange, sellExchange, avgUsdVolume, daysInMonth. Months with fewer than 5 daily records are excluded. Data source: CryptoWhaleInsights arbitrage scanner (DexScreener allPairs, 158 tokens). No authentication required. 60 req/min. 1-hr cache. — Use this for long-term monthly archive data; use the corresponding live or daily-history tool for current or finer-grained data.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "arbitrage_monthly",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"dataSource": {
"type": "string"
},
"months": {
"items": {
"properties": {
"avgSpreadPct": {
"description": "Average % spread between buy and sell exchange that month.",
"type": "number"
},
"avgUsdVolume": {
"type": "number"
},
"buyExchange": {
"type": "string"
},
"daysInMonth": {
"type": "integer"
},
"month": {
"description": "First day of the month (YYYY-MM-01, UTC).",
"format": "date",
"type": "string"
},
"occurrenceCount": {
"description": "Number of daily snapshots where this symbol appeared.",
"type": "integer"
},
"sellExchange": {
"type": "string"
},
"symbol": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"total": {
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Get daily cross-chain bridge flow history — total volume USD, transaction count, protocol count, and top protocol over up to 90 days — Daily historical cross-chain bridge activity aggregated from LI.FI API (covering 9+ protocols). One row per day: total bridged volume in USD, transaction count, number of active protocols, and the dominant protocol by volume. Useful for tracking cross-chain capital flow trends. DB-backed, 5-min cache. Powered by bridge_flow_daily table (365d retention, permanent monthly archive). — Use this for daily historical data; use the corresponding live snapshot tool for current conditions and the monthly tool for long-term trends.",
"inputSchema": {
"properties": {
"days": {
"default": 30,
"description": "Number of days of history to return (1–90, default 30).",
"maximum": 90,
"minimum": 1,
"type": "integer"
}
},
"type": "object"
},
"name": "bridge_flow_history",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"days": {
"type": "number"
},
"history": {
"items": {
"properties": {
"date": {
"description": "YYYY-MM-DD snapshot date.",
"format": "date",
"type": "string"
},
"protocolCount": {
"description": "Number of distinct bridge protocols active.",
"type": "integer"
},
"topProtocol": {
"description": "Protocol with the highest volume (e.g. 'Stargate', 'Hop').",
"nullable": true,
"type": "string"
},
"totalTxCount": {
"description": "Total number of bridge transactions.",
"type": "integer"
},
"totalVolumeUsd": {
"description": "Total bridged volume in USD across all protocols.",
"type": "number"
}
},
"type": "object"
},
"type": "array"
},
"total": {
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Get recent large cross-chain bridge transfers — Stargate Finance, Socket/Bungee via LI.FI (top 3 free; capital-rotation signal) — Recent large cross-chain bridge transfers and per-bridge volume summaries sourced from LI.FI. Free preview: top 3 flows + 2 bridge summaries; the full flow history requires a Weekly Alpha subscription. Cached ~10min.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "bridge_flows",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"dataSource": {
"type": "string"
},
"flows": {
"items": {
"properties": {
"amountUsd": {
"type": "number"
},
"bridge": {
"type": "string"
},
"destChain": {
"type": "string"
},
"direction": {
"type": "string"
},
"explorerUrl": {
"format": "uri",
"type": "string"
},
"sourceChain": {
"type": "string"
},
"tokenSymbol": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"requiredTierForFull": {
"type": "string"
},
"summaries": {
"items": {
"properties": {
"bridge": {
"type": "string"
},
"totalVolume24h": {
"type": "number"
}
},
"type": "object"
},
"type": "array"
},
"total": {
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Get token burn events and 14-day burn history — ETH, SOL, BNB burns from Etherscan + Blockchair + Solana RPC (top 3 free) — Recent on-chain token burn events (with explorer-verifiable tx) plus a 14-day daily burn-volume history, sourced from Etherscan, Blockchair, and Solana RPC. Free preview: top 3 events; the full list requires a Weekly Alpha subscription. Served from cache (no per-request AI cost). Cached ~5min.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "burn_tracker",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"dataSource": {
"type": "string"
},
"events": {
"items": {
"properties": {
"burnAmountUsd": {
"type": "number"
},
"burnPercentage": {
"type": "number"
},
"burnedAt": {
"format": "date-time",
"type": "string"
},
"chain": {
"type": "string"
},
"explorerUrl": {
"format": "uri",
"type": "string"
},
"tokenSymbol": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"history": {
"items": {
"properties": {
"date": {
"type": "string"
},
"eventCount": {
"type": "number"
},
"totalBurnUsd": {
"type": "number"
}
},
"type": "object"
},
"type": "array"
},
"requiredTierForFull": {
"type": "string"
},
"total": {
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Get the Crypto Fear & Greed index — composite 0-100 score, label, 7-factor breakdown, recent history (use fear_greed_monthly for long-term trends) — 7-factor crypto Fear & Greed sentiment index with the current score, label, contributing factors, and recent history. Cached ~5min.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "fear_greed",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"factors": {
"items": {
"type": "object"
},
"type": "array"
},
"history": {
"items": {
"properties": {
"date": {
"type": "string"
},
"score": {
"type": "number"
}
},
"type": "object"
},
"type": "array"
},
"label": {
"type": "string"
},
"score": {
"type": "number"
}
},
"type": "object"
}
},
{
"description": "Get daily Fear & Greed score history — 0-100 score + Extreme Fear/Greed label per day over up to 180 days (use fear_greed_monthly for 2-year trends) — Daily historical Fear & Greed score and classification for the last N days (default 30, max 180). One row per day saved from the platform's 7-factor composite index. Useful for trend analysis and AI agent context. DB-backed, 5-min cache. — Use this for daily historical data; use the corresponding live snapshot tool for current conditions and the monthly tool for long-term trends.",
"inputSchema": {
"properties": {
"days": {
"default": 30,
"description": "Number of days of history to return (1–180, default 30).",
"maximum": 90,
"minimum": 1,
"type": "integer"
}
},
"type": "object"
},
"name": "fear_greed_history",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"days": {
"type": "number"
},
"history": {
"items": {
"properties": {
"classification": {
"description": "Text label for the score.",
"enum": [
"Extreme Fear",
"Fear",
"Neutral",
"Greed",
"Extreme Greed"
],
"type": "string"
},
"date": {
"description": "YYYY-MM-DD snapshot date.",
"format": "date",
"type": "string"
},
"score": {
"description": "Composite Fear & Greed score (0=Extreme Fear, 100=Extreme Greed).",
"maximum": 100,
"minimum": 0,
"type": "integer"
}
},
"type": "object"
},
"type": "array"
},
"total": {
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Fear & Greed permanent monthly archive — Returns the permanent monthly archive of the Fear & Greed index — one row per calendar month, aggregated from daily snapshots before they are purged. Never deleted; grows indefinitely providing AI agents with macro sentiment context across months and years. Each month includes: avgScore (0–100 average), minScore, maxScore, dominantClassification (Extreme Fear / Fear / Neutral / Greed / Extreme Greed), fearDays (days with score<40), greedDays (score>60), neutralDays, daysInMonth. Months with fewer than 20 daily records are excluded. No authentication required. 60 req/min. 5-min cache. — Use this for long-term monthly archive data; use the corresponding live or daily-history tool for current or finer-grained data.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "fear_greed_monthly",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"dataSource": {
"type": "string"
},
"months": {
"items": {
"properties": {
"avgScore": {
"type": "number"
},
"daysInMonth": {
"type": "integer"
},
"dominantClassification": {
"type": "string"
},
"fearDays": {
"type": "integer"
},
"greedDays": {
"type": "integer"
},
"maxScore": {
"type": "integer"
},
"minScore": {
"type": "integer"
},
"month": {
"format": "date",
"type": "string"
},
"neutralDays": {
"type": "integer"
}
},
"type": "object"
},
"type": "array"
},
"total": {
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "News feed archive — paginated 30-day history (public, MCP-compatible) — Returns a paginated archive of crypto news articles, analysis, and AI-generated summaries from the CryptoWhaleInsights feed, covering the last 30 days. Whale movement events are excluded — use /api/public/whale-movements for on-chain flow data. AI agents can use this to read the latest crypto news, market analysis, and AI-generated summaries without any credentials. Optional type filter: news (RSS articles), ai (AI-generated summaries), manual (analyst notes). Default: all non-whale-move items. Optional keyword search: q (max 100 chars) filters by token name or keyword — case-insensitive match on title and summary (e.g. q=ETH returns only ETH-related items). Pagination: page (1-indexed, default 1), pageSize fixed at 20. period filter: 7d | 30d (default 30d — maximum public window). Response: { items[], total, page, pageSize, hasMore, updatedAt }. Each item: id (number), title (string), summary (string), source (string — feed source name e",
"inputSchema": {
"properties": {
"page": {
"default": 1,
"description": "Page number (1-indexed, default 1).",
"minimum": 1,
"type": "integer"
},
"period": {
"default": "30d",
"description": "Time window: 7d | 30d (default 30d — the maximum public window).",
"enum": [
"7d",
"30d"
],
"type": "string"
},
"q": {
"description": "Keyword or token name search (max 100 chars). Case-insensitive match on title and summary. Example: q=ETH returns only items mentioning ETH.",
"maxLength": 100,
"type": "string"
},
"type": {
"description": "Filter by article type: news (RSS), ai (AI-generated), manual (analyst notes). Default: all types.",
"enum": [
"news",
"ai",
"manual",
"all"
],
"type": "string"
}
},
"type": "object"
},
"name": "feed_archive",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"hasMore": {
"description": "Whether more pages are available",
"type": "boolean"
},
"items": {
"description": "News articles and analysis items in reverse-chronological order.",
"items": {
"properties": {
"id": {
"description": "Unique feed item row ID",
"type": "number"
},
"publishedAt": {
"description": "Publication timestamp",
"format": "date-time",
"nullable": true,
"type": "string"
},
"source": {
"description": "Feed source name, e.g. 'CoinDesk', 'CoinTelegraph'",
"type": "string"
},
"summary": {
"description": "Article summary or AI-generated digest",
"type": "string"
},
"title": {
"description": "Article or summary title",
"type": "string"
},
"type": {
"description": "'news_summary' | 'ai_insights' | 'analysis'",
"type": "string"
},
"url": {
"description": "Original article URL, if available",
"nullable": true,
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"page": {
"description": "Current page (1-indexed)",
"type": "number"
},
"pageSize": {
"description": "Fixed at 20 records per page",
"type": "number"
},
"total": {
"description": "Total matching articles in the window",
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Funding rate permanent monthly archive — Returns the permanent monthly archive of perpetual funding rates per token — one row per token per calendar month, aggregated from daily snapshots before purge. Never deleted; covers the top 10 tokens by volume. Optional ?symbol=BTC to filter. Each row includes: month, symbol, avgRate, minRate, maxRate, dominantSentiment (bullish/neutral/bearish based on avg rate), daysInMonth. Months with fewer than 20 daily records are excluded. No authentication required. 60 req/min. 5-min cache. — Use this for long-term monthly archive data; use the corresponding live or daily-history tool for current or finer-grained data.",
"inputSchema": {
"properties": {
"symbol": {
"description": "Token symbol to filter by (e.g. BTC, ETH). Omit to return all top-10 tokens.",
"type": "string"
}
},
"type": "object"
},
"name": "funding_rate_monthly",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"dataSource": {
"type": "string"
},
"months": {
"items": {
"properties": {
"avgRate": {
"type": "number"
},
"daysInMonth": {
"type": "integer"
},
"dominantSentiment": {
"type": "string"
},
"maxRate": {
"type": "number"
},
"minRate": {
"type": "number"
},
"month": {
"format": "date",
"type": "string"
},
"symbol": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"symbol": {
"nullable": true,
"type": "string"
},
"total": {
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Get live perpetual futures funding rates — top tokens across Gate.io, MEXC, Kraken with bullish/bearish sentiment — Perpetual futures funding rates aggregated from Gate.io, MEXC, and Kraken, with a derived sentiment label. 3-min cache; check `meta.cacheAgeSeconds` for exact age. `meta.exchangeCount` tells how many exchanges contributed data this cycle (up to 3).",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "funding_rates",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"meta": {
"description": "Response freshness metadata. 3-min cache; check `meta.cacheAgeSeconds` for exact age.",
"properties": {
"cacheAgeSeconds": {
"description": "Seconds since the cache was last refreshed.",
"type": "integer"
},
"exchangeCount": {
"description": "Number of exchanges that contributed data this cycle (Gate.io, MEXC, Kraken — max 3).",
"type": "integer"
},
"updatedAt": {
"description": "ISO timestamp when this cache entry was populated.",
"format": "date-time",
"type": "string"
}
},
"type": "object"
},
"tokens": {
"items": {
"properties": {
"avg": {
"type": "number"
},
"gateio": {
"type": "number"
},
"kraken": {
"type": "number"
},
"mexc": {
"type": "number"
},
"sentiment": {
"type": "string"
},
"symbol": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Funding rates history (daily snapshots) — Returns the daily historical perpetual futures funding rate for a single token over the last N days (default 30, max 180). Rates are sourced from Gate.io, MEXC, and Kraken, recorded once per day from the live 5-min funding-rate cycle. Top 10 tokens by volume are snapshotted: BTC, ETH, SOL, BNB, XRP, DOGE, ADA, AVAX, LINK, DOT. Each day includes per-exchange rates (gateio/mexc/kraken) plus a derived avg and sentiment label. Sentiment: avg > 0.05% = bearish (leveraged longs paying shorts → market top signal); avg < -0.01% = bullish (shorts paying longs → market bottom signal); otherwise neutral. Use ?symbol=BTC&days=30 (symbol defaults to BTC; days is 1–180). Cold-start days with no data are omitted. Cached 5min. — Use this for daily historical data; use the corresponding live snapshot tool for current conditions and the monthly tool for long-term trends.",
"inputSchema": {
"properties": {
"days": {
"default": 30,
"description": "Number of recent days to return (1–180, default 30).",
"maximum": 90,
"minimum": 1,
"type": "integer"
},
"symbol": {
"default": "BTC",
"description": "Token symbol to look up (BTC, ETH, SOL, BNB, XRP, DOGE, ADA, AVAX, LINK, DOT). Case-insensitive. Defaults to BTC.",
"type": "string"
}
},
"type": "object"
},
"name": "funding_rates_history",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"days": {
"type": "number"
},
"history": {
"items": {
"properties": {
"avg": {
"description": "Average across available exchanges.",
"type": "number"
},
"date": {
"description": "Snapshot date (YYYY-MM-DD, UTC).",
"format": "date",
"type": "string"
},
"gateio": {
"description": "Gate.io funding rate in % (e.g. 0.01 = 0.01% per 8h). Null when unavailable.",
"nullable": true,
"type": "number"
},
"kraken": {
"description": "Kraken funding rate in %. Null when unavailable.",
"nullable": true,
"type": "number"
},
"mexc": {
"description": "MEXC funding rate in %. Null when unavailable.",
"nullable": true,
"type": "number"
},
"sentiment": {
"description": "Market sentiment derived from avg: >0.05% bearish (top signal), <-0.01% bullish (bottom signal).",
"enum": [
"bullish",
"bearish",
"neutral"
],
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"symbol": {
"type": "string"
},
"total": {
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Get real-time gas prices across 7 chains — ETH, SOL, BNB, Base, ARB, Polygon, AVAX with USD fee estimates — Current gas/transaction fees across ETH, SOL, BNB, Base, ARB, Polygon, and AVAX, with USD estimates per speed tier. 30s cache; check `meta.cacheAgeSeconds` for exact age. `meta.chainCount` tells how many networks are in the current response.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "gas",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"meta": {
"description": "Response freshness metadata. 30s cache; check `meta.cacheAgeSeconds` for exact age.",
"properties": {
"cacheAgeSeconds": {
"description": "Seconds since the cache was last refreshed.",
"type": "integer"
},
"chainCount": {
"description": "Number of chains/networks in this response.",
"type": "integer"
},
"updatedAt": {
"description": "ISO timestamp when this cache entry was populated.",
"format": "date-time",
"type": "string"
}
},
"type": "object"
},
"networks": {
"items": {
"properties": {
"chain": {
"type": "string"
},
"level": {
"type": "string"
},
"name": {
"type": "string"
},
"standard": {
"type": "object"
}
},
"type": "object"
},
"type": "array"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Get daily gas price history — ETH/BNB/ARB/POLY/BASE fast gwei + SOL lamports over up to 90 days — Daily historical gas prices across 7 blockchain networks. One row per day: ETH fast gwei, ETH standard gwei, BNB fast gwei, ARB fast gwei, POLYGON fast gwei, BASE fast gwei, and SOL priority fee in lamports. Useful for tracking gas fee trends and identifying high/low gas periods. DB-backed, 5-min cache. Powered by gas_price_daily table (365d retention, permanent monthly archive). — Use this for daily historical data; use the corresponding live snapshot tool for current conditions and the monthly tool for long-term trends.",
"inputSchema": {
"properties": {
"days": {
"default": 30,
"description": "Number of days of history to return (1–90, default 30).",
"maximum": 90,
"minimum": 1,
"type": "integer"
}
},
"type": "object"
},
"name": "gas_price_history",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"days": {
"type": "number"
},
"history": {
"items": {
"properties": {
"arbFastGwei": {
"description": "Arbitrum fast gas price in gwei.",
"nullable": true,
"type": "number"
},
"baseFastGwei": {
"description": "Base (Coinbase L2) fast gas price in gwei.",
"nullable": true,
"type": "number"
},
"bnbFastGwei": {
"description": "BNB Smart Chain fast gas price in gwei.",
"nullable": true,
"type": "number"
},
"date": {
"description": "YYYY-MM-DD snapshot date.",
"format": "date",
"type": "string"
},
"ethFastGwei": {
"description": "ETH fast gas price in gwei.",
"nullable": true,
"type": "number"
},
"ethStandardGwei": {
"description": "ETH standard (safe) gas price in gwei.",
"nullable": true,
"type": "number"
},
"polyFastGwei": {
"description": "Polygon fast gas price in gwei.",
"nullable": true,
"type": "number"
},
"solLamports": {
"description": "Solana priority fee in lamports.",
"nullable": true,
"type": "number"
}
},
"type": "object"
},
"type": "array"
},
"total": {
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Golden Alerts history (daily summaries) — Returns a daily summary of Golden Alerts for the last N days (default 30, max 180). Each day's entry includes the total alert count plus a breakdown by severity (high/medium/low) derived from alert confidence scores (≥75 = high, ≥50 = medium, <50 = low), and the top tokens that appeared most frequently in alerts that day. Backfilled from 17 days of real signal_history data (confidence scores from 49,000+ on-chain signals). Data is persisted once per 5-min alert cycle via ON CONFLICT DO UPDATE so each day's entry reflects the latest alert state at last refresh. Days with no data are omitted from the history array. Use ?days=N to control the look-back window (1–180, default 30). Cached 5min. — Use this for daily historical data; use the corresponding live snapshot tool for current conditions and the monthly tool for long-term trends.",
"inputSchema": {
"properties": {
"days": {
"default": 30,
"description": "Number of recent days to return (1–180, default 30).",
"maximum": 90,
"minimum": 1,
"type": "integer"
}
},
"type": "object"
},
"name": "golden_alerts_history",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"dataSource": {
"type": "string"
},
"days": {
"type": "number"
},
"history": {
"items": {
"properties": {
"date": {
"description": "Snapshot date (YYYY-MM-DD, UTC).",
"format": "date",
"type": "string"
},
"highCount": {
"description": "Alerts with confidence ≥75 (high severity).",
"type": "integer"
},
"lowCount": {
"description": "Alerts with confidence <50 (low severity).",
"type": "integer"
},
"mediumCount": {
"description": "Alerts with confidence 50–74 (medium severity).",
"type": "integer"
},
"topTokens": {
"items": {
"type": "string"
},
"type": "array"
},
"totalCount": {
"description": "Total number of Golden Alerts generated that day.",
"type": "integer"
}
},
"type": "object"
},
"type": "array"
},
"total": {
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Golden Alerts permanent monthly archive — Returns the permanent monthly archive of Golden Alert activity — one row per calendar month, aggregated from daily snapshots before they are purged. This archive is never deleted and grows indefinitely, providing AI agents with long-term trend data on alert severity and top tokens across months and years. Each month includes: totalCount (total alerts that month), highCount/mediumCount/lowCount (severity breakdown), topTokens (5 most-active tokens), daysInMonth (days with data), avgPerDay (daily average). Months with fewer than 20 daily records are excluded to ensure statistical accuracy. Data source: CryptoWhaleInsights own signal_history database (49,000+ on-chain signals). No authentication required. 60 req/min. 5-min cache. — Use this for long-term monthly archive data; use the corresponding live or daily-history tool for current or finer-grained data.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "golden_alerts_monthly",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"dataSource": {
"type": "string"
},
"months": {
"items": {
"properties": {
"avgPerDay": {
"type": "number"
},
"daysInMonth": {
"type": "integer"
},
"highCount": {
"type": "integer"
},
"lowCount": {
"type": "integer"
},
"mediumCount": {
"type": "integer"
},
"month": {
"description": "First day of the month (YYYY-MM-01, UTC).",
"format": "date",
"type": "string"
},
"topTokens": {
"items": {
"type": "string"
},
"type": "array"
},
"totalCount": {
"type": "integer"
}
},
"type": "object"
},
"type": "array"
},
"total": {
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Golden Alerts snapshot — latest market intelligence alerts (public, MCP-compatible) — Returns the latest snapshot of CryptoWhaleInsights Golden Alerts — up to 27 high-signal market alerts refreshed every 5 minutes by the platform's cron job. Each alert represents a confluence of whale on-chain activity, volume momentum, and Fear & Greed context. This endpoint reads directly from the in-process cache (no new AI query triggered per request). Pro-only fields (raw confidence score, internal factors, price targets, exit signals) are intentionally omitted; severity is mapped to low/medium/high for public consumption. Alert types: accumulation | fear_buy | smart_money_loading | volume_breakout | whale_convergence. Severity mapping: high (confidence ≥70%), medium (45–69%), low (<45%). Response: { alerts[], total, refreshedAt (ISO-8601 or null if cache empty), updatedAt }. Each alert: id, title, type, severity, tokens (string[]), chains (string[]), summary, aiInsight, analystId (string | null), createdAt. No authentic",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "golden_alerts_snapshot",
"outputSchema": {
"properties": {
"alerts": {
"description": "Golden Alerts sorted by severity (highest first), up to 27 entries.",
"items": {
"properties": {
"aiInsight": {
"description": "One-sentence AI-generated actionable insight",
"type": "string"
},
"analystId": {
"description": "Attributed analyst slug: chain_hawk | whale_watch | alpha_scout | defi_pulse | quant_edge | rate_hawk | flow_tracer | unlock_guard | sentiment_edge | narrative_pulse | null",
"nullable": true,
"type": "string"
},
"chains": {
"description": "Blockchain networks, e.g. ['bitcoin', 'ethereum']",
"items": {
"type": "string"
},
"type": "array"
},
"createdAt": {
"description": "When this alert was generated",
"format": "date-time",
"type": "string"
},
"id": {
"description": "Unique alert identifier, e.g. 'ga-1719220800000-abc123'",
"type": "string"
},
"severity": {
"description": "'high' (confidence ≥70%) | 'medium' (45–69%) | 'low' (<45%)",
"type": "string"
},
"summary": {
"description": "Signal summary combining whale moves, volume, and Fear & Greed context",
"type": "string"
},
"title": {
"description": "Human-readable alert title, e.g. 'Fear Buy Opportunity'",
"type": "string"
},
"tokens": {
"description": "Token symbols involved, e.g. ['BTC', 'ETH']",
"items": {
"type": "string"
},
"type": "array"
},
"type": {
"description": "Alert classification: accumulation | fear_buy | smart_money_loading | volume_breakout | whale_convergence",
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"refreshedAt": {
"description": "When the cron job last populated the cache; null if cache is empty",
"format": "date-time",
"nullable": true,
"type": "string"
},
"total": {
"description": "Number of alerts in the snapshot",
"type": "number"
},
"updatedAt": {
"description": "Response generation timestamp",
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Get daily Leverage Radar market-level history — avg/max pressure score, setup score, assets in critical zone, dominant regime, Fear & Greed over up to 90 days — Daily historical Leverage Radar market aggregates. One row per day: average pressure score across 30 tracked assets, maximum single-asset pressure, average setup score, count of assets in critical zone (≥76), dominant market regime, Fear & Greed index, and top-pressure asset symbol. DB-backed, 30-min cache. Pro-only per-asset detail excluded — market-level only. — Use this for daily historical data; use the corresponding live snapshot tool for current conditions and the monthly tool for long-term trends.",
"inputSchema": {
"properties": {
"days": {
"default": 30,
"description": "Number of days of history to return (1–90, default 30).",
"maximum": 90,
"minimum": 1,
"type": "integer"
}
},
"type": "object"
},
"name": "leverage_history",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"days": {
"type": "number"
},
"history": {
"items": {
"properties": {
"assetsInCritical": {
"description": "Count of assets with pressureScore ≥ 76 (critical/danger zone).",
"type": "integer"
},
"assetsInDangerZone": {
"description": "Count of assets with Danger Zone setup label.",
"type": "integer"
},
"avgPressureScore": {
"description": "Average pressure score across all tracked assets (0-100).",
"maximum": 100,
"minimum": 0,
"type": "number"
},
"avgSetupScore": {
"description": "Average setup score across tracked assets.",
"maximum": 100,
"minimum": 0,
"type": "number"
},
"date": {
"description": "YYYY-MM-DD snapshot date.",
"format": "date",
"type": "string"
},
"dominantRegime": {
"description": "Market regime detected for the day.",
"enum": [
"Bull",
"Bear",
"Sideways",
"Accumulation",
"Unknown"
],
"type": "string"
},
"fearGreed": {
"description": "Platform Fear & Greed index for the day.",
"maximum": 100,
"minimum": 0,
"nullable": true,
"type": "integer"
},
"maxPressureScore": {
"description": "Highest single-asset pressure score of the day.",
"maximum": 100,
"minimum": 0,
"type": "number"
},
"topPressureSymbol": {
"description": "Ticker symbol of the highest-pressure asset.",
"nullable": true,
"type": "string"
},
"whaleBuyCount": {
"description": "Whale buy signals that day.",
"type": "integer"
},
"whaleSellCount": {
"description": "Whale sell signals that day.",
"type": "integer"
}
},
"type": "object"
},
"type": "array"
},
"total": {
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Get Leverage Radar pick accuracy summary — historical win rate, avg return, and total pick counts across all recorded Best Trade Now picks — Aggregate accuracy statistics for all 'Best Trade Now' picks recorded by the Leverage Radar tool. Picks are saved automatically every 5 minutes when a high-confidence setup (score ≥ 60) is detected across 1h/4h/12h windows. Outcome is resolved after the close window elapses using live price data: win = +1.5% return for buy / −1.5% for sell. Records are permanent (never deleted) — this is a live data-provider proof-of-accuracy archive. Full pick list with entry/exit prices is Pro-only. 30-min cache.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "leverage_picks_summary",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"avgReturnPct": {
"description": "Average return % across all resolved picks (positive = profitable on avg).",
"nullable": true,
"type": "number"
},
"avgWinReturnPct": {
"description": "Average return % for winning picks only.",
"nullable": true,
"type": "number"
},
"dataSource": {
"type": "string"
},
"losses": {
"description": "Picks classified as loss.",
"type": "integer"
},
"neutrals": {
"description": "Picks within ±1.5% (neutral).",
"type": "integer"
},
"note": {
"type": "string"
},
"pendingPicks": {
"description": "Picks still awaiting resolution (close window not yet elapsed).",
"type": "integer"
},
"resolvedPicks": {
"description": "Picks with outcome resolved (close window elapsed).",
"type": "integer"
},
"totalPicks": {
"description": "Total picks ever recorded (pending + resolved).",
"type": "integer"
},
"updatedAt": {
"format": "date-time",
"type": "string"
},
"winRatePct": {
"description": "Win rate as a percentage (0–100). Null until first resolved picks exist.",
"nullable": true,
"type": "number"
},
"winThresholdPct": {
"description": "Return threshold used to classify a pick as win/loss (currently 1.5%).",
"type": "number"
},
"windows": {
"description": "Trading windows tracked: 1h (scalp), 4h (swing), 12h (position).",
"items": {
"type": "string"
},
"type": "array"
},
"wins": {
"description": "Picks classified as win.",
"type": "integer"
}
},
"type": "object"
}
},
{
"description": "Get current Leverage Radar snapshot — pressure scores, setup scores, top long/short setups, and market summary for 50 tracked assets — Public real-time snapshot of the Leverage Radar tool. Returns pressure score (0-100, how overleveraged each asset is) and setup score (0-100, how good a leveraged trade opportunity looks) for 50 tracked assets across majors, L2s, DeFi, and meme tokens. Includes market summary (overall bias, avg scores, Fear & Greed, market regime, whale buy/sell counts), top 5 long setups, top 5 short setups, and top 5 pressure alerts. Pro-only fields stripped: whale X multiplier, exact whale USD volumes, detailed setup factors, and Best Trade Now recommendation. 5-min cache. Supports ?window=1h|4h|12h (default 4h).",
"inputSchema": {
"properties": {
"window": {
"default": "4h",
"description": "Trading window: 1h (scalp), 4h (swing, default), 12h (position).",
"enum": [
"1h",
"4h",
"12h"
],
"type": "string"
}
},
"type": "object"
},
"name": "leverage_radar",
"outputSchema": {
"properties": {
"assetCount": {
"description": "Total assets tracked (50).",
"type": "integer"
},
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"computedAt": {
"format": "date-time",
"type": "string"
},
"disclaimer": {
"type": "string"
},
"marketSummary": {
"properties": {
"avgPressureScore": {
"description": "Average pressure score across all 50 tracked assets.",
"maximum": 100,
"minimum": 0,
"type": "number"
},
"avgSetupScore": {
"description": "Average setup quality score across all tracked assets.",
"maximum": 100,
"minimum": 0,
"type": "number"
},
"fearGreed": {
"description": "Platform Fear & Greed index (0=Extreme Fear, 100=Extreme Greed).",
"maximum": 100,
"minimum": 0,
"nullable": true,
"type": "integer"
},
"fearGreedLabel": {
"description": "Human-readable F&G classification.",
"nullable": true,
"type": "string"
},
"overallBias": {
"description": "Aggregated market bias derived from all scores.",
"enum": [
"bullish",
"bearish",
"neutral"
],
"type": "string"
},
"regime": {
"description": "Current market regime (Bull/Bear/Sideways/Accumulation).",
"nullable": true,
"type": "string"
},
"whaleBuyCount": {
"description": "Whale buy signals in the selected window.",
"type": "integer"
},
"whaleSellCount": {
"description": "Whale sell signals in the selected window.",
"type": "integer"
}
},
"type": "object"
},
"note": {
"type": "string"
},
"pressureAlerts": {
"items": {
"type": "object"
},
"type": "array"
},
"topLongSetups": {
"items": {
"properties": {
"fundingRate": {
"description": "Current funding rate % (negative=shorts pay longs).",
"nullable": true,
"type": "number"
},
"pressureScore": {
"description": "Leverage pressure score — higher = more overleveraged (dangerous).",
"maximum": 100,
"minimum": 0,
"type": "number"
},
"priceChange24h": {
"description": "24h price change %.",
"nullable": true,
"type": "number"
},
"riskLevel": {
"description": "Risk classification.",
"enum": [
"low",
"medium",
"high",
"extreme"
],
"type": "string"
},
"setupLabel": {
"description": "Decision label: Strong Long Setup, Weak Long Setup, Strong Short Setup, etc.",
"type": "string"
},
"setupScore": {
"description": "Setup quality score — higher = better trade opportunity.",
"maximum": 100,
"minimum": 0,
"type": "number"
},
"symbol": {
"description": "Ticker symbol.",
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"topShortSetups": {
"items": {
"type": "object"
},
"type": "array"
},
"window": {
"description": "Trading window used for computation.",
"enum": [
"1h",
"4h",
"12h"
],
"type": "string"
},
"windowHours": {
"description": "Window in hours.",
"enum": [
1,
4,
12
],
"type": "integer"
}
},
"type": "object"
}
},
{
"description": "Get leveraged-position liquidation estimates — long and short liquidation amounts in USD per token (5-min cache) — Estimated leveraged-position liquidations by token — how much USD in long positions and short positions were force-liquidated recently. Useful for identifying tokens with high leverage risk and likely volatility triggers. Derived from market price action and open interest data. Cached ~5min. Note: these are estimates, not exact exchange data (Binance Futures and Bybit are geo-restricted from the server).",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "liquidations",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"binanceSources": {
"type": "boolean"
},
"tokens": {
"items": {
"properties": {
"longLiquidations": {
"type": "number"
},
"shortLiquidations": {
"type": "number"
},
"symbol": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Get live activity counters — whale moves today, smart-money wallets active, golden alerts (10s cache) — Live activity snapshot for the platform (real recent counts, no fabricated floors). Cached ~10s. Response includes `meta.updatedAt` and `meta.cacheAgeSeconds` (derived from the underlying whale-copy-signals cache timestamp; 0 when the cache is cold).",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "live_stats",
"outputSchema": {
"properties": {
"activeAlerts": {
"type": "number"
},
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"meta": {
"description": "Response freshness metadata. 10s cache; check `meta.cacheAgeSeconds` for exact age.",
"properties": {
"cacheAgeSeconds": {
"description": "Seconds since the cache was last populated. 0 means just refreshed.",
"type": "integer"
},
"updatedAt": {
"description": "ISO timestamp of the underlying whale-signals cache.",
"format": "date-time",
"type": "string"
}
},
"type": "object"
},
"smartMoneyWallets": {
"type": "number"
},
"whaleMovesToday": {
"type": "number"
}
},
"type": "object"
}
},
{
"description": "Get aggregated market context for a date in one call — Fear & Greed, whale summary, sentiment, stablecoin flows, funding rates, golden alerts, analyst summaries (8 sources parallel) — Single-call aggregated market snapshot for a given date. Queries 8 data sources in parallel — Fear & Greed, whale daily summary, social sentiment (BTC/ETH/SOL), stablecoin flows, BTC funding rates, Golden Alerts daily count, analyst daily summaries (shortSummary only), and top arbitrage opportunities. No authentication required. Use ?date=YYYY-MM-DD (default = today; max 730 days back / 2 years). For dates older than 365 days where daily snapshots have been purged, the endpoint automatically falls back to the permanent monthly archive tables, returning monthly averages instead of daily values. metadata.resolution indicates 'daily' (exact day data) or 'monthly' (monthly averages from archive). metadata.dataCompleteness is the percentage of the 8 sources that have data for the requested date (0-100%). Today is cached 5 minutes; hi",
"inputSchema": {
"properties": {
"date": {
"description": "Date to retrieve (YYYY-MM-DD). Defaults to today. Max 730 days back (2 years). Dates older than 365d automatically use monthly archive.",
"format": "date",
"type": "string"
}
},
"type": "object"
},
"name": "market_context",
"outputSchema": {
"properties": {
"analystSummaries": {
"items": {
"description": "One analyst's public daily summary (only available for daily resolution).",
"properties": {
"analystId": {
"type": "string"
},
"btcTrend": {
"nullable": true,
"type": "string"
},
"confluenceScore": {
"nullable": true,
"type": "number"
},
"shortSummary": {
"type": "string"
},
"signalCount": {
"type": "number"
}
},
"type": "object"
},
"type": "array"
},
"arbitrage": {
"items": {
"description": "Top arbitrage opportunity (only available for daily resolution ≤180 days).",
"properties": {
"buyExchange": {
"type": "string"
},
"sellExchange": {
"type": "string"
},
"spreadPct": {
"type": "number"
},
"symbol": {
"type": "string"
},
"usdVolume": {
"type": "number"
}
},
"type": "object"
},
"type": "array"
},
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"date": {
"description": "Requested date (YYYY-MM-DD)",
"format": "date",
"type": "string"
},
"fearGreed": {
"description": "Fear & Greed index for the date (daily score or monthly avg when resolution=monthly).",
"nullable": true,
"properties": {
"classification": {
"type": "string"
},
"score": {
"type": "number"
}
},
"type": "object"
},
"fundingRates": {
"description": "BTC perpetual funding rate summary for the date (daily or monthly avg).",
"properties": {
"avg": {
"nullable": true,
"type": "number"
},
"byExchange": {
"type": "object"
},
"sentiment": {
"nullable": true,
"type": "string"
},
"symbol": {
"type": "string"
}
},
"type": "object"
},
"goldenAlerts": {
"description": "Golden Alerts daily summary for the date.",
"nullable": true,
"properties": {
"highCount": {
"type": "number"
},
"lowCount": {
"type": "number"
},
"mediumCount": {
"type": "number"
},
"topTokens": {
"items": {
"type": "string"
},
"type": "array"
},
"totalCount": {
"type": "number"
}
},
"type": "object"
},
"metadata": {
"properties": {
"dataCompleteness": {
"description": "Percentage of 8 sources with data for this date (0-100)",
"type": "number"
},
"date": {
"type": "string"
},
"generatedAt": {
"format": "date-time",
"type": "string"
},
"isToday": {
"type": "boolean"
},
"resolution": {
"description": "'daily' = exact day data from snapshots; 'monthly' = monthly averages from permanent archive (triggered for dates >180 days old with <50% daily completeness)",
"enum": [
"daily",
"monthly"
],
"type": "string"
},
"sourcesAvailable": {
"type": "number"
},
"sourcesTotal": {
"type": "number"
}
},
"type": "object"
},
"sentiment": {
"description": "Social sentiment for BTC, ETH, SOL (daily score or monthly avg when resolution=monthly).",
"items": {
"description": "Social sentiment score for one token.",
"properties": {
"score": {
"nullable": true,
"type": "number"
},
"sentiment": {
"nullable": true,
"type": "string"
},
"symbol": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"stablecoin": {
"description": "Stablecoin flow snapshot for the date.",
"nullable": true,
"properties": {
"signal": {
"nullable": true,
"type": "string"
},
"totalFlow24h": {
"type": "number"
},
"totalNow": {
"type": "number"
}
},
"type": "object"
},
"updatedAt": {
"format": "date-time",
"type": "string"
},
"whaleSummary": {
"description": "Aggregated whale movement counts for the date.",
"nullable": true,
"properties": {
"inflowCount": {
"type": "number"
},
"outflowCount": {
"type": "number"
},
"totalMoves": {
"type": "number"
},
"totalUsdValue": {
"type": "number"
}
},
"type": "object"
}
},
"type": "object"
}
},
{
"description": "Get token market heatmap — top tokens ranked by 24h performance with volume, market cap, chain (5-min cache) — Market-wide token heatmap: top tokens by 24h volume with price change, volume, market cap, and chain, blended from CoinGecko top markets plus emerging/hidden-gem tokens. Non-gated. Cached ~5min.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "market_heatmap",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"chains": {
"items": {
"type": "string"
},
"type": "array"
},
"lastUpdated": {
"format": "date-time",
"type": "string"
},
"tokens": {
"items": {
"properties": {
"chain": {
"type": "string"
},
"marketCap": {
"type": "number"
},
"name": {
"type": "string"
},
"priceChange24h": {
"type": "number"
},
"priceUsd": {
"type": "string"
},
"symbol": {
"type": "string"
},
"volume24h": {
"type": "number"
}
},
"type": "object"
},
"type": "array"
},
"total": {
"type": "number"
}
},
"type": "object"
}
},
{
"description": "Get daily Market Pulse history — BUY/SELL/NEUTRAL verdict, confidence %, Fear & Greed, regime, whale buy ratio, leverage suggestion over up to 90 days — Daily historical Market Pulse verdict and confidence. One row per day: BUY/SELL/NEUTRAL verdict, confidence percentage, Fear & Greed score, market regime (Bull/Bear/Sideways/Accumulation), whale buy ratio (0-1), average leverage pressure score (0-100), and leverage suggestion. DB-backed, 5-min cache. Powered by market_pulse_daily table (365d retention, permanent monthly archive). — Use this for daily historical data; use the corresponding live snapshot tool for current conditions and the monthly tool for long-term trends.",
"inputSchema": {
"properties": {
"days": {
"default": 30,
"description": "Number of days of history to return (1–90, default 30).",
"maximum": 90,
"minimum": 1,
"type": "integer"
}
},
"type": "object"
},
"name": "market_pulse_history",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"days": {
"type": "number"
},
"history": {
"items": {
"properties": {
"avgPressureScore": {
"description": "Average leverage pressure score across tracked assets.",
"maximum": 100,
"minimum": 0,
"nullable": true,
"type": "number"
},
"confidence": {
"description": "Confidence percentage for the verdict (0-100).",
"maximum": 100,
"minimum": 0,
"type": "number"
},
"date": {
"description": "YYYY-MM-DD snapshot date.",
"format": "date",
"type": "string"
},
"fearGreedScore": {
"description": "Platform Fear & Greed index for the day.",
"maximum": 100,
"minimum": 0,
"nullable": true,
"type": "number"
},
"leverageSuggestion": {
"description": "Derived leverage level suggestion.",
"enum": [
"none",
"low",
"moderate",
"high"
],
"nullable": true,
"type": "string"
},
"regime": {
"description": "Market regime detected for the day.",
"enum": [
"Bull",
"Bear",
"Sideways",
"Accumulation"
],
"nullable": true,
"type": "string"
},
"verdict": {
"description": "Aggregated market verdict for the day.",
"enum": [
"BUY",
"SELL",
"NEUTRAL"
],
"type": "string"
},
"whaleBuyRatio": {
"description": "Ratio of whale buy signals vs total signals (0=all sell, 1=all buy).",
"maximum": 1,
"minimum": 0,
"nullable": true,
"type": "number"
}
},
"type": "object"
},
"type": "array"
},
"total": {
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Get daily narrative/sector history — top crypto market sectors ranked by market cap change %, strength, and token count over up to 90 days — Daily historical narrative strength per market sector (e.g. DeFi, Layer 2, AI, Meme Coins) from CoinGecko Categories. One row per day per sector: market cap change %, strength score (0-100), token count in sector, daily rank, and top tokens. Filter by ?sector= for a single sector trend. Useful for identifying which narratives are accelerating or fading. DB-backed, 5-min cache. Powered by narrative_daily table (365d retention, permanent monthly archive). — Use this for daily historical data; use the corresponding live snapshot tool for current conditions and the monthly tool for long-term trends.",
"inputSchema": {
"properties": {
"days": {
"default": 30,
"description": "Number of days of history to return (1–90, default 30).",
"maximum": 90,
"minimum": 1,
"type": "integer"
},
"sector": {
"description": "Optional sector name filter (e.g. 'Artificial Intelligence'). Returns all sectors when omitted.",
"type": "string"
}
},
"type": "object"
},
"name": "narrative_history",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"days": {
"type": "number"
},
"history": {
"items": {
"properties": {
"date": {
"description": "YYYY-MM-DD snapshot date.",
"format": "date",
"type": "string"
},
"marketCapChangePct": {
"description": "24h market cap change % for the sector.",
"nullable": true,
"type": "number"
},
"rank": {
"description": "Sector rank for the day (1 = strongest).",
"type": "integer"
},
"sector": {
"description": "Market sector / narrative name (e.g. 'Artificial Intelligence', 'Layer 2', 'DeFi').",
"type": "string"
},
"strength": {
"description": "Composite narrative strength score (0-100).",
"maximum": 100,
"minimum": 0,
"nullable": true,
"type": "number"
},
"tokenCount": {
"description": "Number of tokens in this sector.",
"type": "integer"
},
"topTokens": {
"description": "Top token symbols in this sector.",
"items": {
"type": "string"
},
"nullable": true,
"type": "array"
}
},
"type": "object"
},
"type": "array"
},
"sector": {
"description": "Sector filter applied (null = all sectors).",
"nullable": true,
"type": "string"
},
"total": {
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Get top trending market narrative sectors — AI, RWA, DePIN, memecoins with momentum and top tokens (top 3 free) — Trending market narratives (e.g. AI, RWA, memecoins, DePIN) derived from CoinGecko Categories with their leading tokens. Free preview: top 3 narratives (3 tokens each); the full set requires a Weekly Alpha subscription. Cached ~30min.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "narratives",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"dataSource": {
"type": "string"
},
"narratives": {
"items": {
"properties": {
"change24h": {
"type": "number"
},
"marketCap": {
"type": "number"
},
"name": {
"type": "string"
},
"tokens": {
"items": {
"type": "object"
},
"type": "array"
}
},
"type": "object"
},
"type": "array"
},
"requiredTierForFull": {
"type": "string"
},
"total": {
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Get canonical platform metrics — tracked wallets, chains, win rate, BTC benchmark — Canonical platform metrics: tracked wallets, chains, tokens, tools, languages, supported chain list, plus a safe aggregate performance subset (win rate, average return, BTC benchmark). Cached ~60s. Response includes `meta.updatedAt` (ISO timestamp of when the response was generated).",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "platform_stats",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"chainList": {
"items": {
"type": "string"
},
"type": "array"
},
"chains": {
"type": "number"
},
"dataSources": {
"type": "number"
},
"freeTools": {
"type": "number"
},
"languages": {
"type": "number"
},
"live": {
"type": "object"
},
"meta": {
"description": "Response freshness metadata.",
"properties": {
"updatedAt": {
"description": "ISO timestamp of when the response was generated.",
"format": "date-time",
"type": "string"
}
},
"type": "object"
},
"performance": {
"description": "Aggregate signal performance metrics.",
"properties": {
"avgBtcBenchmark": {
"description": "Average BTC price change over the same holding windows as the resolved signals (%). Null when not enough data.",
"nullable": true,
"type": "number"
},
"avgReturn": {
"description": "Average return across all resolved signals (%).",
"type": "number"
},
"dataStartedAt": {
"description": "ISO timestamp of the oldest resolved signal.",
"format": "date-time",
"nullable": true,
"type": "string"
},
"losses": {
"description": "Number of losing resolved signals.",
"type": "number"
},
"totalResolved": {
"description": "Total number of signals with a resolved outcome.",
"type": "number"
},
"totalSignalCount": {
"description": "All-time signal count (including unresolved).",
"type": "number"
},
"winRate": {
"description": "Percentage of resolved signals that were profitable (0–100).",
"type": "number"
},
"wins": {
"description": "Number of winning resolved signals.",
"type": "number"
}
},
"type": "object"
},
"tokensTracked": {
"type": "number"
},
"trackedWallets": {
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Get the latest 3 whale transfers right now — live snapshot across 14 chains (use whale_activity for counts, whale_movements for paginated archive) — The most recent on-chain whale movements detected across supported chains, each with an explorer-verifiable reference. 10-min cache; check `meta.cacheAgeSeconds` for exact age. `meta.chainCount` is the number of unique chains represented in the cache; `meta.signalCount` is the total cached signal count before the top-3 slice.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "recent_whales",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"meta": {
"description": "Response freshness metadata. 10-min cache; check `meta.cacheAgeSeconds` for exact age.",
"properties": {
"cacheAgeSeconds": {
"description": "Seconds since the whale-signals cache was last refreshed.",
"type": "integer"
},
"chainCount": {
"description": "Number of unique chains in the current cache.",
"type": "integer"
},
"signalCount": {
"description": "Total cached whale signals (before top-3 slice).",
"type": "integer"
},
"updatedAt": {
"description": "ISO timestamp of the underlying whale-signals cache.",
"format": "date-time",
"type": "string"
}
},
"type": "object"
},
"whales": {
"items": {
"properties": {
"amountUsd": {
"type": "number"
},
"chain": {
"type": "string"
},
"direction": {
"type": "string"
},
"explorerUrl": {
"format": "uri",
"type": "string"
},
"token": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
}
},
"type": "object"
}
},
{
"description": "Weekly reports index — titles, summaries and dates (public, MCP-compatible) — Returns a public index of the last 12 weekly Alpha reports: title, a short plain-text summary (≤300 characters), the publish date, and the week covered. Full report content (HTML in 5 languages) remains Pro-only on GET /api/content/weekly-reports. AI agents can use this endpoint to inform users about recent report topics and dates without any authentication. Response: { reports[], total, updatedAt }. Each report: id (string), title (string), summary (string, ≤300 chars), publishedAt (ISO-8601), weekOf (YYYY-MM-DD). No authentication required. Cached 1 hour (reports are generated weekly). 60 requests/min rate limit.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "reports_index",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"reports": {
"description": "Weekly report metadata in reverse-chronological order (newest first). Maximum 12 entries.",
"items": {
"properties": {
"id": {
"description": "Unique report ID, e.g. 'report-2026-W25'",
"type": "string"
},
"publishedAt": {
"description": "When the report was generated (ISO-8601).",
"format": "date-time",
"type": "string"
},
"summary": {
"description": "Plain-text summary extracted from the English report, truncated to 300 characters.",
"type": "string"
},
"title": {
"description": "English report title, e.g. 'Weekly Alpha Report — BTC breakout & ETH accumulation signals'",
"type": "string"
},
"weekOf": {
"description": "Start date of the covered week (YYYY-MM-DD), e.g. '2026-06-16'.",
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"total": {
"description": "Number of reports returned (≤12).",
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Social sentiment history (daily snapshots) — Returns the daily historical social-sentiment score for a single token over the last N days (default 30, max 180). Data is sourced from CryptoWhaleInsights' own in-house Social Sentiment engine (Stocktwits + CoinGecko + price-momentum — no Twitter API). Each day is recorded once per day from the live 5-min sentiment cycle. Cold-start days with no data are omitted. Use ?symbol=BTC&days=30 (symbol is required; days is optional 1–180). Supported symbols: BTC, ETH, SOL, BNB, XRP, ADA, DOGE, AVAX, MATIC, DOT, LINK, UNI, ATOM, ARB, OP, SUI, SEI, NEAR, APT, PEPE, WIF, BONK, FET, RENDER, TAO, AAVE, MKR, LDO, INJ, TON, STX, TIA, PYTH, BLUR, MINA, and more. Score is 0–100 (≥60 bullish, ≤40 bearish). Cached 5min. — Use this for daily historical data; use the corresponding live snapshot tool for current conditions and the monthly tool for long-term trends.",
"inputSchema": {
"properties": {
"days": {
"default": 30,
"description": "Number of recent days to return (1–180, default 30).",
"maximum": 90,
"minimum": 1,
"type": "integer"
},
"symbol": {
"description": "Token symbol to look up (e.g. BTC, ETH, SOL). Case-insensitive.",
"type": "string"
}
},
"required": [
"symbol"
],
"type": "object"
},
"name": "sentiment_history",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"days": {
"type": "number"
},
"history": {
"items": {
"properties": {
"date": {
"description": "Snapshot date (YYYY-MM-DD, UTC).",
"format": "date",
"type": "string"
},
"score": {
"description": "Sentiment score 0–100 (≥60 bullish, ≤40 bearish).",
"type": "integer"
},
"sentiment": {
"enum": [
"bullish",
"bearish",
"neutral"
],
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"symbol": {
"type": "string"
},
"total": {
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Social sentiment permanent monthly archive — Returns the permanent monthly archive of social sentiment per token — one row per token per calendar month, aggregated from daily snapshots before purge. Never deleted; covers 35 tracked tokens. Optional ?symbol=BTC to filter by token. Each row includes: month, symbol, avgScore (0–100), dominantSentiment (bullish/neutral/bearish), daysInMonth. Months with fewer than 20 daily records are excluded. No authentication required. 60 req/min. 5-min cache. — Use this for long-term monthly archive data; use the corresponding live or daily-history tool for current or finer-grained data.",
"inputSchema": {
"properties": {
"symbol": {
"description": "Token symbol to filter by (e.g. BTC, ETH). Omit to return all 35 tokens.",
"type": "string"
}
},
"type": "object"
},
"name": "sentiment_monthly",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"dataSource": {
"type": "string"
},
"months": {
"items": {
"properties": {
"avgScore": {
"type": "number"
},
"daysInMonth": {
"type": "integer"
},
"dominantSentiment": {
"type": "string"
},
"month": {
"format": "date",
"type": "string"
},
"symbol": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"symbol": {
"nullable": true,
"type": "string"
},
"total": {
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Analyst signal performance permanent monthly archive — Returns the permanent monthly archive of analyst signal performance — one row per analyst per calendar month, aggregated from signal_history before months age out. Never deleted; covers all 10 CryptoWhaleInsights analysts (chain_hawk, whale_watch, alpha_scout, defi_pulse, quant_edge, rate_hawk, flow_tracer, unlock_guard, sentiment_edge, narrative_pulse). Optional ?analystId=chain_hawk to filter by a single analyst. Each row includes: month, analystId, totalSignals, winCount, lossCount, neutralCount, winRate (0–1 fraction), avgReturn (%, wins only), topSignalType, daysInMonth. Months with fewer than 5 signals are excluded. No authentication required. 60 req/min. 5-min cache. — Use this for long-term monthly archive data; use the corresponding live or daily-history tool for current or finer-grained data.",
"inputSchema": {
"properties": {
"analystId": {
"description": "Analyst ID to filter by (e.g. chain_hawk, whale_watch, alpha_scout, defi_pulse, quant_edge, rate_hawk, flow_tracer, unlock_guard, sentiment_edge, narrative_pulse). Omit for all analysts.",
"type": "string"
}
},
"type": "object"
},
"name": "signal_history_monthly",
"outputSchema": {
"properties": {
"analystId": {
"nullable": true,
"type": "string"
},
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"dataSource": {
"type": "string"
},
"months": {
"items": {
"properties": {
"analystId": {
"type": "string"
},
"avgReturn": {
"description": "Average return % on winning signals.",
"type": "number"
},
"daysInMonth": {
"type": "integer"
},
"lossCount": {
"type": "integer"
},
"month": {
"format": "date",
"type": "string"
},
"neutralCount": {
"type": "integer"
},
"topSignalType": {
"type": "string"
},
"totalSignals": {
"type": "integer"
},
"winCount": {
"type": "integer"
},
"winRate": {
"description": "Win rate as a fraction 0–1 (multiply by 100 for %).",
"type": "number"
}
},
"type": "object"
},
"type": "array"
},
"total": {
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Get aggregate market mood — overall sentiment score/label + top 5 tokens (no auth; use sentiment_history for per-token time-series) — Non-gated social sentiment summary: the aggregate market-mood score/label plus the top 5 tokens by sentiment (AI insight text excluded). Served from cache (no per-request AI cost). Full per-token AI insights require a Max Alpha subscription. Cached ~5min.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "social_summary",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"market": {
"properties": {
"bearishCount": {
"type": "number"
},
"bullishCount": {
"type": "number"
},
"label": {
"type": "string"
},
"neutralCount": {
"type": "number"
},
"score": {
"type": "number"
},
"topMentioned": {
"items": {
"type": "string"
},
"type": "array"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
},
"requiredTierForFull": {
"type": "string"
},
"tokens": {
"items": {
"properties": {
"name": {
"type": "string"
},
"overallScore": {
"type": "number"
},
"priceChange24h": {
"type": "number"
},
"sentiment": {
"type": "string"
},
"symbol": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"total": {
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Get current stablecoin supply & 24h net flows — USDT, USDC, DAI from DefiLlama (use stablecoin_history for daily time-series) — Current stablecoin circulating supply plus 24h net change (positive = expansion/inflow, negative = contraction/outflow) for USDT, USDC, DAI, and other major stablecoins, sourced from DefiLlama stablecoins.llama.fi. Use this endpoint for the current snapshot; use /api/public/stablecoin-history for daily time-series data (up to 180 days); use /api/public/stablecoin-monthly for long-term monthly trends. Cached ~30min.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "stablecoin_flows",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"stables": {
"items": {
"properties": {
"change24h": {
"type": "number"
},
"circulating": {
"type": "number"
},
"name": {
"type": "string"
},
"symbol": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Get daily historical stablecoin supply changes — net inflow/outflow per day over up to 180 days (use stablecoin_flows for the current snapshot) — Returns the daily historical stablecoin net-flow and total supply over the last N days (default 30, max 180). Each day is recorded once from the live DefiLlama stablecoin cycle. Cold-start days with no data are omitted. totalFlow24h is the net USD change in stablecoin supply that day (positive = expansion / inflow, negative = contraction / outflow). totalNow is the aggregate stablecoin market cap in USD at snapshot time. signal is bullish | bearish | neutral based on the 7-day net flow. Use ?days=30 to control the window. Cached 5min. — Use this for daily historical data; use the corresponding live snapshot tool for current conditions and the monthly tool for long-term trends.",
"inputSchema": {
"properties": {
"days": {
"default": 30,
"description": "Number of recent days to return (1–180, default 30).",
"maximum": 90,
"minimum": 1,
"type": "integer"
}
},
"type": "object"
},
"name": "stablecoin_history",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"days": {
"type": "number"
},
"history": {
"items": {
"properties": {
"date": {
"description": "Snapshot date (YYYY-MM-DD, UTC).",
"format": "date",
"type": "string"
},
"signal": {
"enum": [
"bullish",
"bearish",
"neutral"
],
"type": "string"
},
"totalFlow24h": {
"description": "Net USD change in stablecoin supply for that day. Positive = expansion.",
"type": "number"
},
"totalNow": {
"description": "Aggregate stablecoin market cap in USD at snapshot time.",
"type": "number"
}
},
"type": "object"
},
"type": "array"
},
"total": {
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Stablecoin flow permanent monthly archive — Returns the permanent monthly archive of stablecoin flow data — one row per calendar month, aggregated from daily snapshots before purge. Never deleted; provides AI agents with long-term macro liquidity context. Each month includes: totalNetFlow (sum of daily 24h flows), avgTotalSupply, dominantSignal (bullish/neutral/bearish), bullishDays, bearishDays, neutralDays, daysInMonth. No authentication required. 60 req/min. 5-min cache. — Use this for long-term monthly archive data; use the corresponding live or daily-history tool for current or finer-grained data.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "stablecoin_monthly",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"dataSource": {
"type": "string"
},
"months": {
"items": {
"properties": {
"avgTotalSupply": {
"type": "number"
},
"bearishDays": {
"type": "integer"
},
"bullishDays": {
"type": "integer"
},
"daysInMonth": {
"type": "integer"
},
"dominantSignal": {
"type": "string"
},
"month": {
"format": "date",
"type": "string"
},
"neutralDays": {
"type": "integer"
},
"totalNetFlow": {
"type": "number"
}
},
"type": "object"
},
"type": "array"
},
"total": {
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Check live API & system health — operational/degraded verdict, per-source freshness, MCP tool count — Public health status of all CryptoWhaleInsights data sources, MCP server, and OpenAPI spec. Returns overall verdict (operational/degraded/outage), per-source health with age in seconds, recent 24-hour error count, MCP tool count, and OpenAPI path count. Useful for AI agents and developers to verify the platform is live before making requests. Cached ~30s.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "status",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"checkedAt": {
"format": "date-time",
"type": "string"
},
"errorCount24h": {
"type": "number"
},
"freshness": {
"description": "Per-endpoint cache freshness data. Each entry describes how stale a cached API response is, so AI agents can decide whether to trust the data without making an extra request.",
"items": {
"properties": {
"cacheAgeSeconds": {
"description": "How many seconds have elapsed since the cache was last populated. Null when the cache has never been populated (cold start).",
"nullable": true,
"type": "number"
},
"cacheIntervalSeconds": {
"description": "How often this endpoint's data is refreshed, in seconds.",
"type": "number"
},
"endpoint": {
"description": "The API path this freshness entry applies to (e.g. '/api/public/platform-stats').",
"type": "string"
},
"label": {
"description": "Human-readable name for the endpoint (e.g. 'Platform Stats').",
"type": "string"
},
"status": {
"description": "'fresh' = within the normal refresh window; 'stale' = older than the expected interval; 'cold' = cache has never been populated.",
"enum": [
"fresh",
"stale",
"cold"
],
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"mcpToolCount": {
"type": "number"
},
"openApiPaths": {
"type": "number"
},
"overall": {
"enum": [
"operational",
"degraded",
"outage"
],
"type": "string"
},
"sources": {
"items": {
"properties": {
"ageSeconds": {
"nullable": true,
"type": "number"
},
"lastSuccess": {
"format": "date-time",
"nullable": true,
"type": "string"
},
"name": {
"type": "string"
},
"status": {
"enum": [
"healthy",
"stale",
"failing",
"unknown"
],
"type": "string"
}
},
"type": "object"
},
"type": "array"
}
},
"type": "object"
}
},
{
"description": "Get crypto capital-gains tax rate brackets by jurisdiction — US, UK, DE, AU, CA, IN, AE, SG (educational reference) — Reference crypto tax-rate brackets across supported jurisdictions (US, UK, DE, AU, CA, IN, AE, SG, OTHER) for the tax calculator. Educational only — not tax advice. Cached ~1hr.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "tax_rates",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"rates": {
"type": "object"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Get currently trending crypto tokens — top gainers by 24h volume from DexScreener + CoinGecko merged (5-min cache) — Currently trending tokens sourced from DexScreener + CoinGecko top-50, merged and ranked by 24h volume. 5-min cache; check `meta.cacheAgeSeconds` for exact age. `meta.tokenCount` reflects the number of tokens in the current response.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "trending",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"meta": {
"description": "Response freshness metadata. 5-min cache; check `meta.cacheAgeSeconds` for exact age.",
"properties": {
"cacheAgeSeconds": {
"description": "Seconds since the cache was last refreshed.",
"type": "integer"
},
"tokenCount": {
"description": "Number of tokens in this response.",
"type": "integer"
},
"updatedAt": {
"description": "ISO timestamp when this cache entry was populated.",
"format": "date-time",
"type": "string"
}
},
"type": "object"
},
"tokens": {
"items": {
"properties": {
"name": {
"type": "string"
},
"priceChange24h": {
"type": "number"
},
"priceUsd": {
"type": "number"
},
"symbol": {
"type": "string"
},
"volume24h": {
"type": "number"
}
},
"type": "object"
},
"type": "array"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Get whale activity aggregated by chain and direction — movement COUNTS by day over 1-30 days (not individual transfers; use whale_movements for individual records with amounts) — Aggregated, bounded time-series of recorded whale movements across all 14 supported chains, sourced from our internal signal-history archive. Returns honest movement COUNTS grouped by chain, by money-flow direction (inflow/outflow/transfer/unknown), and by day over a recent window — no per-transaction detail, wallet addresses or explorer links (those stay subscriber-gated at /api/whale-history). Use ?window=N to set the look-back in days (1–30, default 7). Counts only; no USD volume is reported because the archive carries no structured per-move USD figure. Served from cache (no per-request cost). Cached ~5min. — Use this for the current aggregated whale-activity snapshot; use whale_movements for individual transfers or whale_daily_summary for stored daily totals.",
"inputSchema": {
"properties": {
"window": {
"default": 7,
"description": "Look-back window in days (1–30, default 7). Values outside the range are clamped.",
"maximum": 30,
"minimum": 1,
"type": "integer"
}
},
"type": "object"
},
"name": "whale_activity",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"byChain": {
"items": {
"properties": {
"chain": {
"type": "string"
},
"count": {
"type": "number"
},
"inflow": {
"type": "number"
},
"outflow": {
"type": "number"
},
"transfer": {
"type": "number"
},
"unknown": {
"type": "number"
}
},
"type": "object"
},
"type": "array"
},
"byDay": {
"items": {
"properties": {
"count": {
"type": "number"
},
"date": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"byDirection": {
"properties": {
"inflow": {
"type": "number"
},
"outflow": {
"type": "number"
},
"transfer": {
"type": "number"
},
"unknown": {
"type": "number"
}
},
"type": "object"
},
"dataSource": {
"type": "string"
},
"firstSeenAt": {
"format": "date-time",
"nullable": true,
"type": "string"
},
"lastSeenAt": {
"format": "date-time",
"nullable": true,
"type": "string"
},
"total": {
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
},
"windowDays": {
"type": "number"
}
},
"type": "object"
}
},
{
"description": "Get daily whale movement counts from the DB — per-chain inflow/outflow totals over N days (use for trend analysis, not individual transfers) — Returns daily aggregated whale movement counts over the last N days (default 30, max 180). Each row covers one UTC day and includes: total_moves (total whale signals recorded), total_usd_value (estimated USD volume from on-chain whale transactions), inflow_count (accumulation / buy-side moves), outflow_count (distribution / sell-side moves), and chains_breakdown (object mapping each chain to its move count for that day). Data is written once per 5-minute cron cycle via an upsert, so today's row is always current. Rows older than 365 days are automatically purged. Use ?days=30 to control the look-back window (1–180). Cached 5min. Answers questions like: 'How many whale moves happened in June?' or 'Which network was most active this week?' — Use this for stored daily whale totals; use whale_activity for the current snapshot or whale_movements for individual transfers.",
"inputSchema": {
"properties": {
"days": {
"default": 30,
"description": "Number of recent days to return (1–180, default 30).",
"maximum": 90,
"minimum": 1,
"type": "integer"
}
},
"type": "object"
},
"name": "whale_daily_summary",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"days": {
"type": "number"
},
"history": {
"items": {
"properties": {
"chainsBreakdown": {
"additionalProperties": {
"type": "integer"
},
"description": "Object mapping chain name to move count for this day, e.g. { 'ETH': 12, 'BTC': 5, 'SOL': 8 }.",
"type": "object"
},
"date": {
"description": "Snapshot date (YYYY-MM-DD, UTC).",
"format": "date",
"type": "string"
},
"inflowCount": {
"description": "Number of inflow (accumulation/buy-side) whale moves.",
"type": "integer"
},
"outflowCount": {
"description": "Number of outflow (distribution/sell-side) whale moves.",
"type": "integer"
},
"totalMoves": {
"description": "Total whale move signals recorded on this day.",
"type": "integer"
},
"totalUsdValue": {
"description": "Estimated total USD value of whale transactions on this day.",
"type": "number"
}
},
"type": "object"
},
"type": "array"
},
"total": {
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Whale movements permanent monthly archive — Returns the permanent monthly archive of whale movement activity — one row per calendar month, aggregated from daily whale summaries before they are purged. This archive is never deleted and grows indefinitely, enabling AI agents to answer historical questions like 'in which month were whale movements highest?' across years of data. Each month includes: totalMoves (total whale signals), totalUsdValue (cumulative USD value), inflowCount/outflowCount (directional breakdown), daysInMonth, avgMovesPerDay. Months with fewer than 20 daily records are excluded. Data source: CryptoWhaleInsights own signal_history database (80+ wallets, 14 chains). No authentication required. 60 req/min. 5-min cache.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "whale_monthly_archive",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"dataSource": {
"type": "string"
},
"months": {
"items": {
"properties": {
"avgMovesPerDay": {
"type": "number"
},
"daysInMonth": {
"type": "integer"
},
"inflowCount": {
"type": "integer"
},
"month": {
"description": "First day of the month (YYYY-MM-01, UTC).",
"format": "date",
"type": "string"
},
"outflowCount": {
"type": "integer"
},
"totalMoves": {
"type": "integer"
},
"totalUsdValue": {
"type": "number"
}
},
"type": "object"
},
"type": "array"
},
"total": {
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Public whale movements archive — paginated 1-year history (no auth, MCP-compatible) — Returns a paginated archive of large whale on-chain movements recorded in the CryptoWhaleInsights signal-history database, covering up to 1 year (365 days). This is the public, unauthenticated counterpart to the authenticated /api/whale-history endpoint: it omits the explorerUrl field (Pro-only). AI agents can use this to analyse historical on-chain flow direction (inflow/outflow/transfer) across 14 chains without any credentials. Supported chains (chain filter values): BTC, ETH, SOL, BSC, BASE, ARB, POLYGON, TON, SUI, HYPE, TRX, SEI, INJ, APT. Supported directions (direction filter values): inflow, outflow, transfer. Keyword search: use ?q= to filter by token name, signal summary, or wallet label (case-insensitive, max 100 chars). Example: ?q=USDT returns only moves mentioning USDT; ?q=ETH+Whale+%237 returns moves by that wallet label. USD filter: use ?minUsd= to only return movements at or above that real USD value, e.g. ?",
"inputSchema": {
"properties": {
"chain": {
"description": "Filter by chain. Valid values: BTC, ETH, SOL, BSC, BASE, ARB, POLYGON, TON, SUI, HYPE, TRX, SEI, INJ, APT. Default: all chains.",
"enum": [
"BTC",
"ETH",
"SOL",
"BSC",
"BASE",
"ARB",
"POLYGON",
"TON",
"SUI",
"HYPE",
"TRX",
"SEI",
"INJ",
"APT"
],
"type": "string"
},
"direction": {
"description": "Filter by flow direction: inflow | outflow | transfer. Default: all directions.",
"enum": [
"inflow",
"outflow",
"transfer"
],
"type": "string"
},
"page": {
"default": 1,
"description": "Page number (1-indexed, default 1).",
"minimum": 1,
"type": "integer"
},
"period": {
"default": "90d",
"description": "Time window: 7d | 30d | 90d | 365d (default 90d). Use 365d to retrieve up to 1 year of history.",
"enum": [
"7d",
"30d",
"90d",
"365d"
],
"type": "string"
},
"q": {
"description": "Keyword search (case-insensitive, max 100 chars). Matches against token name, signal summary, or wallet label. Example: q=USDT returns moves mentioning USDT; q=ETH+Whale+%237 returns moves by that wallet label.",
"maxLength": 100,
"type": "string"
}
},
"type": "object"
},
"name": "whale_movements",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"dataSource": {
"type": "string"
},
"hasMore": {
"description": "Whether more pages are available",
"type": "boolean"
},
"items": {
"description": "Whale movement records in reverse-chronological order.",
"items": {
"properties": {
"amount": {
"description": "Transfer amount in native token units, e.g. '1200 ETH'. Parsed from signal summary; null if not available.",
"nullable": true,
"type": "string"
},
"chain": {
"description": "Chain identifier, e.g. 'ETH', 'BTC', 'SOL'. Convenience alias for tokens[0].",
"nullable": true,
"type": "string"
},
"createdAt": {
"format": "date-time",
"type": "string"
},
"direction": {
"description": "'inflow' | 'outflow' | 'transfer' | null (unknown)",
"nullable": true,
"type": "string"
},
"id": {
"description": "Unique signal row ID",
"type": "number"
},
"outcome": {
"description": "'win' | 'loss' | 'neutral' | null",
"nullable": true,
"type": "string"
},
"returnPct": {
"description": "Return in pct-points if resolved; null otherwise.",
"nullable": true,
"type": "number"
},
"timestamp": {
"description": "ISO-8601 timestamp when the movement was recorded. Alias for createdAt.",
"format": "date-time",
"type": "string"
},
"tokens": {
"description": "Chain identifier in tokens[0], e.g. ['ETH']",
"items": {
"type": "string"
},
"type": "array"
},
"typeLabel": {
"description": "Always 'Whale Move' for this endpoint",
"type": "string"
},
"usdValue": {
"description": "Real USD value of the transfer, e.g. '$2.15M', computed from the resolved token price at signal time. Null if no price was resolvable.",
"nullable": true,
"type": "string"
},
"walletLabel": {
"description": "Human-readable wallet label, e.g. 'ETH Whale #3'",
"nullable": true,
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"page": {
"description": "Current page (1-indexed)",
"type": "number"
},
"pageSize": {
"description": "Fixed at 20 records per page",
"type": "number"
},
"sinceDays": {
"description": "Number of days of history returned",
"type": "number"
},
"total": {
"description": "Total matching records in the window",
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
},
{
"description": "Whale movements summary — aggregated stats rollup (no auth, MCP-compatible) — Returns an aggregated statistics rollup of whale on-chain movements over a period, so AI agents don't have to page through raw /api/public/whale-movements rows to compute totals themselves. Breaks down movement counts and REAL USD totals (from the same usd_value column as /api/public/whale-movements) by chain and by flow direction (inflow/outflow/transfer). USD totals only ever include rows with a resolvable price — `unresolvedUsdCount` reports how many movements in the window had no resolvable USD value, so totals are never silently inflated or fabricated. period filter: 7d | 30d | 90d (default 7d — a shorter default than the raw archive's 90d, since a rollup is most useful over a recent window). Response: { sinceDays, movementCount, movementsWithResolvedUsd, unresolvedUsdCount, totalUsd, byDirection, usdByDirection, topChainsByUsd[], firstSeenAt, lastSeenAt, dataSource, updatedAt }. No authentication required. 60 requests/min rate",
"inputSchema": {
"properties": {
"period": {
"default": "7d",
"description": "Time window: 7d | 30d | 90d (default 7d).",
"enum": [
"7d",
"30d",
"90d"
],
"type": "string"
}
},
"type": "object"
},
"name": "whale_movements_summary",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"byDirection": {
"description": "Movement counts by flow direction.",
"properties": {
"inflow": {
"type": "number"
},
"outflow": {
"type": "number"
},
"transfer": {
"type": "number"
},
"unknown": {
"type": "number"
}
},
"type": "object"
},
"dataSource": {
"type": "string"
},
"firstSeenAt": {
"format": "date-time",
"nullable": true,
"type": "string"
},
"lastSeenAt": {
"format": "date-time",
"nullable": true,
"type": "string"
},
"movementCount": {
"description": "Total whale movements recorded in the window.",
"type": "number"
},
"movementsWithResolvedUsd": {
"description": "Subset of movementCount that had a resolvable USD value.",
"type": "number"
},
"sinceDays": {
"description": "Number of days covered by this summary.",
"type": "number"
},
"topChainsByUsd": {
"description": "Up to 10 chains ranked by total resolved USD volume in the window.",
"items": {
"properties": {
"chain": {
"type": "string"
},
"inflow": {
"type": "number"
},
"movementCount": {
"type": "number"
},
"outflow": {
"type": "number"
},
"totalUsd": {
"type": "number"
},
"transfer": {
"type": "number"
}
},
"type": "object"
},
"type": "array"
},
"totalUsd": {
"description": "Sum of usd_value across all resolved movements in the window (whole dollars).",
"type": "number"
},
"unresolvedUsdCount": {
"description": "Movements with no resolvable USD value — excluded from every USD sum below.",
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
},
"usdByDirection": {
"description": "Real USD totals by flow direction (resolved rows only).",
"properties": {
"inflow": {
"type": "number"
},
"outflow": {
"type": "number"
},
"transfer": {
"type": "number"
}
},
"type": "object"
}
},
"type": "object"
}
},
{
"description": "Get daily whale score history — top tracked whale wallets ranked by composite score (win rate + avg return) over up to 90 days — Daily historical composite scores for tracked whale wallets. One row per wallet per day: wallet address, chain, label, composite score (0-100), win rate, average return %, and sample count. Only wallets with ≥5 resolved signals receive a score (honest, never fabricated). Filter by ?chain= for a single chain. Useful for tracking smart-money wallet performance trends. DB-backed, 5-min cache. Powered by whale_score_daily table (365d retention, permanent monthly archive). — Use this for daily historical data; use the corresponding live snapshot tool for current conditions and the monthly tool for long-term trends.",
"inputSchema": {
"properties": {
"chain": {
"description": "Optional chain filter (ETH, BTC, SOL, BSC, ARB, etc.). Returns all chains when omitted.",
"type": "string"
},
"days": {
"default": 30,
"description": "Number of days of history to return (1–90, default 30).",
"maximum": 90,
"minimum": 1,
"type": "integer"
}
},
"type": "object"
},
"name": "whale_score_history",
"outputSchema": {
"properties": {
"attribution": {
"$ref": "#/components/schemas/Attribution"
},
"chain": {
"description": "Chain filter applied (null = all chains).",
"nullable": true,
"type": "string"
},
"days": {
"type": "number"
},
"history": {
"items": {
"properties": {
"avgReturn": {
"description": "Average return % across resolved signals. Null when < 5 samples.",
"nullable": true,
"type": "number"
},
"chain": {
"description": "Blockchain chain (ETH, BTC, SOL, BSC, etc.).",
"nullable": true,
"type": "string"
},
"date": {
"description": "YYYY-MM-DD snapshot date.",
"format": "date",
"type": "string"
},
"sampleCount": {
"description": "Number of resolved signals used for score calculation.",
"type": "integer"
},
"score": {
"description": "Composite whale score (0-100, requires ≥5 resolved signals).",
"maximum": 100,
"minimum": 0,
"type": "number"
},
"walletAddress": {
"description": "Blockchain wallet address.",
"type": "string"
},
"walletLabel": {
"description": "Human-readable wallet label.",
"nullable": true,
"type": "string"
},
"winRate": {
"description": "Win rate as a fraction (0.71 = 71%). Null when < 5 samples.",
"maximum": 1,
"minimum": 0,
"nullable": true,
"type": "number"
}
},
"type": "object"
},
"type": "array"
},
"total": {
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:4d0efc17fc0fb9ddec81324be1138e880a5dc20275ae68921fb1c30721e63273 | sha256sum