Skip to main content
Glama

Shopping Schema Comparison

agentic_shelf_schema_comparator
Read-only

Compare a brand’s shopping schema against up to three competitors—prices, ratings, availability, shipping, returns—and get structured evidence with explicit unknowns for bounded cross-store analysis.

Instructions

Returns structured public evidence and explicit unknowns. Compares a brand with up to 3 competitors as shopping schema: prices, ratings, availability, shipping and returns, from one sampled product per store. $0.02 per comparison. Use for a bounded cross-store comparison; use universal_product_url_to_json for one product or muse_agentic_store_readiness_auditor for a single-store discovery audit. Unavailable evidence stays unknown.

Input Schema

NameRequiredDescriptionDefault
domainYesPublic domain without scheme, path or port.
contextNoOptional. A few words on why you are calling this tool. Recorded without your identity to improve the tools; leave out personal data.
competitor_domainsYesOne to three distinct bare public competitor store domains to compare against domain; one product is sampled per store.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changedv1.0.0
    • addedInput schema / properties / competitor_domains / description
      Added value: +"One to three distinct bare public competitor store domains to compare against domain; one product is sampled per store."
    • changedInput schema / properties / competitor_domains / items / examples
      Previous value: -[
      -  "example.com"
      -]New value: +[
      +  "allbirds.com"
      +]
    • addedInput schema / properties / context
      Added value: +{
      +  "description": "Optional. A few words on why you are calling this tool. Recorded without your identity to improve the tools; leave out personal data.",
      +  "type": "string"
      +}
    • changedInput schema / properties / domain / examples
      Previous value: -[
      -  "example.com"
      -]New value: +[
      +  "allbirds.com"
      +]
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "description": "Only status=ok is charged. Diagnostic results may omit result fields; unknown facts are null.",
      +    "properties": {
      +      "comparison": {
      +        "items": {
      +          "properties": {
      +            "domain": {
      +              "type": "string"
      +            },
      +            "readiness_score": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "structured_fields": {
      +              "type": "object"
      +            }
      +          },
      +          "required": [
      +            "domain",
      +            "readiness_score",
      +            "structured_fields"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "domain": {
      +        "type": "string"
      +      },
      +      "error_reason": {
      +        "type": "string"
      +      },
      +      "limitations": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "status": {
      +        "enum": [
      +          "ok",
      +          "no_data",
      +          "unreachable"
      +        ],
      +        "type": "string"
      +      },
      +      "stores": {
      +        "items": {
      +          "type": "object"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "domain",
      +      "status"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": true,
      +    "properties": {
      +      "code": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "status": {
      +        "maximum": 599,
      +        "minimum": 400,
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "status",
      +      "code"
      +    ],
      +    "type": "object"
      +  }
      +]
    • removedOutput schema / description
      Removed value: -"Only status=ok is charged. Diagnostic results may omit result fields; unknown facts are null."
    • removedOutput schema / properties
      Removed value: -{
      -  "comparison": {
      -    "items": {
      -      "properties": {
      -        "domain": {
      -          "type": "string"
      -        },
      -        "readiness_score": {
      -          "type": [
      -            "number",
      -            "null"
      -          ]
      -        },
      -        "structured_fields": {
      -          "type": "object"
      -        }
      -      },
      -      "required": [
      -        "domain",
      -        "readiness_score",
      -        "structured_fields"
      -      ],
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  "domain": {
      -    "type": "string"
      -  },
      -  "error_reason": {
      -    "type": "string"
      -  },
      -  "limitations": {
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  "status": {
      -    "enum": [
      -      "ok",
      -      "no_data",
      -      "unreachable"
      -    ],
      -    "type": "string"
      -  },
      -  "stores": {
      -    "items": {
      -      "type": "object"
      -    },
      -    "type": "array"
      -  }
      -}
    • removedOutput schema / required
      Removed value: -[
      -  "domain",
      -  "status"
      -]
  2. First observedv0.1.0

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds genuinely new behavioral context the annotations cannot convey: a $0.02 per-comparison cost, that only one product is sampled per store (a representativeness caveat), and that missing evidence is returned as unknown rather than fabricated. It doesn't discuss latency or failure/refund behavior on failed comparisons, which keeps it off a 5.

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?

Four tight sentences with no filler; the evidence dimensions and pricing are front-loaded before the routing guidance. The opening 'Returns structured public evidence and explicit unknowns' is slightly abstract compared to the concrete sentence that follows it, but nothing is wasted overall.

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

Completeness4/5

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

With an output schema present and all three parameters documented, the description only needs to frame scope, cost, and alternatives — which it does. The sampling caveat and unknown-handling rule cover the main interpretive risks. Minor gap: no guidance on what happens if a domain is unreachable or whether the $0.02 is still charged, which matters for a paid tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains that domains must be bare public domains and that competitor_domains takes one to three distinct entries. The description restates the up-to-3 limit and sampling behavior but adds no syntax, normalization, or validation detail beyond the schema. Baseline 3 applies when structured fields do the heavy lifting.

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 (compares), a bounded resource set (a brand vs up to 3 competitors), and the exact evidence dimensions covered: prices, ratings, availability, shipping and returns. The 'one sampled product per store' clause defines the unit of analysis, so an agent knows precisely what output granularity to expect.

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?

Explicitly says 'Use for a bounded cross-store comparison' and names two alternatives with the condition that selects each: universal_product_url_to_json for a single product, muse_agentic_store_readiness_auditor for a single-store discovery audit. This is textbook when-to-use/when-not-to-use routing.

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