Today we're flipping the switch. 52 REST endpoints. 42 MCP tools. Live-Subscriptions with polling and webhook push. Free-tier with no credit card. API Pro at €9,99/month. API Power at €29,99/month.
One subscription covers both REST and MCP channels. That part is important — keep reading.
Why This Matters Now
AI agents need market data. Claude Desktop and Cursor users want Bitcoin signals inside their conversation, not in a separate browser tab. The DACH crypto-tooling landscape is sparse — there's CoinGecko, there's Glassnode for institutions, there's a long tail of free-but-stale dashboards, and not much in between.
We sit in that middle. Daily cycle data with editorial methodology docs. Backtest engines that actually run on real exchange candles. Strategy insights aggregated across thousands of community runs. The kind of stuff that makes sense in your AI workflow if you're building anything that touches crypto markets.
What We Shipped Today
Three channels, designed around the same data layer:
REST API — the workhorse. Bearer-token auth, Postgres-backed rate limits, per-endpoint quotas, structured errors. If you've ever used Stripe's or Resend's APIs, the shape feels familiar.
MCP Server — Claude Desktop and Cursor plug-and-play. The same Bearer token unlocks 42 tools. Tier mismatches return structured errors with upgrade_url so your agent knows how to recover. Tier gating is transparent: free-tier users see all 42 tools in discovery, calls that need higher tiers fail loud, not silently hidden.
x402 Pay-per-Call — coming Q3 2026. USDC settlement via Coinbase Facilitator. For agents that don't want a subscription, just want to pay $0.10 for a single backtest run.
Five Things You Can Build Today
1. Daily Heat Score for Your Dashboard
curl -H "Authorization: Bearer sk-arena-…" \
https://tradingstrategies.work/api/v1/arena-pulse/today
Returns a 0-100 daily score aggregated from 8 components (Bullmarket-Ampel, Fear & Greed, MVRV-Z, 200-WMA distance, Mayer Multiple, Altcoin Season, Funding Rate, Hash Ribbons). Band classification, color, deltas (7d, 30d), and a paragraph-long verdict in both German and English. Updated 07:55 UTC.
This is the free-tier endpoint we've been running publicly for months. Now with proper rate limits and tier echoes.
2. Claude Desktop Integration
Drop this into your claude_desktop_config.json:
{
"mcpServers": {
"backtesting-arena": {
"command": "C:\\PROGRA~1\\nodejs\\npx.cmd",
"args": [
"-y", "mcp-remote",
"https://tradingstrategies.work/api/mcp",
"--header",
"Authorization:Bearer sk-arena-…"
]
}
}
}
Now ask Claude: "What's the current BTC cycle phase and how is Arena Pulse trending over the last week?" It uses arena_get_cycle and arena_get_pulse_history and synthesizes the answer. No copy-paste, no JSON wrangling.
(Windows MSIX-install Gotcha: use the DOS-8.3 short path for npx.cmd to avoid the "C:\Program" space-in-path bug. Mac/Linux: just npx works.)
3. Live-Subscription with Webhook Push
You want to know when the BTC cycle band flips. Subscribe once, get pushed updates forever:
curl -X POST \
-H "Authorization: Bearer sk-arena-…" \
-H "Content-Type: application/json" \
-d '{
"delivery_method": "webhook",
"webhook_url": "https://your-app.com/webhooks/cycle"
}' \
https://tradingstrategies.work/api/v1/subscriptions/cycle-band
Or via MCP: arena_subscribe_cycle_changes. Same result, agent-driven.
We support 4 subscription types: signal-alert (any strategy/pair/timeframe), cycle-band, pulse-score threshold, bullmarket-stage. Pro tier: 3 active subscriptions. Power tier: 20. Daily evaluator pre-loads state, compares to your last seen value, fires updates only on actual change. No spam.
4. On-Demand Backtest in 5 Seconds
curl -X POST \
-H "Authorization: Bearer sk-arena-…" \
-H "Content-Type: application/json" \
-d '{
"strategy": "rsi_sma",
"pair": "BTCUSDT",
"interval": "1d",
"date_from": "2020-01-01",
"capital": 10000
}' \
https://tradingstrategies.work/api/v1/backtests/run
Returns CAGR, win rate, drawdown, equity curve points, trade-by-trade list. The same engine that powers the web dashboard, exposed sync via Pro tier (50/day) or Power (500/day).
5. Custom Report for Your Fund
# 1. Get a quote
curl -X POST -H "Authorization: Bearer sk-arena-…" \
-d '{"universe_id":"top-10-crypto","period":"4y"}' \
/api/v1/reports/quote
# → returns price (e.g. €18,40 for 10 viable pairs × 0.10 × 18.4 multiplier, clamped at 14.99-49.99)
# 2. Pay via web Stripe checkout (only place we don't expose programmatically — payment security)
# 3. Poll status
curl -H "Authorization: Bearer sk-arena-…" \
/api/v1/reports/jobs/{jobId}
# 4. Download when done
curl -H "Authorization: Bearer sk-arena-…" \
/api/v1/reports/{token}/download?format=pdf > report.pdf
PDF or Excel, generated server-side via Lambda Chromium, signed download URL with 30-day TTL.
Behind the Curtain
We tried to do this right. Some highlights:
Service-layer architecture — every endpoint is a thin wrapper around a pure-function service module in src/lib/api/services/*.ts. Same service, three channel-wrappers (REST, MCP, soon x402). One change, three channels updated. 27 service modules total.
Tier-gating via HOF — every v1 route uses createV1Handler({ requiredTier, rateLimitGroup, service }). Boilerplate stays minimal. Tier-mismatch returns 403 with upgrade_url, rate-limit returns 429 with retry_after_seconds. Errors are structured JSON, not HTML stack-traces.
One Bearer token, two channels — your API subscription covers both REST and MCP. We see this as the headline feature for agent developers: build the integration, ship it via MCP for direct Claude/Cursor users, also expose it via REST for everything else.
Postgres-backed rate limits — no Redis dependency. Atomic counter via INSERT … ON CONFLICT DO UPDATE. Scales for our expected 100k calls/day. If we ever need more, migration to Upstash is one swap.
Tier-staggered history range — Free gets 30 days of history. Pro gets a year. Power gets 10 years. Over-cap requests get clamped, not rejected. Cap is documented in OpenAPI spec.
Live-subscription state diffing — the trigger evaluator pre-loads global state (BTC cycle, Arena Pulse, Bullmarket Ampel) once per cron run, compares to each subscription's last_state JSONB. Initial pickup sets state without firing — no spam on first eval. Subsequent state-change with the configured direction filter fires the update.
Webhook push is best-effort — HTTPS-only, 10s timeout, response status tracked per update row. If your webhook is down, the update still lives in the polling queue. Belt-and-suspenders.
Pricing Rationale
We thought about this longer than maybe was reasonable.
The constraint: API Pro at €9,99/month is the same price as the consumer Web Pro tier. We wanted to keep it that way to avoid a confusing two-product matrix. Solution: position them as different products with different jobs.
Web Pro (€9,99) — you, a human, using the platform to backtest strategies and run alerts via email. UI-heavy.
API Pro (€9,99) — you, a developer, building a tool on top of our data. No UI access. Bearer-token only. Different value.
You can subscribe to both (some users do).
API Power (€29,99) — same as Pro but: 10× rate limits, full 10-year history, 20 live-subscriptions instead of 3, 5 custom-reports per month included. For agent builders who need volume.
What's Next
Phase 4 — x402 Pay-per-Call (Q3 2026) — agents who don't want a subscription. USDC settlement on Base (and Base Sepolia for testing). All snapshot endpoints will be $0.01 per call. Backtest triggers at $0.10. Universe-Backtests at $1.00 (async). We're shipping this once x402-next v2 stabilizes — we don't want to be the bleeding-edge user when payment plumbing is involved.
Phase 5 — Marketing (rolling) — this blog post is part of it. MCP registry listings (Lobehub, Smithery, mcp.so). ProductHunt + Hacker News submissions. We'll be on r/Bitcoin and r/algotrading. If you're reading this from one of those threads — hi.
Strategy Library Expansion — currently 19 strategies, all Bitcoin-and-crypto-tested. Stocks and ETFs are partial. Once we add 5-10 more validated strategies for other asset classes, we'll bump the universe coverage.
Volatility Insights v2 — current implementation does 5-15s page loads on cold cache. We're shipping a DB-column-based precomputed version. API-side this means a new /v1/insights/volatility returns instantly with a richer payload.
How to Get Started
- Sign up free at https://tradingstrategies.work/register — no credit card.
- Generate a key at
/dashboard/account/api-keys— Free tier, 60 req/h, 500/day. - Read the OpenAPI spec at https://tradingstrategies.work/openapi.json or the interactive docs at https://tradingstrategies.work/api-docs.
- For MCP: copy the Claude Desktop config snippet above, paste your token, restart Claude.
- For curl: any endpoint above, with your Bearer token.
If you build anything interesting, tag us on Bluesky or drop us a line at info@tradingstrategies.work. We don't have a dev-rel team — replies come from someone who can actually fix the bug or merge your PR.
A Note on Public Endpoints
We've had /api/arena-pulse/today and a handful of others running publicly without auth for months. They stay public. The UI uses them, third-party dashboards that have hard-coded those URLs keep working. The /api/v1/* variants give you tier-awareness, rate-limit headers, and structured errors — use those for programmatic access.
We treat the existing public endpoints as the "discovery surface" — agents that find us via web search hit those first, see something useful, and learn about the API-Key flow afterward. That funnel matters more than rate-limit purity.
Free tier, no credit card: Sign up · OpenAPI Docs · GitHub Issues
Bug reports welcome.