Skip to main content
Glama

commerce_feed_page_compare

Read-only

Compare supplied feed identity, price, currency and availability with selected JSON-LD product evidence; preserve conflicts and unknown fields. Optional availabilityProfile google_merchant applies Google feed mappings; generic is the default. FREE during validation. No key, credits or wallet. Existing source and input limits apply.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
inputYes
requestIdNoOptional legacy field; ignored in free mode.
maxPriceMicroUsdNoOptional legacy field; ignored in free mode.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
scopeYes
checksYes
statusYes
evidenceYes
warningsYes
selectionYes
identityStatusYes
availabilityProfileYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • changedInput schema / properties / maxPriceMicroUsd / description
      Previous value: -"Explicit maximum new debit; 0 means recovery only."New value: +"Optional legacy field; ignored in free mode."
    • removedInput schema / properties / maxPriceMicroUsd / maximum
      Removed value: -999999999999
    • changedInput schema / properties / requestId / description
      Previous value: -"Persist the ID returned by agent_utilities_prepare. Reuse after uncertainty."New value: +"Optional legacy field; ignored in free mode."
    • removedInput schema / properties / requestId / pattern
      Removed value: -"^\\d{13}_[A-Za-z0-9_-]{16,80}$"
    • changedInput schema / required
      Previous value: -[
      -  "input",
      -  "requestId",
      -  "maxPriceMicroUsd"
      -]New value: +[
      +  "input"
      +]
  2. Changed4 schema fields changed
    • addedInput schema / properties / input / properties / availabilityProfile
      Added value: +{
      +  "description": "Default generic preserves existing vocabulary distinctions. google_merchant maps non-vehicle Schema.org availability to Google feed categories; not an eligibility check.",
      +  "enum": [
      +    "generic",
      +    "google_merchant"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / availabilityProfile
      Added value: +{
      +  "enum": [
      +    "generic",
      +    "google_merchant"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / properties / evidence / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "offerSources": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "offerBlock": {
      -              "type": "number"
      -            },
      -            "offerPointer": {
      -              "type": "string"
      -            },
      -            "productBlock": {
      -              "type": "number"
      -            },
      -            "productPointer": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "productBlock",
      -            "productPointer",
      -            "offerBlock",
      -            "offerPointer"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "productSources": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "block": {
      -              "type": "number"
      -            },
      -            "pointer": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "block",
      -            "pointer"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "productSources",
      -      "offerSources"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "offerSources": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "offerBlock": {
      +              "type": "number"
      +            },
      +            "offerPointer": {
      +              "type": "string"
      +            },
      +            "productBlock": {
      +              "type": "number"
      +            },
      +            "productPointer": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "productBlock",
      +            "productPointer",
      +            "offerBlock",
      +            "offerPointer"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "originalAvailability": {
      +        "items": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "type": "array"
      +      },
      +      "productSources": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "block": {
      +              "type": "number"
      +            },
      +            "pointer": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "block",
      +            "pointer"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "productSources",
      +      "offerSources",
      +      "originalAvailability"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / required
      Previous value: -[
      -  "status",
      -  "identityStatus",
      -  "selection",
      -  "checks",
      -  "evidence",
      -  "warnings",
      -  "scope"
      -]New value: +[
      +  "status",
      +  "identityStatus",
      +  "availabilityProfile",
      +  "selection",
      +  "checks",
      +  "evidence",
      +  "warnings",
      +  "scope"
      +]
  3. Added

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already establish read-only, closed-world, non-destructive behavior, so the bar is lower. The description earns credit for adding non-obvious traits: conflicts and unknown fields are preserved rather than dropped, google_merchant remaps availability (explicitly 'not an eligibility check'), and free-mode has no key/credit/wallet requirement. It does not explain the not-idempotent flag, which is slightly surprising for a read-only compare.

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 compact sentences, each carrying distinct information: the comparison scope, the profile option, the billing state, and the limit caveat. Scope is front-loaded and there is no filler, though the two free-mode sentences could be merged.

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?

For a nested-object, read-only comparison tool with an output schema and safety annotations, the description covers scope, mode selection, cost, and limits adequately. Return-value shape is rightly delegated to the output schema; only sibling differentiation and named alternatives are missing.

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 coverage is 67%, so the baseline is 3. The description usefully enumerates which feed fields are compared (identity, price, currency, availability) and clarifies the generic-vs-google_merchant availabilityProfile tradeoff, but adds nothing about pageUrl, offerUrl, or the legacy requestId/maxPriceMicroUsd semantics beyond what the schema already states.

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

Purpose4/5

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

The description names a specific verb (compare) and the two resources being reconciled: the supplied feed identity/price/currency/availability and the JSON-LD product evidence on the page. That is far more than a restatement of the name, though it stops short of explicitly distinguishing itself from siblings like commerce_variant_compare or commerce_offer_extract.

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

Usage Guidelines3/5

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

Usage is implied: you use this when you have both a feed record and a page whose JSON-LD you want cross-checked. The FREE/no-key note is a useful selection signal, but no alternative tool is named and no explicit when-not condition is given, so the agent must infer routing.

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