Skip to main content
Glama

agent_utilities_feed_page_compare_preview

Read-onlyIdempotent

FREE, no key. 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. Entire JSON input: 16384 UTF-8 bytes. Supplied data only; no fetch, payment or automatic paid fallback.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
feedYes
htmlYes
pageUrlNo
offerUrlNo
availabilityProfileNoDefault generic preserves existing vocabulary distinctions. google_merchant maps non-vehicle Schema.org availability to Google feed categories; not an eligibility check.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
modeYes
limitsYes
resultYes
chargedMicroUsdYes
executionPerformedYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedInput schema / 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 / result / properties / availabilityProfile
      Added value: +{
      +  "enum": [
      +    "generic",
      +    "google_merchant"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / properties / result / 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 / properties / result / required
      Previous value: -[
      -  "status",
      -  "identityStatus",
      -  "selection",
      -  "checks",
      -  "evidence",
      -  "warnings",
      -  "scope"
      -]New value: +[
      +  "status",
      +  "identityStatus",
      +  "availabilityProfile",
      +  "selection",
      +  "checks",
      +  "evidence",
      +  "warnings",
      +  "scope"
      +]
  2. Added

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already establish readOnly/idempotent/non-destructive/local scope, so the bar is lower; the description still adds real behavior: it discloses that conflicts and unknown fields are PRESERVED rather than resolved, that no payment or paid fallback occurs, and that input is capped at 16384 UTF-8 bytes. These are genuine operational traits beyond the annotation set.

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 free/no-key hook and the core compare purpose, followed by tighter constraint sentences. Dense but every clause carries information (scope, profile default, size budget, no-fetch). Minimal waste, though the trailing 'no payment or automatic paid fallback' overlaps with the 'FREE, no key' opener.

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?

An output schema exists, so return values need no narration, and the description covers behavior (conflict preservation), input limits, and the profile default. The notable hole is the unexplained distinction between this tool and its non-preview sibling commerce_feed_page_compare, which the description does nothing to resolve.

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 only 20%, so the description must carry meaning, and it partially does: 'identity, price, currency and availability' maps to the feed fields, and the availabilityProfile google_merchant vs generic default is clarified. But html, pageUrl and offerUrl receive no explanation, so several parameters remain undocumented across both schema and description.

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 states a specific verb (compare) plus the exact resources: supplied feed identity/price/currency/availability against selected JSON-LD product evidence. This is well beyond a tautology. However, it never differentiates itself from the near-identical sibling commerce_feed_page_compare or explains what the '_preview' suffix means, leaving the agent unable to route between them from the text alone.

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?

Constrained context is implied: 'FREE, no key', 'Supplied data only; no fetch' tells the agent this runs on provided input rather than fetching pages, and 'availabilityProfile ... generic is the default' guides parameter choice. But there is no explicit when-to-use / when-not-to-use framing and no pointer to commerce_feed_page_compare or the other _preview siblings as alternatives.

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