Serveur MCP

ironscout

ai.ironscout/ironscout
Commerce et retail Public et accessible MCP 2025-11-25

Ce que fait ce MCP

Provides read-only ammunition offer searches, caliber market snapshots, and a retailer directory.

get_market_snapshot
Get caliber market snapshot
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.
Lecture seule Accès externe
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['caliber'], 'properties': {'caliber': {'type': 'string', 'maxLength': 60, 'minLength': 1, 'description': 'Canonical caliber, e.g. "9mm".'}, 'windowDays': {'anyOf': [{'type': 'number', 'const': 7}, {'type': 'number', 'const': 30}], 'description': 'Rolling window in days. 7 or 30; defaults to 30.'}}}
get_product
Get product detail
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.
Lecture seule Accès externe
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['canonicalProductId'], 'properties': {'canonicalProductId': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Canonical product id (CUID) from search results.'}}}
list_calibers
List canonical calibers
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`).
Lecture seule Accès externe
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
list_retailers
List eligible retailers
List currently eligible/visible retailers. Ineligible retailers are omitted entirely (fail-closed, ADR-005). Descriptive directory only.
Lecture seule Accès externe
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
search_offers
Search ammunition offers
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.
Lecture seule Accès externe
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'q': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Free-text query over product name/brand/description.'}, 'case': {'type': 'string', 'maxLength': 40, 'minLength': 1, 'description': 'Case material, e.g. "Brass", "Steel".'}, 'page': {'type': 'integer', 'maximum': 1000, 'exclusiveMinimum': 0}, 'sort': {'enum': ['pricePerRoundAsc', 'pricePerRoundDesc', 'observedAtDesc'], 'type': 'string', 'description': 'Mechanical ordering only. Defaults to pricePerRoundAsc.'}, 'brand': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'grain': {'type': 'integer', 'maximum': 2000, 'description': 'Bullet weight in grains.', 'exclusiveMinimum': 0}, 'caliber': {'type': 'string', 'maxLength': 60, 'minLength': 1, 'description': 'Canonical caliber, e.g. "9mm" or ".223/5.56".'}, 'inStock': {'type': 'boolean', 'description': 'When true, only products with in-stock offers are returned.'}, 'pageSize': {'type': 'integer', 'maximum': 50, 'exclusiveMinimum': 0}, 'roundCountMax': {'type': 'integer', 'maximum': 100000, 'exclusiveMinimum': 0}, 'roundCountMin': {'type': 'integer', 'maximum': 100000, 'exclusiveMinimum': 0}}}
Ajouté
list_retailers
17 September 2026 07:56
Ajouté
list_calibers
17 September 2026 07:56
Ajouté
get_market_snapshot
17 September 2026 07:56
Ajouté
get_product
17 September 2026 07:56
Ajouté
search_offers
17 September 2026 07:56