ALLR Motorcycle Gear Prices
Server Details
Compare motorcycle gear prices by landed cost (price, shipping, duty, tax) for CA, US, EU and UK.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 5 tools
Each tool has a clearly distinct role: catalog search, discounted deals, per-retailer offer detail, size recommendation, and category/brand metadata. The only mild overlap is that get_deals and search_gear both surface products with prices, but their board-vs-free-text purposes are explicitly differentiated.
All tool names use snake_case and follow a predictable verb_noun pattern (get_deals, get_product_offers, get_size_recommendation, list_categories_and_brands, search_gear). The use of get/list/search is consistent with each tool's action.
Five tools is well-scoped for a read-only motorcycle gear price comparison server. Each tool corresponds to a necessary workflow step, with no redundant or filler operations.
The surface covers discovery of categories/brands, product search, deals, per-retailer offers, and sizing guidance, which is strong for this domain. A minor gap is that get_deals does not explicitly return the product id needed to chain into get_product_offers, though agents can likely work around this via the product URL.
Available Tools
5 toolsget_dealsCurrent motorcycle gear price dropsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | 'msrp' (default) = below manufacturer list price. 'retailer' = the store cut its own advertised price. | msrp |
| size | No | Normalized size label ('XL', '44') — keeps only deals whose featured offer has that size in stock. | |
| limit | No | Maximum deals to return (1-50). | |
| country | No | Buyer country (ISO-2, plus 'EU' and 'UK' as market codes). Determines the currency and the landed cost: item price + shipping + import duty + customs brokerage fee. Destination sales tax / VAT is not included. ALLR computes landed cost for these four markets only. | US |
| category | No | Catalog category slug from list_categories_and_brands (e.g. 'helmets', 'jackets'). | |
| retailer | No | Retailer id — keeps only deals this retailer can fill, and features ITS price. | |
| subcategory | No | Helmet/riding-shirt subtype slug. Only meaningful together with `category`. | |
| min_discount_pct | No | Minimum percentage off. |
Output Schema
| Name | Required | Description |
|---|---|---|
| mode | Yes | |
| as_of | Yes | ISO-8601 timestamp at which these prices were assembled. |
| deals | Yes | |
| country | Yes | |
| currency | Yes | |
| computed_at | No | When ALLR last recomputed the deals pool. |
| total_matches | Yes | Deals in the current pool matching these filters. Honest for the pool as computed — but see `results_capped`. |
| results_capped | Yes | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is fully covered. The description adds useful result semantics (what is returned: landed price, percent off, retailer, product URL) and the retailer-board ranking rule, but says nothing about pagination, empty-result behavior, or cost of a broad query without filters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, roughly 55 words, front-loaded with the core action and the board distinction before the return-value summary. The mode explanation partly restates the schema's mode description, a small redundancy, but the rest is dense and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter, zero-required list tool with a full output schema and rich annotations, the description supplies purpose, mode semantics, ranking, and return fields. The remaining gap is sibling differentiation from search_gear and get_product_offers, which an agent would need to pick this tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the landed-cost composition for country and the category/subcategory dependency, so the schema already carries the parameter burden. The description reinforces the mode parameter's two boards and adds the ranking rule for retailer mode, but contributes nothing new about size, limit, min_discount_pct, or retailer filtering.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"List motorcycle gear currently discounted on ALLR" gives a specific verb and resource, and the two-board framing (default MSRP board vs mode='retailer') narrows the scope further. It never names the siblings it competes with (search_gear, get_product_offers), so an agent must infer the boundary from the catalog rather than from the text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly routes between the two internal modes: default MSRP board for below-list pricing versus mode='retailer' for store-cut prices ranked by that store's percentage. That is genuine when-to-use guidance, but it stops at intra-tool selection and offers no exclusion or alternative for general gear searching or per-product offer lookup, which the sibling tools cover.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_product_offersGet every retailer offer for a productARead-onlyIdempotentInspect
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 customs brokerage (these sum to landed_total; destination sales tax / VAT is not included, so tax is 0), plus stock, condition, per-colorway size availability, whether the retailer ships to that country, and a buy link (an allr.io redirect to the retailer). search_gear only carries the single lowest number. Offers are sorted cheapest landed first and the first limit are returned (default 10, max 40; offer_count is the total available); 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.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | 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 | No | Maximum offers to return, cheapest landed first (1-40, default 10). `offer_count` is the total and `has_more` says whether more offers exist beyond this limit. | |
| country | No | Buyer country (ISO-2, plus 'EU' and 'UK' as market codes). Determines the currency and the landed cost: item price + shipping + import duty + customs brokerage fee. Destination sales tax / VAT is not included. ALLR computes landed cost for these four markets only. | US |
| colorway | No | 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. When omitted, every colorway is included. | |
| product_id | Yes | 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 | No | true includes out-of-stock offers in the table (ALLR does not hide them by default); false returns only in-stock offers. |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | Yes | ISO-8601 timestamp at which these prices were assembled. |
| offers | Yes | |
| country | Yes | |
| product | Yes | |
| currency | Yes | |
| has_more | No | true when more offers exist than `limit` returned; `limit` accepts up to 40. |
| offer_count | Yes | Total offers for this product/country after filters (may exceed the number returned in `offers`). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnly, idempotent, non-destructive), and the description adds substantial behavior the agent could not infer: landed cost is item + shipping + duty + brokerage with tax excluded, results are sorted cheapest-landed-first and capped by limit with offer_count showing the total, and non-shipping retailers are still listed but flagged and sorted last. It also discloses the per-colorway availability model and the error behavior for an unmatched colorway.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, and the tax-exclusion and sorting rules appear early where an agent will read them. The prose is dense to the point of being a single wall of clauses, and the repeated re-explanation of landed-cost components in the country param is redundant, but no sentence is throwaway.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema covers return shape, and the description supplies everything else an agent needs for a 6-parameter read tool: cost composition, sort order, pagination signals, out-of-market handling, and the colorway/size matching model. Nothing material is left to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description still earns credit by explaining the data model behind the parameters — that availability is per (retailer x colorway x size), that there is deliberately no offer-level size list, and that offers lacking a per-colorway breakdown are dropped rather than guessed at. It mostly restates limit and country semantics already in the schema, which keeps it off a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Get the full per-retailer offer table for ONE ALLR product in a buyer country") and immediately scopes it against a named sibling: "search_gear only carries the single lowest number." An agent can tell exactly what this returns versus a search result without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The alternative is named explicitly (search_gear for the single lowest price, this tool for the full per-retailer breakdown), and the product_id schema hints at the search_gear workflow. What's missing is an explicit "when not to use" statement, e.g. don't call this for browsing or for products not yet resolved to an id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_size_recommendationRecommend a size from body measurementsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| brand | No | Brand name, e.g. 'AGV', 'Alpinestars'. Required when `product_id` is omitted. | |
| foot_cm | No | Foot length in cm (boots). | |
| hand_cm | No | Hand circumference in cm (gloves). | |
| head_cm | No | Head circumference in cm (helmets). | |
| category | No | Product category, e.g. 'Full-Face Helmet', 'Leather Jacket', 'Boots', 'Gloves'. Required when `product_id` is omitted. | |
| chest_cm | No | Chest circumference in cm (jackets, suits). | |
| known_size | No | A size the rider already wears in this brand+category ('L', 'EU 44'), used when no measurement is given. | |
| product_id | No | ALLR product id or /product/ URL. Supplies the brand, category and model so the right chart variant is picked. Either this or both `brand` and `category` is required. |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | Yes | ISO-8601 timestamp at which these prices were assembled. |
| brand | No | |
| needs | No | Set when a chart exists but the required input is missing — the label of the measurement that is missing. |
| category | No | |
| product_id | No | |
| recommended | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, closed-world), so the description is free to spend itself on behaviour an agent cannot infer: it uses the same charts and the same matcher as the ALLR product page, and it explicitly refuses to guess when a chart or measurement is missing. That refusal behaviour is the single most important thing to know before calling it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense paragraph that front-loads the core action and scope before moving to units, return values, and the failure mode — every sentence carries information. The unit/category mapping slightly duplicates the schema descriptions, which is the only wasted motion.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present the description need not enumerate return fields, yet it usefully sketches them (label, EU/US/UK equivalents, snugness, chart link). For a tool with 8 optional parameters and no required ones, it makes the mutual requirement explicit. The only gap is telling the agent how to obtain a product_id when it has none.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents each measurement, its unit, and the product_id/brand+category dependency. The description restates the centimetre convention and the category-to-measurement mapping, which is useful reinforcement but adds little beyond the structured fields; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (recommend) plus resource (a size) and precise scope (from body measurements, for a specific product or brand+category, using the manufacturer's own published chart). It is clearly distinguishable from siblings like search_gear or get_product_offers, which locate products rather than translate measurements into sizes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the two entry paths (product_id, or brand + category) and the fallback to known_size when no measurement is given, and it sets expectations for the failure case. What it lacks is routing guidance to siblings — e.g. telling the agent to call search_gear first when it only has a product name and no id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categories_and_brandsList ALLR categories and brandsARead-onlyIdempotentInspect
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. These are the only values the category and brand filters accept. Cheap and static — it reads bundled catalog metadata, not the live price data.
| Name | Required | Description | Default |
|---|---|---|---|
| brand_query | No | Return only brands whose name or slug contains this text (case-insensitive). | |
| include_brands | No | Include the brand list (a few hundred entries). false returns categories only. |
Output Schema
| Name | Required | Description |
|---|---|---|
| brands | No | |
| countries | Yes | Buyer countries ALLR computes landed cost for. |
| categories | Yes | |
| brand_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety bar is covered. The description adds genuine context beyond them: 'cheap and static — it reads bundled catalog metadata, not the live price data,' which tells the agent about cost and staleness of results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler. The purpose and the downstream filter contract are front-loaded, and the cost/staleness note trails as supporting context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a small static lookup with an output schema and full annotation coverage, nothing material is missing. Purpose, consumer contract, data source and cost profile are all stated, and return structure is delegated to the output schema as expected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are documented in-schema (case-insensitive brand substring match, include_brands default and list size), so the baseline applies. The description adds no parameter-level meaning beyond the schema — its extra detail is about output slugs, not inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (list catalog categories and brands) and immediately ties the output to the exact slugs used by the `category` and `brand` filters on search_gear and get_deals. That contrasts it clearly with the sibling tools it exists to support.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Strongly implies the when: 'These are the only values the `category` and `brand` filters accept' tells an agent it must consult this before filtering on those siblings. It stops short of an explicit 'call this first' instruction or any when-not-to-use case, so it is clear context rather than a full routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_gearSearch motorcycle gearARead-onlyIdempotentInspect
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. The returned id is the product id accepted by get_product_offers, which has the per-retailer price table. The lowest_landed_price is the cheapest total including shipping, import duty and customs brokerage for country (destination sales tax / VAT is not included) — not a sticker price — and is one number out of a full table; get_product_offers has the per-retailer breakdown.
| Name | Required | Description | Default |
|---|---|---|---|
| brand | No | Restrict to a brand. Accepts a `slug` or `name` from list_categories_and_brands. Applied as a brand-token filter on the matched products. | |
| limit | No | Maximum products to return (1-25). | |
| query | Yes | Free-text search, e.g. 'agv k6', 'waterproof adventure jacket', 'alpinestars smx-6 boots'. Brand names, model names and model numbers all work. | |
| cursor | No | Opaque pagination cursor from a previous call's `next_cursor`. Absent on the first page. | |
| gender | No | Restrict to products cut for this rider group, using ALLR's own gender classifier. | |
| country | No | Buyer country (ISO-2, plus 'EU' and 'UK' as market codes). Determines the currency and the landed cost: item price + shipping + import duty + customs brokerage fee. Destination sales tax / VAT is not included. ALLR computes landed cost for these four markets only. | US |
| category | No | Restrict to a catalog category. Accepts a `slug` from list_categories_and_brands (e.g. 'helmets', 'jackets', 'boots'). | |
| max_price | No | Highest acceptable landed price in the country's currency. | |
| min_price | No | Lowest acceptable landed price in the country's currency. | |
| certification | No | 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 — the product page is the fuller source for certification. |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | Yes | ISO-8601 timestamp at which these prices were assembled. |
| query | Yes | |
| country | Yes | |
| results | Yes | |
| currency | Yes | |
| next_cursor | No | Value accepted as `cursor` for the next page; null when there are no more. |
| results_capped | Yes | 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 | Yes | 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. A narrower query (`brand`, `category` or more specific text) produces a ranked pool below the cap. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/non-destructive annotations, it discloses that `lowest_landed_price` is a total including shipping, import duty and customs brokerage but excluding destination VAT, and that landed cost is computed for only four markets. It also flags the non-obvious behavior that products whose certification ALLR cannot derive are silently excluded by the certification filter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the search scope and immediately followed by what the results contain, which is the right ordering. It loses a little economy by restating twice that get_product_offers holds the per-retailer breakdown.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not enumerate return fields, and it still highlights the key ones (`id`, `lowest_landed_price`, retailer count, URL). Given rich annotations and full schema coverage, nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all ten parameters are already documented in structured form and the baseline is 3. The description reinforces the meaning of `country` and the landed-price fields but adds little parameter-level detail the schema does not already carry.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (search ALLR's motorcycle-gear catalog) and enumerates the covered product categories, so the agent knows the scope precisely. It also explicitly separates its role from get_product_offers by saying the returned `id` feeds that tool's per-retailer price table.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The routing to get_product_offers for per-retailer breakdowns and to list_categories_and_brands (in the schema) for slugs gives clear context for choosing among siblings. It stops short of explicit when-not-to-use guidance, e.g. whether to query get_deals instead when hunting for discounts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
- Changed
get_deals1 field changed- changed
Output schema / properties / as_of / descriptionPrevious value: -"ISO-8601 timestamp at which these prices were assembled. Quote it when stating a price."New value: +"ISO-8601 timestamp at which these prices were assembled."
- Changed
get_product_offers7 fields changed- changed
Input schema / properties / colorway / descriptionPrevious value: -"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."New value: +"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. When omitted, every colorway is included." - changed
Input schema / properties / include_out_of_stock / descriptionPrevious value: -"Keep out-of-stock offers in the table (default true — ALLR never hides them). Set false to see only buyable offers."New value: +"true includes out-of-stock offers in the table (ALLR does not hide them by default); false returns only in-stock offers." - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum offers to return, cheapest landed first (1-40, default 10). Compare with `offer_count` (the total) and `has_more`; raise it to see more."New value: +"Maximum offers to return, cheapest landed first (1-40, default 10). `offer_count` is the total and `has_more` says whether more offers exist beyond this limit." - changed
Output schema / properties / as_of / descriptionPrevious value: -"ISO-8601 timestamp at which these prices were assembled. Quote it when stating a price."New value: +"ISO-8601 timestamp at which these prices were assembled." - changed
Output schema / properties / has_more / descriptionPrevious value: -"true when more offers exist than `limit` returned; raise `limit` (max 40)."New value: +"true when more offers exist than `limit` returned; `limit` accepts up to 40." - changed
Output schema / properties / offers / items / properties / availability_by_colorway / descriptionPrevious value: -"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."New value: +"Per-colorway stock: one row per colorway, each carrying ONLY that colorway's in-stock sizes. Rows are independent: a size present in one colorway is not in stock 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; `availability_note` says why." - changed
Output schema / properties / offers / items / properties / sizes_listed / descriptionPrevious value: -"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."New value: +"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 — per-colorway stock is in availability_by_colorway."
- Changed
get_size_recommendation3 fields changed- changed
Input schema / properties / product_id / descriptionPrevious value: -"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`."New value: +"ALLR product id or /product/ URL. Supplies the brand, category and model so the right chart variant is picked. Either this or both `brand` and `category` is required." - changed
Output schema / properties / as_of / descriptionPrevious value: -"ISO-8601 timestamp at which these prices were assembled. Quote it when stating a price."New value: +"ISO-8601 timestamp at which these prices were assembled." - changed
Output schema / properties / needs / descriptionPrevious value: -"Set when a chart exists but the required input is missing — the label of the measurement to ask the rider for."New value: +"Set when a chart exists but the required input is missing — the label of the measurement that is missing."
- Changed
list_categories_and_brands3 fields changed- changed
Input schema / properties / include_brands / descriptionPrevious value: -"Include the brand list (a few hundred entries). Set false for categories only."New value: +"Include the brand list (a few hundred entries). false returns categories only." - changed
Output schema / properties / brands / items / properties / slug / descriptionPrevious value: -"Pass as `brand`."New value: +"Value accepted by the `brand` filter." - changed
Output schema / properties / categories / items / properties / slug / descriptionPrevious value: -"Pass as `category`."New value: +"Value accepted by the `category` filter."
- Changed
search_gear9 fields changed- changed
Input schema / properties / brand / descriptionPrevious value: -"Restrict to a brand. Use a `slug` or `name` from list_categories_and_brands. Applied as a brand-token filter on the matched products."New value: +"Restrict to a brand. Accepts a `slug` or `name` from list_categories_and_brands. Applied as a brand-token filter on the matched products." - changed
Input schema / properties / category / descriptionPrevious value: -"Restrict to a catalog category. Use a `slug` from list_categories_and_brands (e.g. 'helmets', 'jackets', 'boots')."New value: +"Restrict to a catalog category. Accepts a `slug` from list_categories_and_brands (e.g. 'helmets', 'jackets', 'boots')." - changed
Input schema / properties / certification / descriptionPrevious value: -"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."New value: +"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 — the product page is the fuller source for certification." - changed
Input schema / properties / cursor / descriptionPrevious value: -"Opaque pagination cursor from a previous call's `next_cursor`. Omit for the first page."New value: +"Opaque pagination cursor from a previous call's `next_cursor`. Absent on the first page." - changed
Output schema / properties / as_of / descriptionPrevious value: -"ISO-8601 timestamp at which these prices were assembled. Quote it when stating a price."New value: +"ISO-8601 timestamp at which these prices were assembled." - changed
Output schema / properties / next_cursor / descriptionPrevious value: -"Pass as `cursor` for the next page; null when there are no more."New value: +"Value accepted as `cursor` for the next page; null when there are no more." - changed
Output schema / properties / ranked_match_count / descriptionPrevious value: -"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."New value: +"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. A narrower query (`brand`, `category` or more specific text) produces a ranked pool below the cap." - changed
Output schema / properties / results / items / properties / id / descriptionPrevious value: -"ALLR product id — pass to get_product_offers."New value: +"ALLR product id, as accepted by get_product_offers." - changed
Output schema / properties / results / items / properties / url / descriptionPrevious value: -"Canonical allr.io product page. Cite this."New value: +"Canonical allr.io product page."
3 tool updates
- Changed
get_deals1 field changed- changed
Input schema / properties / country / descriptionPrevious value: -"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."New value: +"Buyer country (ISO-2, plus 'EU' and 'UK' as market codes). Determines the currency and the landed cost: item price + shipping + import duty + customs brokerage fee. Destination sales tax / VAT is not included. ALLR computes landed cost for these four markets only."
- Changed
get_product_offers10 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"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."New value: +"Buyer country (ISO-2, plus 'EU' and 'UK' as market codes). Determines the currency and the landed cost: item price + shipping + import duty + customs brokerage fee. Destination sales tax / VAT is not included. ALLR computes landed cost for these four markets only." - changed
Input schema / properties / limit / defaultPrevious value: -40New value: +10 - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum offers to return (1-40)."New value: +"Maximum offers to return, cheapest landed first (1-40, default 10). Compare with `offer_count` (the total) and `has_more`; raise it to see more." - added
Output schema / properties / has_moreAdded value: +{ + "description": "true when more offers exist than `limit` returned; raise `limit` (max 40).", + "type": "boolean" +} - added
Output schema / properties / offer_count / descriptionAdded value: +"Total offers for this product/country after filters (may exceed the number returned in `offers`)." - added
Output schema / properties / offers / items / properties / brokerageAdded value: +{ + "description": "Courier customs-clearance (brokerage) fee in `currency`; 0 when the parcel needs no clearance or the retailer is domestic.", + "type": [ + "number", + "null" + ] +} - changed
Output schema / properties / offers / items / properties / buy_url / descriptionPrevious value: -"Use verbatim — an allr.io redirect that preserves attribution."New value: +"An allr.io redirect to the retailer's product page; it counts the click." - added
Output schema / properties / offers / items / properties / duty / descriptionAdded value: +"Import duty in `currency`." - changed
Output schema / properties / offers / items / properties / landed_total / descriptionPrevious value: -"Item + shipping + duty + tax in `currency`. null when the retailer cannot ship to this country."New value: +"Item + shipping + duty + brokerage (+ tax, which is always 0: destination sales tax / VAT is not included) in `currency`. null when the retailer cannot ship to this country." - added
Output schema / properties / offers / items / properties / tax / descriptionAdded value: +"Destination sales tax / VAT. Always 0: ALLR does not include it (the retailer shows it at checkout)."
- Changed
search_gear2 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"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."New value: +"Buyer country (ISO-2, plus 'EU' and 'UK' as market codes). Determines the currency and the landed cost: item price + shipping + import duty + customs brokerage fee. Destination sales tax / VAT is not included. ALLR computes landed cost for these four markets only." - changed
Output schema / properties / results / items / properties / lowest_landed_price / descriptionPrevious value: -"Cheapest landed total (item + shipping + duty + VAT) in `currency`, or null when no retailer currently prices it."New value: +"Cheapest landed total (item + shipping + duty + brokerage; no sales tax/VAT) in `currency`, or null when no retailer currently prices it."
5 tool updates
- First observed
get_deals - First observed
get_product_offers - First observed
get_size_recommendation - First observed
list_categories_and_brands - First observed
search_gear
Related MCP Connectors
Which stores can actually ship to your destination, at what real landed cost.
Search fashion across 1,000+ retailers; compare prices, sizes and stock by country.
Verify Canadian deals, find the same product cheaper across .ca retailers, track CAD price history.
Search, compare prices and find official stores across brands that sell on Shopify.
Related MCP Servers
- AlicenseAqualityBmaintenanceSearches UK electronics products across multiple retailers, compares prices, and provides purchase links.2136 npmMIT

idealo MCP Serverofficial
AlicenseNot gradedqualityFmaintenanceEnables product search, price comparison, and price history analysis across 6 European marketplaces (DE, AT, GB, FR, IT, ES).23MIT- AlicenseNot gradedqualityFmaintenanceCalculates total landed cost of international payments including FX spread, transfer fees, and settlement time across multiple payment methods, and provides free currency conversion and ECB exchange rates.MIT
- AlicenseBqualityDmaintenanceCompare parcel and letter delivery prices across 60+ carriers in 27 European countries.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.