Skip to main content
Glama

Camden Tools

Compare products

compare_products
Read-only

Side-by-side comparison of 2 to 5 products by SKU: price ex/inc VAT, stock, brand, weight and the specification bullet points, so an agent can recommend between options.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
skusYes
localeNoStorefront locale such as en-GB (default), en-US, de, fr-FR, es-ES, it-IT, nl-NL, pl. Controls product names, slugs and prices.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
comparisonYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "comparison": {
      +      "items": {
      +        "oneOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "found": {
      +                "const": false,
      +                "type": "boolean"
      +              },
      +              "sku": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "sku",
      +              "found"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "brand": {
      +                "anyOf": [
      +                  {
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "express_eligible": {
      +                "anyOf": [
      +                  {
      +                    "type": "boolean"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "found": {
      +                "const": true,
      +                "type": "boolean"
      +              },
      +              "in_stock": {
      +                "type": "boolean"
      +              },
      +              "name": {
      +                "type": "string"
      +              },
      +              "price": {
      +                "anyOf": [
      +                  {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "bulk_prices": {
      +                        "description": "Lower unit prices from min_quantity up.",
      +                        "items": {
      +                          "additionalProperties": false,
      +                          "properties": {
      +                            "ex_vat": {
      +                              "type": "number"
      +                            },
      +                            "inc_vat": {
      +                              "type": "number"
      +                            },
      +                            "min_quantity": {
      +                              "type": "number"
      +                            }
      +                          },
      +                          "required": [
      +                            "min_quantity",
      +                            "ex_vat",
      +                            "inc_vat"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "type": "array"
      +                      },
      +                      "currency": {
      +                        "type": "string"
      +                      },
      +                      "ex_vat": {
      +                        "type": "number"
      +                      },
      +                      "inc_vat": {
      +                        "type": "number"
      +                      },
      +                      "on_sale": {
      +                        "type": "boolean"
      +                      },
      +                      "vat_rate": {
      +                        "anyOf": [
      +                          {
      +                            "type": "number"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ],
      +                        "description": "VAT rate in percent (20 = 20%). null when unknown: ex_vat then equals inc_vat."
      +                      },
      +                      "was_ex_vat": {
      +                        "type": "number"
      +                      },
      +                      "was_inc_vat": {
      +                        "description": "Price before the sale; only when on_sale.",
      +                        "type": "number"
      +                      }
      +                    },
      +                    "required": [
      +                      "currency",
      +                      "ex_vat",
      +                      "inc_vat",
      +                      "on_sale",
      +                      "vat_rate"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "sku": {
      +                "type": "string"
      +              },
      +              "specifications": {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "stock_level": {
      +                "type": "number"
      +              },
      +              "summary": {
      +                "anyOf": [
      +                  {
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "url": {
      +                "anyOf": [
      +                  {
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "weight_kg": {
      +                "anyOf": [
      +                  {
      +                    "type": "number"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              }
      +            },
      +            "required": [
      +              "sku",
      +              "found",
      +              "name",
      +              "brand",
      +              "url",
      +              "price",
      +              "in_stock",
      +              "stock_level",
      +              "weight_kg",
      +              "express_eligible",
      +              "specifications",
      +              "summary"
      +            ],
      +            "type": "object"
      +          }
      +        ]
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "comparison"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context by listing exactly what the comparison surfaces (price with/without VAT, stock, brand, weight, spec bullets), giving the agent a concrete expectation of what a successful call will provide.

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

Conciseness5/5

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

One sentence covers action, scope, input, compared attributes, and purpose without any filler. The most important information ('side-by-side comparison... by SKU') is front-loaded, making it immediately scannable.

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?

The tool is simple — two parameters, one required, with an output schema present — and the description covers core behavior, input range, and output fields. It omits edge cases like invalid SKUs and does not mention locale at all, but schema descriptions and annotations cover most of the remaining context.

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?

The description reinforces that skus refers to product identifiers and that 2-5 are expected, which partially compensates for the 50% schema coverage on that parameter. However, it adds nothing about locale or how it affects output, and the schema already fully describes both parameters' formats and examples.

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?

The description states a specific operation ('side-by-side comparison'), a clear resource ('2 to 5 products by SKU'), and the exact attributes compared (price ex/inc VAT, stock, brand, weight, specification bullet points). This distinguishes it sharply from siblings such as get_product, list_products, or search_products.

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

Usage Guidelines4/5

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

The description conveys the intended use case — 'so an agent can recommend between options' — and the input constraint of 2-5 products by SKU, which implicitly rules out single-product or broad-list tools. It does not explicitly name alternatives or state when not to use the tool, so it stops just short of full guidance.

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