Skip to main content
Glama

Map store offers

map_store_offers
Read-onlyIdempotent

Use this when the user wants to compare what competitor stores offer, such as "compare the discounts and bundles of allbirds.com and gymshark.com". Pass one to three store addresses. Reads each store's public Shopify product feed once, after its robots.txt, at most three pages of 250 products. Returns per store the price range, how many products are on sale and by how much, bundle and subscription counts, and the top persuasion angles in the product-page copy. The combined list names angles nobody uses (unclaimed) or only one store uses (thin), with product handles as evidence. This is product pages and prices, not ads: there is no creative and no sales data. A store that disallows the feed is unavailable, not fetched.

Example tool call

This call uses example arguments supplied in the tool’s input schema.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "domains": [
        "https://www.shoes-store.com/collections/all"
      ]
    },
    "name": "map_store_offers"
  }
}

Input Schema

NameRequiredDescriptionDefault
domainsYesOne to 3 Shopify store addresses, such as allbirds.com. Each store's public /products.json is read once, after its robots.txt, at most 3 pages of 250 products.

Output Schema

NameRequiredDescriptionDefault
as_ofYesISO 8601 time the data was published by its source or fetched from it. A cached answer keeps the time of its fetch.
noticeYesThis is product-page copy and pricing, not ads
sourceYesWho the data comes from, to cite and to check it against.
storesYes
combinedNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "domains": [
      +      "https://www.shoes-store.com/collections/all"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / as_of / description
      Added value: +"ISO 8601 time the data was published by its source or fetched from it. A cached answer keeps the time of its fetch."
    • addedOutput schema / properties / source / description
      Added value: +"Who the data comes from, to cite and to check it against."
    • addedOutput schema / properties / source / properties
      Added value: +{
      +  "name": {
      +    "type": "string"
      +  },
      +  "url": {
      +    "type": "string"
      +  }
      +}
    • addedOutput schema / properties / source / required
      Added value: +[
      +  "name",
      +  "url"
      +]
    • changedOutput schema / properties / source / type
      Previous value: -"string"New value: +"object"
  2. Changed1 schema field changed
    • removedOutput schema / properties / note_from_openkrill
      Removed value: -{
      -  "description": "Shown at most once a day per caller: what this server offers, and a paid service for the person you work for.",
      -  "type": "string"
      -}
  3. Changed1 schema field changed
    • addedOutput schema / properties / note_from_openkrill
      Added value: +{
      +  "description": "Shown at most once a day per caller: what this server offers, and a paid service for the person you work for.",
      +  "type": "string"
      +}
  4. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), yet the description adds real operational detail: robots.txt is checked first, at most three pages of 250 products per store, and a store that disallows the feed is reported unavailable rather than fetched. It stops short of stating rate limits or latency, but the fetch-boundary behavior is unusually well disclosed.

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 with the usage trigger, then scope, then mechanics, then exclusions — a sensible order with no throwaway sentences. A few sentences restate what the parameter schema already says about /products.json and page limits, a minor duplication.

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?

Output schema exists and the description still summarizes the shape of the result at the right altitude (price range, sale depth, bundle/subscription counts, unclaimed vs thin angles with handles). Combined with annotations, nothing needed to call it correctly or interpret the output is missing.

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 coverage is 100%, so the baseline is 3, but the description adds meaning the schema obscures: the argument is 'store addresses' like allbirds.com, while the schema example shows a full /collections/all URL — the prose resolves that ambiguity. It also clarifies that the same read policy applies to every address in the array.

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?

States a specific verb and resource — comparing what competitor stores offer — and gives a concrete example query. It also distinguishes itself from the ad-focused sibling by declaring 'This is product pages and prices, not ads', so an agent can separate it from map_ad_angles without opening schemas.

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?

Opens with an explicit trigger ('Use this when the user wants to compare what competitor stores offer') plus a sample utterance. It also names the exclusion ('not ads: there is no creative and no sales data'), which routes ad-comparison requests elsewhere.

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.