Live · 30 tools · OAuth 2.1 · Free tier available

On-chain Bitcoin & Ethereum forensics for AI assistants

What is MCP? The Model Context Protocol is the open standard (Anthropic, Nov 2024) that lets AI assistants call external tools directly — no copy-paste, no manual API. Connect once, and Claude or Cursor can query our whale data inside your chat.

Connect Claude, Cursor, ChatGPT, or any MCP client to real-time whale-transaction data, per-address MVRV (profit/loss status of every wallet), and canonical Meiklejohn clusters (wallet grouping via common-input-ownership) — 30 specialized tools, click-to-install, no API keys to copy-paste.

27tools 3.85Mcanonical clusters 1.1M+entity-labeled addresses BTC + ETHmulti-chain OAuth 2.1click-to-install

Why this MCP rather than Glassnode's MCP?

Glassnode-MCP is excellent for aggregate metrics. We add what they don't: per-address forensics, multi-chain coverage, click-to-install OAuth, and an editorial doctrine for AI quote-generation.

Per-address MVRV

Compute realized cost vs market value for any single address using its UTXO history. Glassnode exposes only network-aggregate MVRV.

Canonical Meiklejohn clusters

3.85M clusters built from 1.68M multi-input transactions. Identify wallet families, custodians, and exchange pools — Glassnode-MCP doesn't expose cluster data.

OAuth click-to-install

Add to claude.ai with one click. Free tier auto-approves; Premium tier signs in via Telegram or Google. No API-key copy-paste, no env-var management.

Multi-chain (BTC + ETH)

Glassnode's MCP is BTC-only. We expose Ethereum whale data alongside Bitcoin — one MCP server, two chains.

Editorial AI doctrine

Editorial doctrine resource (swiss-whale://docs/doctrine) instructs AI clients to quote our data faithfully — descriptive observations, never trading signals.

Free tier permanent

1,000 calls/day, 90-day token TTL, no credit card. Glassnode requires API credits even for basic exploration.

30 tools across 6 categories

All tools are read-only. Tier-gated where indicated. Use any combination via natural-language prompts in your MCP client.

You don't need to write code. Tools are invoked by the AI assistant when you ask in plain English — e.g. "Show me the last 10 mega-whale transactions over 1,000 BTC" or "Has this address ever overlapped with a known exchange wallet?". The table below is a technical reference for developers — as an end-user you don't need to read it.

📍 Address-level forensics 6

whale_lookup(address)Free

Full profile: volume index, entity label, holdings, frequency, exchange-share.

whale_address_mvrv(address)Free

Per-address MVRV with cross-validated balance + data-quality flag for high-rotation vaults.

whale_address_cluster(address)Free

Canonical Meiklejohn cluster (3.85M total). Falls back to co-occurrence for pure-receivers.

whale_address_history(address, limit, days)Premium

Full chronological tx history with USD-at-tx prices for cost-basis reconstruction.

whale_top_holders(limit, min_btc, confidence)Free

Top non-exchange whales by estimated holdings, confidence-filtered.

whale_dormant_wakeups(days, min_age_years)Free

Long-dormant addresses just becoming active.

🔗 Transaction-level 3

whale_recent(min_btc, flow_type, hours, limit)Free

Recent qualifying whale moves with cluster + entity context.

whale_tx_detail(txid)Free

Single TX with block, fee, sender/recipient, flow type.

whale_entity_search(query)Free

Search 1,100+ entity labels (Binance, Kraken, Coinbase, custodians).

📊 Aggregate metrics 8

whale_cohort_breakdown(days)Free

Mega/Major/Standard/Small × flow-type counts.

whale_exchange_flows(days)Free

Daily in/out/net BTC across all tagged exchange addresses.

whale_hodl_wave(days)Free

UTXO age distribution across whale supply.

whale_sopr(days)Free

Whale-specific SOPR (UTXOs ≥ 100 BTC).

whale_miner_balances(days)Free

Mining-pool BTC holdings over time.

whale_frequency_context(btc, flow)Free

"Nth similar move this week" context.

whale_btc_price(hours, granularity)Free

BTC price + whale-event overlay.

whale_btc_indicators()Free

Pi Cycle Top distance + Stock-to-Flow current state.

🌐 Market context 3

whale_top_coins(symbol?)Free

16 coins: price, 24h change, sparkline.

whale_fear_greed(days)Free

Fear & Greed Index daily values from alternative.me.

whale_dominance(days)Free

BTC + ETH market-cap dominance trends.

📊 Benchmarks (vs traditional assets) 2

whale_benchmark_prices(symbols, days)Free

Daily-close prices for SPY / GLD / AGG / SP500 / NASDAQ (yfinance-sourced, since 1993 for S&P).

whale_benchmark_compare(period_days, baseline)Free

Cumulative-return comparison: BTC vs S&P 500 / Gold / 70-30 portfolio (monthly rebalanced) over any window.

Ξ Ethereum (Glassnode-MCP is BTC-only) 2

whale_eth_recent(min_eth, hours, limit)Free

Recent ETH whale transactions with whale-type classification.

whale_eth_cohort_breakdown(days)Free

ETH whale moves by amount × type.

Meta & tier-aware 2

whale_my_status()Free

Show your tier, scopes, rate limit, capabilities.

whale_export_csv(table, days, min_btc, limit)Research

Bulk CSV export from whale_trades / eth_whale_trades / whale_outputs (max 100k rows).

Plus 7 read-only resources: swiss-whale://help/getting-started, swiss-whale://help/glossary, swiss-whale://help/comparison, swiss-whale://docs/methodology, swiss-whale://docs/doctrine, swiss-whale://ledger/latest, swiss-whale://openapi.

Install in 30 seconds

Pick your client. The Free tier requires no signup. Premium tiers (Telegram, Google, or Email login) unlock higher rate-limits and Premium-only tools.

Universal install (any client)

For any MCP-aware client that supports stdio transport — wraps our HTTP endpoint via the npm mcp-remote bridge:

npx -y mcp-remote https://mcp.btcwhalealerts.com/mcp

Works with Claude Desktop, Zed, Continue, JetBrains AI, and any client that auto-discovers MCP servers via npx. Requires Node.js ≥ 18. The mcp-remote package handles OAuth automatically — first run opens your browser for the consent flow, then caches the bearer token locally.

1. Open claude.ai/settings/connectors (or Claude Desktop → Settings → Connectors).
2. Click Add custom connector.
3. Enter URL: https://mcp.btcwhalealerts.com/mcp. Click Connect.
4. A consent page opens. Choose Continue as Free for instant 1,000 calls/day, or sign in with Telegram, Google, or Email/Password for the 90-day Intelligence trial (10,000 calls/day, full address history).
5. Done. The 27 whale_*-tools appear in Claude's tool picker.

Add to claude_desktop_config.json (or settings.json on newer plugin-aware versions):

{
  "mcpServers": {
    "swiss-whale": {
      "url": "https://mcp.btcwhalealerts.com/mcp",
      "transport": "streamable-http"
    }
  }
}

File location:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

Quit Claude Desktop completely (System Tray → Quit), then relaunch.

Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project):

{
  "mcpServers": {
    "swiss-whale": {
      "url": "https://mcp.btcwhalealerts.com/mcp"
    }
  }
}

Cursor reloads MCP config automatically; if not, restart Cursor.

Add to ~/.continue/config.json under experimental.modelContextProtocolServers:

{
  "experimental": {
    "modelContextProtocolServers": [
      {
        "name": "swiss-whale",
        "transport": {
          "type": "streamable-http",
          "url": "https://mcp.btcwhalealerts.com/mcp"
        }
      }
    ]
  }
}

Add to Zed's settings.json under context_servers:

{
  "context_servers": {
    "swiss-whale": {
      "command": {
        "path": "npx",
        "args": ["mcp-remote", "https://mcp.btcwhalealerts.com/mcp"]
      }
    }
  }
}

mcp-remote wraps our HTTP transport for stdio-only clients.

Direct JSON-RPC 2.0 over HTTP. Anonymous Free-tier:

# 1. Initialize a session
curl -i -X POST https://mcp.btcwhalealerts.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize",
       "params":{"protocolVersion":"2025-06-18",
                 "capabilities":{},
                 "clientInfo":{"name":"curl","version":"1"}}}'
# Capture mcp-session-id from the response headers.

# 2. Acknowledge initialization
curl -X POST https://mcp.btcwhalealerts.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "mcp-session-id: $SESSION_ID" \
  -d '{"jsonrpc":"2.0","method":"notifications/initialized"}'

# 3. List tools
curl -X POST https://mcp.btcwhalealerts.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "mcp-session-id: $SESSION_ID" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'

# 4. Call a tool
curl -X POST https://mcp.btcwhalealerts.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "mcp-session-id: $SESSION_ID" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call",
       "params":{"name":"whale_btc_indicators","arguments":{}}}'

For Premium/Research, complete the OAuth flow first via /oauth/authorize, then add Authorization: Bearer <token> to subsequent calls.

Workflow cookbook

Real chained workflows you can paste into Claude or Cursor today. Each example shows the actual output we got while building this server.

🔍 Identify a custodian wallet

Goal: figure out which exchange or institution controls a mystery whale address.

1
Prompt: "Look up this Bitcoin address: 1Kr6QSydW9bFQG1mXiPNNu6WpJGmUa9i1g — what's its profile?"
Tool: whale_lookup → entity_label "Bitfinex", is_exchange true, exchange_share 99.87%.
2
Prompt: "Now show me all addresses in the same Meiklejohn cluster."
Tool: whale_address_cluster → method=canonical, cluster_size=131,729 addresses, cluster_total_btc=599,066.
{ "method": "canonical", "cluster_id": 310378223293180, "cluster_size": 131729, "cluster_total_btc": 599065.87, "first_seen": "2017-12-18", "members_returned": 5 }
3
Prompt: "Check three random members — do they all label as Bitfinex?"
Tool: whale_lookup on each → all labeled "Bitfinex" via cluster-inferred propagation. Confirms entity.

Takeaway: Three calls, complete attribution. Glassnode-MCP cannot do this — they have no cluster tool.

💰 Compute per-address MVRV with data-quality awareness

Goal: is this whale wallet sitting on profit or near cost-basis?

1
Prompt: "Calculate MVRV for bc1qx2x5cqhymfcnjtg902ky6u5t5htmt7fvqztdsm028hkrvxcl4t2sjtpd9l."
Tool: whale_address_mvrv → balance 1,173,567 BTC, MVRV 1.056, _data_quality.status "scaled_to_cache".
{ "balance_btc": 1173567.29, "realized_cost_usd": 86463792439.05, "market_value_usd": 91317618217.47, "mvrv_ratio": 1.056, "unrealized_pnl_usd": 4853825778.42, "_data_quality": { "status": "scaled_to_cache", "explanation": "High-rotation address. Spent-tracking backfill (Phase 1) left some spent UTXOs unmarked, inflating naive unspent sum. Cache estimate used as ground truth." } }

Takeaway: MVRV ≈ 1 means address sits at cost-basis — no distribution pressure. Tool also flags its own data-quality so AI can quote the caveat correctly.

🛌 Find dormant whales waking up

Goal: detect long-dormant addresses that just became active.

1
Prompt: "Show whale addresses that woke up in the last 30 days after at least 5 years of dormancy."
Tool: whale_dormant_wakeups(days=30, min_age_years=5)
Sample row: 3CgKHXR17eh2xCj2RGnH... — dormant 6.1 years, 129,534 BTC, just moved.
2
Follow-up prompt: "What's the cost basis of this dormant address?"
Tool: whale_address_mvrv → realized_cost_usd from coins acquired in 2018 — likely massive unrealized gains.

📈 Detect distribution-zone risk

Goal: are whales currently distributing or accumulating?

1
Prompt: "Cross-read Pi Cycle, whale SOPR, and last-7-days cohort breakdown. Is the market in distribution zone?"
Tools: whale_btc_indicators + whale_sopr(days=90) + whale_cohort_breakdown(days=7)
2
Reading-aid summary: Pi Cycle distance −61% (mid-cycle, no top-pressure). SOPR ~1.02 (moderate profit-taking, no panic). Mega-bucket flow_type splits 60% wallet_to_wallet (intra-whale) vs 25% to_exchange. Conclusion: no distribution profile, but moderate profit realization.

Ξ Compare BTC vs ETH whale activity

Goal: which chain are whales more active on this week?

1
Tools: whale_cohort_breakdown(days=7) + whale_eth_cohort_breakdown(days=7)
Compare: mega-bucket counts, flow-type ratios, total-BTC vs total-ETH (USD-normalized).

Takeaway: Glassnode-MCP can't do this comparison — they're BTC-only. Multi-chain analysis is a single-prompt question for our MCP.

📦 Bulk export for academic research Research

Goal: pull 100k whale transactions for offline statistical analysis.

1
Prompt: "Export the last 30 days of whale_trades with min_btc 100 to CSV."
Tool: whale_export_csv(table="whale_trades", days=30, min_btc=100, limit=100000)
Returns CSV string with txid, timestamp, total_btc, main_sender, main_recipient, fee, fee_rate, score.

Citation: Add to your methodology section: "On-chain data from Swiss Whale Intelligence (btcwhalealerts.com), accessed via MCP server."

📊 BTC vs traditional assets — honest benchmark comparison

Goal: position BTC's recent performance against the assets a private banker would actually compare it to.

1
Prompt: "How has BTC performed over the past 12 months versus S&P 500, Gold, and a 70/30 portfolio?"
Tool: whale_benchmark_compare(period_days=365, baseline="BTC")
{ "from_date": "2025-04-28", "to_date": "2026-04-27", "series": { "BTC": { "cum_return_pct": -18.0, "start_price": 93987, "end_price": 77038 }, "GLD": { "cum_return_pct": +38.9, "start_price": 309.07, "end_price": 429.40 }, "SPY": { "cum_return_pct": +30.9, "start_price": 544.61, "end_price": 712.83 }, "SP500": { "cum_return_pct": +29.4, "start_price": 5528.75, "end_price": 7151.54 }, "AGG": { "cum_return_pct": +4.6, "start_price": 95.06, "end_price": 99.45 }, "70_30": { "cum_return_pct": +20.2 } } }

Takeaway: Real, unedited output from this server today. BTC was −18% while gold and the 70/30 baseline both delivered positive returns over the same window. The doctrine is: report what happened, not what should have happened. Honest comparison builds credibility over hype framings. Data via yfinance, daily-close, dividend-adjusted ETF series.

🐍 Jupyter Notebook templates — runnable in 5 minutes

Goal: pull our REST API data into a notebook, join with public market data, generate a research artefact you can paste into a report.

1
Three ready-to-run notebooks (free download, no auth required for the file itself — auth required for the API calls inside):
  • whale_flow_analysis.ipynb — daily exchange net-flow + entity breakdown + intent distribution + community sentiment join (30d window).
  • address_profile_mvrv.ipynb — pick any whale address, reconstruct its window-limited cost-basis curve, compute mini-MVRV vs current BTC price.
  • exchange_reserves_timeseries.ipynb — per-exchange reserves curves (Binance / Coinbase / Bitfinex / Kraken / OKX), 90d window, BTC price overlay, regime detection.

Stack: pandas + matplotlib + requests + yfinance. All notebooks self-contained: set SWI_TOKEN env var, run all cells, get plots. Doctrine-clean — every section flags whether it's an observation or a heuristic. Pull free Research-tier access for academic users via [email protected].

Tier comparison

Free tier covers most exploration use-cases. Premium adds higher caps and address-history. Research tier is for institutional / academic / production use.

Free (anonymous) Intelligence (Telegram / Google / Email login) Research (paid)
Price0 CHF149 CHF/month
Rate limit1,000 calls / 24h100,000 calls / 30 days
Token TTL90 days365 days
History lookback7 days3,650 days (10 years)
whale_address_history
whale_export_csv 100k rows / call
Auth methodAnonymous (auto-approve)Stripe-verified Bearer
Audit logYes (per-token)Yes + downloadable
Revoke anytime

🎓 Academic researchers at .edu / .ac.uk / EPFL / ETH / uni-* domains get the Research tier free. Email [email protected] from your institutional address.

Subscribe to Research → 149 CHF/mo Start 90-day Intelligence trial

Stripe checkout opens after a single Telegram message. Live MCP tokens auto-upgrade to the new tier within seconds of payment.

📘 Editorial doctrine for AI quotation

This is an information service, not a trading tool. The MCP exposes a structured doctrine resource (swiss-whale://docs/doctrine) that AI clients automatically read. When citing our data, AI assistants are instructed to:

  • Provide descriptive observations ("28th similar move this week", "exchange outflow of N BTC"), never prescriptive trading signals.
  • Avoid the terms "trading signal", "buy signal", "sell signal", "smart money", "Swiss precision", "guaranteed".
  • Treat the volume_index_calibrated score as a methodology-transparent descriptive label, not a profitability predictor.
  • Frame bullish/bearish only as observed market state with a source, never as a forecast.

This is the reading-aid positioning: AI gives users a faithful summary of on-chain reality, not investment advice. Read the full doctrine via your MCP client or at /llms.txt.

FAQ

What is MCP and why should I care?
Model Context Protocol is an open standard from Anthropic (Nov 2024) that lets AI assistants securely call external tools. By 2026 it crossed 97 million installs and became the industry default — OpenAI, Google, and most code editors have adopted it. Connecting our MCP to your AI assistant means it can read live whale data without copy-paste. You stay in your conversation; the AI fetches what it needs.
How is this different from Glassnode's MCP server?
Glassnode's MCP exposes 6 aggregate-metric tools for BTC. Ours has 30 tools covering BTC + ETH, with per-address forensics (cluster, MVRV, history) that Glassnode doesn't surface. We also have OAuth click-to-install (no API-key copy-paste) and a permanent free tier (no credits required). Read the full comparison via swiss-whale://help/comparison.
Is the Free tier really free, forever?
Yes. Anonymous Free tier is 1,000 calls per 24 hours with a 90-day Bearer token. No credit card, no signup. Useful for research, individual exploration, and small applications. We keep it free permanently because the marginal cost is near-zero and it grows the AI ecosystem.
How do I sign in for Premium?
During the OAuth consent flow (after you click "Connect" in your MCP client), you can sign in three ways: Telegram (one click), Google (one click), or Email + Password (use the same login as the dashboard, or create a new account). Any of these gives you the 90-day Intelligence trial — 10,000 calls/day, full address history, 1-year token TTL. After 90 days, the tier auto-downgrades to Free unless you start a Stripe subscription (49 CHF/month).
What's the data freshness?
Whale transactions: 15-30 minutes behind live tip (mempool + confirmed blocks). Aggregates (cohort, exchange flows, HODL waves, SOPR, miner balances): refreshed daily at 03:00-04:00 UTC. Prices: 1 minute. Address-metrics-cache: refreshed daily, propagated cluster labels included since 2026-04-27.
Can I use this for academic research?
Yes — and we encourage it. Researchers at .edu / .ac.uk / EPFL / ETH / uni-* domains get free Research-tier access (100k calls/month, 10-year history, full CSV export). Email [email protected] from your institutional address with your research topic. Citation suggestion: "On-chain data provided by Swiss Whale Intelligence (btcwhalealerts.com)."
Is this financial advice?
No. Swiss Whale Intelligence is an information service under Swiss law. We provide on-chain data and forensic intelligence for independent analysis. We do not recommend trades, manage portfolios, or guarantee outcomes. Cryptocurrency carries significant risk. The MCP doctrine resource explicitly instructs AI clients to frame outputs as observations, never as trading signals.
GDPR / Swiss data compliance?
Server hosted in Switzerland (Hetzner CCX33, Zürich region). All on-chain data is public; we don't process any personal data of MCP users beyond OAuth (Telegram ID or Google sub for Premium login). See /privacy/ for full revDSG + GDPR compliance details. Tokens are revokable anytime via /oauth/revoke.
What if MCP isn't supported by my AI client?
Use the REST API instead — same data, Bearer-auth, OpenAPI 3.0 spec at /openapi.json. Or wrap our HTTP transport via npx mcp-remote https://mcp.btcwhalealerts.com/mcp for stdio-only clients (Zed, older versions of Claude Desktop, etc.).
Can I see the source / methodology?
Methodology is transparent. The MCP resource swiss-whale://docs/methodology explains the volume index, cluster heuristics, and entity labeling. The trading-experiment ledger is at /ledger/ with SHA256 verification per row. The /llms.txt file at /llms.txt is the canonical reference.