Quant Swarm MCP quant-swarm 0.5.0 Beta

Give your AI agent trading checks—not trading authority.

Quant Swarm is a set of MCP servers that let an agent check the evidence behind a signal, the order it is about to propose and the strategy behind both. When the evidence is thin, the tools say so instead of guessing.

Boundary. No tool places, cancels or routes an order. Output is analytics tooling, not investment advice.

  • Local-first Warden checks run on your machine over stdio
  • 26 tools
    warden 6 · data 13 · gym 4 · tournament 3
    Inspectable schemas, pinned release
  • One-time credits No subscription, no auto-renewal
  • Labelled fixtures Every example says what it is
Free access token

Get a token in seconds.

Name, work email and what you are building. No AUM band, no NDA, no sales call. Your token is emailed to you and shown once here.

Free vs paid

What paying adds.

The free plan runs the checkers and lite point-in-time (PIT) verdicts. Credit packs unlock full detail at every time horizon and the hosted comparisons against the champion. Every row below says what the free plan already includes and what paying adds.

Free plan versus paid credit packs, by capability
What you wantFree planPaid credit packs
Test whether an alternative-data signal is real Lite verdicts with pit.analysis: one symbol at a time
  • Full detail at every time horizon across up to 10 symbols, with historical as-of dates. The free plan answers in lite mode, one symbol at a time.
Benchmark a strategy against the champion Read the anonymised leaderboard (tournament.leaderboard). No submissions.
  • Benchmark your strategy against the champion on identical market paths.
  • Read the paired outcome against the champion: beats, loses or inconclusive, with the statistics behind it.
Stress a strategy across market regimes Regime snapshots only (market.regime); no replays or paired runs
  • Label the market regimes in a symbol's history and see how many episodes each regime really has.
  • Full hosted replays across five market regimes to show where a strategy breaks.
  • Compare two strategies head to head on identical market paths before a tournament run.
  • Price a hosted run before you spend any credits.
Read derived market context Pulse, sentiment, climate and regime snapshots: 10 symbols per call
  • Order-flow imbalance and toxicity measures per symbol.
  • A forward volume forecast as a ratio to the trailing 20-session average, per symbol.
  • Rank a whole symbol list on derived metrics in one call.
  • Percentile-rank one metric across up to 50 symbols per call.
Audit feature provenance and candidate readiness Audit a manifest you declare (warden.audit_features)
  • Point-in-time feature vectors with provenance on every field, so leakage surfaces before a backtest does.
  • Names the exact inputs a promotion verdict needs, before you spend a tournament run.
Backfill history into your local cache Cache stats and offline mode: 365-day backfill
  • Backfill up to 2,530 days of history into your local cache in one request.
Plan limits 250 relay calls a month, 10 symbols per call Credit packs: 10k or 100k credits (90-day validity), one-time. 50 symbols per call, no monthly cap.
Pricing

Buy credits when you need them.

No subscription, no auto-renewal, no unlimited plan. One credit is the unit for everything that costs compute. Packs are valid for 90 days from purchase, and buying again extends the window. Both packs unlock the same Pro entitlement; the only difference is pool size.

Free

£0 no card needed

250 relay calls a month, 10 symbols per call, 365-day backfill.

  • All 5 free warden checkers, run locally
  • Derived market, sentiment and regime snapshots
  • pit.analysis in lite mode: one symbol at a time
  • Tournament leaderboard, cache and offline mode
  • No hosted compute
Get free token
Pro credits

£149 one-time

100,000 credits · 90-day validity

For heavy pipelines. Same tools as Starter, ten times the pool.

  • Alternative-data detail at every time horizon: 10 symbols, historical as-of dates
  • Benchmark against the champion: tournament submissions and verdicts
  • Hosted gym runs: regime fragility probes and paired previews
  • 13 paid tools · 50 symbols per call · full backfill window
  • Up to 500 private or 1,000 contributor tournaments if the whole pool is spent on tournaments
  • 0.149p per credit · never auto-renews

See everything paid adds →

When a pool is empty or past its window the token verifies as exhausted or expired and falls back to the free tool set. Refusals are structured 402 responses with the reason. Where applicable, VAT or other sales taxes are calculated and charged at checkout via Stripe Tax. The exact debit is shown at checkout and in each tool response; contribution is never preselected.

Rate card

Credit rate card with cost per unit at each pack price
UnitCreditsCost at StarterCost at ProNotes
Relay data call10.19p0.149pAny symbol count within your plan cap is one call. Listed separately from hosted compute.
Hosted single-shot tool10.19p0.149pfeatures.build, warden.promotion_verdict, gym.label_regimes, gym.estimate_cloud_run. Charged on the hosted endpoint only.
Hosted gym episode1 per episode0.19p0.149pgym.probe_fragility, gym.paired_preview. 5 regimes × per_regime × seeds, doubled for a paired preview.
Tournament run200£0.38£0.30Fixed price for the full paired run against the champion. Not metered per episode.
Tournament run, contributor100£0.19£0.15Genome or strategy contributor tiers, opted into at submission.
Local stdio tools, leaderboard, verdict polling0£0£0Local execution is never metered.

Estimate a job

Static estimate from the published rates. Actual debit is shown at checkout and in each tool response.

Total credits-
Episode credits-
Smallest pack that covers it-

Three checks

Check the evidence. Check the order. Check the strategy.

What an answer looks like

Input, verdict, violations, limits.

Each example is a recorded tool response, rendered as the structured verdict your agent receives. Nothing here calls a live server. Supplied inputs only: broker state is not verified.

Input
{
  "order": {
    "symbol": "TSLA",
    "notional": 65000,
    "side": "buy"
  },
  "equity": 100000,
  "current_positions": {}
}
Result
VerdictREJECTED
Violations
  • position_pct 0.6500 > cap 0.25
  • gross_pct 0.6500 > cap 0.6
Limits applied
Max position
25% of equity
Max gross exposure
60% of equity
Post-order position
65%

Supplied inputs only. Broker state is not verified, and the tool cannot place or route an order.

Full recorded JSON response
{
  "tool": "warden.validate_order",
  "verdict": "REJECTED",
  "violations": [
    "position_pct 0.6500 > cap 0.25",
    "gross_pct 0.6500 > cap 0.6"
  ],
  "post_position_pct": 0.65,
  "post_gross_pct": 0.65,
  "house_floors": {
    "max_position_pct": 0.25,
    "max_gross_exposure_pct": 0.6
  },
  "safety": "this server validates only - it cannot place, cancel, or route an order, and no tool exposes an order-placement code path"
}

Recorded fixture, not a live request quant-swarm 0.5.0 · source ee5dff6 (working tree, pre-tag) · recorded 2026-10-05

Input
{
  "symbols": [
    "AAPL"
  ],
  "as_of": "2026-06-01"
}
Result
VerdictSIGNIFICANT

AAPL: 2 of 9 family-horizon tests are SIGNIFICANT under the L1 gate (rolling IR > 0, BH q <= 0.05); the other 7 are not significant or not judged. (1 restricted families withheld)

Evidence
Horizon
1d
Rolling IR
1.1
Newey-West p
0.00001
Observations
52
BH q
0.0001
Coverage flag
Research-only

Tested family: dataset, metric and horizon, corrected across every family with Benjamini-Hochberg q ≤ 0.05 and Newey-West overlap correction. Significance is not future profitability.

Significance is not future profitability. Multiple-testing correction: Benjamini-Hochberg q <= 0.05 across every family tested.

Full recorded JSON response
{
  "headline": "AAPL: 2 of 9 family-horizon tests are SIGNIFICANT under the L1 gate (rolling IR > 0, BH q <= 0.05); the other 7 are not significant or not judged. (1 restricted families withheld)",
  "significant": 2,
  "tests": 9,
  "sample": {
    "horizon": "1d",
    "rolling_ir": 1.1,
    "p_value_two_sided": 0.00001,
    "n_obs": 52,
    "research_only": true,
    "hac_lag": 1,
    "bh_q": 0.0001,
    "harmonic_mean_p": 0.01,
    "status": "SIGNIFICANT",
    "significant": true,
    "explanation": "SIGNIFICANT: 1d rolling 52-week IR 1.1 > 0 on size/sector-neutralized metric vs neutralized returns, Newey-West two-sided p 1e-05 over 52 rolling IC observations (Newey-West lag 1), and the family passes the L1 gate (BH q 0.0001 <= 0.05, harmonic-mean p 0.01). RESEARCH-ONLY: the dataset covers under 50% of the universe - research evidence, not a tradable signal."
  }
}

Recorded fixture, not a live request quant-swarm 0.5.0 · source ee5dff6 (working tree, pre-tag) · recorded 2026-10-05

Input
{
  "genome": "<baseline test genome>",
  "seeds": [
    0,
    1,
    2,
    3
  ],
  "per_regime": 2
}
Result
VerdictFRAGILITY_REPORTUnderpowered: 16 episodes, minimum 20
Weekly return by regime
  • high vol-12.6 bps
  • drawdown0.0 bps
  • chop29.1 bps
  • melt up0.0 bps
  • gap heavy0.0 bps
Limits
Worst regime
high vol
Hard-constraint violations
0
Lookahead violations
0

Underpowered by design: a local preview is a measurement, not a verdict. Values rounded for display.

Full recorded JSON response
{
  "tool": "gym.probe_fragility",
  "verdict": "FRAGILITY_REPORT - local tools never issue promotion verdicts",
  "fidelity": "tier-A price subset (daily bars only; no alternative-data or LLM inputs)",
  "n_episodes": 16,
  "seeds": [
    0,
    1,
    2,
    3
  ],
  "per_regime": 2,
  "mean_weekly_bps": 8.25,
  "per_regime_bps": {
    "high_vol": -12.63,
    "drawdown": 0,
    "chop": 29.14,
    "melt_up": 0,
    "gap_heavy": 0
  },
  "worst_regime": "high_vol",
  "worst_regime_bps": -12.63,
  "max_gross_exposure": 0.6,
  "max_position_pct": 0.25,
  "hard_constraint_violations": [],
  "lookahead_violations": [],
  "underpowered": true,
  "power_note": "n=16 < MIN_EPISODES=20: no conclusion about promotion is possible from this sample - by design"
}

Recorded fixture, not a live request quant-swarm 0.5.0 · source ee5dff6 (working tree, pre-tag) · recorded 2026-10-05

Shadow Tournament

Your backtest is static. The champion you are measured against is not.

The hosted tournament replays your genome and the swarm’s current champion on identical market paths and reports a paired statistical outcome. It is a benchmark, not a promotion.

  1. Validatewarden.validate_genome checks the schema and returns the hash.
  2. Auditwarden.audit_features checks for leakage.
  3. Probegym.probe_fragility gives an underpowered local preview.
  4. Pricegym.estimate_cloud_run prices the hosted run.
  5. Submittournament.submit starts the paired run.
  6. Readtournament.verdict returns the outcome.

The benchmark

The hosted run replays both genomes across 5 labelled regimes (high volatility, drawdown, chop, melt-up, gap-heavy): 4 episodes per regime and 5 seeds, 100 paired episodes, on the hosted daily-bar panel. The champion is the swarm registry’s current champion genome. Local previews are capped at 8 seeds and labelled UNDERPOWERED.

Benchmark provenance

Champion
Registry champion, reported as champion_hash.
Panel
Hosted daily bars; symbol count and date range reported with each result.
Statistics
Wilcoxon signed-rank paired p-value, bootstrap 95% interval, per-regime deltas.
Seeds
Reported as seeds and per_regime in every result.

Outcome definitions

  • CHALLENGER_BEATS_CHAMPION At least 20 paired episodes, paired p ≤ 0.05, positive mean delta, non-negative worst-regime margin, and zero hard-constraint or lookahead violations.
  • CHALLENGER_LOSES Any hard-constraint or lookahead violation, or a significant negative delta.
  • INCONCLUSIVE Underpowered, or not statistically significant.

A win is not a promotion, a league seat or a forecast of future returns. The promotion gate (deflated Sharpe, PBO cap, trials ledger) stays inside the swarm’s registry.

Contribution tiers

Shadow Tournament contribution tiers
Tier Credits What is sent What happens to it
Private 200 Genome vector, hash Vector deleted once scored. Hash and outcome remain.
Genome contributor 100 Genome vector, hash, outcome Licensed to the swarm’s evolution loop as an external challenger under the same gates as internal mutants.
Strategy contributor 100 Genome vector plus strategy code as inert text Read by an external LLM API acting as processor; never executed. Raw code is discarded after successful review. If review is unavailable, raw code is kept in the job record until retried.

Contribution is opt-in per submission and never preselected. Terms: Shadow Tournament contributions. Retention of logs and managed backups beyond the job record is not described here and is covered by the privacy policy.

Eligibility: contributed genomes are considered for league seats under the swarm’s own gates. Submission does not guarantee a seat.

Check the evidence · pit.analysis

Know which signals are real, and which are noise.

For any underlying, every point-in-time (PIT) dataset | metric | horizon family comes back with a rolling information ratio, an overlap-corrected p-value, an observation count and an explicit verdict. A result is called significant only after multiple-testing correction.

SIGNIFICANT Survives Benjamini-Hochberg q ≤ 0.05 and the overlap correction.
NOT SIGNIFICANT A raw p-value under 0.05 is never enough on its own.
NOT JUDGED Fewer than 26 rolling observations, or stale. No claim is made.
RESEARCH-ONLY Dataset covers under 50% of the universe. Evidence, not a tradable signal.

How a family is validated

  1. Know-at dating. Each dataset is dated by the public release event, never a later revision.
  2. Neutralised rank IC. Metric and forward returns are both residualised on size and sector each day.
  3. Rolling 52-week IR with a 26-observation floor and at least 8 names per date.
  4. Overlap-corrected inference. Newey-West p-values, because forward windows overlap.
  5. Multiple-testing correction. Benjamini-Hochberg across every family tested.
  6. Negative controls. Sign-flip checks and a shuffled-date placebo on every run.

What is searched, and when it is knowable

Live counts from the current release-gated store. Family counts exclude licensed and diagnostic-only families.

SEC filings from the filing date. Earnings from the first 8-K. Dividends from declaration. Insider transactions from disclosure. Web attention and news from the next session. Short-sale volume from the next day. Macro series with release lags. Weather with a 5-day lag. Slow series from the vintage first seen.

Live counts load when the store is reachable.

Significance is not future profitability. A significant family still has to survive backtesting and promotion gates before it matters. Not investment advice.

Data flow

Local-first does not mean network-free.

Warden checks and local gym previews run on your machine. Anything that uses the relay or a hosted endpoint sends the inputs you pass. This is every case, including what is retained.

What runs where, what leaves your machine, and what is retained
OperationRuns whereLeaves your machineRetained
Warden checks over stdioYour machineNothingNothing
Warden checks on the hosted endpointHosted serviceThe order, manifest or genome you passMetering records per token. See the privacy policy.
Market data and pit.analysisRelay service, derived outputSymbols and as_of datePer-token call counts for quota and billing
Gym previews over stdioYour machineNothing if you pass your own barsNothing
Hosted gym episodesHosted serviceThe genome vector and any bars you passMetering records per token
Tournament, privateHosted serviceGenome vector, its hash, contribute flagVector deleted once scored. Hash and outcome remain.
Tournament, genome contributorHosted serviceGenome vector and outcomeLicensed to the swarm’s evolution loop under the terms
Tournament, strategy contributorHosted service plus an external LLM API acting as processorStrategy code as inert text, plus your disclosureNever executed. Raw code is discarded after successful review. If review is unavailable, raw code is kept in the job record until retried.
Signup and checkoutThis site and StripeName, work email, use case. Payment details go to Stripe only.Token record and purchase history

Licensing: MIT-licensed wrapper; source-available guardrail components; proprietary selection machinery remains separate. Access to the tools does not transfer any of it.

Tool catalog

Inspect every tool before you connect it.

The full catalog of the pinned quant-swarm==0.5.0 release: plan, where it runs, what it costs, what it sends and how it refuses. Input schemas are included in the page.

All 26 tools in quant-swarm 0.5.0
ToolServerPlanRunsPurpose
warden.validate_order swarm-warden-mcp Free Local or hosted Checks a proposed order against the house position and gross-exposure floors.
warden.audit_features swarm-warden-mcp Free Local or hosted Audits a feature manifest for lookahead leakage and point-in-time provenance violations.
warden.cost_check swarm-warden-mcp Free Local or hosted Converts a claimed gross edge into a net-of-cost figure under a pessimistic fill model.
warden.validate_genome swarm-warden-mcp Free Local or hosted Validates a strategy parameter vector (genome) against the bounded schema and returns its canonical hash.
warden.explain_sizing swarm-warden-mcp Free Local or hosted Walks through position sizing step by step, mirroring the live risk engine's sizing logic.
warden.promotion_verdict swarm-warden-mcp Pro Hosted Requests a promotion verdict for a candidate.
features.build swarm-data-mcp Pro Hosted Builds the exact feature vector for a symbol at a session date, with provenance for every field.
market.pulse swarm-data-mcp Free Local or hosted Derived technical snapshot per symbol: trend, volatility, oscillator, volume and regime signals.
market.sentiment swarm-data-mcp Free Local or hosted Derived sentiment snapshot for a symbol: headline count and an earnings flag.
market.climate swarm-data-mcp Free Local or hosted Area-specific weather research for each symbol's operating footprint.
pit.analysis swarm-data-mcp Free Local or hosted Tests whether an alternative-data signal is statistically real for a symbol, with an explicit verdict per family and horizon.
cache.warm swarm-data-mcp Pro Local Backfills history into the local cache for a universe of symbols.
cache.stats swarm-data-mcp Free Local Inventory of the local cache: rows per symbol, session bounds, depth in weeks and API-call accounting.
cache.offline swarm-data-mcp Free Local Toggles cache-only mode: no network access, reads served from cache, fetches refused.
market.regime swarm-data-mcp Free Local or hosted Causal regime label per symbol: high volatility, drawdown, chop, melt-up or gap-heavy.
market.microstructure swarm-data-mcp Pro Local or hosted Derived microstructure snapshot: order-flow imbalance and toxicity measures.
volume.forecast swarm-data-mcp Pro Local or hosted Derived volume forecast expressed as a ratio to the trailing 20-session average.
market.screen swarm-data-mcp Pro Local or hosted Ranked, derived-only screen across a symbol list.
market.rank swarm-data-mcp Pro Local or hosted Cross-sectional percentile rank of one derived metric across a symbol list.
gym.label_regimes swarm-gym-mcp Pro Local or hosted Labels causal market regimes over cached bars and reports the episode pool per regime, flagging thin pools.
gym.probe_fragility swarm-gym-mcp Pro Local or hosted Replays a genome over a capped episode-seed matrix and reports per-regime fragility.
gym.paired_preview swarm-gym-mcp Pro Local or hosted Paired champion-versus-challenger preview on identical market paths.
gym.estimate_cloud_run swarm-gym-mcp Pro Local or hosted Prices a hosted run before you spend credits.
tournament.submit swarm-gym-mcp Pro Hosted Submits a genome to the hosted Shadow Tournament: a paired replay against the swarm's champion on identical market paths.
tournament.verdict swarm-gym-mcp Pro Hosted Polls a Shadow Tournament job and returns the paired outcome against the champion.
tournament.leaderboard swarm-gym-mcp Free Local or hosted Anonymised Shadow Tournament board: champion rating and top challengers by ELO.
Show full specs for all 26 tools

warden.validate_order

FreeLocal or hostedsince 0.4.0

Checks a proposed order against the house position and gross-exposure floors.

Boundary. Validates supplied numbers only; it cannot place, cancel or route an order and does not read broker state.

Credits
0 credits. Runs locally over stdio or on the hosted endpoint.
Data sent
Hosted: the order, equity and current positions you pass. Local: nothing leaves your machine.
Coverage
Any symbol; the checker only sees the figures you supply.
Refusal states
REJECTED with the exact floor quoted for each violation.
Next step
warden.cost_check, then warden.explain_sizing.
Input schema
{
  "properties": {
    "order": {
      "additionalProperties": true,
      "description": "Proposed order: {symbol, notional, side: buy|sell}.",
      "title": "Order",
      "type": "object"
    },
    "equity": {
      "description": "Account equity (base currency) used for the exposure floors.",
      "exclusiveMinimum": 0,
      "title": "Equity",
      "type": "number"
    },
    "current_positions": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional {symbol: notional} map of current positions.",
      "title": "Current Positions"
    },
    "floor_overrides": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional per-fund overrides {max_position_pct, max_gross_exposure_pct}; the response always reports the deviation from the house floors.",
      "title": "Floor Overrides"
    }
  },
  "required": [
    "order",
    "equity"
  ],
  "title": "validate_orderArguments",
  "type": "object"
}

warden.audit_features

FreeLocal or hostedsince 0.4.0

Audits a feature manifest for lookahead leakage and point-in-time provenance violations.

Boundary. Audits the manifest you supply. It cannot see code or data you do not declare.

Credits
0 credits.
Data sent
Hosted: the feature manifest you pass. Local: nothing leaves your machine.
Coverage
Features declared in the manifest.
Refusal states
Lists each leaking or unprovenanced feature; nothing is silently passed.
Next step
warden.validate_genome.
Input schema
{
  "properties": {
    "manifest": {
      "description": "Feature manifest: [{name, source, value_ts, as_of}] to audit.",
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Manifest",
      "type": "array"
    },
    "tape_started": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional tape start date (YYYY-MM-DD); features predating it are flagged.",
      "title": "Tape Started"
    },
    "selected_symbols": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional challenger-selected symbols for the coverage check.",
      "title": "Selected Symbols"
    },
    "snapshot_universe": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional archived snapshot universe to measure coverage against.",
      "title": "Snapshot Universe"
    }
  },
  "required": [
    "manifest"
  ],
  "title": "audit_featuresArguments",
  "type": "object"
}

warden.cost_check

FreeLocal or hostedsince 0.4.0

Converts a claimed gross edge into a net-of-cost figure under a pessimistic fill model.

Boundary. A cost calculation on supplied inputs. It is not a backtest and not a forecast.

Credits
0 credits.
Data sent
Hosted: the edge and turnover inputs you pass. Local: nothing leaves your machine.
Coverage
Any strategy expressed as gross edge and turnover.
Refusal states
Reports NEGATIVE_AFTER_COSTS when the claimed edge does not survive costs.
Next step
warden.validate_order.
Input schema
{
  "properties": {
    "gross_edge_bps": {
      "description": "Claimed gross edge in basis points before costs.",
      "title": "Gross Edge Bps",
      "type": "number"
    },
    "spread_bps": {
      "description": "Average bid-ask spread in bps.",
      "minimum": 0,
      "title": "Spread Bps",
      "type": "number"
    },
    "slippage_bps": {
      "description": "Expected slippage in bps.",
      "minimum": 0,
      "title": "Slippage Bps",
      "type": "number"
    },
    "adverse_selection_bps": {
      "description": "Adverse-selection drag in bps.",
      "minimum": 0,
      "title": "Adverse Selection Bps",
      "type": "number"
    }
  },
  "required": [
    "gross_edge_bps",
    "spread_bps",
    "slippage_bps",
    "adverse_selection_bps"
  ],
  "title": "cost_checkArguments",
  "type": "object"
}

warden.validate_genome

FreeLocal or hostedsince 0.4.0

Validates a strategy parameter vector (genome) against the bounded schema and returns its canonical hash.

Boundary. Schema and bounds check only. A valid genome is not a good genome.

Credits
0 credits.
Data sent
Hosted: the genome vector you pass. Local: nothing leaves your machine.
Coverage
The published genome schema.
Refusal states
valid_genome false with the list of schema errors.
Next step
warden.audit_features, then gym.probe_fragility.
Input schema
{
  "properties": {
    "genome": {
      "additionalProperties": true,
      "description": "Genome object (bounded schema, versioned).",
      "title": "Genome",
      "type": "object"
    }
  },
  "required": [
    "genome"
  ],
  "title": "validate_genomeArguments",
  "type": "object"
}

warden.explain_sizing

FreeLocal or hostedsince 0.4.0

Walks through position sizing step by step, mirroring the live risk engine's sizing logic.

Boundary. Explains a sizing calculation. It does not recommend a position.

Credits
0 credits.
Data sent
Hosted: the sizing inputs you pass. Local: nothing leaves your machine.
Coverage
Any symbol; inputs are supplied by you.
Refusal states
Returns the binding floor and the clipped size when a cap applies.
Next step
warden.validate_order.
Input schema
{
  "properties": {
    "equity": {
      "description": "Account equity (base currency).",
      "exclusiveMinimum": 0,
      "title": "Equity",
      "type": "number"
    },
    "atr_14": {
      "description": "14-bar average true range of the instrument.",
      "exclusiveMinimum": 0,
      "title": "Atr 14",
      "type": "number"
    },
    "close": {
      "description": "Current close/reference price.",
      "exclusiveMinimum": 0,
      "title": "Close",
      "type": "number"
    },
    "weekend_approaching": {
      "default": false,
      "description": "True when the position would be held into the weekend (gross headroom applies).",
      "title": "Weekend Approaching",
      "type": "boolean"
    },
    "gross_exposure": {
      "default": 0,
      "description": "Current portfolio gross exposure in currency.",
      "minimum": 0,
      "title": "Gross Exposure",
      "type": "number"
    },
    "overnight_gap": {
      "default": 0,
      "description": "Expected overnight gap (price units); gaps above 1.2x ATR halve size.",
      "minimum": 0,
      "title": "Overnight Gap",
      "type": "number"
    },
    "floor_overrides": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional per-fund overrides; deviation from house floors is reported.",
      "title": "Floor Overrides"
    }
  },
  "required": [
    "equity",
    "atr_14",
    "close"
  ],
  "title": "explain_sizingArguments",
  "type": "object"
}

warden.promotion_verdict

ProHostedsince 0.4.0

Requests a promotion verdict for a candidate.

Boundary. Always INDETERMINATE_LOCAL. The selection machinery is not shipped, so no local promotion verdict exists.

Credits
1 credit per hosted call.
Data sent
The candidate summary you pass.
Coverage
Not applicable.
Refusal states
INDETERMINATE_LOCAL, naming the inputs that only the hosted tournament can supply.
Next step
tournament.submit.
Input schema
{
  "properties": {
    "challenger_genome": {
      "additionalProperties": true,
      "description": "The challenger genome under evaluation.",
      "title": "Challenger Genome",
      "type": "object"
    },
    "champion_genome": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional current champion genome; mutation tiers vs it are reported.",
      "title": "Champion Genome"
    }
  },
  "required": [
    "challenger_genome"
  ],
  "title": "request_promotion_verdictArguments",
  "type": "object"
}

features.build

ProHostedsince 0.4.0

Builds the exact feature vector for a symbol at a session date, with provenance for every field.

Boundary. Runs a no-lookahead guard. Fields without point-in-time evidence are returned as UNSCORABLE, never zero-filled.

Credits
1 credit per hosted call. Pro entitlement required.
Data sent
Symbol and as_of date.
Coverage
Covered symbol universe.
Refusal states
UNSCORABLE per field where provenance is missing.
Next step
warden.audit_features.
Input schema
{
  "properties": {
    "symbol": {
      "description": "Ticker symbol, e.g. AAPL.",
      "title": "Symbol",
      "type": "string"
    },
    "as_of": {
      "description": "Point-in-time session date (YYYY-MM-DD); every feature is a causal recomputation at this date, never a later revision.",
      "title": "As Of",
      "type": "string"
    }
  },
  "required": [
    "symbol",
    "as_of"
  ],
  "title": "build_featuresArguments",
  "type": "object"
}

market.pulse

FreeLocal or hostedsince 0.4.0

Derived technical snapshot per symbol: trend, volatility, oscillator, volume and regime signals.

Boundary. Derived ratios and labels only; no raw provider quotes.

Credits
1 relay call (free plan: 250 per month, 10 symbols per call).
Data sent
The symbols you ask about.
Coverage
Covered symbol universe; supply your own bars for other symbols.
Refusal states
Symbols outside coverage are reported, not estimated.
Next step
market.regime.
Input schema
{
  "properties": {
    "symbols": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional list of tickers to analyze via the shared cache/relay (default: none — supply symbols or your own bars).",
      "title": "Symbols"
    },
    "bars": {
      "anyOf": [
        {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional caller-supplied OHLCV rows [{symbol, ts, open, high, low, close, volume}] for symbols the shared cache does not carry.",
      "title": "Bars"
    }
  },
  "title": "market_pulseArguments",
  "type": "object"
}

market.sentiment

FreeLocal or hostedsince 0.4.0

Derived sentiment snapshot for a symbol: headline count and an earnings flag.

Boundary. Counts and flags only; no headline text.

Credits
1 relay call.
Data sent
The symbol you ask about.
Coverage
Covered symbol universe.
Refusal states
Reports missing coverage instead of returning a neutral value.
Next step
pit.analysis.
Input schema
{
  "properties": {
    "symbol": {
      "description": "Ticker symbol, e.g. TSLA.",
      "title": "Symbol",
      "type": "string"
    }
  },
  "required": [
    "symbol"
  ],
  "title": "sentiment_pulseArguments",
  "type": "object"
}

market.climate

FreeLocal or hostedsince 0.5.0

Area-specific weather research for each symbol's operating footprint.

Boundary. Research context. Weather coverage is partial and the output is not a trading signal.

Credits
1 relay call.
Data sent
The symbols you ask about.
Coverage
Symbols with a mapped operating footprint.
Refusal states
Reports symbols without a footprint mapping.
Next step
pit.analysis.
Input schema
{
  "properties": {
    "symbols": {
      "description": "Tickers whose operating-area climate to research (registry-covered weather-exposed underlyings, or any ticker you supply `areas` for).",
      "items": {
        "type": "string"
      },
      "title": "Symbols",
      "type": "array"
    },
    "areas": {
      "anyOf": [
        {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional caller-supplied operating areas for underlyings outside the shipped registry: [{symbol, name?, lat, lon, weight?}]. Weather is fetched ONLY for these made/sold geographies — never the listing exchange or HQ city.",
      "title": "Areas"
    }
  },
  "required": [
    "symbols"
  ],
  "title": "climate_snapshotArguments",
  "type": "object"
}

pit.analysis

FreeLocal or hostedsince 0.5.0

Tests whether an alternative-data signal is statistically real for a symbol, with an explicit verdict per family and horizon.

Boundary. Statistical significance is not future profitability. Verdicts describe a family's power across the universe, not a forecast for one name.

Credits
1 relay call. Free plan answers in lite mode; full per-horizon detail needs a funded Pro entitlement.
Data sent
Symbols and as_of date.
Coverage
Point-in-time datasets dated by when they were publicly knowable. Live counts are shown on this page.
Refusal states
SIGNIFICANT, NOT SIGNIFICANT, NOT JUDGED (below the observation floor) and RESEARCH-ONLY (under 50% coverage).
Next step
features.build.
Input schema
{
  "properties": {
    "symbols": {
      "description": "Underlying tickers to query (max 10). Results are per underlying.",
      "items": {
        "type": "string"
      },
      "title": "Symbols",
      "type": "array"
    },
    "as_of": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Point-in-time cutoff (YYYY-MM-DD, default today): release points after this date are ignored.",
      "title": "As Of"
    },
    "horizons": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Subset of the run's horizons, e.g. ['1d','1w','1m','6m'] (default: all).",
      "title": "Horizons"
    },
    "only_significant": {
      "default": false,
      "description": "Only return families with at least one SIGNIFICANT horizon (counts still cover everything).",
      "title": "Only Significant",
      "type": "boolean"
    },
    "max_families": {
      "default": 20,
      "description": "Max families returned per underlying, most significant first (1-100).",
      "maximum": 100,
      "minimum": 1,
      "title": "Max Families",
      "type": "integer"
    }
  },
  "required": [
    "symbols"
  ],
  "title": "pit_analysisArguments",
  "type": "object"
}

cache.warm

ProLocalsince 0.4.0

Backfills history into the local cache for a universe of symbols.

Boundary. Fetches derived data into your cache. It does not redistribute provider data.

Credits
1 relay call per request. Pro entitlement required.
Data sent
The symbols and history depth you request.
Coverage
Covered symbol universe; depth capped by plan.
Refusal states
ACCESS_REQUIRED or a 402 on the free plan or an exhausted pool.
Next step
gym.label_regimes.
Input schema
{
  "properties": {
    "universe": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional list of tickers to backfill (default: the swarm's 13-symbol universe).",
      "title": "Universe"
    },
    "years": {
      "default": 1,
      "description": "Years of daily history to backfill (max limited by the plan's backfill window).",
      "exclusiveMinimum": 0.1,
      "maximum": 10,
      "title": "Years",
      "type": "number"
    }
  },
  "title": "cache_warmArguments",
  "type": "object"
}

cache.stats

FreeLocalsince 0.4.0

Inventory of the local cache: rows per symbol, session bounds, depth in weeks and API-call accounting.

Boundary. Reports local state only.

Credits
0 credits.
Data sent
Nothing.
Coverage
Whatever is in your local cache.
Refusal states
Not applicable.
Next step
cache.warm.
Input schema
{
  "properties": {},
  "title": "cache_statsArguments",
  "type": "object"
}

cache.offline

FreeLocalsince 0.4.0

Toggles cache-only mode: no network access, reads served from cache, fetches refused.

Boundary. Changes local behaviour only.

Credits
0 credits.
Data sent
Nothing.
Coverage
Whatever is in your local cache.
Refusal states
Fetches are refused while offline mode is on.
Next step
cache.stats.
Input schema
{
  "properties": {
    "enabled": {
      "description": "True = cache-only mode (no network; reads from cache, fetches refused).",
      "title": "Enabled",
      "type": "boolean"
    }
  },
  "required": [
    "enabled"
  ],
  "title": "offline_modeArguments",
  "type": "object"
}

market.regime

FreeLocal or hostedsince 0.4.0

Causal regime label per symbol: high volatility, drawdown, chop, melt-up or gap-heavy.

Boundary. Labels use trailing data only. A label is a description, not a prediction.

Credits
1 relay call.
Data sent
The symbols you ask about.
Coverage
Covered symbol universe.
Refusal states
Reports insufficient history instead of guessing a label.
Next step
gym.label_regimes.
Input schema
{
  "properties": {
    "symbols": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional list of tickers to label via the shared cache/relay.",
      "title": "Symbols"
    },
    "bars": {
      "anyOf": [
        {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional caller-supplied OHLCV rows [{symbol, ts, open, high, low, close, volume}] for symbols the shared cache does not carry.",
      "title": "Bars"
    }
  },
  "title": "regime_snapshotArguments",
  "type": "object"
}

market.microstructure

ProLocal or hostedsince 0.4.0

Derived microstructure snapshot: order-flow imbalance and toxicity measures.

Boundary. Derived values only; no raw quotes.

Credits
1 relay call. Pro entitlement required.
Data sent
The symbols you ask about.
Coverage
Covered symbol universe.
Refusal states
Reports missing coverage per symbol.
Next step
volume.forecast.
Input schema
{
  "properties": {
    "symbol": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Ticker to analyze (served from the shared cache/relay); omit when passing your own bars.",
      "title": "Symbol"
    },
    "bars": {
      "anyOf": [
        {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional caller-supplied OHLCV rows [{symbol, ts, open, high, low, close, volume}].",
      "title": "Bars"
    }
  },
  "title": "microstructure_snapshotArguments",
  "type": "object"
}

volume.forecast

ProLocal or hostedsince 0.4.0

Derived volume forecast expressed as a ratio to the trailing 20-session average.

Boundary. A statistical forecast. It is not a price prediction.

Credits
1 relay call. Pro entitlement required.
Data sent
The symbols you ask about.
Coverage
Covered symbol universe.
Refusal states
Reports insufficient history.
Next step
market.screen.
Input schema
{
  "properties": {
    "symbol": {
      "description": "Ticker to forecast (served from the shared cache/relay).",
      "title": "Symbol",
      "type": "string"
    },
    "horizon_bars": {
      "default": 1,
      "description": "Number of sessions ahead to forecast (1-10).",
      "maximum": 10,
      "minimum": 1,
      "title": "Horizon Bars",
      "type": "integer"
    }
  },
  "required": [
    "symbol"
  ],
  "title": "volume_forecastArguments",
  "type": "object"
}

market.screen

ProLocal or hostedsince 0.4.0

Ranked, derived-only screen across a symbol list.

Boundary. Cross-sectional ranking, not a recommendation.

Credits
1 relay call. Pro entitlement required.
Data sent
The symbol list.
Coverage
Covered symbol universe.
Refusal states
Reports symbols that could not be scored.
Next step
market.rank.
Input schema
{
  "properties": {
    "symbols": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "List of tickers to screen (via the shared cache/relay); omit when passing your own bars.",
      "title": "Symbols"
    },
    "bars": {
      "anyOf": [
        {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional caller-supplied OHLCV rows [{symbol, ts, open, high, low, close, volume}].",
      "title": "Bars"
    },
    "criteria": {
      "default": "breakout",
      "description": "Screen criterion: breakout | momentum | volume | anomaly.",
      "title": "Criteria",
      "type": "string"
    }
  },
  "title": "screen_universeArguments",
  "type": "object"
}

market.rank

ProLocal or hostedsince 0.4.0

Cross-sectional percentile rank of one derived metric across a symbol list.

Boundary. A rank, not a signal to trade.

Credits
1 relay call. Pro entitlement required.
Data sent
The symbol list and the metric name.
Coverage
Covered symbol universe.
Refusal states
Reports symbols that could not be ranked.
Next step
market.screen.
Input schema
{
  "properties": {
    "symbols": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "List of tickers to rank (via the shared cache/relay); omit when passing your own bars.",
      "title": "Symbols"
    },
    "bars": {
      "anyOf": [
        {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional caller-supplied OHLCV rows [{symbol, ts, open, high, low, close, volume}].",
      "title": "Bars"
    },
    "metric": {
      "default": "momentum_20d",
      "description": "Metric to rank by: momentum_20d | volume_ratio_20d | atr_pct | rsi_14.",
      "title": "Metric",
      "type": "string"
    }
  },
  "title": "cross_sectional_rankArguments",
  "type": "object"
}

gym.label_regimes

ProLocal or hostedsince 0.4.0

Labels causal market regimes over cached bars and reports the episode pool per regime, flagging thin pools.

Boundary. Labels use trailing data only; thin pools are flagged UNDERPOWERED.

Credits
Hosted: 1 credit per call. Local: 0.
Data sent
Hosted: symbols or bars you pass. Local: nothing leaves your machine.
Coverage
Your supplied bars or the shared cache.
Refusal states
UNDERPOWERED flags where the episode pool is thin.
Next step
gym.probe_fragility.
Input schema
{
  "properties": {
    "symbols": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional tickers served from the shared cache; omit when passing your own bars.",
      "title": "Symbols"
    },
    "bars": {
      "anyOf": [
        {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional inline OHLCV rows [{symbol, ts, open, high, low, close, volume}].",
      "title": "Bars"
    },
    "min_symbols": {
      "default": 8,
      "description": "Minimum symbols required for a valid episode pool.",
      "maximum": 20,
      "minimum": 1,
      "title": "Min Symbols",
      "type": "integer"
    }
  },
  "title": "label_regimesArguments",
  "type": "object"
}

gym.probe_fragility

ProLocal or hostedsince 0.4.0

Replays a genome over a capped episode-seed matrix and reports per-regime fragility.

Boundary. Local previews are capped and labelled underpowered. Never a promotion verdict.

Credits
Hosted: 1 credit per simulated episode (5 regimes x per_regime x seeds). Local: 0.
Data sent
Hosted: the genome vector and bars you pass. Local: nothing leaves your machine.
Coverage
Your supplied bars or the shared cache.
Refusal states
UNDERPOWERED below 20 episodes; hard-constraint and lookahead violations are listed.
Next step
gym.paired_preview.
Input schema
{
  "properties": {
    "genome": {
      "additionalProperties": true,
      "description": "Genome to replay over the capped episode-seed matrix.",
      "title": "Genome",
      "type": "object"
    },
    "champion_genome": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional champion genome; tier-B/C mutations vs it refuse to score.",
      "title": "Champion Genome"
    },
    "seeds": {
      "anyOf": [
        {
          "items": {
            "type": "integer"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional episode seeds (max 8 locally).",
      "title": "Seeds"
    },
    "per_regime": {
      "default": 2,
      "description": "Episodes per regime (1 or 2 locally).",
      "maximum": 2,
      "minimum": 1,
      "title": "Per Regime",
      "type": "integer"
    },
    "symbols": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional tickers from the shared cache; omit when passing bars.",
      "title": "Symbols"
    },
    "bars": {
      "anyOf": [
        {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional inline OHLCV rows.",
      "title": "Bars"
    },
    "min_symbols": {
      "default": 8,
      "description": "Minimum symbols for a valid episode pool.",
      "maximum": 20,
      "minimum": 1,
      "title": "Min Symbols",
      "type": "integer"
    }
  },
  "required": [
    "genome"
  ],
  "title": "probe_fragilityArguments",
  "type": "object"
}

gym.paired_preview

ProLocal or hostedsince 0.4.0

Paired champion-versus-challenger preview on identical market paths.

Boundary. A preview on a capped matrix. It does not issue a promotion verdict.

Credits
Hosted: 1 credit per episode (doubled for two genomes). Local: 0.
Data sent
Hosted: the genome vectors you pass. Local: nothing leaves your machine.
Coverage
Your supplied bars or the shared cache.
Refusal states
UNDERPOWERED below 20 paired episodes.
Next step
tournament.submit.
Input schema
{
  "properties": {
    "champion_genome": {
      "additionalProperties": true,
      "description": "Current champion genome.",
      "title": "Champion Genome",
      "type": "object"
    },
    "challenger_genome": {
      "additionalProperties": true,
      "description": "Challenger genome to compare against the champion.",
      "title": "Challenger Genome",
      "type": "object"
    },
    "seeds": {
      "anyOf": [
        {
          "items": {
            "type": "integer"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional episode seeds (max 8 locally).",
      "title": "Seeds"
    },
    "per_regime": {
      "default": 2,
      "description": "Episodes per regime (1 or 2 locally).",
      "maximum": 2,
      "minimum": 1,
      "title": "Per Regime",
      "type": "integer"
    },
    "symbols": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional tickers from the shared cache; omit when passing bars.",
      "title": "Symbols"
    },
    "bars": {
      "anyOf": [
        {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional inline OHLCV rows.",
      "title": "Bars"
    },
    "min_symbols": {
      "default": 8,
      "description": "Minimum symbols for a valid episode pool.",
      "maximum": 20,
      "minimum": 1,
      "title": "Min Symbols",
      "type": "integer"
    }
  },
  "required": [
    "champion_genome",
    "challenger_genome"
  ],
  "title": "paired_previewArguments",
  "type": "object"
}

gym.estimate_cloud_run

ProLocal or hostedsince 0.4.0

Prices a hosted run before you spend credits.

Boundary. An estimate from the published rate card, not a quote for other work.

Credits
Hosted: 1 credit per call. Local: 0.
Data sent
Hosted: seeds, per_regime and genome count.
Coverage
Not applicable.
Refusal states
Rejects geometries above the caps.
Next step
gym.probe_fragility.
Input schema
{
  "properties": {
    "seeds": {
      "anyOf": [
        {
          "items": {
            "type": "integer"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional episode seeds (default [0..4]).",
      "title": "Seeds"
    },
    "per_regime": {
      "default": 4,
      "description": "Episodes per regime (default 4 on the hosted side).",
      "maximum": 10,
      "minimum": 1,
      "title": "Per Regime",
      "type": "integer"
    },
    "n_genomes": {
      "default": 1,
      "description": "Number of genomes in the run.",
      "maximum": 100,
      "minimum": 1,
      "title": "N Genomes",
      "type": "integer"
    }
  },
  "title": "estimate_cloud_runArguments",
  "type": "object"
}

tournament.submit

ProHostedsince 0.4.0

Submits a genome to the hosted Shadow Tournament: a paired replay against the swarm's champion on identical market paths.

Boundary. Returns a paired statistical outcome. A win is not a promotion, a league seat or a forecast of future returns.

Credits
200 credits, or 100 with contribute=true. Pro entitlement required.
Data sent
The genome vector, its hash and the contribute flag. Never symbols, bars, features, orders or code unless you opt into the strategy tier.
Coverage
The hosted daily-bar panel.
Refusal states
ACCESS_REQUIRED or a 402 with the reason; failed runs refund the credits.
Next step
tournament.verdict.
Input schema
{
  "properties": {
    "genome": {
      "additionalProperties": true,
      "description": "Genome parameter vector (public schema) to score against the swarm's live champion. Validate locally with warden.validate_genome first.",
      "title": "Genome",
      "type": "object"
    },
    "contribute": {
      "default": false,
      "description": "true: license the genome vector + outcome to the swarm's evolution loop as an external challenger and pay half price. Combine with `disclosure` and/or `strategy_code` for the strategy-contributor tier (leaderboard attribution + league-seat eligibility after review). false (default): the vector is deleted after scoring; only hash + outcome remain.",
      "title": "Contribute",
      "type": "boolean"
    },
    "disclosure": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Strategy-contributor tier: author-written decision-logic disclosure (version 1; fields hypothesis, universe, selection, entry_timing, risk_sizing, weekend_hold, expected_edge — describe how the strategy decides, never code, data dumps, or secrets). Requires contribute=true. Validated locally before anything is sent.",
      "title": "Disclosure"
    },
    "strategy_code": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Strategy-contributor tier: submit strategy CODE for STATIC LLM review. The code is treated as inert text — it is NEVER executed by us or the swarm; the hosted reviewer reads it with an LLM and stores only the structured explanation + a code hash (raw code is discarded after review). Remove keys/secrets first. Requires contribute=true.",
      "title": "Strategy Code"
    }
  },
  "required": [
    "genome"
  ],
  "title": "tournament_submitArguments",
  "type": "object"
}

tournament.verdict

ProHostedsince 0.4.0

Polls a Shadow Tournament job and returns the paired outcome against the champion.

Boundary. Outcome is CHALLENGER_BEATS_CHAMPION, CHALLENGER_LOSES or INCONCLUSIVE. None of them is a promotion.

Credits
0 credits. Pro entitlement required.
Data sent
The job id.
Coverage
Not applicable.
Refusal states
Pending or failed job states are reported as such.
Next step
tournament.leaderboard.
Input schema
{
  "properties": {
    "job_id": {
      "description": "job_id returned by tournament.submit.",
      "title": "Job Id",
      "type": "string"
    }
  },
  "required": [
    "job_id"
  ],
  "title": "tournament_verdictArguments",
  "type": "object"
}

tournament.leaderboard

FreeLocal or hostedsince 0.4.0

Anonymised Shadow Tournament board: champion rating and top challengers by ELO.

Boundary. Hashes are truncated and anonymised. Ratings describe replay results.

Credits
0 credits. Free on every plan.
Data sent
Nothing.
Coverage
All completed tournament runs.
Refusal states
Not applicable.
Next step
tournament.submit.
Input schema
{
  "properties": {},
  "title": "tournament_leaderboardArguments",
  "type": "object"
}

Sample control: cost check

Demonstration / Recorded fixture

Demonstration. This request is not sent to a server.

Request (tool arguments)


              

Response (recorded fixture)


              

Evidence and method
The response fixtures are the recorded outputs of the pinned checker version for the shown arguments. This is a cost calculation from the released checker, not a backtested trade result and not a promotion verdict. Any hosted-job handoff inside a response is inert text; nothing here executes it.

Starter prompts

Which alternative-data signals are significant for MSFT, and which aren’t?

pit.analysis · quotes each verdict verbatim

For NVDA: show web_attention, filings and insider families with rolling IR, Newey-West p and observation count.

pit.analysis · full detail

Is this order safe under the house floors? 12% single name, 55% gross.

warden.validate_order + cost check + sizing

Audit my genome for look-ahead and overlapping-window leakage before I claim anything.

warden.validate_genome + audit_features

Does my genome survive a drawdown regime? Label regimes, probe fragility and price the hosted run.

gym.label_regimes + probe_fragility + estimate_cloud_run

Which of my candidates beat the swarm’s champion, and what evidence backs the verdict?

tournament.leaderboard + verdict

Missing a metric you want tested?

Connect

Hosted endpoint or local process.

Tool schemas list without a token; tool calls need access configuration. Both options are shown below, and nothing here is connected to your IDE until you add it.

Point your client at the streamable-HTTP endpoint and send your token as Authorization: Bearer. Set SWARM_MCP_ACCESS_TOKEN in your environment first. Repeat with the data and gym endpoints as needed.

Hosted MCP endpoints
ServerToolsStreamable-HTTP endpoint
swarm-data-mcp13https://swarm-mcp-503318750546.europe-west1.run.app/mcp/data
swarm-warden-mcp6https://swarm-mcp-503318750546.europe-west1.run.app/mcp/warden
swarm-gym-mcp7https://swarm-mcp-503318750546.europe-west1.run.app/mcp/gym

Last verified 2026-10-05.

Claude Code

Setup documented · end-to-end check pending Last tested: not yet recorded

claude mcp add --transport http swarm-warden https://swarm-mcp-503318750546.europe-west1.run.app/mcp/warden --header "Authorization: Bearer $SWARM_MCP_ACCESS_TOKEN"
Config
Project or user scope, managed with the claude mcp command
Reload
Run /mcp inside Claude Code to confirm the server is connected.

Cursor

Setup documented · end-to-end check pending Last tested: not yet recorded

{
  "mcpServers": {
    "swarm-warden": {
      "url": "https://swarm-mcp-503318750546.europe-west1.run.app/mcp/warden",
      "headers": {
        "Authorization": "Bearer ${env:SWARM_MCP_ACCESS_TOKEN}"
      }
    }
  }
}
Config
~/.cursor/mcp.json (or .cursor/mcp.json in a project)
Reload
Reload the window, then enable the server under Settings, MCP.

Requires uv and Python 3.11 or later. The version is pinned so your client starts exactly quant-swarm==0.5.0. Replace swarm-warden-mcp with swarm-data-mcp or swarm-gym-mcp for the other servers.

Claude Code

Setup documented · end-to-end check pending Last tested: not yet recorded

claude mcp add swarm-warden --env SWARM_MCP_ACCESS_TOKEN=<your token> -- uvx --from quant-swarm==0.5.0 swarm-warden-mcp
Config
Project or user scope, managed with the claude mcp command
Reload
Run /mcp inside Claude Code to confirm the server is connected.

Cursor

Setup documented · end-to-end check pending Last tested: not yet recorded

{
  "mcpServers": {
    "swarm-warden": {
      "command": "uvx",
      "args": [
        "--from",
        "quant-swarm==0.5.0",
        "swarm-warden-mcp"
      ],
      "env": {
        "SWARM_MCP_ACCESS_TOKEN": "<your token>"
      }
    }
  }
}
Config
~/.cursor/mcp.json (or .cursor/mcp.json in a project)
Reload
Reload the window, then enable the server under Settings, MCP.

VS Code

Setup documented · end-to-end check pending Last tested: not yet recorded

{
  "servers": {
    "swarm-warden": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--from",
        "quant-swarm==0.5.0",
        "swarm-warden-mcp"
      ],
      "env": {
        "SWARM_MCP_ACCESS_TOKEN": "<your token>"
      }
    }
  }
}
Config
.vscode/mcp.json
Reload
Use MCP: List Servers, then start the server.

Claude Desktop

Setup documented · end-to-end check pending Last tested: not yet recorded

{
  "mcpServers": {
    "swarm-warden": {
      "command": "uvx",
      "args": [
        "--from",
        "quant-swarm==0.5.0",
        "swarm-warden-mcp"
      ],
      "env": {
        "SWARM_MCP_ACCESS_TOKEN": "<your token>"
      }
    }
  }
}
Config
claude_desktop_config.json (Settings, Developer, Edit Config)
Reload
Quit and reopen Claude Desktop.
Evidence and security

What is tested, and what is not claimed.

Parity-tested floors

The Python checker floors are parity-tested against the C# risk engine and the infrastructure configuration. Parity describes the numeric floors, not the result of any strategy.

Sufficiency is not eligibility

Having enough episodes to be judged is not the same as being eligible for promotion. PBO and deflated Sharpe are not supplied by episode count.

Derived outputs only

Tools return ratios, ranks, labels and counts, never raw provider quotes or headline text. You can supply your own bars for symbols we do not carry.

Client verification status

Each client setup is documented from that client’s own configuration format and syntax-checked. An end-to-end run of each client is pending; the connect section records the current status per client (page updated 5 Oct 2026).

Endpoint status

The hosted endpoints run on Cloud Run. Branded 1.21initiative.com endpoints are planned and not deployed yet—use the Cloud Run URLs shown in the connect section.

Fit

When to use this service.

Which need maps to which tool, or to no tool
You want to Use Note
Test whether a data signal is real pit.analysis Verdicts, not raw p-values
Check an order against position limits warden.validate_order Validates supplied numbers only
Find leakage in a feature pipeline warden.audit_features Audits the manifest you declare
Stress a strategy across regimes gym.probe_fragility Local previews are underpowered by design
Benchmark against the swarm champion tournament.submit The cloud_job in a local response is a spec, not a submission
Get raw prices or quotes A market data provider Output here is derived-only
Place a trade Unsupported No tool places, cancels or routes orders
FAQ

Questions buyers ask first.

Can any tool place a trade?

No. No tool can place, cancel or route an order, and no tool accepts broker credentials. The warden tools validate numbers you supply.

Does my data leave my machine?

Local stdio tools run on your machine. Market data tools send symbols to the relay, and hosted and tournament tools send the inputs you pass. The data-flow table on this page lists every case.

Is there a subscription?

No. The free plan costs nothing. Credit packs are one-time payments of £19 or £149, valid for 90 days, and never auto-renew.

Does winning the Shadow Tournament mean a strategy is ready to trade?

No. A win is a paired statistical outcome on replayed market paths. It is not a promotion, a league seat or a forecast of future returns.

What is the difference between Starter and Pro credits?

Pool size only. Both unlock the same Pro entitlement while the pool is funded and unexpired. When it is empty or past 90 days the token falls back to the free tool set.

Which clients work?

Any MCP client that supports stdio or streamable HTTP should connect. The connect section records when each client was last tested; none is marked verified yet.

I already have a free token. What happens when I buy credits?

Buy with the same email address and the credits are added to your existing token; no new token is issued. If this browser already holds your token, the Buy buttons skip the email form and link the purchase to that token directly.

Is this investment advice?

No. The tools are analytics software. Results from simulations and replays have limitations and do not guarantee future results.

Glossary

Genome (strategy)
A strategy’s parameter vector: the exact bounded set of numbers that define one strategy. Tools validate and replay it; they never hold your code.
Champion
The swarm registry’s current best strategy. Tournament runs replay your genome against it on identical market paths.
Swarm
The hosted system that evolves and rates strategies from submitted genomes under its own promotion gates.
Warden
The family of checking tools: order floors, cost checks, sizing, genome validation and feature audits. All run locally over stdio.
Elo (rating)
A rating from paired wins and losses within a declared pool, like chess ratings. It describes replay results, not expected returns.
BH q (Benjamini-Hochberg)
A corrected significance threshold used when many signals are tested at once, so a 5% false-positive rate does not become a near-certainty across hundreds of tests.
PIT (point-in-time)
Data dated by when it was publicly knowable, never backfilled from later revisions. PIT tests ask what a decision-maker could actually have seen.
Regime
A labelled market state (high volatility, drawdown, chop, melt-up, gap-heavy) derived from trailing data only.

Start with the free checks.

Get a token, connect a client, and run the first call. No card required.