Search / ai.ironscout/ironscout
ironscout
R0· no sign-inRead-only ammo pricing: offer search, caliber market snapshots, retailer directory. Descriptive.
v1.0.0 · active · repository · website · descriptor JSON · versions
Search / ai.ironscout/ironscout
R0· no sign-inRead-only ammo pricing: offer search, caliber market snapshots, retailer directory. Descriptive.
v1.0.0 · active · repository · website · descriptor JSON · versions
{
"mcpServers": {
"ironscout": {
"type": "http",
"url": "https://mcp.ironscout.ai/mcp"
}
}
}claude mcp add --transport http ironscout https://mcp.ironscout.ai/mcp[mcp_servers.ironscout]
url = "https://mcp.ironscout.ai/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"ironscout": {
"type": "remote",
"url": "https://mcp.ironscout.ai/mcp",
"enabled": true
}
}
}{
"mcpServers": {
"ironscout": {
"type": "http",
"url": "https://mcp.ironscout.ai/mcp"
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=ironscout&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vbWNwLmlyb25zY291dC5haS9tY3AifQ%3D%3D"
}{
"servers": {
"ironscout": {
"type": "http",
"url": "https://mcp.ironscout.ai/mcp"
}
}
}{
"mcpServers": {
"ironscout": {
"httpUrl": "https://mcp.ironscout.ai/mcp"
}
}
}extensions:
"ironscout":
enabled: true
name: "ironscout"
type: streamable_http
uri: "https://mcp.ironscout.ai/mcp"
timeout: 300
protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28protocol.statelessonly applies to 2026-07-28 serversprotocol.transportstreamable HTTPprotocol.list_ttlonly applies to 2026-07-28 serversauth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptionsevery tool has a descriptiontools.description_lengthdescriptions are concisetools.schemasevery tool has an object input schematools.annotations5 of 5 tools declare readOnlyHint or destructiveHinttools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_product (destructiveHint, idempotentHint); get_market_snapshot (destructiveHint, idempotentHint); list_calibers (destructiveHint, idempotentHint); …tools.token_costabout 991 tokens to load every tooltools.api_dumptools are not a one-to-one API dumpstability.changesno tool changes in 30 daysstability.rug_pullno tool changed its meaning under the same namedeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packageNo tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+repository +dns-namespace +website +reachable +uptime-96% ~updated-134d-ago
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://mcp.ironscout.ai/mcp streamable-http | none | yes | 96% | 325 ms | 2025-11-25 | 2026-10-20 |
get_market_snapshotread-only | Caliber-level price distribution (median, p25, p75, min, max) over a rolling window. Purely descriptive statistics with methodology and sample counts; never a forecast or recommendation. Returns `error_v1` `NOT_FOUND` when no snapshot exists for the caliber/window. When `extremaSuppressedByPolicy` is `true`, `min`, `max` and both `segments.*.min` / `segments.*.max` are `null` BY POLICY rather than for lack of data: that caliber's published extremes are withheld pending revalidation. The median, quartiles, `p95`, segment medians and counts remain valid and complete — `p95` is a percentile over the whole window rather than a single observation, so it is not withheld. Do not infer or substitute a floor for those calibers, and do not treat `p95` as a stand-in for the withheld `max`. This is distinct from `dataStatus: "INSUFFICIENT_DATA"`, which means the sample was too thin to compute anything. |
get_productread-only | Fetch a single canonical product by its `canonicalProductId`, with current per-retailer offers. Descriptive only. Returns an `error_v1` body with `NOT_FOUND` if the id is unknown. |
list_calibersread-only | Enumerate every canonical caliber IronScout recognizes, each flagged with whether a current market snapshot exists and its sample count. Calibers without a snapshot are still listed (with `hasSnapshot: false`). |
list_retailersread-only | List currently eligible/visible retailers. Ineligible retailers are omitted entirely (fail-closed, ADR-005). Descriptive directory only. |
search_offersread-only | Search canonical ammunition products and their current per-retailer offers. Results are descriptive only — prices, availability, $/round, observation time, and provenance, with no verdicts, scores, or recommendations. Use each offer's `outUrl` for outbound links (do not rewrite it). `sort` is a mechanical ordering, never a judgement. |
Schemas: list_tools.
{
"name": "ai.ironscout/ironscout",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://mcp.ironscout.ai/mcp",
"type": "streamable-http"
}
],
"version": "1.0.0",
"repository": {
"url": "https://github.com/jeb-scarbrough/IronScout",
"source": "github"
},
"websiteUrl": "https://www.ironscout.ai/.well-known/ids.md",
"description": "Read-only ammo pricing: offer search, caliber market snapshots, retailer directory. Descriptive."
}