quant-swarm
trading-swarm-mcp — the checkers that gate live capital, as MCP servers The pre-trade invariants and data assembly that guard live capital in the 1.21…
What it can do
- Features.Build: Exact FEATURE_ORDER feature vector for symbol at session as_of, with provenance per field. Runs the no-lookahead guard (every feature must equal a fresh causal recomputation at as_of)
- Market.Pulse: Derived-only technical snapshot: trend, volatility, oscillator, volume, and regime signals. Never returns raw open/high/low/close/volume or provider quote values — only ratios, percentil
- Market.Sentiment: Derived-only sentiment/news snapshot for one symbol: headline count, earnings flag, and day-change bucket. Never returns raw quote values or headline text — quantized signals only. N
What data it sees
Do you need an account
An API key from the service settings is required
trading-swarm-mcp — the checkers that gate live capital, as MCP servers
The pre-trade invariants and data assembly that guard live capital in the 1.21 Initiative trading swarm, packaged as Model Context Protocol (MCP) servers you can run locally — in Cursor, Claude Desktop, or Claude Code — against your own strategies.
No provider credentials. No DRM. No order-placement code path. And no unlimited plans: capacity is bounded by what you pay for, on purpose.
What it does
Three servers, extracted from the same code that gates real money every market day:
| Server | Tools (Free) | Tools (Pro) |
|---|---|---|
| swarm-warden-mcp — pre-trade invariant & leakage auditing | validate_order, cost_check, explain_sizing, validate_genome, audit_features |
request_promotion_verdict |
| swarm-data-mcp — point-in-time data assembly | market_pulse, sentiment_pulse, regime_snapshot, cache_stats, offline_mode |
build_features, cache_warm, microstructure_snapshot, volume_forecast, screen_universe, cross_sectional_rank |
| swarm-gym-mcp — regime-fragility probing | — | label_regimes, probe_fragility, paired_preview, estimate_cloud_run |
- Warden — validate a proposed order against the house floors (25% position cap, 60% gross), audit a feature manifest for lookahead leakage, convert a gross edge into net-of-cost reality, explain the live C# risk engine's sizing math step by step, and validate a genome against the bounded schema.
- Data — derived-only market analytics (trend/volatility/oscillator/volume percentile ranks + causal regime labels), point-in-time feature vectors with provenance guards, order-flow imbalance / VPIN toxicity / effective-spread snapshots, volume forecasts expressed as ratios (never raw counts), and cross-sectional ranking.
- Gym — label causal regimes, replay a genome on a capped episode-seed matrix and surface per-regime fragility, and estimate the hosted tournament run. Promotions are never issued locally — undecidable outputs name the exact missing inputs and hand off server-side.
The data policy that makes this trustworthy
- Derived-only. Responses contain ratios, percentile ranks, labels, buckets, and counts. Raw open/high/low/close/volume, provider quote values, and headline text are never echoed back. Tools accept optional caller-supplied
barsfor symbols the shared cache doesn't carry. - Runs on your machine. Your orders, features, and genomes never leave it. No tool can place, cancel, or route an order — there is no order-placement code path.
- No provider credentials. Data flows through the hosted relay under your token; you never need an Alpaca or Finnhub key.
Plans & billing
| Free | Credit packs | |
|---|---|---|
| Cost | £0, instant token | £19 — 10,000 calls · £149 — 100,000 calls |
| Validity | monthly allowance (~250 calls) | 90 days from purchase, no auto-renewal |
| Symbols/call | 10 | 50 |
| Backfill | 365 days | full window |
| Tools | warden checkers + derived snapshots | everything, including the gym |
Pro is credit-based by design — you buy a fixed pool of calls, use them at your own pace, and buy again when you need more. There is no subscription and no unlimited plan; the credit pool on your token is the only capacity you can consume. Credits are metered per call, expire 90 days after purchase, and stack — buying again extends your window.
Quickstart
Get a free token at https://1.21initiative.com/mcp/ (instant), then add the servers to your client:
{
"mcpServers": {
"swarm-data": { "command": "uvx", "args": ["--from", "trading-swarm-mcp", "swarm-data-mcp"], "env": { "SWARM_MCP_ACCESS_TOKEN": "" } },
"swarm-warden": { "command": "uvx", "args": ["--from", "trading-swarm-mcp", "swarm-warden-mcp"], "env": { "SWARM_MCP_ACCESS_TOKEN": "" } },
"swarm-gym": { "command": "uvx", "args": ["--from", "trading-swarm-mcp", "swarm-gym-mcp"], "env": { "SWARM_MCP_ACCESS_TOKEN": "" } }
}
}
How to connect
How to connect quant-swarm to Claude
The server address to paste into Claude settings:
https://quant-swarm--blink-kt.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect quant-swarm to ChatGPT
The server address to paste into ChatGPT settings:
https://quant-swarm--blink-kt.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect quant-swarm to Cursor
The server address to paste into Cursor settings:
https://quant-swarm--blink-kt.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (11)
Raw names from tools/list. Only developers need these.
| features.build | Exact FEATURE_ORDER feature vector for symbol at session as_of, with provenance per field. Runs the no-lookahead guard (every feature must equal a fresh causal recomputation at as_of) and the point-in-time provenance guards. Tier-B/C fields without recorded point-in-time evidence are returned as UNSCORABLE — never neutral-filled with 0.0. |
| market.pulse | Derived-only technical snapshot: trend, volatility, oscillator, volume, and regime signals. Never returns raw open/high/low/close/volume or provider quote values — only ratios, percentile ranks (trailing 1y), and causal regime labels. Pass `symbols` to use the shared cache/relay, or pass your own `bars` rows (same shape as get_bars) for symbols we don't carry. This is the recommended tool for general market analysis; not investment advice. |
| market.sentiment | Derived-only sentiment/news snapshot for one symbol: headline count, earnings flag, and day-change bucket. Never returns raw quote values or headline text — quantized signals only. Not investment advice. |
| cache.warm | Backfill history for a universe (default: the swarm's 13-symbol universe). After warming, every finalized session is immutable in cache — replays cost zero API calls. Requires network and a valid SWARM_MCP_ACCESS_TOKEN; refused in cache.offline mode. |
| cache.stats | Cache inventory: rows per symbol, session bounds, depth in weeks, API-call accounting. |
| cache.offline | Toggle cache-only mode: no network access; reads served from cache, fetches refused. |
| market.regime | Free tool — causal regime label per symbol (high_vol / drawdown / chop / melt_up / gap_heavy), derived from point-in-time bars with no lookahead. |
| market.microstructure | Derived-only microstructure snapshot: order-flow imbalance, VPIN toxicity bucket, and effective half-spread — percentile-ranked within the series. Pro tool. |
| volume.forecast | Derived-only volume forecast expressed as a ratio to the trailing 20-session average, with a 10th-90th percentile interval. Never returns raw share counts. Pro tool. |
| market.screen | Ranked, derived-only screen over the symbol list — cross-sectional percentile ranks, never raw prices or volumes. Pro tool. |
| market.rank | Cross-sectional percentile rank of one derived metric across the symbol list — no raw metric values returned. Pro tool. |