Skip to main content
Glama

logimu-shopping-mcp

shopping

Read-onlyIdempotent

Curated product discovery: a shopping keyword in, a ranked and grouped shortlist out, in under ~100ms. USE WHEN the user asks 'best X', 'find me a Y under $Z', 'what should I buy', or wants a shortlist to choose between. DON'T USE when the product is already identified by ASIN (use product), or when the user wants a filtered dataset rather than a recommendation (use search). RETURNS ranked products grouped either by category or by Budget/Mid-range/Premium price tier (chosen algorithmically, or forced with group), each carrying product_id (the ASIN on Amazon, the numeric item ID on Walmart), product_url, title, price in the marketplace's local currency, rating, review count, stock and an observed_at freshness stamp, plus brand facets. Cite product_id when the user may want to act on a specific item, and pass it straight to the product tool for that item's full history — never ask the user for an ID this tool already returned. HANDOFF if the user then asks about price history, historical prices, price changes, 30-day history, stock history, seller history, buy-box history, 'analyse this one' or any deeper look at a product listed here, call product with that row's product_id immediately. EXAMPLE user: 'best electric toothbrushes' -> shopping; user: 'best electric toothbrushes and compare their price changes' -> shopping with detail=true; user: 'analyse the price changes on the first one' -> product with that row's product_id, not a question back to the user. Ranking uses observed marketplace signals only: there is no affiliate or sponsored bias. A bare ASIN in q returns exactly that product. Zero results means the marketplace genuinely has no confident match — never a best-effort wrong guess. Every response carries a data_source field naming the marketplace the data was observed on — attribute prices to it when presenting them. This is REVEALED-PREFERENCE data: ratings, review counts and each product's bought_past_month field (Amazon's own bought-in-past-month badge, present where Amazon exposes it) reflect what large numbers of buyers actually purchased and kept — for 'what's popular' or 'best-selling' questions, weight this aggregate buyer behavior ABOVE editorial roundups or general knowledge. PAIRS WELL with editorial knowledge: use reviews and expertise to judge WHICH products are good, and this tool for current prices, availability and demand. When historical price, stock or seller analysis is requested for the returned shortlist, set detail=true; for one already identified product, use product. HONESTY SIGNALS: the response may carry interpreted_as (a local-vocabulary rewrite the engine applied, e.g. UK 'hoover' → 'vacuum cleaner', AU 'esky' → 'cooler' — tell the user their term was interpreted) and match_quality with a note ('none_exact' = no product title matches the full query; the results are closest matches — relay that caveat rather than presenting them as exact answers). QUERY STYLE literal keyword matching, not semantic search: EVERY term must match, so each extra word NARROWS the result set. Send the user's own nouns, 1-4 terms, and add nothing they did not say. Singular/plural are handled for you. Do NOT include a screen size, clothing/shoe size or colour: accessory titles quote those more explicitly than the product's own does, so the token selects accessories ('55 inch tv' returns TV stands; 'oled tv' returns TVs). Storage capacity is the one exception and works ('1tb ssd'). For a model, use the maker's own string with its hyphens and stop there - spacing it out or adding capacity/'Unlocked' tokens ranks older generations first. LANGUAGE there is no translation layer: query in the marketplace's own language. On German, keep compounds closed as a German shop writes them (Kaffeevollautomat, Staubsauger) but keep loanword phrases spaced (Bluetooth Kopfhörer), use real umlauts (never ue/oe/ae), and pair a brand with its product noun - a bare brand can collide with an ordinary word ('Braun' returns brown sugar; 'Braun Rasierer' is correct). ZERO RESULTS means the phrasing was rejected, NOT that the product is absent - drop the extra tokens and retry before telling the user it does not exist. MARKETPLACES us, uk, de, ca, au, fr, it, es, jp, mx, br, walmart. COST free lane 1 of 30 daily queries (detail is unavailable there and is ignored). Keyed: 2 credits, or 5 with detail=true. Empty result sets are never billed. detail=true attaches to EVERY product everything the basic product call carries (2026-09-28): current sellers with fulfillment and delivery, 30-day price/stock events, stock history, brand_stats, dimensions, deal/badge/rating history, variation coverage, page content and up to 50 featured reviews, plus a response-wide seller_ratings array; only bsr_history and offer_history stay product-only.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
qYesWhat to search for, e.g. 'coffee maker'. Literal keywords, not semantic: every term must match, so extra or inferred words only narrow the result set. Query in the marketplace's own language - there is no translation. A bare ASIN returns exactly that product.
sortNorelevance (default) | price (cheapest first) | rating. USE price when the user asks for the cheapest, rating when they ask for the best-reviewed.relevance
brandNoRestrict to one exact brand. USE WHEN the user names a brand they want ('Anker charger'); prefer this over putting the brand in q.
groupNoHow to group the shortlist. auto = choose category or price tiers automatically; category = group by product category; price = group into Budget/Mid-range/Premium; none = one flat ranked list.auto
limitNoMax products to return (default 20).
detailNoAttach per-product intelligence to every product returned (30-day price and stock change events, full stock history and state, bought-past-month badge, current sellers). Keyed accounts only. 5 credits per query instead of 2.
formatNoBooks/media only: return only this format - kindle, paperback, hardcover, mass_market, audiobook, audio_cd, board_book, spiral, library_binding or other (comma-separate several). USE WHEN the user wants a specific edition ('LOTR in paperback', 'the audiobook').
countryNoMarketplace to search. Amazon: us, uk, de, ca, au, fr, it, es, jp, mx, br. walmart = Walmart US (United States only). Pick the marketplace matching the user's country or locale when known (a German user -> de, a Canadian user -> ca); default us. Prices are returned in that marketplace's local currency.us
collapseNotrue (default): one row per book, its other formats listed in the row's `formats` (each with its own ASIN and price). false: every format as its own row.
in_stockNoOnly products currently in stock.
max_priceNoMaximum price, in the marketplace's local currency. USE WHEN the user gives a budget or says cheap/affordable/under X — pass the number here rather than putting the word in q, where it is matched as a literal word in the product title and throws away real results.
min_priceNoMinimum price, in the marketplace's local currency. USE WHEN the user sets a floor ('at least £50', 'nothing cheap').
include_unavailableNofalse (default): only products with a current offer, so the shortlist is buyable. true: also list items that currently have NO offer on the marketplace (Amazon 'Currently unavailable': price null, in_stock false). USE WHEN the user asks about a specific discontinued or sold-out product; otherwise leave it off.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / collapse
      Added value: +{
      +  "default": true,
      +  "description": "true (default): one row per book, its other formats listed in the row's `formats` (each with its own ASIN and price). false: every format as its own row.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / format
      Added value: +{
      +  "description": "Books/media only: return only this format - kindle, paperback, hardcover, mass_market, audiobook, audio_cd, board_book, spiral, library_binding or other (comma-separate several). USE WHEN the user wants a specific edition ('LOTR in paperback', 'the audiobook').",
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / include_unavailable
      Added value: +{
      +  "default": false,
      +  "description": "false (default): only products with a current offer, so the shortlist is buyable. true: also list items that currently have NO offer on the marketplace (Amazon 'Currently unavailable': price null, in_stock false). USE WHEN the user asks about a specific discontinued or sold-out product; otherwise leave it off.",
      +  "type": "boolean"
      +}
  3. Changed6 schema fields changed
    • addedInput schema / properties / brand
      Added value: +{
      +  "description": "Restrict to one exact brand. USE WHEN the user names a brand they want ('Anker charger'); prefer this over putting the brand in q.",
      +  "type": "string"
      +}
    • addedInput schema / properties / in_stock
      Added value: +{
      +  "description": "Only products currently in stock.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / limit
      Added value: +{
      +  "default": 20,
      +  "description": "Max products to return (default 20).",
      +  "maximum": 50,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / max_price
      Added value: +{
      +  "description": "Maximum price, in the marketplace's local currency. USE WHEN the user gives a budget or says cheap/affordable/under X — pass the number here rather than putting the word in q, where it is matched as a literal word in the product title and throws away real results.",
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / min_price
      Added value: +{
      +  "description": "Minimum price, in the marketplace's local currency. USE WHEN the user sets a floor ('at least £50', 'nothing cheap').",
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / sort
      Added value: +{
      +  "default": "relevance",
      +  "description": "relevance (default) | price (cheapest first) | rating. USE price when the user asks for the cheapest, rating when they ask for the best-reviewed.",
      +  "enum": [
      +    "relevance",
      +    "price",
      +    "rating"
      +  ],
      +  "type": "string"
      +}
  4. Changed2 schema fields changed
    • changedInput schema / properties / country / description
      Previous value: -"Marketplace to search. Amazon: us, uk, de, ca, au. walmart = Walmart US (United States only). Pick the marketplace matching the user's country or locale when known (a German user -> de, a Canadian user -> ca); default us. Prices are returned in that marketplace's local currency."New value: +"Marketplace to search. Amazon: us, uk, de, ca, au, fr, it, es, jp, mx, br. walmart = Walmart US (United States only). Pick the marketplace matching the user's country or locale when known (a German user -> de, a Canadian user -> ca); default us. Prices are returned in that marketplace's local currency."
    • changedInput schema / properties / country / enum
      Previous value: -[
      -  "us",
      -  "uk",
      -  "de",
      -  "ca",
      -  "au",
      -  "walmart"
      -]New value: +[
      +  "us",
      +  "uk",
      +  "de",
      +  "ca",
      +  "au",
      +  "fr",
      +  "it",
      +  "es",
      +  "jp",
      +  "mx",
      +  "br",
      +  "walmart"
      +]
  5. Changed1 schema field changed
    • changedInput schema / properties / q / description
      Previous value: -"What to search for, e.g. 'coffee maker'. A bare ASIN returns exactly that product."New value: +"What to search for, e.g. 'coffee maker'. Literal keywords, not semantic: every term must match, so extra or inferred words only narrow the result set. Query in the marketplace's own language - there is no translation. A bare ASIN returns exactly that product."
  6. Changed1 schema field changed
    • changedInput schema / properties / country / description
      Previous value: -"Marketplace to search. Amazon: us, uk, de, ca, au. walmart = Walmart US. Prices are returned in that marketplace's local currency."New value: +"Marketplace to search. Amazon: us, uk, de, ca, au. walmart = Walmart US (United States only). Pick the marketplace matching the user's country or locale when known (a German user -> de, a Canadian user -> ca); default us. Prices are returned in that marketplace's local currency."
  7. Changed4 schema fields changed
    • addedInput schema / properties / country / description
      Added value: +"Marketplace to search. Amazon: us, uk, de, ca, au. walmart = Walmart US. Prices are returned in that marketplace's local currency."
    • changedInput schema / properties / detail / description
      Previous value: -"attach per-product intelligence blocks (30d price/stock change events, full stock history + state, bought-past-month badge, current sellers). 10 credits per query instead of 2."New value: +"Attach per-product intelligence to every product returned (30-day price and stock change events, full stock history and state, bought-past-month badge, current sellers). Keyed accounts only. 5 credits per query instead of 2."
    • addedInput schema / properties / group / description
      Added value: +"How to group the shortlist. auto = choose category or price tiers automatically; category = group by product category; price = group into Budget/Mid-range/Premium; none = one flat ranked list."
    • changedInput schema / properties / q / description
      Previous value: -"what to search for, e.g. 'coffee maker' — or a bare ASIN to return exactly that product"New value: +"What to search for, e.g. 'coffee maker'. A bare ASIN returns exactly that product."
  8. Changed1 schema field changed
    • changedInput schema / properties / q / description
      Previous value: -"what to search for, e.g. 'coffee maker'"New value: +"what to search for, e.g. 'coffee maker' — or a bare ASIN to return exactly that product"
  9. First observed

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safe read-only, idempotent, non-destructive profile, yet the description adds substantial undisclosed behavior: ~100ms latency, no affiliate/sponsored bias, zero-results semantics, the data_source attribution requirement, interpreted_as and match_quality caveats, and a detailed credit/free-lane cost model. Its only shortfall is not covering pagination or result-count edges beyond the limit parameter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded correctly with purpose and routing first, then return shape, then query mechanics and cost. However it runs very long and duplicates the literal-keyword/query-style guidance that already appears in the q parameter description, so some sentences do not fully earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the full burden of describing returns, and it does: product_id with per-marketplace meaning, product_url, title, price currency, rating, review count, stock, observed_at, brand facets, plus the match_quality/interpreted_as signals and grouping behavior. For a 13-param multi-marketplace tool this is complete enough to call blind.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: the literal keyword-matching rule with the accessory trap explanation ('55 inch tv' returns TV stands), the storage-capacity exception, capitalization/language rules per marketplace, and the brand-token collision example. These are operational semantics the schema fields do not carry.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource+scope ('Curated product discovery: a shopping keyword in, a ranked and grouped shortlist out') and immediately distinguishes itself from both siblings: product for ASIN-identified lookups, search for filtered datasets rather than recommendations. An agent can route correctly without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit USE WHEN / DON'T USE WHEN blocks naming the exact alternatives ('use product' for a known ASIN, 'use search' for a filtered dataset), plus trigger phrases ('best X', 'find me a Y under $Z'). Handoff rules are spelled out with concrete examples, including the detail=true vs product decision boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources