Skip to main content
Glama

Camden Tools

Get several products

get_products
Read-only

Look up up to 50 products at once by SKU or by numeric id. Returns compact products (name, price ex/inc VAT, stock, link).

Input Schema

NameRequiredDescriptionDefault
idsNo
skusNo
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

NameRequiredDescriptionDefault
productsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / products / items / properties / categories / description
      Added value: +"Up to 8 category names; get_product has the product's details."
  2. Changed13 schema fields changed
    • removedOutput schema / properties / products / items / properties / brand / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / products / items / properties / brand / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / products / items / properties / brand_slug / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / products / items / properties / brand_slug / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / products / items / properties / image / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / products / items / properties / image / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / products / items / properties / price / anyOf
      Previous value: -[
      -  {
      -    "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"
      -  }
      -]New value: +[
      +  {
      +    "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": {
      +        "description": "VAT rate in percent (20 = 20%). null when unknown: ex_vat then equals inc_vat.",
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "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"
      +  }
      +]
    • removedOutput schema / properties / products / items / properties / slug / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / products / items / properties / slug / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / products / items / properties / summary / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / products / items / properties / summary / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / products / items / properties / url / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / products / items / properties / url / type
      Added value: +[
      +  "string",
      +  "null"
      +]
  3. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "products": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "brand": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "brand_slug": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "categories": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "express_eligible": {
      +            "description": "Website Express (same-working-day UK dispatch); only when the listing reports it.",
      +            "type": "boolean"
      +          },
      +          "gtin": {
      +            "type": "string"
      +          },
      +          "id": {
      +            "type": "number"
      +          },
      +          "image": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "in_stock": {
      +            "type": "boolean"
      +          },
      +          "mpn": {
      +            "type": "string"
      +          },
      +          "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"
      +              }
      +            ],
      +            "description": "null when the product has no online price."
      +          },
      +          "sku": {
      +            "type": "string"
      +          },
      +          "slug": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "stock_level": {
      +            "type": "number"
      +          },
      +          "summary": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "url": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "sku",
      +          "name",
      +          "slug",
      +          "url",
      +          "brand",
      +          "brand_slug",
      +          "categories",
      +          "price",
      +          "in_stock",
      +          "stock_level",
      +          "image",
      +          "summary"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "products"
      +  ],
      +  "type": "object"
      +}
  4. First observed

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already cover the safety profile (readOnlyHint, destructiveHint false, openWorldHint true), so the bar is lower. The description adds useful behavior: a 50-item cap and a 'compact' return shape (name, price ex/inc VAT, stock, link). It does not disclose what happens with ids that don't resolve — skipped, error, or null slots — which matters for a batch lookup.

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?

Two sentences, no waste, key constraint (batch size) and return shape front-loaded. Every clause carries information an agent can act on.

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, return values needn't be explained, and the safety story is carried by annotations. The remaining gap is edge-case behavior: partial resolution of unknown ids, and the fact that neither ids nor skus is required by the schema, so the description should say at least one must be given.

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 only 33%: ids has no schema description and locale's effect is documented in-schema. The description compensates by clarifying that ids must be numeric and that either ids or skus can be used, and repeats the batch cap. It does not say whether ids and skus may be combined in one call or what happens if neither is supplied.

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?

States a specific verb (look up), resource (products), batch scope (up to 50 at once) and the two lookup keys (SKU or numeric id), which separates it from the single-item get_product and the filter-based list_products/search_products. It stops short of naming those siblings explicitly, so the differentiation is inferable rather than stated.

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: call it when you already have SKUs or numeric ids in hand. There is no explicit 'when not to use' or pointer to search_products / list_products as the alternative when you only have a name or category.

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