Connects Claude or Cursor to real-time whale transaction data across six chains: Bitcoin, Ethereum, Solana, Tron, Base, and Polygon. Exposes 72 tools including per-address MVRV (profit/loss status), 3.85 million Meiklejohn wallet clusters built from common-input heuristics, exchange flow tracking, dormant address wakeups, and a plain-English explainer that interprets any address or transaction ID. Also surfaces Bitcoin L1 network health from their own full node: hash rate trends, mempool fee percentiles, mining pool concentration. OAuth 2.1 click-to-install with a permanent free tier at 1,000 calls per day. Reach for this when you need forensic-grade on-chain intelligence without leaving your chat window or juggling API keys.
Public tool metadata for what this MCP can expose to an agent.
whale_lookupLook up a Bitcoin address's whale profile. Returns volume index, entity label (if known), holdings estimate, transaction frequency, exchange-share, last-seen timestamp, and recent move count. Combines data from `address_metrics_cache` and `watchlist`. Args: address: Bitcoin ad...1 paramsLook up a Bitcoin address's whale profile. Returns volume index, entity label (if known), holdings estimate, transaction frequency, exchange-share, last-seen timestamp, and recent move count. Combines data from `address_metrics_cache` and `watchlist`. Args: address: Bitcoin ad...
addressstringwhale_recentList recent whale transactions matching the filter. Args: min_btc: Minimum BTC amount (default 100). flow_type: One of 'to_exchange', 'from_exchange', 'wallet_to_wallet', 'exchange_to_exchange', 'self_send', 'exchange_internal', or 'any' (default). hours: Look-back window in h...5 paramsList recent whale transactions matching the filter. Args: min_btc: Minimum BTC amount (default 100). flow_type: One of 'to_exchange', 'from_exchange', 'wallet_to_wallet', 'exchange_to_exchange', 'self_send', 'exchange_internal', or 'any' (default). hours: Look-back window in h...
hoursintegerlimitintegermin_btcnumberflow_typestringexclude_self_sendbooleanwhale_tx_detailGet full detail for a single whale transaction. Returns BTC amount, USD value (computed from BTC price at tx time), flow type, sender + recipient profiles, block height, fee, timestamp, confirmation status, and a public permalink. Designed to be a SUPERSET of `whale_recent` ro...1 paramsGet full detail for a single whale transaction. Returns BTC amount, USD value (computed from BTC price at tx time), flow type, sender + recipient profiles, block height, fee, timestamp, confirmation status, and a public permalink. Designed to be a SUPERSET of `whale_recent` ro...
txidstringwhale_entity_searchSearch the entity-label catalog. Returns addresses matching a partial label name (e.g. 'binance', 'kraken', 'okx-hot'). Useful for "show me all addresses tagged X exchange". Args: query: Partial label name (case-insensitive substring match). limit: Max rows (default 20, max 20...2 paramsSearch the entity-label catalog. Returns addresses matching a partial label name (e.g. 'binance', 'kraken', 'okx-hot'). Useful for "show me all addresses tagged X exchange". Args: query: Partial label name (case-insensitive substring match). limit: Max rows (default 20, max 20...
limitintegerquerystringwhale_cohort_breakdownCohort breakdown of whale moves over the last N days. Buckets: mega (≥1000 BTC), major (500-999), standard (100-499), small (<100). Returns counts + total BTC volume per bucket per flow_type. Note: `self_send` (sender == recipient, typical wallet rotations and consolidations)...2 paramsCohort breakdown of whale moves over the last N days. Buckets: mega (≥1000 BTC), major (500-999), standard (100-499), small (<100). Returns counts + total BTC volume per bucket per flow_type. Note: `self_send` (sender == recipient, typical wallet rotations and consolidations)...
daysintegerinclude_self_sendbooleanwhale_exchange_flowsDaily exchange in/out flows over the last N days. Args: days: Look-back window (default 7, max 90). Returns exactly N rows. Returns: dict with: days: echo of normalized parameter. rows: list of daily rows, NEWEST FIRST. Each row: * day (YYYY-MM-DD) * inflow_btc (sum total_btc...1 paramsDaily exchange in/out flows over the last N days. Args: days: Look-back window (default 7, max 90). Returns exactly N rows. Returns: dict with: days: echo of normalized parameter. rows: list of daily rows, NEWEST FIRST. Each row: * day (YYYY-MM-DD) * inflow_btc (sum total_btc...
daysintegerwhale_hodl_waveHODL Wave UTXO age distribution from `whale_hodl_waves`. Top whale addresses' UTXOs grouped by age bucket. Daily snapshots. Args: days: Look-back window (default 30, max 365). Returns: rows: list of {snapshot_date, age_bucket, total_btc, utxo_count, address_count} age_bucket v...1 paramsHODL Wave UTXO age distribution from `whale_hodl_waves`. Top whale addresses' UTXOs grouped by age bucket. Daily snapshots. Args: days: Look-back window (default 30, max 365). Returns: rows: list of {snapshot_date, age_bucket, total_btc, utxo_count, address_count} age_bucket v...
daysintegerwhale_soprWhale-specific SOPR (Spent Output Profit Ratio) time series. SOPR > 1.0 = whales spending at profit on average; SOPR < 1.0 = at loss. Computed from `whale_sopr_daily`. Args: days: Look-back window (default 30, max 365). Returns exactly N rows (window = CURRENT_DATE - (days-1)...1 paramsWhale-specific SOPR (Spent Output Profit Ratio) time series. SOPR > 1.0 = whales spending at profit on average; SOPR < 1.0 = at loss. Computed from `whale_sopr_daily`. Args: days: Look-back window (default 30, max 365). Returns exactly N rows (window = CURRENT_DATE - (days-1)...
daysintegerwhale_miner_balancesMining-pool BTC hot-wallet balances over time (15+ tracked pools). Args: days: Look-back window (default 30, max 365). Returns: days: echo of normalized parameter. rows: list of {snapshot_date, pool_name, total_btc, address_count}, sorted newest-first then alphabetically by po...1 paramsMining-pool BTC hot-wallet balances over time (15+ tracked pools). Args: days: Look-back window (default 30, max 365). Returns: days: echo of normalized parameter. rows: list of {snapshot_date, pool_name, total_btc, address_count}, sorted newest-first then alphabetically by po...
daysintegerwhale_frequency_contextHow common is a whale-move of this size + flow this week? Returns the count of similar moves (same volume bucket + same flow type) in the last 7 days. Used for "Nth similar move this week" framing. Args: btc: BTC amount of the hypothetical move. flow_type: 'to_exchange' / 'fro...2 paramsHow common is a whale-move of this size + flow this week? Returns the count of similar moves (same volume bucket + same flow type) in the last 7 days. Used for "Nth similar move this week" framing. Args: btc: BTC amount of the hypothetical move. flow_type: 'to_exchange' / 'fro...
btcnumberflow_typestringwhale_my_statusShow your current MCP-server access tier, scopes, and rate limits. Useful to check what you can call. Returns same data as the OAuth /oauth/userinfo endpoint plus per-tool documentation. Bug-fix 2026-04-28 (QA): client_id ist eine OAuth-Application-ID (= "welche App hat connec...Show your current MCP-server access tier, scopes, and rate limits. Useful to check what you can call. Returns same data as the OAuth /oauth/userinfo endpoint plus per-tool documentation. Bug-fix 2026-04-28 (QA): client_id ist eine OAuth-Application-ID (= "welche App hat connec...
No parameter schema in public metadata yet.
whale_btc_priceBTC price time series with optional whale-event overlay. Returns a list of (timestamp, price) points sampled at the requested granularity, plus a separate list of whale events ≥500 BTC during the period for overlay analysis (volume × price impact). Use this to answer questions...3 paramsBTC price time series with optional whale-event overlay. Returns a list of (timestamp, price) points sampled at the requested granularity, plus a separate list of whale events ≥500 BTC during the period for overlay analysis (volume × price impact). Use this to answer questions...
hoursintegerinclude_self_sendbooleangranularity_minutesintegerwhale_top_coinsSnapshot of 16 tracked non-stablecoin coins with price + 24h change. UNIVERSE: 16 coins selected for whale-relevance (BTC, ETH, SOL, BNB, XRP, SUI, ADA, DOGE, AVAX, LINK, NEAR, TRX, ATOM, ARB, OP, XLM). Stablecoins (USDT, USDC, DAI, etc.) are intentionally NOT in this list bec...1 paramsSnapshot of 16 tracked non-stablecoin coins with price + 24h change. UNIVERSE: 16 coins selected for whale-relevance (BTC, ETH, SOL, BNB, XRP, SUI, ADA, DOGE, AVAX, LINK, NEAR, TRX, ATOM, ARB, OP, XLM). Stablecoins (USDT, USDC, DAI, etc.) are intentionally NOT in this list bec...
symbolvaluewhale_fear_greedFear & Greed Index daily values from alternative.me. Range 0-100. Empirical alternative.me thresholds (verified against their own classification labels in our DB): <25 = Extreme Fear 25-46 = Fear 47-54 = Neutral 55-74 = Greed >=75 = Extreme Greed Note: alternative.me's officia...1 paramsFear & Greed Index daily values from alternative.me. Range 0-100. Empirical alternative.me thresholds (verified against their own classification labels in our DB): <25 = Extreme Fear 25-46 = Fear 47-54 = Neutral 55-74 = Greed >=75 = Extreme Greed Note: alternative.me's officia...
daysintegerwhale_dominanceBTC and ETH dominance (% of total market cap) time series. BTC dominance trending up → flight to safety; trending down → altseason. ETH dominance is a leading indicator of altcoin appetite. Args: days: Lookback window (default 30, max 365). Returns: dict with: - history: list...1 paramsBTC and ETH dominance (% of total market cap) time series. BTC dominance trending up → flight to safety; trending down → altseason. ETH dominance is a leading indicator of altcoin appetite. Args: days: Lookback window (default 30, max 365). Returns: dict with: - history: list...
daysintegerwhale_btc_indicatorsCurrent state of two macro Bitcoin top/cycle indicators. - Pi Cycle Top: 111-DMA crossing above 350-DMA×2 has historically marked 4 cycle tops within ±3 days. - Stock-to-Flow ratio: current S2F vs model price (post-halving 2024 model is ~$110k-$200k for cycle). Returns: dict w...Current state of two macro Bitcoin top/cycle indicators. - Pi Cycle Top: 111-DMA crossing above 350-DMA×2 has historically marked 4 cycle tops within ±3 days. - Stock-to-Flow ratio: current S2F vs model price (post-halving 2024 model is ~$110k-$200k for cycle). Returns: dict w...
No parameter schema in public metadata yet.
whale_address_mvrvPer-address MVRV-style cost-basis breakdown. Computes for the address: - balance_btc (cross-validated against address_metrics_cache) - realized_cost_usd (sum of inbound BTC × historical BTC price at receipt) - market_value_usd (balance × current BTC price) - mvrv_ratio (market...1 paramsPer-address MVRV-style cost-basis breakdown. Computes for the address: - balance_btc (cross-validated against address_metrics_cache) - realized_cost_usd (sum of inbound BTC × historical BTC price at receipt) - market_value_usd (balance × current BTC price) - mvrv_ratio (market...
addressstringwhale_address_clusterShow all addresses controlled by the same entity (canonical Meiklejohn cluster). Uses common-input-heuristic (Meiklejohn et al. 2013, cited 1900+): addresses that appear together as inputs in any whale transaction are inferred to be controlled by the same wallet/entity. Cluste...2 paramsShow all addresses controlled by the same entity (canonical Meiklejohn cluster). Uses common-input-heuristic (Meiklejohn et al. 2013, cited 1900+): addresses that appear together as inputs in any whale transaction are inferred to be controlled by the same wallet/entity. Cluste...
limitintegeraddressstringwhale_top_holdersTop whale addresses by current BTC holdings (UTXO truth-source). Primary source: `address_balance_truth` — refreshed daily via Bitcoin Core `scantxoutset`, which is the canonical UTXO set walk. Returns cryptographic on-chain balance (matches mempool.space byte-for-byte). Fallb...4 paramsTop whale addresses by current BTC holdings (UTXO truth-source). Primary source: `address_balance_truth` — refreshed daily via Bitcoin Core `scantxoutset`, which is the canonical UTXO set walk. Returns cryptographic on-chain balance (matches mempool.space byte-for-byte). Fallb...
limitintegermin_btcnumberconfidencestringinclude_exchangesbooleanwhale_dormant_wakeupsFind whale addresses that became active after a real dormancy gap. Bug-fix 2026-04-28 (QA): previous version used `last_seen - first_seen` as `dormancy_years` — that's the *lifespan* of the address, not the inactivity gap. A 6-year-old address with 24 TXs across 6 years would...3 paramsFind whale addresses that became active after a real dormancy gap. Bug-fix 2026-04-28 (QA): previous version used `last_seen - first_seen` as `dormancy_years` — that's the *lifespan* of the address, not the inactivity gap. A 6-year-old address with 24 TXs across 6 years would...
daysintegerlimitintegermin_age_yearsintegerwhale_eth_recentRecent Ethereum whale transactions. Same pattern as whale_recent but for ETH. Glassnode's MCP is BTC-only; we cover both chains. Args: min_eth: Minimum ETH amount (default 100). hours: Lookback (default 24, max 720). limit: Max rows (default 20, max 100). Returns: Dict with `i...3 paramsRecent Ethereum whale transactions. Same pattern as whale_recent but for ETH. Glassnode's MCP is BTC-only; we cover both chains. Args: min_eth: Minimum ETH amount (default 100). hours: Lookback (default 24, max 720). limit: Max rows (default 20, max 100). Returns: Dict with `i...
hoursintegerlimitintegermin_ethnumberwhale_eth_cohort_breakdownETH whale movements grouped by amount bucket × flow_type. Audit M-7 fix 2026-04-29: previously bucketed by `whale_type` which was always "standard" in the DB (Importer never set varied values) — useless for distribution analysis. Now derives `flow_type` live from `from_entity_...2 paramsETH whale movements grouped by amount bucket × flow_type. Audit M-7 fix 2026-04-29: previously bucketed by `whale_type` which was always "standard" in the DB (Importer never set varied values) — useless for distribution analysis. Now derives `flow_type` live from `from_entity_...
daysintegerinclude_self_sendbooleanwhale_eth_address_clusterETH address → cluster_id with confidence-tier transparency. Per ADR-001 (Hybrid Layer-1 + Layer-3): combines external entity-labels (confidence 0.95) with safety-filtered transaction-graph proximity (confidence 0.40). UI consumers MUST render the confidence — L3 matches are be...1 paramsETH address → cluster_id with confidence-tier transparency. Per ADR-001 (Hybrid Layer-1 + Layer-3): combines external entity-labels (confidence 0.95) with safety-filtered transaction-graph proximity (confidence 0.40). UI consumers MUST render the confidence — L3 matches are be...
addressstringwhale_eth_cluster_membersAll addresses belonging to a given ETH cluster_id. Use after whale_eth_address_cluster to expand the cluster. Args: cluster_id: Composite cluster ID like "wallet_cluster:exchange:Binance" or "l3_graph:0x1e86f4234..." limit: Max members returned (default 50, max 500) Returns: d...2 paramsAll addresses belonging to a given ETH cluster_id. Use after whale_eth_address_cluster to expand the cluster. Args: cluster_id: Composite cluster ID like "wallet_cluster:exchange:Binance" or "l3_graph:0x1e86f4234..." limit: Max members returned (default 50, max 500) Returns: d...
limitintegercluster_idstringwhale_eth_mvrvETH MVRV-equivalent for a given address. Per Phase 2 W3: realized_cost_basis_usd = sum(inflow.amount_usd) at TX time. current_value_usd = current_holdings_eth × current_eth_price. mvrv_ratio = current_value / unrealized_cost_basis. Args: address: ETH address (0x-prefixed, 42 c...1 paramsETH MVRV-equivalent for a given address. Per Phase 2 W3: realized_cost_basis_usd = sum(inflow.amount_usd) at TX time. current_value_usd = current_holdings_eth × current_eth_price. mvrv_ratio = current_value / unrealized_cost_basis. Args: address: ETH address (0x-prefixed, 42 c...
addressstringwhale_address_historyFull transaction history for a Bitcoin address (Premium-only). Returns a chronologically-sorted list of every whale transaction this address was involved in, with USD value at the time, fee, flow_type, and the counterparty address (sender or recipient depending on direction)....3 paramsFull transaction history for a Bitcoin address (Premium-only). Returns a chronologically-sorted list of every whale transaction this address was involved in, with USD value at the time, fee, flow_type, and the counterparty address (sender or recipient depending on direction)....
daysintegerlimitintegeraddressstringwhale_export_csvBulk CSV export of whale data (Research-tier only). Returns a delimited CSV string ready for paste-into-Excel or Pandas DataFrame ingestion. Pre-filtered by min_btc and lookback window. Subject to research-tier rate limits (100k calls/month). Tier-required: research (149 CHF/m...4 paramsBulk CSV export of whale data (Research-tier only). Returns a delimited CSV string ready for paste-into-Excel or Pandas DataFrame ingestion. Pre-filtered by min_btc and lookback window. Subject to research-tier rate limits (100k calls/month). Tier-required: research (149 CHF/m...
daysintegerlimitintegertablestringmin_btcnumberwhale_lookup_anyPublic-address lookup for any BTC address (Research-tier). Unlike `whale_lookup` which is restricted to addresses appearing in `whale_trades`, this tool resolves ANY valid Bitcoin address. Useful for ad-hoc forensics, academic research, and journalist source-checks where the t...5 paramsPublic-address lookup for any BTC address (Research-tier). Unlike `whale_lookup` which is restricted to addresses appearing in `whale_trades`, this tool resolves ANY valid Bitcoin address. Useful for ad-hoc forensics, academic research, and journalist source-checks where the t...
addressstringtx_limitintegerinclude_utxosbooleanprefer_sourcestringinclude_recent_txsbooleanwhale_benchmark_pricesDaily-close prices for traditional benchmark assets. Reads the `stock_indices` table (yfinance-sourced ETF/index data), which we ingest daily via benchmark_fetcher.py. ETF prices (SPY, GLD, AGG) are dividend-adjusted total-return — the honest baseline for "what would a buy-and...2 paramsDaily-close prices for traditional benchmark assets. Reads the `stock_indices` table (yfinance-sourced ETF/index data), which we ingest daily via benchmark_fetcher.py. ETF prices (SPY, GLD, AGG) are dividend-adjusted total-return — the honest baseline for "what would a buy-and...
daysintegersymbolsstringwhale_benchmark_compareCumulative-return comparison: BTC vs S&P 500, Gold, 70/30 portfolio. Normalizes all assets to 100 at the start of the window, then computes cumulative percentage return. Designed for "BTC vs traditional assets" Storytelling — the kind of comparison an analyst pulls into a quar...2 paramsCumulative-return comparison: BTC vs S&P 500, Gold, 70/30 portfolio. Normalizes all assets to 100 at the start of the window, then computes cumulative percentage return. Designed for "BTC vs traditional assets" Storytelling — the kind of comparison an analyst pulls into a quar...
baselinestringperiod_daysinteger