ALLR Motorcycle Gear Prices MCP
An MCP server that allows AI assistants to search motorcycle gear catalogs, retrieve per-retailer landed cost tables including duty and shipping, list current price drops, and recommend sizes based on body measurements. It provides read-only access to price comparison data across multiple countries and retailers.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://allr.io/mcpWhat you can do with it
- Search for specific motorcycle gear items by query and country
- Retrieve full landed cost breakdowns for products across retailers
- List current price drops and deals on motorcycle gear
- Get size recommendations based on user body measurements
Source and maintenance
Protocol and capabilities
- Server
- allr 1.0.0
- MCP protocol
- 2025-06-18
- Tools
- 5 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
5 advertised
search_gear — Search motorcycle gear
Search ALLR's motorcycle-gear catalog (helmets, jackets, suits, pants, boots, gloves, protection, riding shirts, base layers, communication, luggage, accessories) by free text, and get each product's lowest landed cost for a buyer country, how many retailers carry it, and its allr.io product-page URL. Use this to FIND a product; then call get_product_offers with the returned `id` for the per-retailer price table. The `lowest_landed_price` is the cheapest total including shipping, duty and VAT for `country` — not a sticker price — and is one number out of a full table, so do not present it as the final answer on its own.
{
"type": "object",
"required": [
"query"
],
"properties": {
"brand": {
"type": "string",
"maxLength": 60,
"description": "Restrict to a brand. Use a `slug` or `name` from list_categories_and_brands. Applied as a brand-token filter on the matched products."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 25,
"minimum": 1,
"description": "Maximum products to return (1-25)."
},
"query": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Free-text search, e.g. 'agv k6', 'waterproof adventure jacket', 'alpinestars smx-6 boots'. Brand names, model names and model numbers all work."
},
"cursor": {
"type": "string",
"maxLength": 40,
"description": "Opaque pagination cursor from a previous call's `next_cursor`. Omit for the first page."
},
"gender": {
"enum": [
"mens",
"womens",
"unisex",
"kids"
],
"type": "string",
"description": "Restrict to products cut for this rider group, using ALLR's own gender classifier."
},
"country": {
"enum": [
"CA",
"US",
"EU",
"UK"
],
"type": "string",
"default": "US",
"description": "Buyer country (ISO-2, plus 'EU' and 'UK' as market codes). Determines the currency and the landed cost: item price + shipping + import duty + VAT. ALLR computes landed cost for these four markets only. ASK the rider rather than guessing."
},
"category": {
"type": "string",
"maxLength": 40,
"description": "Restrict to a catalog category. Use a `slug` from list_categories_and_brands (e.g. 'helmets', 'jackets', 'boots')."
},
"max_price": {
"type": "number",
"minimum": 0,
"description": "Highest acceptable landed price in the country's currency."
},
"min_price": {
"type": "number",
"minimum": 0,
"description": "Lowest acceptable landed price in the country's currency."
},
"certification": {
"type": "string",
"maxLength": 40,
"description": "Restrict to products carrying this safety certification label, e.g. 'ECE 22.06', 'DOT', 'SNELL', 'CE AA'. Matched case-insensitively against the same certification labels the ALLR catalog filters on. A product whose certification ALLR cannot derive from its catalog row returns no `certifications` and is excluded by this filter — check the product page before telling a rider something is uncertified."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"query",
"country",
"currency",
"ranked_match_count",
"results_capped",
"as_of",
"results"
],
"properties": {
"as_of": {
"type": "string",
"description": "ISO-8601 timestamp at which these prices were assembled. Quote it when stating a price."
},
"query": {
"type": "string"
},
"country": {
"type": "string"
},
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"currency",
"offer_count",
"url"
],
"properties": {
"id": {
"type": "string",
"description": "ALLR product id — pass to get_product_offers."
},
"url": {
"type": "string",
"description": "Canonical allr.io product page. Cite this."
},
"name": {
"type": "string"
},
"brand": {
"type": [
"string",
"null"
]
},
"gender": {
"type": [
"string",
"null"
]
},
"category": {
"type": [
"string",
"null"
]
},
"currency": {
"type": "string"
},
"image_url": {
"type": [
"string",
"null"
]
},
"offer_count": {
"type": "integer",
"description": "Retailers carrying this product."
},
"certifications": {
"type": "array",
"items": {
"type": "string"
},
"description": "Safety certification labels ALLR derives for this catalog row, e.g. 'ECE 22.06'. An EMPTY array means not derivable here, NOT uncertified — the product page is the fuller source."
},
"ships_to_country": {
"type": [
"boolean",
"null"
],
"description": "True when at least one retailer ships this product to `country` (ALLR's own per-country rollup). False means no retailer currently reaches that country — which does NOT hide the product; ALLR shows every product in every region. null when the rollup is unavailable for this row: unknown, never assumed."
},
"lowest_landed_price": {
"type": [
"number",
"null"
],
"description": "Cheapest landed total (item + shipping + duty + VAT) in `currency`, or null when no retailer currently prices it."
},
"in_stock_offer_count": {
"type": "integer"
}
}
}
},
"currency": {
"type": "string"
},
"next_cursor": {
"type": [
"string",
"null"
],
"description": "Pass as `cursor` for the next page; null when there are no more."
},
"results_capped": {
"type": "boolean",
"description": "True when the search engine returned its maximum of 50 ranked products, i.e. `ranked_match_count` is a floor on how many products match, not the total."
},
"ranked_match_count": {
"type": "integer",
"description": "Number of RANKED RESULTS this query produced after the requested filters — the pool this call paginates over. ALLR's search engine ranks and returns at most 50 products per query, so this is NOT a catalog-wide match count: when `results_capped` is true, more products match than are rankable in one query. Narrow with `brand`, `category` or a more specific query rather than paging for a total."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_product_offers — Get every retailer offer for a product
Get the full per-retailer offer table for ONE ALLR product in a buyer country: landed cost broken down into item price, shipping, import duty and tax, plus stock, condition, per-colorway size availability, whether the retailer ships to that country, and an attributed buy link. This is the authoritative answer to 'where is it cheapest' — search_gear only carries the single lowest number. Offers are sorted cheapest landed first; a retailer that does not ship to the country is still listed, flagged and sorted last. Availability is truth per (retailer x colorway x size): each offer carries `availability_by_colorway`, one row per colorway with ITS OWN sizes. There is no offer-level size list, because a size in stock in one colorway says nothing about another — quote a size only with its colorway.
{
"type": "object",
"required": [
"product_id"
],
"properties": {
"size": {
"type": "string",
"maxLength": 20,
"description": "Restrict to offers that have this size IN STOCK in at least one colorway, e.g. 'L', 'XL', '44'. The kept offers carry `matched_colorways` — exactly the colorways that have it. Combined with `colorway`, the offer must have that size IN that colorway. An offer with no per-colorway breakdown is dropped by this filter rather than guessed at."
},
"limit": {
"type": "integer",
"default": 40,
"maximum": 40,
"minimum": 1,
"description": "Maximum offers to return (1-40)."
},
"country": {
"enum": [
"CA",
"US",
"EU",
"UK"
],
"type": "string",
"default": "US",
"description": "Buyer country (ISO-2, plus 'EU' and 'UK' as market codes). Determines the currency and the landed cost: item price + shipping + import duty + VAT. ALLR computes landed cost for these four markets only. ASK the rider rather than guessing."
},
"colorway": {
"type": "string",
"maxLength": 120,
"description": "Restrict to offers carrying this colorway. Matched against the product's real colorway NAMES the way the product page matches them: the normalized name first ('matt black' = 'Matt Black'), and only if nothing matches exactly, any colorway whose name contains all of those words as whole words ('black' matches 'Matt Black' AND 'Black/Red'). A value that matches no colorway on this product comes back as an error listing the valid names. Omit to see every colorway."
},
"product_id": {
"type": "string",
"maxLength": 220,
"minLength": 1,
"description": "ALLR product id from search_gear, or a full https://allr.io/product/<id> URL, or the bare slug. A merged/renamed id is followed to its canonical product automatically."
},
"include_out_of_stock": {
"type": "boolean",
"default": true,
"description": "Keep out-of-stock offers in the table (default true — ALLR never hides them). Set false to see only buyable offers."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"product",
"country",
"currency",
"as_of",
"offer_count",
"offers"
],
"properties": {
"as_of": {
"type": "string",
"description": "ISO-8601 timestamp at which these prices were assembled. Quote it when stating a price."
},
"offers": {
"type": "array",
"items": {
"type": "object",
"required": [
"retailer",
"retailer_id",
"in_stock",
"ships_to_country",
"colorways",
"availability_by_colorway"
],
"properties": {
"tax": {
"type": [
"number",
"null"
]
},
"duty": {
"type": [
"number",
"null"
]
},
"note": {
"type": [
"string",
"null"
],
"description": "Human-readable caveat, e.g. 'Does not ship to CA'."
},
"buy_url": {
"type": [
"string",
"null"
],
"description": "Use verbatim — an allr.io redirect that preserves attribution."
},
"domestic": {
"type": [
"boolean",
"null"
],
"description": "true when the retailer sells domestically in `country` (no import duty)."
},
"in_stock": {
"type": "boolean"
},
"retailer": {
"type": "string"
},
"shipping": {
"type": [
"number",
"null"
]
},
"tax_name": {
"type": [
"string",
"null"
]
},
"colorways": {
"type": "array",
"items": {
"type": "string"
},
"description": "Colorways this offer covers (display names, as the product page shows them). Narrowed to the requested colorway when `colorway` was given."
},
"condition": {
"type": [
"string",
"null"
],
"description": "null = new. Otherwise 'Open Box', 'Blemished', 'B-Stock', 'Refurbished' or 'Discontinued'. ALLR shows at most one offer per (retailer, condition)."
},
"item_price": {
"type": [
"number",
"null"
]
},
"observed_at": {
"type": [
"string",
"null"
],
"description": "When ALLR last saw this offer."
},
"retailer_id": {
"type": "string"
},
"landed_total": {
"type": [
"number",
"null"
],
"description": "Item + shipping + duty + tax in `currency`. null when the retailer cannot ship to this country."
},
"sizes_listed": {
"type": "array",
"items": {
"type": "string"
},
"description": "Every size the retailer lists for this offer, in stock or not, across all of its colorways. This is a LISTING-level array and says nothing per colorway — use availability_by_colorway for that."
},
"free_shipping": {
"type": [
"boolean",
"null"
]
},
"foreign_currency": {
"type": [
"string",
"null"
]
},
"retailer_country": {
"type": [
"string",
"null"
]
},
"ships_to_country": {
"type": "boolean"
},
"availability_note": {
"type": [
"string",
"null"
],
"description": "Set only when `availability_by_colorway` is null — the reason ALLR cannot break this offer's stock down by colorway."
},
"matched_colorways": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
},
"description": "When `colorway` and/or `size` was requested: exactly the colorways of this offer that satisfied the request (for a size filter, the colorways that have that size). null when no such filter was applied."
},
"list_price_foreign": {
"type": [
"number",
"null"
],
"description": "The retailer's own price in its own currency, before conversion."
},
"shipping_estimated": {
"type": [
"boolean",
"null"
],
"description": "true when the shipping figure is ALLR's estimate rather than a retailer-quoted rate."
},
"availability_by_colorway": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"required": [
"colorway",
"sizes_in_stock"
],
"properties": {
"colorway": {
"type": [
"string",
"null"
],
"description": "Colorway display name; null only when the retailer names no colorway."
},
"sizes_in_stock": {
"type": "array",
"items": {
"type": "string"
},
"description": "Sizes in stock IN THIS COLORWAY at this retailer."
}
}
},
"description": "Per-colorway stock: one row per colorway, each carrying ONLY that colorway's in-stock sizes. Never union these rows — a size present in one colorway is not available in another. An EMPTY sizes_in_stock means that colorway has nothing in stock at this retailer. null means ALLR cannot attribute sizes to colorways for this offer at all; `availability_note` then says why, and no size may be stated for this offer."
}
}
}
},
"country": {
"type": "string"
},
"product": {
"type": "object",
"required": [
"id",
"name",
"url"
],
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "string"
},
"name": {
"type": "string"
},
"brand": {
"type": [
"string",
"null"
]
},
"category": {
"type": [
"string",
"null"
]
},
"colorways": {
"type": "array",
"items": {
"type": "string"
},
"description": "Colorway names ALLR recognises for this product."
},
"image_url": {
"type": [
"string",
"null"
]
},
"redirected_from": {
"type": [
"string",
"null"
],
"description": "Set when the requested id was a merged duplicate and was followed to this canonical product."
}
}
},
"currency": {
"type": "string"
},
"offer_count": {
"type": "integer"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_deals — Current motorcycle gear price drops
List motorcycle gear currently discounted on ALLR, with the same filters the site's Hot Deals board uses. Two boards: the default MSRP board (price below manufacturer list) and mode='retailer' (only deals where the store cut its OWN advertised price, ranked by that store's percentage). Returns the discounted landed price for the buyer country, the percentage off, the retailer featuring it and the allr.io product URL.
{
"type": "object",
"properties": {
"mode": {
"enum": [
"msrp",
"retailer"
],
"type": "string",
"default": "msrp",
"description": "'msrp' (default) = below manufacturer list price. 'retailer' = the store cut its own advertised price."
},
"size": {
"type": "string",
"maxLength": 20,
"description": "Normalized size label ('XL', '44') — keeps only deals whose featured offer has that size in stock."
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 50,
"minimum": 1,
"description": "Maximum deals to return (1-50)."
},
"country": {
"enum": [
"CA",
"US",
"EU",
"UK"
],
"type": "string",
"default": "US",
"description": "Buyer country (ISO-2, plus 'EU' and 'UK' as market codes). Determines the currency and the landed cost: item price + shipping + import duty + VAT. ALLR computes landed cost for these four markets only. ASK the rider rather than guessing."
},
"category": {
"type": "string",
"maxLength": 40,
"description": "Catalog category slug from list_categories_and_brands (e.g. 'helmets', 'jackets')."
},
"retailer": {
"type": "string",
"maxLength": 40,
"description": "Retailer id — keeps only deals this retailer can fill, and features ITS price."
},
"subcategory": {
"type": "string",
"maxLength": 40,
"description": "Helmet/riding-shirt subtype slug. Only meaningful together with `category`."
},
"min_discount_pct": {
"enum": [
10,
20,
30,
40
],
"type": "integer",
"description": "Minimum percentage off."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"country",
"currency",
"mode",
"total_matches",
"results_capped",
"as_of",
"deals"
],
"properties": {
"mode": {
"type": "string"
},
"as_of": {
"type": "string",
"description": "ISO-8601 timestamp at which these prices were assembled. Quote it when stating a price."
},
"deals": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"url"
],
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "string"
},
"name": {
"type": "string"
},
"brand": {
"type": [
"string",
"null"
]
},
"price": {
"type": [
"number",
"null"
],
"description": "Discounted landed price in `currency`."
},
"category": {
"type": [
"string",
"null"
]
},
"in_stock": {
"type": [
"boolean",
"null"
]
},
"retailer": {
"type": [
"string",
"null"
]
},
"image_url": {
"type": [
"string",
"null"
]
},
"was_price": {
"type": [
"number",
"null"
]
},
"discount_pct": {
"type": [
"number",
"null"
]
}
}
}
},
"country": {
"type": "string"
},
"currency": {
"type": "string"
},
"computed_at": {
"type": [
"string",
"null"
],
"description": "When ALLR last recomputed the deals pool."
},
"total_matches": {
"type": "integer",
"description": "Deals in the current pool matching these filters. Honest for the pool as computed — but see `results_capped`."
},
"results_capped": {
"type": "boolean",
"description": "True when ALLR's deals pool was itself truncated when it was last computed, so `total_matches` is a floor rather than the complete count."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_size_recommendation — Recommend a size from body measurements
Recommend a size for a specific product (or a brand + category) from the rider's body measurements, using the manufacturer's own published size chart — the same charts and the same matcher the ALLR product page uses. Measurements are in CENTIMETRES: head circumference for helmets, chest for jackets/suits, hand circumference for gloves, foot length for boots. Returns the recommended label with its EU/US/UK equivalents, how snug it falls, and a link to the brand's official chart. When no chart exists for the brand+category, or the needed measurement is missing, it says so rather than guessing.
{
"type": "object",
"properties": {
"brand": {
"type": "string",
"maxLength": 60,
"description": "Brand name, e.g. 'AGV', 'Alpinestars'. Required when `product_id` is omitted."
},
"foot_cm": {
"type": "number",
"maximum": 40,
"minimum": 18,
"description": "Foot length in cm (boots)."
},
"hand_cm": {
"type": "number",
"maximum": 40,
"minimum": 10,
"description": "Hand circumference in cm (gloves)."
},
"head_cm": {
"type": "number",
"maximum": 80,
"minimum": 40,
"description": "Head circumference in cm (helmets)."
},
"category": {
"type": "string",
"maxLength": 60,
"description": "Product category, e.g. 'Full-Face Helmet', 'Leather Jacket', 'Boots', 'Gloves'. Required when `product_id` is omitted."
},
"chest_cm": {
"type": "number",
"maximum": 180,
"minimum": 60,
"description": "Chest circumference in cm (jackets, suits)."
},
"known_size": {
"type": "string",
"maxLength": 12,
"description": "A size the rider already wears in this brand+category ('L', 'EU 44'), used when no measurement is given."
},
"product_id": {
"type": "string",
"maxLength": 220,
"description": "ALLR product id or /product/ URL. Supplies the brand, category and model so the right chart variant is picked. Provide this OR both `brand` and `category`."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"as_of"
],
"properties": {
"as_of": {
"type": "string",
"description": "ISO-8601 timestamp at which these prices were assembled. Quote it when stating a price."
},
"brand": {
"type": [
"string",
"null"
]
},
"needs": {
"type": [
"string",
"null"
],
"description": "Set when a chart exists but the required input is missing — the label of the measurement to ask the rider for."
},
"category": {
"type": [
"string",
"null"
]
},
"product_id": {
"type": [
"string",
"null"
]
},
"recommended": {
"type": [
"object",
"null"
],
"properties": {
"eu": {
"type": [
"string",
"null"
]
},
"uk": {
"type": [
"string",
"null"
]
},
"us": {
"type": [
"string",
"null"
]
},
"fit": {
"type": [
"string",
"null"
],
"description": "How the measurement sits in the band — e.g. 'snug', 'roomy', 'from-size'."
},
"label": {
"type": [
"string",
"null"
],
"description": "The brand's own size label, e.g. 'L', 'MS'."
},
"chart_url": {
"type": [
"string",
"null"
],
"description": "The manufacturer's own published size chart."
},
"confidence": {
"type": [
"string",
"null"
]
},
"measure_used": {
"type": [
"string",
"null"
]
}
}
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_categories_and_brands — List ALLR categories and brands
List the catalog categories and the brands ALLR tracks, with the exact slugs the `category` and `brand` filters on search_gear and get_deals expect. Call this first when you are about to filter, so a filter value is grounded in the catalog rather than guessed. Cheap and static — it reads bundled catalog metadata, not the live price data.
{
"type": "object",
"properties": {
"brand_query": {
"type": "string",
"maxLength": 60,
"description": "Return only brands whose name or slug contains this text (case-insensitive)."
},
"include_brands": {
"type": "boolean",
"default": true,
"description": "Include the brand list (a few hundred entries). Set false for categories only."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"categories",
"brand_count",
"countries"
],
"properties": {
"brands": {
"type": "array",
"items": {
"type": "object",
"required": [
"slug",
"name",
"url"
],
"properties": {
"url": {
"type": "string",
"description": "allr.io brand page."
},
"name": {
"type": "string"
},
"slug": {
"type": "string",
"description": "Pass as `brand`."
}
}
}
},
"countries": {
"type": "array",
"items": {
"type": "string"
},
"description": "Buyer countries ALLR computes landed cost for."
},
"categories": {
"type": "array",
"items": {
"type": "object",
"required": [
"slug",
"label"
],
"properties": {
"slug": {
"type": "string",
"description": "Pass as `category`."
},
"label": {
"type": "string"
},
"includes": {
"type": "array",
"items": {
"type": "string"
},
"description": "The raw product-category values this slug covers."
}
}
}
},
"brand_count": {
"type": "integer"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 834 ms
- 95th percentile latency
- 834 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 834 ms · metadata changed · 5 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http allr-motorcycle-gear-prices-mcp https://allr.io/mcpCodex
codex mcp add allr-motorcycle-gear-prices-mcp --url https://allr.io/mcpCursor
{
"mcpServers": {
"allr-motorcycle-gear-prices-mcp": {
"url": "https://allr.io/mcp"
}
}
}Cline
{
"mcpServers": {
"allr-motorcycle-gear-prices-mcp": {
"type": "streamableHttp",
"url": "https://allr.io/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"allr-motorcycle-gear-prices-mcp": {
"type": "http",
"url": "https://allr.io/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http allr-motorcycle-gear-prices-mcp https://allr.io/mcpClaude Desktop
{
"mcpServers": {
"allr-motorcycle-gear-prices-mcp": {
"url": "https://allr.io/mcp"
}
}
}Windsurf
{
"mcpServers": {
"allr-motorcycle-gear-prices-mcp": {
"serverUrl": "https://allr.io/mcp"
}
}
}Let your agent find its tools
Find servers like ALLR Motorcycle Gear Prices MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.