quant-swarm
PYPI · QUANT-SWARM · 4 COMPONENTS
Risk-first pre-trade checks, PIT data, leakage audits, and a Shadow Tournament vs a live champion.
Last scanned (2 hours ago)
Scores higher than 69% of PyPI servers
Category Finance and Payments
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security50
- Malware scan not yet available for this package.Unverified
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs setuptools.build_meta at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
- 1 of 36 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency84
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to blink1217/trading-swarm-mcp). View diagnostics → Pass
- License check failed: the license (MIT AND LicenseRef-Guardrails-Source-Available) isn't a recognized OSI-approved license. See how to fix → Fail
- Actively maintained (last published 5 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability81
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 2024 tokens (~119/item across 17 items; 13 tools + 4 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management63
- Stability observed for 19 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 13 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 15 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 4 Nov 26 +9
- Stability: unverified → 0.60 ▲ functional
- 30 Oct 26 −15
- Malware scan: pass → unverified ▼ security
- 29 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 26 Oct 26 −15
- Malware scan: pass → unverified ▼ security
- 23 Oct 26 0
- Security disclosure: unverified → fail ▼ functional
- 22 Oct 26 0
- Security disclosure: fail → unverified ▼ functional
- 17 Oct 26 +32
- Injection markers: unverified → pass ▲ security
- First check of Judged manipulation: pass security
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- Tool coverage: unverified → 100 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Schema quality: unverified → 100 ▲ functional
- First check of Destructive annotations: pass functional
- First check of Schema quality: fail functional
- First check of Tool coverage: 100 functional
- First check of Schema quality: good functional
- First check of Tool coverage: 100 functional
- First check of Schema quality: fail functional
- 14 Oct 26 0
- Tool safety: Tool safety not yet verified: this package could not be installed in a clean environment, so we have no tool text to scan. security
- Stability: Stability not yet verified: this package could not be installed in a clean environment, so we have no schema to compare. security
- Tool coverage: Tool coverage not yet verified: this package could not be installed in a clean environment, so we have no tool definitions to assess. functional
- Capabilities: Protocol version not yet verified: this package could not be installed in a clean environment, so we never saw its MCP handshake. functional
- Schema quality: Schema quality not yet verified: this package could not be installed in a clean environment, so we have no schema to assess. functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Analysed pypi/quant-swarm@0.5.0
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | pypi |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | blink1217/trading-swarm-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/blink1217/trading-swarm-mcp/.github/workflows/publish.yml@refs/tags/v0.5.0 |
| Rekor log index | 3109165272 |
| Predicate type | PyPI publish attestation https://docs.pypi.org/attestations/publish/v1 |
| Subject digest | sha256:4b7f5338e142b12974537961ed3a7c79a78c0b2e4ed73172d2796ce60f3ad1a3 |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | setuptools.build_meta |
Background: Why install scripts are a supply-chain risk →
Dependencies 36 packages
| Packages resolved | 36 |
|---|---|
| No linked repository | 1 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
cache.offline Toggle Offline Mode ~50
Toggle cache-only mode: no network access; reads served from cache, fetches refused.
| Name | Type | Req | Description |
|---|---|---|---|
| enabled | boolean | yes | True = cache-only mode (no network; reads from cache, fetches refused). |
| Name | Type | Req | Description |
|---|---|---|---|
| access | string | – | – |
| enabled | boolean | – | – |
| error | string | – | – |
| how | string | – | – |
| request_access_at | string | – | – |
| semantics | string | – | – |
| tool | string | – | – |
No examples provided.
cache.stats Cache Stats ~26
Cache inventory: rows per symbol, session bounds, depth in weeks, API-call accounting.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| access | string | – | – |
| error | string | – | – |
| how | string | – | – |
| offline_mode | boolean | – | – |
| per_symbol | object | – | – |
| request_access_at | string | – | – |
| tool | string | – | – |
No examples provided.
cache.warm Warm Cache ~110
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.
| Name | Type | Req | Description |
|---|---|---|---|
| universe | – | – | Optional list of tickers to backfill (default: the swarm's 13-symbol universe). |
| years | number | – | Years of daily history to backfill (max limited by the plan's backfill window). |
| Name | Type | Req | Description |
|---|---|---|---|
| access | string | – | – |
| error | string | – | – |
| escalation | object | – | – |
| how | string | – | – |
| immutability | string | – | – |
| limits | object | – | – |
| request_access_at | string | – | – |
| rows_upserted | integer | – | – |
| symbols | object | – | – |
| tool | string | – | – |
No examples provided.
features.build Build Feature Vector ~130
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.
| Name | Type | Req | Description |
|---|---|---|---|
| as_of | string | yes | Point-in-time session date (YYYY-MM-DD); every feature is a causal recomputation at this date, never a later revision. |
| symbol | string | yes | Ticker symbol, e.g. AAPL. |
| Name | Type | Req | Description |
|---|---|---|---|
| access | string | – | – |
| as_of | string | – | – |
| error | string | – | – |
| escalation | object | – | – |
| feature_order | array | – | – |
| how | string | – | – |
| limits | object | – | – |
| no_lookahead | string | – | – |
| provenance | array | – | – |
| request_access_at | string | – | – |
| symbol | string | – | – |
| tool | string | – | – |
| vector | object | – | – |
| violations | array | – | – |
No examples provided.
market.climate Operating-Area Climate Research ~207
Area-specific weather research for each symbol's operating footprint. Fetches the keyless Open-Meteo 14-day forecast AND the same 14 calendar days one year prior per operating area (where the product is made and/or sold), then exposure-weights into symbol aggregates. Returns derived sums/means/ratios/ counts/buckets per area and per symbol — never raw per-day series. A London forecast is never substituted for a product made and sold in New York. Free tool; no provider credentials needed. Not investment advice.
| Name | Type | Req | Description |
|---|---|---|---|
| areas | – | – | 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 listin… |
| symbols | array | yes | Tickers whose operating-area climate to research (registry-covered weather-exposed underlyings, or any ticker you supply `areas` for). |
| Name | Type | Req | Description |
|---|---|---|---|
| access | string | – | – |
| climate | object | – | – |
| covered | array | – | – |
| error | string | – | – |
| how | string | – | – |
| learn_more | string | – | – |
| methodology | string | – | – |
| not_investment_advice | boolean | – | – |
| registry_coverage | integer | – | – |
| request_access_at | string | – | – |
| source | string | – | – |
| tool | string | – | – |
| uncovered | array | – | – |
No examples provided.
market.microstructure Microstructure Snapshot ~93
Derived-only microstructure snapshot: order-flow imbalance, VPIN toxicity bucket, and effective half-spread — percentile-ranked within the series. Pro tool.
| Name | Type | Req | Description |
|---|---|---|---|
| bars | – | – | Optional caller-supplied OHLCV rows [{symbol, ts, open, high, low, close, volume}]. |
| symbol | – | – | Ticker to analyze (served from the shared cache/relay); omit when passing your own bars. |
| Name | Type | Req | Description |
|---|---|---|---|
| access | string | – | – |
| error | string | – | – |
| how | string | – | – |
| learn_more | string | – | – |
| methodology | string | – | – |
| not_investment_advice | boolean | – | – |
| request_access_at | string | – | – |
| signals | object | – | – |
| source | string | – | – |
| tool | string | – | – |
No examples provided.
market.pulse Market Pulse ~175
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bars | – | – | Optional caller-supplied OHLCV rows [{symbol, ts, open, high, low, close, volume}] for symbols the shared cache does not carry. |
| symbols | – | – | Optional list of tickers to analyze via the shared cache/relay (default: none — supply symbols or your own bars). |
| Name | Type | Req | Description |
|---|---|---|---|
| access | string | – | – |
| error | string | – | – |
| how | string | – | – |
| learn_more | string | – | – |
| methodology | string | – | – |
| not_investment_advice | boolean | – | – |
| request_access_at | string | – | – |
| signals | object | – | – |
| source | string | – | – |
| tool | string | – | – |
No examples provided.
market.rank Cross-Sectional Rank ~115
Cross-sectional percentile rank of one derived metric across the symbol list — no raw metric values returned. Pro tool.
| Name | Type | Req | Description |
|---|---|---|---|
| bars | – | – | Optional caller-supplied OHLCV rows [{symbol, ts, open, high, low, close, volume}]. |
| metric | string | – | Metric to rank by: momentum_20d | volume_ratio_20d | atr_pct | rsi_14. |
| symbols | – | – | List of tickers to rank (via the shared cache/relay); omit when passing your own bars. |
| Name | Type | Req | Description |
|---|---|---|---|
| access | string | – | – |
| error | string | – | – |
| how | string | – | – |
| learn_more | string | – | – |
| methodology | string | – | – |
| metric | string | – | – |
| not_investment_advice | boolean | – | – |
| rank | object | – | – |
| request_access_at | string | – | – |
| source | string | – | – |
| tool | string | – | – |
No examples provided.
market.regime Regime Snapshot ~100
Free tool — causal regime label per symbol (high_vol / drawdown / chop / melt_up / gap_heavy), derived from point-in-time bars with no lookahead.
| Name | Type | Req | Description |
|---|---|---|---|
| bars | – | – | Optional caller-supplied OHLCV rows [{symbol, ts, open, high, low, close, volume}] for symbols the shared cache does not carry. |
| symbols | – | – | Optional list of tickers to label via the shared cache/relay. |
| Name | Type | Req | Description |
|---|---|---|---|
| access | string | – | – |
| error | string | – | – |
| how | string | – | – |
| learn_more | string | – | – |
| methodology | string | – | – |
| not_investment_advice | boolean | – | – |
| regimes | object | – | – |
| request_access_at | string | – | – |
| source | string | – | – |
| tool | string | – | – |
No examples provided.
market.screen Screen Universe ~105
Ranked, derived-only screen over the symbol list — cross-sectional percentile ranks, never raw prices or volumes. Pro tool.
| Name | Type | Req | Description |
|---|---|---|---|
| bars | – | – | Optional caller-supplied OHLCV rows [{symbol, ts, open, high, low, close, volume}]. |
| criteria | string | – | Screen criterion: breakout | momentum | volume | anomaly. |
| symbols | – | – | List of tickers to screen (via the shared cache/relay); omit when passing your own bars. |
| Name | Type | Req | Description |
|---|---|---|---|
| access | string | – | – |
| criteria | string | – | – |
| error | string | – | – |
| how | string | – | – |
| learn_more | string | – | – |
| methodology | string | – | – |
| not_investment_advice | boolean | – | – |
| request_access_at | string | – | – |
| screened | object | – | – |
| source | string | – | – |
| tool | string | – | – |
No examples provided.
market.sentiment Sentiment Pulse ~64
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.
| Name | Type | Req | Description |
|---|---|---|---|
| symbol | string | yes | Ticker symbol, e.g. TSLA. |
| Name | Type | Req | Description |
|---|---|---|---|
| access | string | – | – |
| as_of | string | – | – |
| day_change_bucket | string | – | – |
| earnings_within_3d | boolean | – | – |
| error | string | – | – |
| headline_count_7d | integer | – | – |
| how | string | – | – |
| learn_more | string | – | – |
| not_investment_advice | boolean | – | – |
| provenance | object | – | – |
| request_access_at | string | – | – |
| symbol | string | – | – |
| tool | string | – | – |
No examples provided.
pit.analysis PIT Significance Explained ~284
Is this alternative-data signal real for these tickers - or noise? Explained PIT significance per underlying, from the release-gated pit_analysis/v2 run: every (dataset|metric|horizon) family reports rolling 52-week IR, Newey-West two-sided p, observation count, research-only and staleness flags, and an explicit verdict - SIGNIFICANT (survives the funnel's IR > 0 and Benjamini-Hochberg q <= 0.05 gate of the same run), NOT_SIGNIFICANT, below the observation floor, or UNVERIFIED. Point-in-time, derived-only, no raw values; free lite answers, Pro gives every family. Not investment advice.
| Name | Type | Req | Description |
|---|---|---|---|
| as_of | – | – | Point-in-time cutoff (YYYY-MM-DD, default today): release points after this date are ignored. |
| horizons | – | – | Subset of the run's horizons, e.g. ['1d','1w','1m','6m'] (default: all). |
| max_families | integer | – | Max families returned per underlying, most significant first (1-100). |
| only_significant | boolean | – | Only return families with at least one SIGNIFICANT horizon (counts still cover everything). |
| symbols | array | yes | Underlying tickers to query (max 10). Results are per underlying. |
| Name | Type | Req | Description |
|---|---|---|---|
| access | string | – | – |
| error | string | – | – |
| how | string | – | – |
| how_to_read | string | – | – |
| learn_more | string | – | – |
| methodology | string | – | – |
| not_investment_advice | boolean | – | – |
| request_access_at | string | – | – |
| run_id | string | – | – |
| source | string | – | – |
| tool | string | – | – |
| unavailable | object | – | – |
| underlyings | object | – | – |
No examples provided.
volume.forecast Volume Forecast ~84
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.
| Name | Type | Req | Description |
|---|---|---|---|
| horizon_bars | integer | – | Number of sessions ahead to forecast (1-10). |
| symbol | string | yes | Ticker to forecast (served from the shared cache/relay). |
| Name | Type | Req | Description |
|---|---|---|---|
| access | string | – | – |
| as_of | string | – | – |
| error | string | – | – |
| forecast_ratio_to_20d_avg | number | – | – |
| horizon_bars | integer | – | – |
| how | string | – | – |
| interval_p10_p90 | array | – | – |
| learn_more | string | – | – |
| not_investment_advice | boolean | – | – |
| note | string | – | – |
| request_access_at | string | – | – |
| symbol | string | – | – |
| tool | string | – | – |
No examples provided.
How do I install the quant-swarm MCP server?
quant-swarm runs locally as a PyPI package, launched with uvx quant-swarm. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · quant-swarm
claude mcp add blink1217-quant-swarm -- uvx quant-swarm
What is the quant-swarm MCP server?
quant-swarm is an MCP server listed in the public MCP registry as io.github.blink1217/quant-swarm. Risk-first pre-trade checks, PIT data, leakage audits, and a Shadow Tournament vs a live champion. This page covers its PyPI package (quant-swarm).
Is the quant-swarm MCP server safe to use?
quant-swarm scores 73 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the quant-swarm MCP server expose?
quant-swarm exposes 13 tools: features.build, market.pulse, market.sentiment, market.climate, pit.analysis, and 8 more. Their descriptions and schemas cost roughly 1,543 tokens of context every time the server is loaded.
Is the quant-swarm MCP server still maintained?
quant-swarm is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.