This MCP server provides AI-driven crypto buy/sell signal intelligence. It produces 0–100 scored signals for 20 assets by fusing multiple data dimensions into a single score set. Signals are refreshed every 15 minutes, and the service exposes a live API and a dashboard alongside an MCP endpoint.
Five independent data agents (whale flows, technicals, derivatives, narrative, market microstructure) each score every asset 0–100. A fusion engine combines them into a single composite signal with a directional label, momentum tracking, and an LLM-generated rationale. The system grades its own predictions at 24h and 48h horizons against actual price moves — no self-reported accuracy.
Why it's interesting
Per-asset weight learning via IC analysis. Each asset gets its own dimension weights, fitted from Spearman/Pearson/Kendall correlations between past dimension scores and forward returns. Different assets respond to different signals.
Walk-forward backtesting with FDR correction. Benjamini–Hochberg adjustment on indicator significance to avoid false discoveries when testing dozens of features.
Platt-scaled probability calibration. Raw scores → calibrated probabilities so "75" means a real 75% directional likelihood, not just a higher number than 70.
x402 HTTP micropayments. Paid endpoints settle $0.001 USDC on Base mainnet per call via Coinbase's CDP facilitator. Payment IS authentication — no API keys, no signup, no OAuth.
MCP-native. Exposes itself to Claude Desktop, Cursor, and any MCP-compatible client over SSE. AI agents can query it with natural language.
Adaptive regime gating. Abstain zone widens/narrows with the Fear & Greed index; bullish-bias contrarian boost is dampened in confirmed BTC downtrends.
Then prompt: "What's the BTC signal right now?" or "Show me top 3 buys."
Run locally
bash
git clone https://github.com/manavaga/web3-signals-mcp.git
cd web3-signals-mcp
cp .env.example .env# fill in REDDIT_CLIENT_ID, ANTHROPIC_API_KEY, etc.
pip install -r requirements.txt
python -m api # API on :8000
python -m orchestrator.runner --once # one fusion cycle
Snapshots are saved on every fusion cycle. At 24h and 48h each directional call is graded against the actual price move (CoinGecko + Binance). Neutral signals are skipped (only directional calls count). Accuracy is AVG(gradient_score) × 100 where gradient ∈ [0, 1] depending on whether the move was in the predicted direction and how large it was. See /performance/reputation for the live numbers.
Development notes
This codebase was built in pair-programming with Anthropic's Claude. Most commits have a Co-Authored-By: Claude trailer — kept intentionally to document the workflow. Architectural decisions, model choices (IC-based weighting, FDR correction, Platt scaling), and the production-readiness criteria (no-deploy-without-backtest hard rule, walk-forward embargoing) were human-driven; Claude was used for implementation, refactoring, and code review.
License
MIT
Install
Remote endpoint
SSE
Hosted server - connect over the network, no local install.