WhaleSignal MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@WhaleSignal MCP What's the conviction score on AMZN right now?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
WhaleSignal MCP
Turn raw Unusual Whales data into one decision-ready conviction score — spoken in plain English to any AI.
Conviction heatmap rendered by scripts/render_heatmap.py from the actual /api/rank --demo output (same code the web dashboard serves). Run python -m whalesignal.web --demo for the interactive version. Full terminal tour: docs/DEMO.md.
Unusual Whales already ships a great hosted MCP that returns raw data. WhaleSignal goes one step further: it fuses six Unusual Whales datasets into a single explainable 0–100 conviction score per ticker, so an LLM (or a human) gets an answer, not a spreadsheet.
Ask Claude / Cursor / ChatGPT: "What's the conviction on AMZN?" and get this (actual --demo output):
== AMZN — Strong Bullish (BULLISH) ==
[#########################-----] 83.1/100 coverage 100%
sub-signals:
- options_flow_alerts +0.68 w=0.30
- net_premium +1.00 w=0.28
- options_volume +0.84 w=0.14
- dark_pool +0.09 w=0.12
- gamma_regime +0.50 w=0.10
- congress +0.00 w=0.06
why:
* net_premium: bullish (+1.00)
* options_flow_alerts: bullish (+0.68)
* options_volume: bullish (+0.84)
* gamma_regime: bullish (+0.50)
* dark_pool: bullish (+0.09)Numbers above are deterministic synthetic demo data (seeded per ticker), reproducible with
python -m whalesignal.cli AMZN --demo. Different tickers produce different scores; e.g.NVDAis24.3 / Strong Bearish.
Why it can win
It's an answer, not a dump. Judges see instant, explainable signals — every score ships with a per-signal breakdown and a rationale. No black boxes.
Data fusion is the moat. Options flow alerts + net premium + call/put volume + dark pool accumulation + dealer gamma regime + congressional trades, blended with tunable weights.
Fails honestly. A bad/expired token (401) surfaces as an error — never a fake neutral score. Permission-gated (403) or transient endpoint failures drop just that one sub-signal and weights renormalise. The score never silently lies.
Correct aggregation. Cumulative intraday series (net premium, Market Tide) use the latest snapshot, not a sum of snapshots.
Honest math. Where directionality is ambiguous (dark pool without NBBO, gamma magnitude), we use conservative sign-only contributions instead of fake precision.
Uses real endpoints only. Built straight off the official
skill.mdwhitelist — zero hallucinated routes, correctAuthorization+UW-CLIENT-API-ID: 100001headers, all GET.Proven against real payloads. The extractors read the actual UW field names (
total_ask_side_prem,call_gamma_oi,amountsranges …); tests replay the official example responses through the realUWClient(viahttpx.MockTransport) — the same code path live data uses.Bounded & efficient. A
MAX_TICKERScap plus a shared (fetch-once) congressional feed and a concurrency semaphore keep a batch from bursting the rate limit.Tested logic. 34 tests, all runnable with no API key and no network.
Related MCP server: Trading Volatility MCP
The signals
Sub-signal | Endpoint | What it measures |
|
| Aggressive call vs put whale premium |
|
| Cumulative net call vs net put premium |
|
| Call/put volume balance (P/C ratio) |
|
| Accumulation vs distribution off-exchange |
|
| Dealer long/short gamma (stability) |
|
| Recent congressional buys vs sells |
Weights live in whalesignal/config.py (ConvictionWeights) — tune to taste.
Try it in 10 seconds (no API key)
WhaleSignal ships a demo mode: a deterministic synthetic data source with the exact
same interface as the live client, so the whole fetch -> fuse -> score pipeline runs
offline. Great for demos and CI; output is clearly stamped ** DEMO DATA **.
git clone https://github.com/kvandre12-commits/whalesignal-mcp.git
cd whalesignal-mcp
python3 -m venv .venv && . .venv/bin/activate
pip install -r requirements.txt
python -m whalesignal.cli NVDA AAPL TSLA AMZN MSFT --demoWhaleSignal ranking (5 tickers, best first):
1. AMZN 83.1 Strong Bullish
2. AAPL 77.0 Strong Bullish
3. MSFT 53.4 Neutral / Mixed
4. NVDA 24.3 Strong Bearish
5. TSLA 23.2 Strong BearishOne-call written market briefing
python -m whalesignal.cli --brief --demo # default watchlist
python -m whalesignal.cli NVDA AMD AMZN --brief --demoWhaleSignal Market Briefing - 2026-09-18 [DEMO DATA - synthetic, not live]
========================================================
Market pulse: RISK-ON / BULLISH. Net call premium $4.62M, net put premium -$4.60M.
Whales leaning bullish: AMZN (83), AMD (82), AAPL (77).
Whales leaning bearish: NVDA (24), TSLA (23), META (20).
Top conviction: AMZN - Strong Bullish (83.1/100). net_premium: bullish (+1.00); options_flow_alerts: bullish (+0.68).
Congress desk: 19 buys vs 10 sells recently. Notable: Buy NVDA ($100,001 - $250,000); ...Web dashboard (conviction heatmap)
A zero-dependency (stdlib-only) single-page dashboard: a bullish/bearish heatmap of your watchlist plus the live market briefing. Click any tile for its sub-signal breakdown and rationale.
python -m whalesignal.web --demo # then open http://127.0.0.1:8000
python -m whalesignal.web --port 8000 # live (needs UW_API_KEY)Endpoints (reuse the same analysis code as the CLI + MCP server):
GET /, GET /api/rank?tickers=..., GET /api/briefing?tickers=....
Going live (with an API key)
cp .env.example .env
# edit .env and set UW_API_KEY=<your token>
python -m whalesignal.cli NVDA
python -m whalesignal.cli NVDA AAPL TSLA --rank --top 3Run the MCP server
python -m whalesignal.server # live (needs UW_API_KEY)
WHALESIGNAL_DEMO=1 python -m whalesignal.server # demo data, no key neededConnect an MCP client (Claude Desktop / Cursor / VS Code)
Add to your MCP client config (adjust the absolute paths):
{
"mcpServers": {
"whalesignal": {
"command": "/data/data/com.termux/files/home/uw-challenge/.venv/bin/python",
"args": ["-m", "whalesignal.server"],
"env": { "UW_API_KEY": "your-uw-api-token" }
}
}
}Then ask: "Use whalesignal to rank my watchlist: NVDA, AMD, TSLA, PLTR."
MCP tools exposed
Tool | Description |
| Full fused 0–100 conviction with breakdown + rationale |
| Rank several tickers, highest conviction first |
| One-call written daily brief: market pulse + ranked watchlist + notable congress trades |
| Raw unusual options flow alerts |
| Recent dark pool prints |
| Overall market sentiment from Market Tide |
| Recent congressional trades |
Architecture (SOLID, tiny files)
whalesignal/
config.py # single source of truth: base URL, endpoints, weights
client.py # async UW API client (auth, retries, data unwrap) + client factory
demo.py # DemoClient: deterministic synthetic data, same interface as client
signals.py # PURE scoring math — no network, fully unit-tested
analysis.py # concurrent fetch + fuse (the I/O + logic seam)
briefing.py # market_briefing: pure summarizers + composer, async orchestrator
server.py # thin MCP adapter (works on mcp 1.x FastMCP and 2.x MCPServer)
cli.py # human-friendly terminal demo
web.py # stdlib-only dashboard server (heatmap + JSON endpoints)
dashboard.html# single-page heatmap front-end (no build step, no CDN)
tests/
test_signals.py # pure scoring math (no key, no network)
test_demo_pipeline.py # full fetch->fuse pipeline via DemoClient
test_briefing.py # briefing summarizers + composer
test_web.py # web ticker parsing + asset presence
test_fixtures.py # REAL API example payloads -> signals + UWClient (MockTransport)
fixtures/*.json # official UW example responses (real field names/envelopes)
scripts/
demo.sh # guided terminal tour (synthetic data)
render_heatmap.py # render the heatmap SVG from real /api/rank outputTesting & linting
python tests/test_signals.py # standalone, no deps, no key, no network
pytest -q # or, with pytest installed (34 tests)
ruff check whalesignal tests # lint (config in pyproject.toml)
./scripts/demo.sh # full guided demo tour on synthetic data34 tests, no API key and no network required:
Pure scoring math on hand-built cases.
Full demo pipeline (fetch -> fuse) via
DemoClient.Live-compatibility fixtures — the official UW example payloads (real field names and envelopes) replayed through the pure signals and through the real
UWClientusinghttpx.MockTransport, verifying auth headers +dataunwrap + correct field reads.Briefing composer and web layer.
Disclaimer
WhaleSignal is an analytics tool, not financial advice. Signals are heuristics over market data and can be wrong. Do your own research.
Available Tools
7 toolscongress_tradesA
Recent congressional trades, optionally filtered to one ticker.
Inputs: limit, ticker. Returns: object
conviction_scoreA
Composite 0-100 bullish/bearish conviction for a ticker.
Fuses options flow alerts, net premium, call/put volume, dark pool accumulation, dealer gamma regime and recent congressional trades into one explainable score with per-signal breakdown and a plain-English rationale.
Inputs: ticker (required). Returns: object
dark_poolC
Recent dark pool prints for a ticker.
Inputs: ticker (required), limit. Returns: object
flow_alertsC
Raw unusual options flow alerts for a ticker (whale trades).
Inputs: ticker (required), limit, min_premium. Returns: object
market_briefingA
One-call plain-English daily market brief.
Blends Market Tide sentiment, WhaleSignal conviction ranking over a watchlist,
and notable congressional trades into a written narrative plus structured data.
Pass your own tickers list or use the default liquid-name watchlist.
Inputs: top, tickers. Returns: object
market_pulseB
Overall market sentiment from Unusual Whales Market Tide (net premium flow).
Inputs: no named parameters. Returns: object
rank_watchlistB
Rank a watchlist of tickers by WhaleSignal conviction score (highest first).
Inputs: tickers (required), top. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 7 tools
Each tool has a distinct primary role: raw signal viewers (flow_alerts, dark_pool, market_pulse, congress_trades), composite scoring (conviction_score), ranking (rank_watchlist), and narrative output (market_briefing). The only mild overlap is that market_briefing includes ranking and congressional-trade data, but its output format and intent are clearly different.
The naming styles are mixed: rank_watchlist uses verb_noun, while most others use noun or noun_noun forms like flow_alerts, dark_pool, and market_briefing. Snake_case is consistent, but the lack of a uniform verb or part-of-speech pattern makes the set feel somewhat ad hoc.
Seven tools is a well-scoped size for a market-intelligence server. Each tool maps to a meaningful capability without redundancy or bloat.
The surface covers raw whale-flow data, market sentiment, congressional trades, composite conviction scores, watchlist ranking, and a briefing. Minor gaps exist around deeper drill-downs, such as standalone dealer-gamma or historical conviction breakdowns, but core workflows are not blocked.
Maintenance
Related MCP Connectors
Unified financial infrastructure connecting AI agents directly to trade live/demo brokerage accounts, Web3 non-custodial wallets, real-time market data across equities, ETFs, crypto, forex, options, DeFi swaps, and prediction markets, institutional research feeds, and algorithmic strategy backtesters.
The full TraderMatrix market-data connector for Claude, Cursor and any MCP client. 51 tools: scored and tiered unusual options activity, dealer gamma (GEX), Apex levels and gamma pockets, IV rank, sector flow, dark-pool net-notional rollups, market health and macro regime, gap-continuation and breakout signals, wheel and CSP screeners, a one-call ticker snapshot, and your own watchlists. Needs a TraderMatrix API key (OAuth sign-in works for Claude web and mobile). A free, no-key connector with the gapper scanner and Market Health tools is listed separately as TraderMatrix Free.
Options analytics for AI assistants: chains, IV rank, VRP, Greeks, GEX, expected moves, screeners.
Market data, filings, fundamentals, macro, news and research runs for AI assistants.
Related MCP Servers
- AlicenseCqualityDmaintenanceProvides access to the Unusual Whales API for real-time financial data, options flow analysis, dark pool activity, and congressional trading tracking. It enables users to perform comprehensive market intelligence and stock analysis across 33 different tools.3346 npm4MIT
- AlicenseAqualityDmaintenanceEnables AI agents to discover and retrieve options market-structure data (GEX, gamma flip levels, dealer positioning, skew, max pain, expected-move levels, options flow, and ranked trade setups) from Trading Volatility's public API via natural language.171MIT
- AlicenseBqualityBmaintenanceProvides access to Unusual Whales market data including options flow, dark pool activity, congressional trades, and more via natural language queries.1620 npm78MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to query and analyze stocks, ETFs, crypto, forex, commodities, company fundamentals, financial statements, market news, and economic data through 250+ tools, with dynamic, static, or full toolset modes.558 npmApache 2.0