Koskamo

CryptoWhaleInsights MCP

A free, read-only MCP server providing real-time cryptocurrency whale tracking and market intelligence across 14 blockchains. It exposes tools for monitoring whale wallet movements, platform statistics, trending tokens, gas fees, funding rates, and historical on-chain signals without requiring authentication.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

CryptoWhaleInsights MCP logo, by CryptoWhaleInsightsVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-06Operated by CryptoWhaleInsights
MCP endpoint (Streamable HTTP)
https://cryptowhaleinsights.com/mcp
Vendor documentation

What its tools do

56 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

56 of 56 have a description · 56 of 56 declare behavior hints · 26 of 26 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to cryptowhaleinsights.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Monitor real-time whale wallet movements across 14 blockchains
  • Retrieve platform statistics and trending token data
  • Access historical whale activity and on-chain signal performance
  • Query gas fees, funding rates, and stablecoin flow data

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
cryptowhaleinsights 1.0.0
MCP protocol negotiated in check
2024-11-05
Tools
56 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

CryptoWhaleInsights MCP server — free, read-only crypto whale tracking & market intelligence. 56 tools organized by data type: • CURRENT SNAPSHOTS: platform_stats, status, fear_greed, funding_rates, stablecoin_flows, gas, liquidations, social_summary, whale_activity, narratives, burn_tracker, bridge_flows • LIVE LISTS: trending, airdrops, recent_whales (individual transfers with USD amounts), golden_alerts_snapshot, reports_index • 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) • 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) • 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 • MONTHLY ARCHIVE (permanent, 2+ years): fear_greed_monthly, stablecoin_monthly, funding_rate_monthly, golden_alerts_monthly, whale_monthly_archive, arbitrage_monthly • COMBINED: market_context (8 sources in one call for a given date) All 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

56 advertised

platform_stats
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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).

platform_stats input schema
{
  "type": "object",
  "properties": {}
}
platform_stats output schema
{
  "type": "object",
  "properties": {
    "live": {
      "type": "object"
    },
    "meta": {
      "type": "object",
      "properties": {
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "ISO timestamp of when the response was generated."
        }
      },
      "description": "Response freshness metadata."
    },
    "chains": {
      "type": "number"
    },
    "chainList": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "freeTools": {
      "type": "number"
    },
    "languages": {
      "type": "number"
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    },
    "dataSources": {
      "type": "number"
    },
    "performance": {
      "type": "object",
      "properties": {
        "wins": {
          "type": "number",
          "description": "Number of winning resolved signals."
        },
        "losses": {
          "type": "number",
          "description": "Number of losing resolved signals."
        },
        "winRate": {
          "type": "number",
          "description": "Percentage of resolved signals that were profitable (0–100)."
        },
        "avgReturn": {
          "type": "number",
          "description": "Average return across all resolved signals (%)."
        },
        "dataStartedAt": {
          "type": "string",
          "format": "date-time",
          "nullable": true,
          "description": "ISO timestamp of the oldest resolved signal."
        },
        "totalResolved": {
          "type": "number",
          "description": "Total number of signals with a resolved outcome."
        },
        "avgBtcBenchmark": {
          "type": "number",
          "nullable": true,
          "description": "Average BTC price change over the same holding windows as the resolved signals (%). Null when not enough data."
        },
        "totalSignalCount": {
          "type": "number",
          "description": "All-time signal count (including unresolved)."
        }
      },
      "description": "Aggregate signal performance metrics."
    },
    "tokensTracked": {
      "type": "number"
    },
    "trackedWallets": {
      "type": "number"
    }
  }
}
platform_stats annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
status
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

status input schema
{
  "type": "object",
  "properties": {}
}
status output schema
{
  "type": "object",
  "properties": {
    "overall": {
      "enum": [
        "operational",
        "degraded",
        "outage"
      ],
      "type": "string"
    },
    "sources": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "status": {
            "enum": [
              "healthy",
              "stale",
              "failing",
              "unknown"
            ],
            "type": "string"
          },
          "ageSeconds": {
            "type": "number",
            "nullable": true
          },
          "lastSuccess": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      }
    },
    "checkedAt": {
      "type": "string",
      "format": "date-time"
    },
    "freshness": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "description": "Human-readable name for the endpoint (e.g. 'Platform Stats')."
          },
          "status": {
            "enum": [
              "fresh",
              "stale",
              "cold"
            ],
            "type": "string",
            "description": "'fresh' = within the normal refresh window; 'stale' = older than the expected interval; 'cold' = cache has never been populated."
          },
          "endpoint": {
            "type": "string",
            "description": "The API path this freshness entry applies to (e.g. '/api/public/platform-stats')."
          },
          "cacheAgeSeconds": {
            "type": "number",
            "nullable": true,
            "description": "How many seconds have elapsed since the cache was last populated. Null when the cache has never been populated (cold start)."
          },
          "cacheIntervalSeconds": {
            "type": "number",
            "description": "How often this endpoint's data is refreshed, in seconds."
          }
        }
      },
      "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."
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    },
    "mcpToolCount": {
      "type": "number"
    },
    "openApiPaths": {
      "type": "number"
    },
    "errorCount24h": {
      "type": "number"
    }
  }
}
status annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
live_stats
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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).

live_stats input schema
{
  "type": "object",
  "properties": {}
}
live_stats output schema
{
  "type": "object",
  "properties": {
    "meta": {
      "type": "object",
      "properties": {
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "ISO timestamp of the underlying whale-signals cache."
        },
        "cacheAgeSeconds": {
          "type": "integer",
          "description": "Seconds since the cache was last populated. 0 means just refreshed."
        }
      },
      "description": "Response freshness metadata. 10s cache; check `meta.cacheAgeSeconds` for exact age."
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    },
    "activeAlerts": {
      "type": "number"
    },
    "whaleMovesToday": {
      "type": "number"
    },
    "smartMoneyWallets": {
      "type": "number"
    }
  }
}
live_stats annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
recent_whales
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

recent_whales input schema
{
  "type": "object",
  "properties": {}
}
recent_whales output schema
{
  "type": "object",
  "properties": {
    "meta": {
      "type": "object",
      "properties": {
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "ISO timestamp of the underlying whale-signals cache."
        },
        "chainCount": {
          "type": "integer",
          "description": "Number of unique chains in the current cache."
        },
        "signalCount": {
          "type": "integer",
          "description": "Total cached whale signals (before top-3 slice)."
        },
        "cacheAgeSeconds": {
          "type": "integer",
          "description": "Seconds since the whale-signals cache was last refreshed."
        }
      },
      "description": "Response freshness metadata. 10-min cache; check `meta.cacheAgeSeconds` for exact age."
    },
    "whales": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "chain": {
            "type": "string"
          },
          "token": {
            "type": "string"
          },
          "amountUsd": {
            "type": "number"
          },
          "direction": {
            "type": "string"
          },
          "explorerUrl": {
            "type": "string",
            "format": "uri"
          }
        }
      }
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
recent_whales annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
trending
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

trending input schema
{
  "type": "object",
  "properties": {}
}
trending output schema
{
  "type": "object",
  "properties": {
    "meta": {
      "type": "object",
      "properties": {
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "ISO timestamp when this cache entry was populated."
        },
        "tokenCount": {
          "type": "integer",
          "description": "Number of tokens in this response."
        },
        "cacheAgeSeconds": {
          "type": "integer",
          "description": "Seconds since the cache was last refreshed."
        }
      },
      "description": "Response freshness metadata. 5-min cache; check `meta.cacheAgeSeconds` for exact age."
    },
    "tokens": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "symbol": {
            "type": "string"
          },
          "priceUsd": {
            "type": "number"
          },
          "volume24h": {
            "type": "number"
          },
          "priceChange24h": {
            "type": "number"
          }
        }
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
trending annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
gas
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

gas input schema
{
  "type": "object",
  "properties": {}
}
gas output schema
{
  "type": "object",
  "properties": {
    "meta": {
      "type": "object",
      "properties": {
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "ISO timestamp when this cache entry was populated."
        },
        "chainCount": {
          "type": "integer",
          "description": "Number of chains/networks in this response."
        },
        "cacheAgeSeconds": {
          "type": "integer",
          "description": "Seconds since the cache was last refreshed."
        }
      },
      "description": "Response freshness metadata. 30s cache; check `meta.cacheAgeSeconds` for exact age."
    },
    "networks": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "chain": {
            "type": "string"
          },
          "level": {
            "type": "string"
          },
          "standard": {
            "type": "object"
          }
        }
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
gas annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
funding_rates
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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).

funding_rates input schema
{
  "type": "object",
  "properties": {}
}
funding_rates output schema
{
  "type": "object",
  "properties": {
    "meta": {
      "type": "object",
      "properties": {
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "ISO timestamp when this cache entry was populated."
        },
        "exchangeCount": {
          "type": "integer",
          "description": "Number of exchanges that contributed data this cycle (Gate.io, MEXC, Kraken — max 3)."
        },
        "cacheAgeSeconds": {
          "type": "integer",
          "description": "Seconds since the cache was last refreshed."
        }
      },
      "description": "Response freshness metadata. 3-min cache; check `meta.cacheAgeSeconds` for exact age."
    },
    "tokens": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "avg": {
            "type": "number"
          },
          "mexc": {
            "type": "number"
          },
          "gateio": {
            "type": "number"
          },
          "kraken": {
            "type": "number"
          },
          "symbol": {
            "type": "string"
          },
          "sentiment": {
            "type": "string"
          }
        }
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
funding_rates annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
stablecoin_flows
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

stablecoin_flows input schema
{
  "type": "object",
  "properties": {}
}
stablecoin_flows output schema
{
  "type": "object",
  "properties": {
    "stables": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "symbol": {
            "type": "string"
          },
          "change24h": {
            "type": "number"
          },
          "circulating": {
            "type": "number"
          }
        }
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
stablecoin_flows annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
liquidations
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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).

liquidations input schema
{
  "type": "object",
  "properties": {}
}
liquidations output schema
{
  "type": "object",
  "properties": {
    "tokens": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "symbol": {
            "type": "string"
          },
          "longLiquidations": {
            "type": "number"
          },
          "shortLiquidations": {
            "type": "number"
          }
        }
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    },
    "binanceSources": {
      "type": "boolean"
    }
  }
}
liquidations annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
airdrops
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

airdrops input schema
{
  "type": "object",
  "properties": {}
}
airdrops output schema
{
  "type": "object",
  "properties": {
    "airdrops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "chain": {
            "type": "string"
          },
          "token": {
            "type": "string"
          },
          "status": {
            "type": "string"
          }
        }
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "dataSource": {
      "type": "string"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
airdrops annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
tax_rates
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

tax_rates input schema
{
  "type": "object",
  "properties": {}
}
tax_rates output schema
{
  "type": "object",
  "properties": {
    "rates": {
      "type": "object"
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
tax_rates annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
fear_greed
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

fear_greed input schema
{
  "type": "object",
  "properties": {}
}
fear_greed output schema
{
  "type": "object",
  "properties": {
    "label": {
      "type": "string"
    },
    "score": {
      "type": "number"
    },
    "factors": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "history": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string"
          },
          "score": {
            "type": "number"
          }
        }
      }
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
fear_greed annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
market_heatmap
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

market_heatmap input schema
{
  "type": "object",
  "properties": {}
}
market_heatmap output schema
{
  "type": "object",
  "properties": {
    "total": {
      "type": "number"
    },
    "chains": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "tokens": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "chain": {
            "type": "string"
          },
          "symbol": {
            "type": "string"
          },
          "priceUsd": {
            "type": "string"
          },
          "marketCap": {
            "type": "number"
          },
          "volume24h": {
            "type": "number"
          },
          "priceChange24h": {
            "type": "number"
          }
        }
      }
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    },
    "lastUpdated": {
      "type": "string",
      "format": "date-time"
    }
  }
}
market_heatmap annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
narratives
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

narratives input schema
{
  "type": "object",
  "properties": {}
}
narratives output schema
{
  "type": "object",
  "properties": {
    "total": {
      "type": "number"
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "dataSource": {
      "type": "string"
    },
    "narratives": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "tokens": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "change24h": {
            "type": "number"
          },
          "marketCap": {
            "type": "number"
          }
        }
      }
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    },
    "requiredTierForFull": {
      "type": "string"
    }
  }
}
narratives annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
bridge_flows
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

bridge_flows input schema
{
  "type": "object",
  "properties": {}
}
bridge_flows output schema
{
  "type": "object",
  "properties": {
    "flows": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "bridge": {
            "type": "string"
          },
          "amountUsd": {
            "type": "number"
          },
          "destChain": {
            "type": "string"
          },
          "direction": {
            "type": "string"
          },
          "explorerUrl": {
            "type": "string",
            "format": "uri"
          },
          "sourceChain": {
            "type": "string"
          },
          "tokenSymbol": {
            "type": "string"
          }
        }
      }
    },
    "total": {
      "type": "number"
    },
    "summaries": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "bridge": {
            "type": "string"
          },
          "totalVolume24h": {
            "type": "number"
          }
        }
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "dataSource": {
      "type": "string"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    },
    "requiredTierForFull": {
      "type": "string"
    }
  }
}
bridge_flows annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
burn_tracker
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

burn_tracker input schema
{
  "type": "object",
  "properties": {}
}
burn_tracker output schema
{
  "type": "object",
  "properties": {
    "total": {
      "type": "number"
    },
    "events": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "chain": {
            "type": "string"
          },
          "burnedAt": {
            "type": "string",
            "format": "date-time"
          },
          "explorerUrl": {
            "type": "string",
            "format": "uri"
          },
          "tokenSymbol": {
            "type": "string"
          },
          "burnAmountUsd": {
            "type": "number"
          },
          "burnPercentage": {
            "type": "number"
          }
        }
      }
    },
    "history": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string"
          },
          "eventCount": {
            "type": "number"
          },
          "totalBurnUsd": {
            "type": "number"
          }
        }
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "dataSource": {
      "type": "string"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    },
    "requiredTierForFull": {
      "type": "string"
    }
  }
}
burn_tracker annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
sentiment_history
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

sentiment_history input schema
{
  "type": "object",
  "required": [
    "symbol"
  ],
  "properties": {
    "days": {
      "type": "integer",
      "default": 30,
      "maximum": 90,
      "minimum": 1,
      "description": "Number of recent days to return (1–180, default 30)."
    },
    "symbol": {
      "type": "string",
      "description": "Token symbol to look up (e.g. BTC, ETH, SOL). Case-insensitive."
    }
  }
}
sentiment_history output schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "number"
    },
    "total": {
      "type": "number"
    },
    "symbol": {
      "type": "string"
    },
    "history": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date",
            "description": "Snapshot date (YYYY-MM-DD, UTC)."
          },
          "score": {
            "type": "integer",
            "description": "Sentiment score 0–100 (≥60 bullish, ≤40 bearish)."
          },
          "sentiment": {
            "enum": [
              "bullish",
              "bearish",
              "neutral"
            ],
            "type": "string"
          }
        }
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
sentiment_history annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
funding_rates_history
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

funding_rates_history input schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "integer",
      "default": 30,
      "maximum": 90,
      "minimum": 1,
      "description": "Number of recent days to return (1–180, default 30)."
    },
    "symbol": {
      "type": "string",
      "default": "BTC",
      "description": "Token symbol to look up (BTC, ETH, SOL, BNB, XRP, DOGE, ADA, AVAX, LINK, DOT). Case-insensitive. Defaults to BTC."
    }
  }
}
funding_rates_history output schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "number"
    },
    "total": {
      "type": "number"
    },
    "symbol": {
      "type": "string"
    },
    "history": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "avg": {
            "type": "number",
            "description": "Average across available exchanges."
          },
          "date": {
            "type": "string",
            "format": "date",
            "description": "Snapshot date (YYYY-MM-DD, UTC)."
          },
          "mexc": {
            "type": "number",
            "nullable": true,
            "description": "MEXC funding rate in %. Null when unavailable."
          },
          "gateio": {
            "type": "number",
            "nullable": true,
            "description": "Gate.io funding rate in % (e.g. 0.01 = 0.01% per 8h). Null when unavailable."
          },
          "kraken": {
            "type": "number",
            "nullable": true,
            "description": "Kraken funding rate in %. Null when unavailable."
          },
          "sentiment": {
            "enum": [
              "bullish",
              "bearish",
              "neutral"
            ],
            "type": "string",
            "description": "Market sentiment derived from avg: >0.05% bearish (top signal), <-0.01% bullish (bottom signal)."
          }
        }
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
funding_rates_history annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
whale_daily_summary
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

whale_daily_summary input schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "integer",
      "default": 30,
      "maximum": 90,
      "minimum": 1,
      "description": "Number of recent days to return (1–180, default 30)."
    }
  }
}
whale_daily_summary output schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "number"
    },
    "total": {
      "type": "number"
    },
    "history": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date",
            "description": "Snapshot date (YYYY-MM-DD, UTC)."
          },
          "totalMoves": {
            "type": "integer",
            "description": "Total whale move signals recorded on this day."
          },
          "inflowCount": {
            "type": "integer",
            "description": "Number of inflow (accumulation/buy-side) whale moves."
          },
          "outflowCount": {
            "type": "integer",
            "description": "Number of outflow (distribution/sell-side) whale moves."
          },
          "totalUsdValue": {
            "type": "number",
            "description": "Estimated total USD value of whale transactions on this day."
          },
          "chainsBreakdown": {
            "type": "object",
            "description": "Object mapping chain name to move count for this day, e.g. { 'ETH': 12, 'BTC': 5, 'SOL': 8 }.",
            "additionalProperties": {
              "type": "integer"
            }
          }
        }
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
whale_daily_summary annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
stablecoin_history
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

stablecoin_history input schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "integer",
      "default": 30,
      "maximum": 90,
      "minimum": 1,
      "description": "Number of recent days to return (1–180, default 30)."
    }
  }
}
stablecoin_history output schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "number"
    },
    "total": {
      "type": "number"
    },
    "history": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date",
            "description": "Snapshot date (YYYY-MM-DD, UTC)."
          },
          "signal": {
            "enum": [
              "bullish",
              "bearish",
              "neutral"
            ],
            "type": "string"
          },
          "totalNow": {
            "type": "number",
            "description": "Aggregate stablecoin market cap in USD at snapshot time."
          },
          "totalFlow24h": {
            "type": "number",
            "description": "Net USD change in stablecoin supply for that day. Positive = expansion."
          }
        }
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
stablecoin_history annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
social_summary
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

social_summary input schema
{
  "type": "object",
  "properties": {}
}
social_summary output schema
{
  "type": "object",
  "properties": {
    "total": {
      "type": "number"
    },
    "market": {
      "type": "object",
      "properties": {
        "label": {
          "type": "string"
        },
        "score": {
          "type": "number"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time"
        },
        "bearishCount": {
          "type": "number"
        },
        "bullishCount": {
          "type": "number"
        },
        "neutralCount": {
          "type": "number"
        },
        "topMentioned": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "tokens": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "symbol": {
            "type": "string"
          },
          "sentiment": {
            "type": "string"
          },
          "overallScore": {
            "type": "number"
          },
          "priceChange24h": {
            "type": "number"
          }
        }
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    },
    "requiredTierForFull": {
      "type": "string"
    }
  }
}
social_summary annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
whale_activity
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

whale_activity input schema
{
  "type": "object",
  "properties": {
    "window": {
      "type": "integer",
      "default": 7,
      "maximum": 30,
      "minimum": 1,
      "description": "Look-back window in days (1–30, default 7). Values outside the range are clamped."
    }
  }
}
whale_activity output schema
{
  "type": "object",
  "properties": {
    "byDay": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string"
          },
          "count": {
            "type": "number"
          }
        }
      }
    },
    "total": {
      "type": "number"
    },
    "byChain": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "chain": {
            "type": "string"
          },
          "count": {
            "type": "number"
          },
          "inflow": {
            "type": "number"
          },
          "outflow": {
            "type": "number"
          },
          "unknown": {
            "type": "number"
          },
          "transfer": {
            "type": "number"
          }
        }
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "dataSource": {
      "type": "string"
    },
    "lastSeenAt": {
      "type": "string",
      "format": "date-time",
      "nullable": true
    },
    "windowDays": {
      "type": "number"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    },
    "byDirection": {
      "type": "object",
      "properties": {
        "inflow": {
          "type": "number"
        },
        "outflow": {
          "type": "number"
        },
        "unknown": {
          "type": "number"
        },
        "transfer": {
          "type": "number"
        }
      }
    },
    "firstSeenAt": {
      "type": "string",
      "format": "date-time",
      "nullable": true
    }
  }
}
whale_activity annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
analysts
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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

analysts input schema
{
  "type": "object",
  "properties": {
    "analyst": {
      "enum": [
        "chain_hawk",
        "whale_watch",
        "alpha_scout",
        "defi_pulse",
        "quant_edge"
      ],
      "type": "string",
      "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."
    }
  }
}
analysts output schema
{
  "type": "object",
  "properties": {
    "analysts": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "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"
          },
          "bio": {
            "type": "string",
            "description": "Short description of the analyst's focus"
          },
          "icon": {
            "type": "string"
          },
          "name": {
            "type": "string",
            "description": "Display name, e.g. ChainHawk"
          },
          "color": {
            "type": "string"
          },
          "stats": {
            "type": "object",
            "properties": {
              "wins": {
                "type": "number"
              },
              "losses": {
                "type": "number"
              },
              "winRate": {
                "type": "number",
                "nullable": true,
                "description": "Fraction (0–1). Multiply by 100 for %. Null if < 5 resolved signals."
              },
              "avgReturn": {
                "type": "number",
                "nullable": true,
                "description": "Average return in percentage points (e.g. 12.3 = +12.3%). Null if < 5 resolved signals."
              },
              "lastSignalAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "totalSignals": {
                "type": "number",
                "description": "Total signals ever attributed to this analyst"
              },
              "resolvedSignals": {
                "type": "number",
                "description": "Signals with a win/loss outcome determined"
              }
            },
            "description": "Live performance stats computed from signalHistory DB. Null values mean < 5 resolved signals."
          },
          "alertTypes": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "Signal alert types routed to this analyst (whale_move, volume_breakout, accumulation, smart_money_loading, fear_buy, whale_convergence)"
            }
          },
          "specialization": {
            "type": "string",
            "description": "Domain covered, e.g. BTC & Macro On-Chain"
          }
        }
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
analysts annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
analysts_signals
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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

analysts_signals input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "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."
    }
  }
}
analysts_signals output schema
{
  "type": "object",
  "properties": {
    "tier": {
      "type": "string",
      "description": "Always 'free' for this public endpoint"
    },
    "results": {
      "type": "object",
      "description": "Present in multi-id mode. Keys are analyst slugs; values are arrays of signal objects.",
      "additionalProperties": {
        "type": "array",
        "items": {
          "type": "object"
        }
      }
    },
    "signals": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Unique signal row ID"
          },
          "tokens": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Symbols involved, e.g. ['BTC']"
          },
          "outcome": {
            "type": "string",
            "nullable": true,
            "description": "'win' | 'loss' | null if unresolved"
          },
          "analystId": {
            "type": "string",
            "description": "Analyst slug"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "returnPct": {
            "type": "number",
            "nullable": true,
            "description": "Pct-point return, e.g. 8.4 = +8.4%. Null if unresolved."
          },
          "typeLabel": {
            "type": "string",
            "description": "Human-readable signal type, e.g. 'Whale Move', 'Volume Breakout'"
          }
        }
      },
      "description": "Present in single-id mode. Array of signal objects for the requested analyst."
    },
    "analystId": {
      "type": "string",
      "description": "Echoed analyst slug (single-id mode only), e.g. chain_hawk"
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
analysts_signals annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
analysts_signals_all
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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

analysts_signals_all input schema
{
  "type": "object",
  "properties": {}
}
analysts_signals_all output schema
{
  "type": "object",
  "properties": {
    "tier": {
      "type": "string",
      "description": "Always 'free' for this public endpoint"
    },
    "results": {
      "type": "object",
      "properties": {
        "chain_hawk": {
          "type": "array",
          "items": {
            "type": "object"
          }
        },
        "defi_pulse": {
          "type": "array",
          "items": {
            "type": "object"
          }
        },
        "quant_edge": {
          "type": "array",
          "items": {
            "type": "object"
          }
        },
        "alpha_scout": {
          "type": "array",
          "items": {
            "type": "object"
          }
        },
        "whale_watch": {
          "type": "array",
          "items": {
            "type": "object"
          }
        }
      },
      "description": "Keys are analyst slugs (chain_hawk, whale_watch, alpha_scout, defi_pulse, quant_edge); values are arrays of signal objects."
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
analysts_signals_all annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
analysts_top
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

analysts_top input schema
{
  "type": "object",
  "properties": {}
}
analysts_top output schema
{
  "type": "object",
  "properties": {
    "analyst": {
      "type": "object",
      "nullable": true,
      "properties": {
        "id": {
          "type": "string"
        },
        "bio": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "winRate": {
          "type": "number",
          "description": "Fraction (0–1). Multiply by 100 for %."
        },
        "avgReturn": {
          "type": "number",
          "description": "Average return in percentage points."
        },
        "lastSignalAt": {
          "type": "string",
          "format": "date-time",
          "nullable": true
        },
        "totalSignals": {
          "type": "number"
        },
        "recentSignals": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "tokens": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "outcome": {
                "type": "string",
                "nullable": true
              },
              "createdAt": {
                "type": "string",
                "format": "date-time"
              },
              "returnPct": {
                "type": "number",
                "nullable": true
              },
              "typeLabel": {
                "type": "string"
              }
            },
            "description": "Last 3 signals attributed to this analyst (free 7-day window)"
          }
        },
        "specialization": {
          "type": "string"
        },
        "resolvedSignals": {
          "type": "number"
        }
      },
      "description": "The analyst with the highest win rate (min 5 resolved signals). Null if no analyst qualifies yet."
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
analysts_top annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
analyst_archive
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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)

analyst_archive input schema
{
  "type": "object",
  "required": [
    "analystId"
  ],
  "properties": {
    "page": {
      "type": "integer",
      "default": 1,
      "minimum": 1,
      "description": "Page number (1-indexed, default 1)."
    },
    "limit": {
      "type": "integer",
      "default": 100,
      "maximum": 100,
      "minimum": 10,
      "description": "Results per page (10–100, default 100)."
    },
    "period": {
      "enum": [
        "7d",
        "30d",
        "90d",
        "365d"
      ],
      "type": "string",
      "default": "90d",
      "description": "Time window: 7d | 30d | 90d | 365d (default 90d). Use 365d to access up to 1 year of history."
    },
    "outcome": {
      "enum": [
        "all",
        "win",
        "loss",
        "neutral",
        "pending"
      ],
      "type": "string",
      "default": "all",
      "description": "Filter by outcome: all | win | loss | neutral | pending (default all)."
    },
    "analystId": {
      "enum": [
        "chain_hawk",
        "whale_watch",
        "alpha_scout",
        "defi_pulse",
        "quant_edge",
        "rate_hawk",
        "flow_tracer",
        "unlock_guard",
        "sentiment_edge",
        "narrative_pulse"
      ],
      "type": "string",
      "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."
    }
  }
}
analyst_archive output schema
{
  "type": "object",
  "properties": {
    "page": {
      "type": "number",
      "description": "Current page number (1-indexed)"
    },
    "tier": {
      "type": "string",
      "description": "Always 'starter' (up to 365-day depth) for this public endpoint"
    },
    "pages": {
      "type": "number",
      "description": "Total number of pages"
    },
    "total": {
      "type": "number",
      "description": "Total number of matching signals in the window"
    },
    "signals": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Unique signal row ID"
          },
          "tokens": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Symbols involved, e.g. ['BTC']"
          },
          "outcome": {
            "type": "string",
            "nullable": true,
            "description": "'win' | 'loss' | 'neutral' | null (pending)"
          },
          "analystId": {
            "type": "string",
            "description": "Analyst slug"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "returnPct": {
            "type": "number",
            "nullable": true,
            "description": "Percentage-point return, e.g. 8.4 = +8.4%. Null if unresolved."
          },
          "typeLabel": {
            "type": "string",
            "description": "Human-readable signal type, e.g. 'Whale Move', 'Volume Breakout'"
          }
        }
      },
      "description": "Signals attributed to the requested analyst in reverse-chronological order."
    },
    "analystId": {
      "type": "string",
      "description": "Echoed analyst slug"
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
analyst_archive annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
whale_movements
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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. ?

whale_movements input schema
{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "maxLength": 100,
      "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."
    },
    "page": {
      "type": "integer",
      "default": 1,
      "minimum": 1,
      "description": "Page number (1-indexed, default 1)."
    },
    "chain": {
      "enum": [
        "BTC",
        "ETH",
        "SOL",
        "BSC",
        "BASE",
        "ARB",
        "POLYGON",
        "TON",
        "SUI",
        "HYPE",
        "TRX",
        "SEI",
        "INJ",
        "APT"
      ],
      "type": "string",
      "description": "Filter by chain. Valid values: BTC, ETH, SOL, BSC, BASE, ARB, POLYGON, TON, SUI, HYPE, TRX, SEI, INJ, APT. Default: all chains."
    },
    "period": {
      "enum": [
        "7d",
        "30d",
        "90d",
        "365d"
      ],
      "type": "string",
      "default": "90d",
      "description": "Time window: 7d | 30d | 90d | 365d (default 90d). Use 365d to retrieve up to 1 year of history."
    },
    "direction": {
      "enum": [
        "inflow",
        "outflow",
        "transfer"
      ],
      "type": "string",
      "description": "Filter by flow direction: inflow | outflow | transfer. Default: all directions."
    }
  }
}
whale_movements output schema
{
  "type": "object",
  "properties": {
    "page": {
      "type": "number",
      "description": "Current page (1-indexed)"
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Unique signal row ID"
          },
          "chain": {
            "type": "string",
            "nullable": true,
            "description": "Chain identifier, e.g. 'ETH', 'BTC', 'SOL'. Convenience alias for tokens[0]."
          },
          "amount": {
            "type": "string",
            "nullable": true,
            "description": "Transfer amount in native token units, e.g. '1200 ETH'. Parsed from signal summary; null if not available."
          },
          "tokens": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Chain identifier in tokens[0], e.g. ['ETH']"
          },
          "outcome": {
            "type": "string",
            "nullable": true,
            "description": "'win' | 'loss' | 'neutral' | null"
          },
          "usdValue": {
            "type": "string",
            "nullable": true,
            "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."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "direction": {
            "type": "string",
            "nullable": true,
            "description": "'inflow' | 'outflow' | 'transfer' | null (unknown)"
          },
          "returnPct": {
            "type": "number",
            "nullable": true,
            "description": "Return in pct-points if resolved; null otherwise."
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "ISO-8601 timestamp when the movement was recorded. Alias for createdAt."
          },
          "typeLabel": {
            "type": "string",
            "description": "Always 'Whale Move' for this endpoint"
          },
          "walletLabel": {
            "type": "string",
            "nullable": true,
            "description": "Human-readable wallet label, e.g. 'ETH Whale #3'"
          }
        }
      },
      "description": "Whale movement records in reverse-chronological order."
    },
    "total": {
      "type": "number",
      "description": "Total matching records in the window"
    },
    "hasMore": {
      "type": "boolean",
      "description": "Whether more pages are available"
    },
    "pageSize": {
      "type": "number",
      "description": "Fixed at 20 records per page"
    },
    "sinceDays": {
      "type": "number",
      "description": "Number of days of history returned"
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "dataSource": {
      "type": "string"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
whale_movements annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
whale_movements_summary
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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

whale_movements_summary input schema
{
  "type": "object",
  "properties": {
    "period": {
      "enum": [
        "7d",
        "30d",
        "90d"
      ],
      "type": "string",
      "default": "7d",
      "description": "Time window: 7d | 30d | 90d (default 7d)."
    }
  }
}
whale_movements_summary output schema
{
  "type": "object",
  "properties": {
    "totalUsd": {
      "type": "number",
      "description": "Sum of usd_value across all resolved movements in the window (whole dollars)."
    },
    "sinceDays": {
      "type": "number",
      "description": "Number of days covered by this summary."
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "dataSource": {
      "type": "string"
    },
    "lastSeenAt": {
      "type": "string",
      "format": "date-time",
      "nullable": true
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    },
    "byDirection": {
      "type": "object",
      "properties": {
        "inflow": {
          "type": "number"
        },
        "outflow": {
          "type": "number"
        },
        "unknown": {
          "type": "number"
        },
        "transfer": {
          "type": "number"
        }
      },
      "description": "Movement counts by flow direction."
    },
    "firstSeenAt": {
      "type": "string",
      "format": "date-time",
      "nullable": true
    },
    "movementCount": {
      "type": "number",
      "description": "Total whale movements recorded in the window."
    },
    "topChainsByUsd": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "chain": {
            "type": "string"
          },
          "inflow": {
            "type": "number"
          },
          "outflow": {
            "type": "number"
          },
          "totalUsd": {
            "type": "number"
          },
          "transfer": {
            "type": "number"
          },
          "movementCount": {
            "type": "number"
          }
        }
      },
      "description": "Up to 10 chains ranked by total resolved USD volume in the window."
    },
    "usdByDirection": {
      "type": "object",
      "properties": {
        "inflow": {
          "type": "number"
        },
        "outflow": {
          "type": "number"
        },
        "transfer": {
          "type": "number"
        }
      },
      "description": "Real USD totals by flow direction (resolved rows only)."
    },
    "unresolvedUsdCount": {
      "type": "number",
      "description": "Movements with no resolvable USD value — excluded from every USD sum below."
    },
    "movementsWithResolvedUsd": {
      "type": "number",
      "description": "Subset of movementCount that had a resolvable USD value."
    }
  }
}
whale_movements_summary annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
feed_archive
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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

feed_archive input schema
{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "maxLength": 100,
      "description": "Keyword or token name search (max 100 chars). Case-insensitive match on title and summary. Example: q=ETH returns only items mentioning ETH."
    },
    "page": {
      "type": "integer",
      "default": 1,
      "minimum": 1,
      "description": "Page number (1-indexed, default 1)."
    },
    "type": {
      "enum": [
        "news",
        "ai",
        "manual",
        "all"
      ],
      "type": "string",
      "description": "Filter by article type: news (RSS), ai (AI-generated), manual (analyst notes). Default: all types."
    },
    "period": {
      "enum": [
        "7d",
        "30d"
      ],
      "type": "string",
      "default": "30d",
      "description": "Time window: 7d | 30d (default 30d — the maximum public window)."
    }
  }
}
feed_archive output schema
{
  "type": "object",
  "properties": {
    "page": {
      "type": "number",
      "description": "Current page (1-indexed)"
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Unique feed item row ID"
          },
          "url": {
            "type": "string",
            "nullable": true,
            "description": "Original article URL, if available"
          },
          "type": {
            "type": "string",
            "description": "'news_summary' | 'ai_insights' | 'analysis'"
          },
          "title": {
            "type": "string",
            "description": "Article or summary title"
          },
          "source": {
            "type": "string",
            "description": "Feed source name, e.g. 'CoinDesk', 'CoinTelegraph'"
          },
          "summary": {
            "type": "string",
            "description": "Article summary or AI-generated digest"
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Publication timestamp"
          }
        }
      },
      "description": "News articles and analysis items in reverse-chronological order."
    },
    "total": {
      "type": "number",
      "description": "Total matching articles in the window"
    },
    "hasMore": {
      "type": "boolean",
      "description": "Whether more pages are available"
    },
    "pageSize": {
      "type": "number",
      "description": "Fixed at 20 records per page"
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
feed_archive annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
reports_index
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

reports_index input schema
{
  "type": "object",
  "properties": {}
}
reports_index output schema
{
  "type": "object",
  "properties": {
    "total": {
      "type": "number",
      "description": "Number of reports returned (≤12)."
    },
    "reports": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique report ID, e.g. 'report-2026-W25'"
          },
          "title": {
            "type": "string",
            "description": "English report title, e.g. 'Weekly Alpha Report — BTC breakout & ETH accumulation signals'"
          },
          "weekOf": {
            "type": "string",
            "description": "Start date of the covered week (YYYY-MM-DD), e.g. '2026-06-16'."
          },
          "summary": {
            "type": "string",
            "description": "Plain-text summary extracted from the English report, truncated to 300 characters."
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "description": "When the report was generated (ISO-8601)."
          }
        }
      },
      "description": "Weekly report metadata in reverse-chronological order (newest first). Maximum 12 entries."
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
reports_index annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
golden_alerts_snapshot
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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

golden_alerts_snapshot input schema
{
  "type": "object",
  "properties": {}
}
golden_alerts_snapshot output schema
{
  "type": "object",
  "properties": {
    "total": {
      "type": "number",
      "description": "Number of alerts in the snapshot"
    },
    "alerts": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique alert identifier, e.g. 'ga-1719220800000-abc123'"
          },
          "type": {
            "type": "string",
            "description": "Alert classification: accumulation | fear_buy | smart_money_loading | volume_breakout | whale_convergence"
          },
          "title": {
            "type": "string",
            "description": "Human-readable alert title, e.g. 'Fear Buy Opportunity'"
          },
          "chains": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Blockchain networks, e.g. ['bitcoin', 'ethereum']"
          },
          "tokens": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Token symbols involved, e.g. ['BTC', 'ETH']"
          },
          "summary": {
            "type": "string",
            "description": "Signal summary combining whale moves, volume, and Fear & Greed context"
          },
          "severity": {
            "type": "string",
            "description": "'high' (confidence ≥70%) | 'medium' (45–69%) | 'low' (<45%)"
          },
          "aiInsight": {
            "type": "string",
            "description": "One-sentence AI-generated actionable insight"
          },
          "analystId": {
            "type": "string",
            "nullable": true,
            "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"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "When this alert was generated"
          }
        }
      },
      "description": "Golden Alerts sorted by severity (highest first), up to 27 entries."
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time",
      "description": "Response generation timestamp"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    },
    "refreshedAt": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "When the cron job last populated the cache; null if cache is empty"
    }
  }
}
golden_alerts_snapshot annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
analyst_monthly_performance
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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?'

analyst_monthly_performance input schema
{
  "type": "object",
  "properties": {}
}
analyst_monthly_performance output schema
{
  "type": "object",
  "properties": {
    "months": {
      "type": "integer",
      "description": "Look-back window in months (always 6)."
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    },
    "performance": {
      "type": "object",
      "description": "Keys are analyst slugs (chain_hawk, whale_watch, …); values are arrays of monthly performance objects ordered newest-first.",
      "additionalProperties": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "wins": {
              "type": "integer"
            },
            "month": {
              "type": "string",
              "description": "Calendar month in YYYY-MM format, e.g. '2026-05'."
            },
            "losses": {
              "type": "integer"
            },
            "winRate": {
              "type": "number",
              "nullable": true,
              "description": "Fraction 0–1. Null when resolved < 5."
            },
            "resolved": {
              "type": "integer",
              "description": "Signals with a win or loss outcome in this month (neutral excluded from denominator, consistent with analyst stats logic)."
            },
            "avgReturn": {
              "type": "number",
              "nullable": true,
              "description": "Average return in pct-points. Null when no resolved+priced signals."
            },
            "totalSignals": {
              "type": "integer",
              "description": "All signals attributed to this analyst in this month (resolved + unresolved)."
            }
          }
        }
      }
    }
  }
}
analyst_monthly_performance annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
golden_alerts_history
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

golden_alerts_history input schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "integer",
      "default": 30,
      "maximum": 90,
      "minimum": 1,
      "description": "Number of recent days to return (1–180, default 30)."
    }
  }
}
golden_alerts_history output schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "number"
    },
    "total": {
      "type": "number"
    },
    "history": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date",
            "description": "Snapshot date (YYYY-MM-DD, UTC)."
          },
          "lowCount": {
            "type": "integer",
            "description": "Alerts with confidence <50 (low severity)."
          },
          "highCount": {
            "type": "integer",
            "description": "Alerts with confidence ≥75 (high severity)."
          },
          "topTokens": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "totalCount": {
            "type": "integer",
            "description": "Total number of Golden Alerts generated that day."
          },
          "mediumCount": {
            "type": "integer",
            "description": "Alerts with confidence 50–74 (medium severity)."
          }
        }
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "dataSource": {
      "type": "string"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
golden_alerts_history annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
golden_alerts_monthly
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

golden_alerts_monthly input schema
{
  "type": "object",
  "properties": {}
}
golden_alerts_monthly output schema
{
  "type": "object",
  "properties": {
    "total": {
      "type": "number"
    },
    "months": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "month": {
            "type": "string",
            "format": "date",
            "description": "First day of the month (YYYY-MM-01, UTC)."
          },
          "lowCount": {
            "type": "integer"
          },
          "avgPerDay": {
            "type": "number"
          },
          "highCount": {
            "type": "integer"
          },
          "topTokens": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "totalCount": {
            "type": "integer"
          },
          "daysInMonth": {
            "type": "integer"
          },
          "mediumCount": {
            "type": "integer"
          }
        }
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "dataSource": {
      "type": "string"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
golden_alerts_monthly annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
whale_monthly_archive
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

whale_monthly_archive input schema
{
  "type": "object",
  "properties": {}
}
whale_monthly_archive output schema
{
  "type": "object",
  "properties": {
    "total": {
      "type": "number"
    },
    "months": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "month": {
            "type": "string",
            "format": "date",
            "description": "First day of the month (YYYY-MM-01, UTC)."
          },
          "totalMoves": {
            "type": "integer"
          },
          "daysInMonth": {
            "type": "integer"
          },
          "inflowCount": {
            "type": "integer"
          },
          "outflowCount": {
            "type": "integer"
          },
          "totalUsdValue": {
            "type": "number"
          },
          "avgMovesPerDay": {
            "type": "number"
          }
        }
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "dataSource": {
      "type": "string"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
whale_monthly_archive annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
fear_greed_monthly
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

fear_greed_monthly input schema
{
  "type": "object",
  "properties": {}
}
fear_greed_monthly output schema
{
  "type": "object",
  "properties": {
    "total": {
      "type": "number"
    },
    "months": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "month": {
            "type": "string",
            "format": "date"
          },
          "avgScore": {
            "type": "number"
          },
          "fearDays": {
            "type": "integer"
          },
          "maxScore": {
            "type": "integer"
          },
          "minScore": {
            "type": "integer"
          },
          "greedDays": {
            "type": "integer"
          },
          "daysInMonth": {
            "type": "integer"
          },
          "neutralDays": {
            "type": "integer"
          },
          "dominantClassification": {
            "type": "string"
          }
        }
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "dataSource": {
      "type": "string"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
fear_greed_monthly annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
sentiment_monthly
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

sentiment_monthly input schema
{
  "type": "object",
  "properties": {
    "symbol": {
      "type": "string",
      "description": "Token symbol to filter by (e.g. BTC, ETH). Omit to return all 35 tokens."
    }
  }
}
sentiment_monthly output schema
{
  "type": "object",
  "properties": {
    "total": {
      "type": "number"
    },
    "months": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "month": {
            "type": "string",
            "format": "date"
          },
          "symbol": {
            "type": "string"
          },
          "avgScore": {
            "type": "number"
          },
          "daysInMonth": {
            "type": "integer"
          },
          "dominantSentiment": {
            "type": "string"
          }
        }
      }
    },
    "symbol": {
      "type": "string",
      "nullable": true
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "dataSource": {
      "type": "string"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
sentiment_monthly annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
stablecoin_monthly
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

stablecoin_monthly input schema
{
  "type": "object",
  "properties": {}
}
stablecoin_monthly output schema
{
  "type": "object",
  "properties": {
    "total": {
      "type": "number"
    },
    "months": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "month": {
            "type": "string",
            "format": "date"
          },
          "bearishDays": {
            "type": "integer"
          },
          "bullishDays": {
            "type": "integer"
          },
          "daysInMonth": {
            "type": "integer"
          },
          "neutralDays": {
            "type": "integer"
          },
          "totalNetFlow": {
            "type": "number"
          },
          "avgTotalSupply": {
            "type": "number"
          },
          "dominantSignal": {
            "type": "string"
          }
        }
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "dataSource": {
      "type": "string"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
stablecoin_monthly annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
funding_rate_monthly
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

funding_rate_monthly input schema
{
  "type": "object",
  "properties": {
    "symbol": {
      "type": "string",
      "description": "Token symbol to filter by (e.g. BTC, ETH). Omit to return all top-10 tokens."
    }
  }
}
funding_rate_monthly output schema
{
  "type": "object",
  "properties": {
    "total": {
      "type": "number"
    },
    "months": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "month": {
            "type": "string",
            "format": "date"
          },
          "symbol": {
            "type": "string"
          },
          "avgRate": {
            "type": "number"
          },
          "maxRate": {
            "type": "number"
          },
          "minRate": {
            "type": "number"
          },
          "daysInMonth": {
            "type": "integer"
          },
          "dominantSentiment": {
            "type": "string"
          }
        }
      }
    },
    "symbol": {
      "type": "string",
      "nullable": true
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "dataSource": {
      "type": "string"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
funding_rate_monthly annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
signal_history_monthly
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

signal_history_monthly input schema
{
  "type": "object",
  "properties": {
    "analystId": {
      "type": "string",
      "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."
    }
  }
}
signal_history_monthly output schema
{
  "type": "object",
  "properties": {
    "total": {
      "type": "number"
    },
    "months": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "month": {
            "type": "string",
            "format": "date"
          },
          "winRate": {
            "type": "number",
            "description": "Win rate as a fraction 0–1 (multiply by 100 for %)."
          },
          "winCount": {
            "type": "integer"
          },
          "analystId": {
            "type": "string"
          },
          "avgReturn": {
            "type": "number",
            "description": "Average return % on winning signals."
          },
          "lossCount": {
            "type": "integer"
          },
          "daysInMonth": {
            "type": "integer"
          },
          "neutralCount": {
            "type": "integer"
          },
          "totalSignals": {
            "type": "integer"
          },
          "topSignalType": {
            "type": "string"
          }
        }
      }
    },
    "analystId": {
      "type": "string",
      "nullable": true
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "dataSource": {
      "type": "string"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
signal_history_monthly annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
analyst_top_tokens
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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

analyst_top_tokens input schema
{
  "type": "object",
  "properties": {
    "analystId": {
      "enum": [
        "chain_hawk",
        "whale_watch",
        "alpha_scout",
        "defi_pulse",
        "quant_edge",
        "rate_hawk",
        "flow_tracer",
        "unlock_guard",
        "sentiment_edge",
        "narrative_pulse"
      ],
      "type": "string",
      "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."
    }
  }
}
analyst_top_tokens output schema
{
  "type": "object",
  "properties": {
    "hint": {
      "type": "string",
      "nullable": true,
      "description": "Guidance string returned when analystId was omitted; null otherwise."
    },
    "tokens": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "wins": {
            "type": "integer",
            "description": "Number of winning resolved signals."
          },
          "token": {
            "type": "string",
            "description": "Token symbol, e.g. BTC, ETH, SOL."
          },
          "total": {
            "type": "integer",
            "description": "Total signals in the last 90 days (including pending/unresolved)."
          },
          "winRate": {
            "type": "integer",
            "nullable": true,
            "description": "Win rate as an integer percentage (0–100). Null when resolved=0."
          },
          "resolved": {
            "type": "integer",
            "description": "Number of signals with a win or loss outcome determined."
          }
        }
      },
      "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."
    },
    "analystId": {
      "type": "string",
      "nullable": true,
      "description": "Echoed analyst slug, e.g. chain_hawk. Null when analystId param was omitted."
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
analyst_top_tokens annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
arbitrage_history
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

arbitrage_history input schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "integer",
      "default": 7,
      "maximum": 180,
      "minimum": 1,
      "description": "Number of days to look back (default 7, max 180)."
    }
  }
}
arbitrage_history output schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "number"
    },
    "total": {
      "type": "number",
      "description": "Total number of individual opportunity rows returned."
    },
    "history": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "description": "Snapshot date (YYYY-MM-DD)."
          },
          "opportunities": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "symbol": {
                  "type": "string",
                  "description": "Token symbol, e.g. 'ETH'."
                },
                "spreadPct": {
                  "type": "number",
                  "description": "Price spread between exchanges as a percentage, e.g. 1.23 = 1.23%."
                },
                "usdVolume": {
                  "type": "number",
                  "description": "Average 24h USD volume across the buy and sell pairs."
                },
                "buyExchange": {
                  "type": "string",
                  "description": "DEX/chain where the token is cheapest (buy here)."
                },
                "sellExchange": {
                  "type": "string",
                  "description": "DEX/chain where the token is most expensive (sell here)."
                }
              }
            },
            "description": "Top arbitrage opportunities for this day (up to 5), sorted by spread descending."
          }
        }
      },
      "description": "Per-day list of top arbitrage opportunities, newest first."
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
arbitrage_history annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
analyst_daily_summary
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

analyst_daily_summary input schema
{
  "type": "object",
  "properties": {}
}
analyst_daily_summary output schema
{
  "type": "object",
  "properties": {
    "total": {
      "type": "number"
    },
    "summaries": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "btcTrend": {
            "enum": [
              "up",
              "down",
              "sideways"
            ],
            "type": "string",
            "nullable": true,
            "description": "BTC 24h trend at generation time"
          },
          "analystId": {
            "type": "string",
            "description": "Analyst slug, e.g. chain_hawk"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "analystName": {
            "type": "string",
            "description": "Display name, e.g. ChainHawk"
          },
          "signalCount": {
            "type": "integer",
            "description": "Number of signals this analyst generated in the past 24h"
          },
          "summaryDate": {
            "type": "string",
            "format": "date",
            "description": "YYYY-MM-DD date of this summary"
          },
          "shortSummary": {
            "type": "string",
            "description": "2-sentence AI commentary on the analyst's day (public)"
          },
          "fearGreedScore": {
            "type": "number",
            "nullable": true,
            "description": "Market Fear & Greed score at time of generation (0=Extreme Fear, 100=Extreme Greed)"
          },
          "confluenceScore": {
            "type": "number",
            "nullable": true,
            "description": "0-100: % of other analysts with overlapping tokens in the last 2h — higher = more cross-analyst agreement"
          }
        },
        "description": "One daily summary per analyst."
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
analyst_daily_summary annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
analyst_summary_history
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

analyst_summary_history input schema
{
  "type": "object",
  "properties": {}
}
analyst_summary_history output schema
{
  "type": "object",
  "properties": {
    "date": {
      "type": "string",
      "nullable": true
    },
    "days": {
      "type": "number"
    },
    "total": {
      "type": "number"
    },
    "analystId": {
      "type": "string",
      "nullable": true
    },
    "summaries": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "btcTrend": {
            "enum": [
              "up",
              "down",
              "sideways"
            ],
            "type": "string",
            "nullable": true
          },
          "analystId": {
            "type": "string",
            "description": "Analyst ID, e.g. chain_hawk"
          },
          "summaryAr": {
            "type": "string",
            "nullable": true,
            "description": "Arabic translation"
          },
          "summaryHi": {
            "type": "string",
            "nullable": true,
            "description": "Hindi translation"
          },
          "summaryRu": {
            "type": "string",
            "nullable": true,
            "description": "Russian translation"
          },
          "summaryZh": {
            "type": "string",
            "nullable": true,
            "description": "Chinese translation"
          },
          "analystName": {
            "type": "string",
            "description": "Display name, e.g. ChainHawk"
          },
          "signalCount": {
            "type": "integer",
            "description": "Signals generated that day"
          },
          "summaryDate": {
            "type": "string",
            "format": "date",
            "description": "YYYY-MM-DD"
          },
          "shortSummary": {
            "type": "string",
            "description": "2-sentence AI commentary (English)"
          },
          "fearGreedScore": {
            "type": "number",
            "nullable": true,
            "description": "Fear & Greed at generation time"
          },
          "confluenceScore": {
            "type": "number",
            "nullable": true,
            "description": "Cross-analyst agreement 0-100"
          }
        },
        "description": "One daily summary record."
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
analyst_summary_history annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
market_context
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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

market_context input schema
{
  "type": "object",
  "properties": {
    "date": {
      "type": "string",
      "format": "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."
    }
  }
}
market_context output schema
{
  "type": "object",
  "properties": {
    "date": {
      "type": "string",
      "format": "date",
      "description": "Requested date (YYYY-MM-DD)"
    },
    "metadata": {
      "type": "object",
      "properties": {
        "date": {
          "type": "string"
        },
        "isToday": {
          "type": "boolean"
        },
        "resolution": {
          "enum": [
            "daily",
            "monthly"
          ],
          "type": "string",
          "description": "'daily' = exact day data from snapshots; 'monthly' = monthly averages from permanent archive (triggered for dates >180 days old with <50% daily completeness)"
        },
        "generatedAt": {
          "type": "string",
          "format": "date-time"
        },
        "sourcesTotal": {
          "type": "number"
        },
        "dataCompleteness": {
          "type": "number",
          "description": "Percentage of 8 sources with data for this date (0-100)"
        },
        "sourcesAvailable": {
          "type": "number"
        }
      }
    },
    "arbitrage": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "symbol": {
            "type": "string"
          },
          "spreadPct": {
            "type": "number"
          },
          "usdVolume": {
            "type": "number"
          },
          "buyExchange": {
            "type": "string"
          },
          "sellExchange": {
            "type": "string"
          }
        },
        "description": "Top arbitrage opportunity (only available for daily resolution ≤180 days)."
      }
    },
    "fearGreed": {
      "type": "object",
      "nullable": true,
      "properties": {
        "score": {
          "type": "number"
        },
        "classification": {
          "type": "string"
        }
      },
      "description": "Fear & Greed index for the date (daily score or monthly avg when resolution=monthly)."
    },
    "sentiment": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "score": {
            "type": "number",
            "nullable": true
          },
          "symbol": {
            "type": "string"
          },
          "sentiment": {
            "type": "string",
            "nullable": true
          }
        },
        "description": "Social sentiment score for one token."
      },
      "description": "Social sentiment for BTC, ETH, SOL (daily score or monthly avg when resolution=monthly)."
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "stablecoin": {
      "type": "object",
      "nullable": true,
      "properties": {
        "signal": {
          "type": "string",
          "nullable": true
        },
        "totalNow": {
          "type": "number"
        },
        "totalFlow24h": {
          "type": "number"
        }
      },
      "description": "Stablecoin flow snapshot for the date."
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    },
    "fundingRates": {
      "type": "object",
      "properties": {
        "avg": {
          "type": "number",
          "nullable": true
        },
        "symbol": {
          "type": "string"
        },
        "sentiment": {
          "type": "string",
          "nullable": true
        },
        "byExchange": {
          "type": "object"
        }
      },
      "description": "BTC perpetual funding rate summary for the date (daily or monthly avg)."
    },
    "goldenAlerts": {
      "type": "object",
      "nullable": true,
      "properties": {
        "lowCount": {
          "type": "number"
        },
        "highCount": {
          "type": "number"
        },
        "topTokens": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "totalCount": {
          "type": "number"
        },
        "mediumCount": {
          "type": "number"
        }
      },
      "description": "Golden Alerts daily summary for the date."
    },
    "whaleSummary": {
      "type": "object",
      "nullable": true,
      "properties": {
        "totalMoves": {
          "type": "number"
        },
        "inflowCount": {
          "type": "number"
        },
        "outflowCount": {
          "type": "number"
        },
        "totalUsdValue": {
          "type": "number"
        }
      },
      "description": "Aggregated whale movement counts for the date."
    },
    "analystSummaries": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "btcTrend": {
            "type": "string",
            "nullable": true
          },
          "analystId": {
            "type": "string"
          },
          "signalCount": {
            "type": "number"
          },
          "shortSummary": {
            "type": "string"
          },
          "confluenceScore": {
            "type": "number",
            "nullable": true
          }
        },
        "description": "One analyst's public daily summary (only available for daily resolution)."
      }
    }
  }
}
market_context annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
arbitrage_monthly
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

arbitrage_monthly input schema
{
  "type": "object",
  "properties": {}
}
arbitrage_monthly output schema
{
  "type": "object",
  "properties": {
    "total": {
      "type": "number"
    },
    "months": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "month": {
            "type": "string",
            "format": "date",
            "description": "First day of the month (YYYY-MM-01, UTC)."
          },
          "symbol": {
            "type": "string"
          },
          "buyExchange": {
            "type": "string"
          },
          "daysInMonth": {
            "type": "integer"
          },
          "avgSpreadPct": {
            "type": "number",
            "description": "Average % spread between buy and sell exchange that month."
          },
          "avgUsdVolume": {
            "type": "number"
          },
          "sellExchange": {
            "type": "string"
          },
          "occurrenceCount": {
            "type": "integer",
            "description": "Number of daily snapshots where this symbol appeared."
          }
        }
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "dataSource": {
      "type": "string"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
arbitrage_monthly annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
leverage_history
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

leverage_history input schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "integer",
      "default": 30,
      "maximum": 90,
      "minimum": 1,
      "description": "Number of days of history to return (1–90, default 30)."
    }
  }
}
leverage_history output schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "number"
    },
    "total": {
      "type": "number"
    },
    "history": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date",
            "description": "YYYY-MM-DD snapshot date."
          },
          "fearGreed": {
            "type": "integer",
            "maximum": 100,
            "minimum": 0,
            "nullable": true,
            "description": "Platform Fear & Greed index for the day."
          },
          "avgSetupScore": {
            "type": "number",
            "maximum": 100,
            "minimum": 0,
            "description": "Average setup score across tracked assets."
          },
          "whaleBuyCount": {
            "type": "integer",
            "description": "Whale buy signals that day."
          },
          "dominantRegime": {
            "enum": [
              "Bull",
              "Bear",
              "Sideways",
              "Accumulation",
              "Unknown"
            ],
            "type": "string",
            "description": "Market regime detected for the day."
          },
          "whaleSellCount": {
            "type": "integer",
            "description": "Whale sell signals that day."
          },
          "assetsInCritical": {
            "type": "integer",
            "description": "Count of assets with pressureScore ≥ 76 (critical/danger zone)."
          },
          "avgPressureScore": {
            "type": "number",
            "maximum": 100,
            "minimum": 0,
            "description": "Average pressure score across all tracked assets (0-100)."
          },
          "maxPressureScore": {
            "type": "number",
            "maximum": 100,
            "minimum": 0,
            "description": "Highest single-asset pressure score of the day."
          },
          "topPressureSymbol": {
            "type": "string",
            "nullable": true,
            "description": "Ticker symbol of the highest-pressure asset."
          },
          "assetsInDangerZone": {
            "type": "integer",
            "description": "Count of assets with Danger Zone setup label."
          }
        }
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
leverage_history annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
leverage_picks_summary
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

leverage_picks_summary input schema
{
  "type": "object",
  "properties": {}
}
leverage_picks_summary output schema
{
  "type": "object",
  "properties": {
    "note": {
      "type": "string"
    },
    "wins": {
      "type": "integer",
      "description": "Picks classified as win."
    },
    "losses": {
      "type": "integer",
      "description": "Picks classified as loss."
    },
    "windows": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Trading windows tracked: 1h (scalp), 4h (swing), 12h (position)."
    },
    "neutrals": {
      "type": "integer",
      "description": "Picks within ±1.5% (neutral)."
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "dataSource": {
      "type": "string"
    },
    "totalPicks": {
      "type": "integer",
      "description": "Total picks ever recorded (pending + resolved)."
    },
    "winRatePct": {
      "type": "number",
      "nullable": true,
      "description": "Win rate as a percentage (0–100). Null until first resolved picks exist."
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    },
    "avgReturnPct": {
      "type": "number",
      "nullable": true,
      "description": "Average return % across all resolved picks (positive = profitable on avg)."
    },
    "pendingPicks": {
      "type": "integer",
      "description": "Picks still awaiting resolution (close window not yet elapsed)."
    },
    "resolvedPicks": {
      "type": "integer",
      "description": "Picks with outcome resolved (close window elapsed)."
    },
    "avgWinReturnPct": {
      "type": "number",
      "nullable": true,
      "description": "Average return % for winning picks only."
    },
    "winThresholdPct": {
      "type": "number",
      "description": "Return threshold used to classify a pick as win/loss (currently 1.5%)."
    }
  }
}
leverage_picks_summary annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
leverage_radar
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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).

leverage_radar input schema
{
  "type": "object",
  "properties": {
    "window": {
      "enum": [
        "1h",
        "4h",
        "12h"
      ],
      "type": "string",
      "default": "4h",
      "description": "Trading window: 1h (scalp), 4h (swing, default), 12h (position)."
    }
  }
}
leverage_radar output schema
{
  "type": "object",
  "properties": {
    "note": {
      "type": "string"
    },
    "window": {
      "enum": [
        "1h",
        "4h",
        "12h"
      ],
      "type": "string",
      "description": "Trading window used for computation."
    },
    "assetCount": {
      "type": "integer",
      "description": "Total assets tracked (50)."
    },
    "computedAt": {
      "type": "string",
      "format": "date-time"
    },
    "disclaimer": {
      "type": "string"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    },
    "windowHours": {
      "enum": [
        1,
        4,
        12
      ],
      "type": "integer",
      "description": "Window in hours."
    },
    "marketSummary": {
      "type": "object",
      "properties": {
        "regime": {
          "type": "string",
          "nullable": true,
          "description": "Current market regime (Bull/Bear/Sideways/Accumulation)."
        },
        "fearGreed": {
          "type": "integer",
          "maximum": 100,
          "minimum": 0,
          "nullable": true,
          "description": "Platform Fear & Greed index (0=Extreme Fear, 100=Extreme Greed)."
        },
        "overallBias": {
          "enum": [
            "bullish",
            "bearish",
            "neutral"
          ],
          "type": "string",
          "description": "Aggregated market bias derived from all scores."
        },
        "avgSetupScore": {
          "type": "number",
          "maximum": 100,
          "minimum": 0,
          "description": "Average setup quality score across all tracked assets."
        },
        "whaleBuyCount": {
          "type": "integer",
          "description": "Whale buy signals in the selected window."
        },
        "fearGreedLabel": {
          "type": "string",
          "nullable": true,
          "description": "Human-readable F&G classification."
        },
        "whaleSellCount": {
          "type": "integer",
          "description": "Whale sell signals in the selected window."
        },
        "avgPressureScore": {
          "type": "number",
          "maximum": 100,
          "minimum": 0,
          "description": "Average pressure score across all 50 tracked assets."
        }
      }
    },
    "topLongSetups": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "symbol": {
            "type": "string",
            "description": "Ticker symbol."
          },
          "riskLevel": {
            "enum": [
              "low",
              "medium",
              "high",
              "extreme"
            ],
            "type": "string",
            "description": "Risk classification."
          },
          "setupLabel": {
            "type": "string",
            "description": "Decision label: Strong Long Setup, Weak Long Setup, Strong Short Setup, etc."
          },
          "setupScore": {
            "type": "number",
            "maximum": 100,
            "minimum": 0,
            "description": "Setup quality score — higher = better trade opportunity."
          },
          "fundingRate": {
            "type": "number",
            "nullable": true,
            "description": "Current funding rate % (negative=shorts pay longs)."
          },
          "pressureScore": {
            "type": "number",
            "maximum": 100,
            "minimum": 0,
            "description": "Leverage pressure score — higher = more overleveraged (dangerous)."
          },
          "priceChange24h": {
            "type": "number",
            "nullable": true,
            "description": "24h price change %."
          }
        }
      }
    },
    "pressureAlerts": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "topShortSetups": {
      "type": "array",
      "items": {
        "type": "object"
      }
    }
  }
}
leverage_radar annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
market_pulse_history
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

market_pulse_history input schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "integer",
      "default": 30,
      "maximum": 90,
      "minimum": 1,
      "description": "Number of days of history to return (1–90, default 30)."
    }
  }
}
market_pulse_history output schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "number"
    },
    "total": {
      "type": "number"
    },
    "history": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date",
            "description": "YYYY-MM-DD snapshot date."
          },
          "regime": {
            "enum": [
              "Bull",
              "Bear",
              "Sideways",
              "Accumulation"
            ],
            "type": "string",
            "nullable": true,
            "description": "Market regime detected for the day."
          },
          "verdict": {
            "enum": [
              "BUY",
              "SELL",
              "NEUTRAL"
            ],
            "type": "string",
            "description": "Aggregated market verdict for the day."
          },
          "confidence": {
            "type": "number",
            "maximum": 100,
            "minimum": 0,
            "description": "Confidence percentage for the verdict (0-100)."
          },
          "whaleBuyRatio": {
            "type": "number",
            "maximum": 1,
            "minimum": 0,
            "nullable": true,
            "description": "Ratio of whale buy signals vs total signals (0=all sell, 1=all buy)."
          },
          "fearGreedScore": {
            "type": "number",
            "maximum": 100,
            "minimum": 0,
            "nullable": true,
            "description": "Platform Fear & Greed index for the day."
          },
          "avgPressureScore": {
            "type": "number",
            "maximum": 100,
            "minimum": 0,
            "nullable": true,
            "description": "Average leverage pressure score across tracked assets."
          },
          "leverageSuggestion": {
            "enum": [
              "none",
              "low",
              "moderate",
              "high"
            ],
            "type": "string",
            "nullable": true,
            "description": "Derived leverage level suggestion."
          }
        }
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
market_pulse_history annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
gas_price_history
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

gas_price_history input schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "integer",
      "default": 30,
      "maximum": 90,
      "minimum": 1,
      "description": "Number of days of history to return (1–90, default 30)."
    }
  }
}
gas_price_history output schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "number"
    },
    "total": {
      "type": "number"
    },
    "history": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date",
            "description": "YYYY-MM-DD snapshot date."
          },
          "arbFastGwei": {
            "type": "number",
            "nullable": true,
            "description": "Arbitrum fast gas price in gwei."
          },
          "bnbFastGwei": {
            "type": "number",
            "nullable": true,
            "description": "BNB Smart Chain fast gas price in gwei."
          },
          "ethFastGwei": {
            "type": "number",
            "nullable": true,
            "description": "ETH fast gas price in gwei."
          },
          "solLamports": {
            "type": "number",
            "nullable": true,
            "description": "Solana priority fee in lamports."
          },
          "baseFastGwei": {
            "type": "number",
            "nullable": true,
            "description": "Base (Coinbase L2) fast gas price in gwei."
          },
          "polyFastGwei": {
            "type": "number",
            "nullable": true,
            "description": "Polygon fast gas price in gwei."
          },
          "ethStandardGwei": {
            "type": "number",
            "nullable": true,
            "description": "ETH standard (safe) gas price in gwei."
          }
        }
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
gas_price_history annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
narrative_history
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

narrative_history input schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "integer",
      "default": 30,
      "maximum": 90,
      "minimum": 1,
      "description": "Number of days of history to return (1–90, default 30)."
    },
    "sector": {
      "type": "string",
      "description": "Optional sector name filter (e.g. 'Artificial Intelligence'). Returns all sectors when omitted."
    }
  }
}
narrative_history output schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "number"
    },
    "total": {
      "type": "number"
    },
    "sector": {
      "type": "string",
      "nullable": true,
      "description": "Sector filter applied (null = all sectors)."
    },
    "history": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date",
            "description": "YYYY-MM-DD snapshot date."
          },
          "rank": {
            "type": "integer",
            "description": "Sector rank for the day (1 = strongest)."
          },
          "sector": {
            "type": "string",
            "description": "Market sector / narrative name (e.g. 'Artificial Intelligence', 'Layer 2', 'DeFi')."
          },
          "strength": {
            "type": "number",
            "maximum": 100,
            "minimum": 0,
            "nullable": true,
            "description": "Composite narrative strength score (0-100)."
          },
          "topTokens": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true,
            "description": "Top token symbols in this sector."
          },
          "tokenCount": {
            "type": "integer",
            "description": "Number of tokens in this sector."
          },
          "marketCapChangePct": {
            "type": "number",
            "nullable": true,
            "description": "24h market cap change % for the sector."
          }
        }
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
narrative_history annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
bridge_flow_history
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

bridge_flow_history input schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "integer",
      "default": 30,
      "maximum": 90,
      "minimum": 1,
      "description": "Number of days of history to return (1–90, default 30)."
    }
  }
}
bridge_flow_history output schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "number"
    },
    "total": {
      "type": "number"
    },
    "history": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date",
            "description": "YYYY-MM-DD snapshot date."
          },
          "topProtocol": {
            "type": "string",
            "nullable": true,
            "description": "Protocol with the highest volume (e.g. 'Stargate', 'Hop')."
          },
          "totalTxCount": {
            "type": "integer",
            "description": "Total number of bridge transactions."
          },
          "protocolCount": {
            "type": "integer",
            "description": "Number of distinct bridge protocols active."
          },
          "totalVolumeUsd": {
            "type": "number",
            "description": "Total bridged volume in USD across all protocols."
          }
        }
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
bridge_flow_history annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
whale_score_history
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

whale_score_history input schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "integer",
      "default": 30,
      "maximum": 90,
      "minimum": 1,
      "description": "Number of days of history to return (1–90, default 30)."
    },
    "chain": {
      "type": "string",
      "description": "Optional chain filter (ETH, BTC, SOL, BSC, ARB, etc.). Returns all chains when omitted."
    }
  }
}
whale_score_history output schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "number"
    },
    "chain": {
      "type": "string",
      "nullable": true,
      "description": "Chain filter applied (null = all chains)."
    },
    "total": {
      "type": "number"
    },
    "history": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date",
            "description": "YYYY-MM-DD snapshot date."
          },
          "chain": {
            "type": "string",
            "nullable": true,
            "description": "Blockchain chain (ETH, BTC, SOL, BSC, etc.)."
          },
          "score": {
            "type": "number",
            "maximum": 100,
            "minimum": 0,
            "description": "Composite whale score (0-100, requires ≥5 resolved signals)."
          },
          "winRate": {
            "type": "number",
            "maximum": 1,
            "minimum": 0,
            "nullable": true,
            "description": "Win rate as a fraction (0.71 = 71%). Null when < 5 samples."
          },
          "avgReturn": {
            "type": "number",
            "nullable": true,
            "description": "Average return % across resolved signals. Null when < 5 samples."
          },
          "sampleCount": {
            "type": "integer",
            "description": "Number of resolved signals used for score calculation."
          },
          "walletLabel": {
            "type": "string",
            "nullable": true,
            "description": "Human-readable wallet label."
          },
          "walletAddress": {
            "type": "string",
            "description": "Blockchain wallet address."
          }
        }
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
whale_score_history annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
fear_greed_history
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

fear_greed_history input schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "integer",
      "default": 30,
      "maximum": 90,
      "minimum": 1,
      "description": "Number of days of history to return (1–180, default 30)."
    }
  }
}
fear_greed_history output schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "number"
    },
    "total": {
      "type": "number"
    },
    "history": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date",
            "description": "YYYY-MM-DD snapshot date."
          },
          "score": {
            "type": "integer",
            "maximum": 100,
            "minimum": 0,
            "description": "Composite Fear & Greed score (0=Extreme Fear, 100=Extreme Greed)."
          },
          "classification": {
            "enum": [
              "Extreme Fear",
              "Fear",
              "Neutral",
              "Greed",
              "Extreme Greed"
            ],
            "type": "string",
            "description": "Text label for the score."
          }
        }
      }
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "attribution": {
      "$ref": "#/components/schemas/Attribution"
    }
  }
}
fear_greed_history annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (2 of 2 answered).

  1. 2026-11-06: 1 of 1 checks answered
  2. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
846 ms
95th percentile latency
846 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 846 ms · metadata changed · 56 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http cryptowhaleinsights-mcp https://cryptowhaleinsights.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add cryptowhaleinsights-mcp --url https://cryptowhaleinsights.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable cryptowhaleinsights-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "cryptowhaleinsights-mcp": {
      "url": "https://cryptowhaleinsights.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "cryptowhaleinsights-mcp": {
      "type": "streamableHttp",
      "url": "https://cryptowhaleinsights.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start cryptowhaleinsights-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "cryptowhaleinsights-mcp": {
      "type": "http",
      "url": "https://cryptowhaleinsights.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http cryptowhaleinsights-mcp https://cryptowhaleinsights.com/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://cryptowhaleinsights.com/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "cryptowhaleinsights-mcp": {
      "serverUrl": "https://cryptowhaleinsights.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like CryptoWhaleInsights MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run CryptoWhaleInsights MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing