Camden Tools
Server Details
UK tool shop: search, prices ex/inc VAT, stock, delivery, order tracking and basket links.
- Status
- Healthy
- Uptime
- 99.6% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 29 tools
Each tool has a distinct purpose: product retrieval vs. search vs. stock vs. pricing vs. promotions are clearly separated. Basket, shipping, delivery, and order tracking tools are also uniquely scoped, with no overlapping functionality that would confuse an agent.
All tool names follow a consistent verb_noun pattern with snake_case (e.g., get_product, list_brands, search_products, check_express_eligibility). Verbs are drawn from a small consistent set (get, list, search, check, create, estimate, lookup, track), making the API predictable.
With 29 tools, the server exceeds the typical well-scoped range (3-15) and even the heavy range (16-25). While the domain is broad, the large number increases cognitive load and the risk of tool misselection for an agent.
The tool surface covers the entire shopping workflow: product discovery (search, list, get details), pricing (country-specific, bulk breaks), stock, promotions, basket creation, shipping/delivery estimation, order tracking, and supporting content (blog, policies, site info). No significant gaps are apparent for the stated purpose.
Available Tools
29 toolscheck_express_eligibilityCheck Website Express eligibilityARead-onlyInspect
Whole-basket Website Express verdict for a set of product ids and quantities: every line must be eligible (no split shipments).
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Basket lines as product ids with quantities. | |
| locale | No | Storefront 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
| Name | Required | Description |
|---|---|---|
| lines | Yes | |
| enabled | Yes | |
| express | Yes | |
| basket_eligible | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint, so the safety profile is covered. The description adds useful behavioral context beyond annotations: the verdict is for the whole basket and fails if any single line is ineligible, and split shipments are disallowed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight sentence front-loads the verb and resource, then clarifies the critical eligibility rule in a parenthetical. There is no filler or repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description, rich input schema, output schema, and annotations together give an agent everything needed to select and invoke this tool correctly. Return-value details are covered by the output schema, and safety semantics by annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear documentation for items and locale. The description adds the basket-level relationship but does not need to explain parameter details because the schema already carries that weight.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific operation: a whole-basket Website Express eligibility verdict over a set of product ids and quantities. The qualifier 'every line must be eligible (no split shipments)' adds a precise scope and distinguishes it from shipping-availability and delivery-status siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: use this when a basket-level Website Express eligibility check is needed. It does not explicitly name alternatives or when-not-to-use, but the whole-basket/no-split wording is sufficient to route an agent away from related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_shipping_availabilityCheck shipping availabilityARead-onlyInspect
Whether Camden Tools ships to a country, with any restriction message.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | Storefront locale such as en-GB (default), en-US, de, fr-FR, es-ES, it-IT, nl-NL, pl. Controls product names, slugs and prices. | |
| country_code | Yes | ISO 3166-1 alpha-2 country code, e.g. GB, IE, DE, US. |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | Yes | |
| available | Yes | |
| country_code | Yes | |
| deliveries_url | Yes |
TDQS
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 the useful behavioral detail that the tool returns a restriction message, but it does not describe error behavior, edge cases, or how open-world results should be interpreted. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and contains no filler. It front-loads the core purpose and includes the restriction-message output detail in a compact phrase. The wording is slightly awkward as a sentence fragment, but it is efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with fully documented parameters, annotations, and an output schema, the description is mostly complete. It captures the essential purpose and output nuance. The main gap is the lack of explicit routing among shipping-related sibling tools, but the country-level scope in the description makes the intended use reasonably clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both country_code and locale are already well documented. The description mentions 'country' but does not add parameter-level meaning beyond the schema, such as how locale interacts with the restriction message. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool evaluates: whether Camden Tools ships to a given country, with any restriction message. It identifies the specific resource (country-level shipping availability) and implicitly distinguishes itself from siblings like estimate_delivery or check_express_eligibility, though it does not name them or use an imperative verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied: call this tool when the agent needs to know whether Camden Tools ships to a country and what restrictions apply. However, there is no explicit guidance contrasting it with related siblings such as check_express_eligibility or estimate_delivery, so the agent must infer when this tool is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_productsCompare productsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| skus | Yes | ||
| locale | No | Storefront 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
| Name | Required | Description |
|---|---|---|
| comparison | Yes |
TDQS
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.
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.
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.
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.
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.
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.
create_basket_linkCreate a basket linkARead-onlyIdempotentInspect
Turn product ids and quantities into one link that fills the shopper's basket on camdentools.com. Opening the link makes sure the basket holds at least those quantities (opening it twice does not double them); the shopper reviews the basket and pays at checkout themselves. The result says which lines are out of stock: those cannot be bought, so offer an alternative before sharing the link. Use it to finish a shopping conversation. Ids come from search_products, list_products or get_product.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Basket lines as product ids with quantities. | |
| locale | No | Storefront 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
| Name | Required | Description |
|---|---|---|
| url | Yes | Fills the shopper's basket with these lines. Share it unchanged. |
| note | Yes | |
| lines | Yes | |
| unavailable_ids | Yes | Product ids that were not found. |
| out_of_stock_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With read-only and idempotent hints already present, the description adds concrete details: repeated opening doesn't double quantities, the shopper checks out themselves, and the response flags out-of-stock lines. This clarifies the side effects and limits without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main action and stays compact; all sentences convey useful operational context (idempotency, out-of-stock, sourcing, use case). Slight redundancy in the parenthetical about opening twice could be trimmed, but it is meaningful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create-link tool with full schema, output schema, and safety annotations, this covers the essential agent decisions: when to use it, where to get ids, how idempotency works, and how to handle out-of-stock results. No important behavioral or usage gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents items and locale fully. The description reinforces that ids originate from product-search tools but adds no new format or constraint beyond the schema, matching the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and deliverable: turning product ids and quantities into a single basket-filling link. It also names the exact domain (camdentools.com), distinguishes the output from simple product lookup, and is clearly distinct from all sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent when to use it ('finish a shopping conversation') and where valid ids come from (search_products, list_products, get_product). It also tells the agent to offer alternatives for out-of-stock lines, though it doesn't enumerate when not to use the tool since no direct alternative exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_deliveryEstimate deliveryARead-onlyInspect
Delivery services, charges and transit times for a basket to a destination (country plus postcode/ZIP and city). This is an estimate using placeholder contact details; exact rates are confirmed at checkout.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Destination city. | |
| items | Yes | Basket lines as product ids with quantities. | |
| locale | No | Storefront locale such as en-GB (default), en-US, de, fr-FR, es-ES, it-IT, nl-NL, pl. Controls product names, slugs and prices. | |
| postcode | No | Destination postcode / ZIP. | |
| country_code | Yes | ISO 3166-1 alpha-2 country code, e.g. GB, IE, DE, US. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| rates | Yes | |
| country_code | Yes | |
| ddp_included | Yes | Duties and taxes are prepaid (DDP) in the charges. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint, so the tool is safe and non-mutating. The description adds valuable context: it uses placeholder contact details and is an estimate, which is beyond what annotations provide. This prevents the agent from expecting exact rates or real contact information. Given the annotations already cover safety, this is strong added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, and the second sentence adds a critical caveat (estimate, placeholder) that is relevant. No redundant words. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is moderately complex (5 params, nested items array), but the input schema is thorough and there is an output schema. The description covers the essentials: what it estimates, the destination components, and the estimate nature. It doesn't mention that it is read-only (but annotations do), and it doesn't detail return format (but output schema exists). Given the richness of structured data, this is complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema describes all parameters. The description explicitly mentions 'country plus postcode/ZIP and city', which maps to country_code, postcode, and city, and 'basket' to items. However, it doesn't add details on format, defaults, or locale behavior beyond what the schema already provides. Since the schema is comprehensive, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('estimate'), the resource ('delivery'), and the specific scope (services, charges, transit times for a basket to a destination). It distinguishes itself from siblings like check_shipping_availability by focusing on estimation rather than availability, and it sets expectations that this is an estimate, not exact rates. This is specific and actionable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: to obtain delivery estimates for a basket to a specific destination. It caveats that exact rates are confirmed at checkout, which helps the agent know not to treat this as final. However, it does not explicitly name alternatives (e.g., check_shipping_availability) or state when not to use it, though the sibling list provides context. Slight deduction for not naming alternatives explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_blog_postGet blog postARead-onlyInspect
A blog post's full text (plain text) by slug.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | ||
| locale | No | Storefront 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
| Name | Required | Description |
|---|---|---|
| post | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish this as a safe read-only operation (readOnlyHint=true, destructiveHint=false). The description adds useful context that the response is full plain text and that lookup is by slug, but it does not cover not-found behavior, locale effects, or any limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short sentence with no filler, yet it includes the resource, identifier, and return format. It is terse without being under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only fetch with an output schema and annotation-covered safety profile, the description plus schema is sufficient. The main omission is not pointing to search_blog_posts for discovery, but that is more of a usage-guideline gap than a completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides a detailed description for locale but leaves slug undocumented; the description's 'by slug' gives slug its semantic role as the identifier. Locale is not mentioned in the description, but the schema covers it, so combined parameter understanding is adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource ('a blog post's full text') and the lookup key ('by slug'), and specifies the output format ('plain text'). It is distinct from search_blog_posts by implying direct slug-based retrieval, though it never explicitly names that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by slug' implies this tool is for retrieving a known post rather than discovering one, giving a basic usage signal. However, there is no explicit guidance about when to prefer this over search_blog_posts, and no exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_brand_productsGet brand productsBRead-onlyInspect
A brand's details, its active promotions and its products (paged) by brand slug.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, starting at 1. | |
| slug | Yes | Brand slug from list_brands. | |
| locale | No | Storefront locale such as en-GB (default), en-US, de, fr-FR, es-ES, it-IT, nl-NL, pl. Controls product names, slugs and prices. | |
| per_page | No | Results per page: 15, 30, 50 or 100 (default 15). |
Output Schema
| Name | Required | Description |
|---|---|---|
| brand | Yes | |
| products | Yes | |
| pagination | Yes | |
| promotions | Yes |
TDQS
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 that results are paged and that promotions are specifically 'active', which is useful context, but it does not disclose other behavioral traits such as rate limits or auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler. It front-loads the main scope (brand details, active promotions, products) and adds the pagination trait and key lookup method without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool is read-only, has a full output schema, and complete parameter descriptions, the definition is adequate for an agent to understand what is returned and how to invoke it. The missing usage-guidance is a gap, but it is already penalized in that dimension; nothing essential for calling the tool correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters fully. The phrase 'by brand slug' reinforces the key lookup parameter but adds no new semantic detail beyond the schema's own parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (brand details, active promotions, and products) and the access key (brand slug), and the title reinforces the retrieval action. It distinguishes from generic product tools by being brand-scoped, though it does not explicitly name a sibling tool as an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like get_products or list_products. The only hint is in the slug parameter description ('from list_brands'), not in the tool description, and no exclusions or alternative conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cart_promotionsGet basket promotionsARead-onlyInspect
Evaluate a prospective basket for a destination country: whether it can be fulfilled, which promotions apply (including free-delivery style offers and free gifts) and the adjusted basket value. Same check the checkout runs.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Basket lines as product ids with quantities. | |
| locale | No | Storefront locale such as en-GB (default), en-US, de, fr-FR, es-ES, it-IT, nl-NL, pl. Controls product names, slugs and prices. | |
| has_tax_id | No | Whether the buyer has a VAT/tax id (business purchase). | |
| country_code | Yes | Destination country (ISO alpha-2). |
Output Schema
| Name | Required | Description |
|---|---|---|
| lines | Yes | |
| message | Yes | |
| free_gifts | Yes | |
| promotions | Yes | |
| can_fulfill | Yes | |
| basket_value | Yes | |
| adjusted_value | Yes | Basket value after promotions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a read-only, non-destructive operation. The description adds meaningful behavioral context by stating it performs the same evaluation the checkout runs, and by revealing that it covers fulfillment, promotions, free gifts, and adjusted basket value. This goes beyond the structured hints without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loads the core purpose, and contains no filler. Every clause adds useful information: prospective basket, destination country, fulfillment check, promotion types, adjusted value, and checkout parity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only evaluation tool with a full input schema, annotations, and an output schema, the description covers everything an agent needs to decide when and why to call it. It does not need to restate parameter mechanics or return values because the structured fields already provide those details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter, including country_code, items, locale, and has_tax_id. The description adds general context about evaluating a prospective basket, but it does not add parameter-specific meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Evaluate') and a precise resource ('a prospective basket for a destination country'), and it enumerates the concrete outputs: fulfillment status, applicable promotions, free-delivery offers, free gifts, and adjusted basket value. It also distinguishes itself from product-level tools by scoping to the whole basket and noting it is 'the same check the checkout runs.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly establishes when to use the tool: to evaluate a prospective basket against a destination country and see fulfillment plus promotions. It does not explicitly name alternatives or state when not to use it, but the basket-level framing and 'same check the checkout runs' provide strong contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_categoryGet categoryARead-onlyInspect
A category's name, description and its products (paged) by category slug.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, starting at 1. | |
| slug | Yes | Category slug from list_categories. | |
| sort | No | Sort order: price_low, price_high, name_asc, name_desc or newest. Omit for the default (most popular) order. | |
| locale | No | Storefront locale such as en-GB (default), en-US, de, fr-FR, es-ES, it-IT, nl-NL, pl. Controls product names, slugs and prices. | |
| per_page | No | Results per page: 15, 30, 50 or 100 (default 15). |
Output Schema
| Name | Required | Description |
|---|---|---|
| category | Yes | |
| products | Yes | |
| pagination | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the useful scope that the response includes paged products, but it does not disclose additional behavior such as default sort or locale effects—those are left to the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the resource and the main outcome while staying concise. No filler or repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only category lookup, the description plus the fully documented input schema and output schema supplies what an agent needs to invoke it correctly. It lacks only explicit routing guidance versus similar product/category tools, which is already reflected in the usage dimension.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters like page, sort, locale, and per_page are already fully documented. The description reinforces that slug is the identifier but adds no new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is specific about the verb ('get'), the resource ('category'), the lookup key ('by category slug'), and the returned contents (name, description, paged products). This distinguishes it from list_categories (which lists categories) and get_products/get_brand_products (which are product-centric).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or exclusion statement naming alternatives. The only usage context is implied: the schema notes slug comes from list_categories and the description centers on a single category slug, which suggests a list-first, then-detail flow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_collection_point_infoGet collection point infoARead-onlyInspect
The London Click & Collect warehouse: address, opening hours, whether it is open right now (Europe/London, bank holidays respected) and when it next opens.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| status | Yes | |
| page_url | Yes | |
| timezone | Yes | |
| how_it_works | Yes | |
| address_lines | Yes | |
| opening_hours | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral details beyond the readOnly/openWorld/destructive annotations: timezone handling (Europe/London), bank-holiday awareness, and the notion of an 'open right now' computation. This gives the agent useful expectations about time-sensitivity and regional logic.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is one efficient sentence that front-loads the resource and immediately lists the returned information. No filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, read-only, parameterless retrieval tool with an output schema, the description fully covers what the agent needs to know: the subject, available data fields, timezone, and holiday behavior. Nothing important is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema coverage is 100%, so there is nothing for the description to clarify about inputs. Per baseline for parameterless tools, a score of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('get') and a specific resource ('London Click & Collect warehouse') and enumerates the exact information returned: address, opening hours, current open status, and next opening time. This distinguishes it from broader sibling tools like get_site_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly contextualizes the tool as the source for London Click & Collect warehouse details, so an agent can infer when to call it. It does not explicitly name alternatives or exclusion criteria, but the resource specificity makes the intended use obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_express_delivery_statusGet Website Express statusARead-onlyInspect
Whether Website Express (free same-working-day dispatch for eligible UK orders) is available right now, the order-by cutoff and the promised dispatch date.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | Storefront 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
| Name | Required | Description |
|---|---|---|
| cutoff | Yes | |
| enabled | Yes | |
| order_by_iso | Yes | |
| available_now | Yes | |
| express_products_url | Yes | |
| promised_dispatch_date | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, covering the safety and real-time nature. The description adds value by specifying the exact outputs (availability, cutoff, dispatch date), which is not present in the annotations. It does not contradict any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the essential information without fluff. It states the core question (availability) and the key outputs (cutoff, dispatch date) efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only status tool with one optional parameter, an output schema, and annotations covering safety and open-world behavior, the description is complete. It provides enough context for an agent to understand what the tool does and what it returns, without needing to explain return formats (since the output schema exists).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully describes the single optional locale parameter (100% coverage), so the description does not need to add further detail. The description makes no mention of locale's effect on the express status, but that is already covered by the schema, and the baseline of 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to report whether Website Express is currently available, along with the order-by cutoff and promised dispatch date. It uses a specific verb (get) and resource (Website Express status), and it distinguishes from siblings like check_express_eligibility (which checks eligibility for a specific order) and check_shipping_availability (general shipping) by focusing on current availability rather than eligibility or general shipping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (to check Website Express availability) but does not explicitly mention when to use alternatives like check_express_eligibility or check_shipping_availability. There is no direct guidance on when not to use it or how it differs from these siblings, so the agent must infer the usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_policyGet policy textARead-onlyInspect
Full text (markdown) of a store policy: delivery, returns, payment-options, faqs or contact.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | Storefront locale such as en-GB (default), en-US, de, fr-FR, es-ES, it-IT, nl-NL, pl. Controls product names, slugs and prices. | |
| policy | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| title | Yes | |
| markdown | Yes |
TDQS
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 the useful detail that the return is full text in markdown format, which is not conveyed by annotations. It does not disclose other behaviors like localization effects, but with annotations covering safety and an output schema present, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the core purpose (full text of a policy) and immediately lists the valid values. There is zero redundancy or fluff, and every word contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with two parameters, an output schema, and safety annotations, the description is nearly complete. It covers the return format (markdown) and the allowed policy types. The only minor gap is that it does not explicitly mention the locale parameter's role, but that is fully documented in the schema, so the description is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% because only the 'locale' parameter has a description; 'policy' is just an enum with no explanation. The tool description compensates by listing the allowed policy values, which adds meaning to the 'policy' parameter. However, it does not clarify the 'locale' parameter's effect on the returned text, though the schema does provide a detailed description for it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: retrieving the full markdown text of a store policy, and enumerates the exact policy types (delivery, returns, payment-options, faqs, contact). This is a specific verb+resource pairing that distinguishes it from all sibling tools, which are unrelated (e.g., get_product, list_categories).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly communicates when to use the tool by listing the policy types, making it obvious that this is the go-to for any policy text. There are no sibling tools with a similar purpose, so no alternative routing is needed. However, it does not explicitly state 'use this when...' or mention any exclusions, but the context is clear enough for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_prices_for_countryGet prices for a countryARead-onlyInspect
Country-specific pricing for a set of products (the checkout applies the destination country's currency and pricing). Returns unit, sale and final prices plus the subtotal.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Basket lines as product ids with quantities. | |
| locale | No | Storefront locale such as en-GB (default), en-US, de, fr-FR, es-ES, it-IT, nl-NL, pl. Controls product names, slugs and prices. | |
| shipping_country | Yes | ISO 3166-1 alpha-2 country code, e.g. GB, IE, DE, US. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| currency | Yes | |
| subtotal | Yes | |
| fallback_used | Yes | No prices for this country: another country's were used. |
| pricing_country | Yes | |
| shipping_country | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavioral detail beyond the readOnlyHint/openWorldHint/destructiveHint annotations: it explains that the checkout applies the destination country's currency and pricing and explicitly lists the returned price components. This helps the agent understand what to expect from the call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loading the country-specific scope and clearly stating the return contents. There is no redundant or filler wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given full schema coverage, annotations, and an output schema, the description provides the key conceptual context: checkout destination pricing and the returned price types. A minor gap is the lack of routing guidance among related pricing and product tools, but the core invocation details are covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear descriptions for shipping_country, items, and locale. The description reinforces the country-pricing concept but does not need to repeat parameter syntax; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation: retrieving country-specific pricing for a set of products, including unit, sale, final prices, and subtotal. It is specific about the resource and output, though it does not explicitly differentiate itself from sibling pricing tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The checkout context implies the tool is intended for destination-country price calculations, which gives some usage guidance. However, it does not state when to prefer this over related tools like compare_products, list_offers, or get_cart_promotions, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_productGet productARead-onlyInspect
Full details for one product by slug, SKU or id: description, specifications, prices ex/inc VAT with bulk breaks, stock, variants, safety/spec documents and the canonical page URL. Provide exactly one of slug, sku or id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Numeric product id. | |
| sku | No | Product SKU. | |
| slug | No | Product slug from a product URL (…/product/<slug>). | |
| locale | No | Storefront 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
| Name | Required | Description |
|---|---|---|
| product | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description needs only to add non-annotated behavior. It does so by enumerating the specific payload areas (prices ex/inc VAT with bulk breaks, stock, variants, safety/spec documents, canonical page URL) and by making the mutual-exclusion input requirement explicit. It doesn't state error behavior, but that burden is lighter given the read-only annotations and the fact that it's a single-record fetch.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first opens with the core capability and data list, the second states the input constraint. There is no filler or repetition of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a full input schema, output schema, and read-only annotations, the main gaps are covered. The description could additionally mention the default locale or behavior when no product is found, but those are minor given schema and annotations. The main missing context is explicit guidance about which sibling tools to use for partial data, but that's captured under usage guidelines.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes all four parameters (100% coverage), so the baseline is 3. The description adds the critical constraint that slug, sku, and id are mutually exclusive—'Provide exactly one of slug, sku or id'—which the schema does not encode (no required/oneOf). This elevates the description above pure schema repetition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Full details for one product by slug, SKU or id' with a specific verb and resource, and enumerates the returned data (prices, stock, variants, documents). This clearly distinguishes it from plural list tools like get_products/list_products and narrow single-aspect siblings like get_stock_level or get_product_documents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only explicit usage guidance is 'Provide exactly one of slug, sku or id,' which constrains input but doesn't tell the agent when to choose this tool over the many overlapping siblings (get_products, get_product_documents, get_stock_level, get_prices_for_country). The 'full details for one product' phrasing implies the use case, but no exclusions or alternative routing are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_product_documentsGet product documentsARead-onlyInspect
Safety data sheets, specification sheets and COSHH hazard codes for a product (by slug or SKU). Returns document URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| sku | No | Product SKU. | |
| slug | No | Product slug from a product URL (…/product/<slug>). | |
| locale | No | Storefront 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
| Name | Required | Description |
|---|---|---|
| product | Yes | |
| documents | Yes | |
| hazardous | Yes | |
| coshh_codes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds meaningful context beyond that by enumerating the document types returned and stating that the result is a set of document URLs, which helps the agent predict the response without needing to open the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is two short sentences with high information density. It front-loads the document types, adds the identifier options, and states the return shape with no filler or repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple parameter set, full schema coverage, read-only annotations, and presence of an output schema, the description is essentially complete for selecting and invoking the tool. A minor gap is that it does not explicitly say that at least one of slug or SKU should be provided, even though that is strongly implied by 'by slug or SKU'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents sku, slug, and locale. The description adds only the clarification that a product can be identified 'by slug or SKU', which is useful but not a major addition beyond the schema's own parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves product documents (safety data sheets, specification sheets, COSHH hazard codes) and returns their URLs. This is specific enough to distinguish it from sibling tools like get_product or get_related_products, which return general product or relationship data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the right usage context: when document-level data such as safety or specification sheets is needed for a product. It also tells the caller the lookup can be done by slug or SKU, but it does not explicitly list when not to use it or point to alternatives, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_product_promotionsGet product promotionsARead-onlyInspect
Active promotions that apply to one SKU (discounts, free gifts, end dates).
| Name | Required | Description | Default |
|---|---|---|---|
| sku | Yes | Product SKU exactly as shown on the site. | |
| locale | No | Storefront 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
| Name | Required | Description |
|---|---|---|
| sku | Yes | |
| promotions | Yes |
TDQS
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 clear. The description adds that promotions are 'active' and includes 'end dates', which is useful. Since openWorldHint=true is also present, the description could have noted that results are not exhaustive, but it doesn't. Overall, it adds moderate context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one clear, concise sentence that packs all essential information: active promotions, single SKU scope, and examples of what is included. It is front-loaded with the purpose and is efficient with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with only two parameters, a full schema, and an output schema. The description adequately covers the purpose and key details. The only minor gap is not stating that the output is limited to active promotions only (though 'active' is implied). Given the output schema likely documents return structure, the description is sufficient for an agent to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are well documented. The description doesn't repeat schema details but mentions 'discounts, free gifts, end dates' which hints at the type of data returned, complementing the schema. It doesn't add new semantics for the 'locale' parameter, but the schema already covers that. Since the schema covers everything, the description's contribution is minimal but acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as returning active promotions for a single SKU, with specific examples of promotion types (discounts, free gifts, end dates). It is distinguishable from the sibling 'get_cart_promotions' which focuses on cart-level promotions. However, it doesn't explicitly compare with any sibling to avoid confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies it is for SKU-level promotions, and the sibling 'get_cart_promotions' likely handles cart-level, but there is no explicit guidance on when to use this tool versus alternatives. No exclusions are stated, and the usage context is left to the agent to infer from the resource type.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_productsGet several productsARead-onlyInspect
Look up up to 50 products at once by SKU or by numeric id. Returns compact products (name, price ex/inc VAT, stock, link).
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | ||
| skus | No | ||
| locale | No | Storefront 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
| Name | Required | Description |
|---|---|---|
| products | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and destructiveHint, covering the safety profile. The description adds useful behavioral context by noting that the result is a compact projection (name, price ex/inc VAT, stock, link) rather than full product records. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The action, resource, limit, and selection keys are front-loaded, and the return-shape note is compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a batch read tool with a rich output schema and read-only annotations, the description is largely sufficient: it explains what to pass and what kind of data comes back. It could be improved by explicitly routing single-product or search scenarios to siblings, but that is more of a usage-guideline refinement than a completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, so the description must compensate. It maps 'SKU' to the skus parameter and 'numeric id' to the ids parameter, adding minimal domain meaning. However, it does not clarify whether ids and skus can be mixed, whether at least one is required, or how locale affects output beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific verb ('Look up'), resource ('products'), and the exact selection mechanism ('by SKU or by numeric id') with a batch limit of 50. The phrase 'Returns compact products' helps distinguish it from single-product get_product or broad search_products.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use it: when you already have SKUs or numeric IDs and need several products at once. It does not explicitly name alternatives or exclusion conditions, such as using get_product for a single product or search_products for fuzzy lookup, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_site_infoGet store informationARead-onlyInspect
Who Camden Tools is, how to contact them, VAT display rules, key page links, current announcements and a summary of each policy (delivery, returns, payment, FAQs). Call get_policy for the full text of a policy.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | Storefront 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
| Name | Required | Description |
|---|---|---|
| pages | Yes | |
| store | Yes | |
| policies | Yes | |
| how_to_buy | Yes | |
| announcements | Yes | |
| collection_point | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so no safety disclosure is missing. The description adds some behavioral context (policy summaries instead of full text, current announcements) but does not address freshness, locale-dependent output, or any access considerations beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single focused sentence with no filler, front-loading the core identity of the tool and ending with a useful pointer to get_policy. Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity, optional-parameter read-only tool with a rich output schema and strong annotations, the description covers what the tool returns and where to go for full policy text. Nothing essential is missing for correct selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the locale parameter already has a detailed description listing supported values and its effect on product names, slugs, and prices. The tool description adds nothing about locale, but the schema carries the full burden adequately, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates a specific, bounded resource — Camden Tools' storefront information — and distinguishes itself from get_policy by offering summaries of policies rather than full text. The content list (contact info, VAT rules, links, announcements, policy summaries) makes the tool's scope immediately recognizable among the large sibling set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly directs agents to use get_policy when full policy text is needed, which is the main closely-related alternative. It does not state a broader 'use this when...' condition, but the scope is narrow enough that the intended context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stock_levelGet stock levelARead-onlyInspect
Live availability check for a SKU (is it available now and how many are in the London warehouse).
| Name | Required | Description | Default |
|---|---|---|---|
| sku | Yes | Product SKU exactly as shown on the site. |
Output Schema
| Name | Required | Description |
|---|---|---|
| sku | Yes | |
| locale | Yes | |
| available | Yes | |
| warehouse_quantity | Yes | Units in the London warehouse; null when not reported. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool is read-only, non-destructive, and open-world. The description adds valuable behavioral context by emphasizing 'live' availability, meaning real-time inventory rather than cached data, and by scoping the check to the London warehouse. No contradiction exists between description and annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single well-structured sentence that front-loads the core purpose and immediately clarifies what the tool returns. There is no filler, repetition, or unnecessary background information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one required parameter, an existing output schema, and read-only annotations, the description is complete: it names the input type, the live nature of the check, and the specific warehouse scope. An agent has enough information to select and call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema describes the sku parameter completely, including min/max length and the instruction to use the SKU 'exactly as shown on the site.' With 100% schema description coverage, the tool description does not need to add much parameter detail, and it appropriately keeps the focus on behavior rather than repeating the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (live availability check), resource (SKU), and the exact information returned (available now and quantity in the London warehouse). This clearly distinguishes it from sibling tools like check_shipping_availability or get_prices_for_country, which answer different questions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: when an agent needs real-time stock availability and quantity for a SKU in the London warehouse. It does not explicitly name alternatives or say when not to use it, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_brandsList brandsARead-onlyInspect
Brands sold by Camden Tools (DeWalt, Makita, Milwaukee, Bosch, Stanley …). Without a query returns the popular brands; with a query searches brand names.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, starting at 1. | |
| sort | No | Sort order: price_low, price_high, name_asc, name_desc or newest. Omit for the default (most popular) order. | |
| query | No | Brand name search text. | |
| per_page | No | Results per page: 15, 30, 50 or 100 (default 15). |
Output Schema
| Name | Required | Description |
|---|---|---|
| brands | Yes | |
| pagination | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and non-destructive behavior, and the description adds value by revealing the conditional behavior: no query returns popular brands, while a query searches brand names. This goes beyond the annotation signals without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no filler. The resource and scope are front-loaded, and every clause contributes useful behavioral information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no required parameters, a high-coverage schema, an output schema, and safety annotations, the description is complete. It covers the main call patterns and the scope of the brand catalog, leaving no critical behavioral gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all four parameters. The description adds modest context around the query parameter (searches brand names) and the default popular-brand behavior, but page, sort, and per_page semantics remain entirely schema-defined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the exact resource (Camden Tools' brands) and gives concrete examples (DeWalt, Makita, Milwaukee). It also distinguishes the tool from sibling product/category tools by focusing on the brand catalog and by stating the query/no-query behaviors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to include or omit the query parameter, which is useful internal guidance. However, it does not explicitly compare this tool with siblings such as get_brand_products, list_products, or search_products, so selection guidance is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_bundlesList bundlesBRead-onlyInspect
Curated product bundles (kits) with their items and prices.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | Storefront 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
| Name | Required | Description |
|---|---|---|
| groups | Yes | |
| bundles_url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and destructiveHint, so the safety profile is covered. The description adds useful semantic context ('curated product bundles (kits)') but does not disclose additional behavioral traits such as pagination, response shape, or any locale-specific effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly worded sentence with no filler. It front-loads the core concept ('Curated product bundles') and immediately states the expected contents ('items and prices').
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list operation with one optional parameter, full schema coverage, and an output schema present, the description is sufficiently complete. It would be marginally better with an explicit pointer to sibling tools for non-bundle product queries, but that is not necessary for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes the locale parameter and its effect on product names, slugs, and prices, so schema coverage is 100%. The description adds no parameter-level detail, but it does not need to because the schema already carries that burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as curated product bundles/kits and specifies that items and prices are included, which distinguishes it from siblings like list_products and list_offers. The action ('list') is carried by the title and name, so the purpose is unambiguous even if the description itself lacks an explicit verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no explicit guidance about when to use this tool versus alternatives such as list_products or list_offers. Usage is only implied by the word 'bundles,' which is too weak to count as real routing guidance for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesList categoriesARead-onlyInspect
Product categories with slugs and links. Use popular_only for the curated set shown on the site; otherwise the full list.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum categories to return (default 100). | |
| locale | No | Storefront locale such as en-GB (default), en-US, de, fr-FR, es-ES, it-IT, nl-NL, pl. Controls product names, slugs and prices. | |
| popular_only | No | Only the popular categories (default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| categories | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds the popular_only semantic and the return of slugs/links, but no pagination, ordering, or other behavioral details. With annotations covering the safety profile, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no waste, and the key distinction (popular_only) is front-loaded. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and annotations cover safety, the description is sufficient. It tells the agent what the tool returns and when to use the key flag. Missing explicit differentiation from get_category is a minor gap but not critical for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters are documented. The description adds meaning to popular_only by describing it as 'the curated set shown on the site', which is helpful. However, limit and locale are not given extra context beyond the schema, so the description adds only marginal value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States it returns product categories with slugs and links, which is specific. It clearly distinguishes from get_category (singular) and other list_* tools by naming the resource and the popular_only filter, though it doesn't explicitly say 'List all categories'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use popular_only (curated site set vs full list). It doesn't name alternatives like get_category, but the resource is clear enough that an agent can infer when to use this vs a single-category fetch.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_offersList offersARead-onlyInspect
Current storefront promotions (percentage/fixed discounts and free gifts), optionally grouped by brand or category. Also points at the /offers page.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | Storefront locale such as en-GB (default), en-US, de, fr-FR, es-ES, it-IT, nl-NL, pl. Controls product names, slugs and prices. | |
| group_by | No | Grouping (default all). |
Output Schema
| Name | Required | Description |
|---|---|---|
| groups | No | With group_by brand or category. |
| offers | No | With group_by all (the default). |
| offers_url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds that results are current and can be grouped, but does not disclose return behavior such as pagination, ordering, or data freshness beyond 'current'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loads the main purpose. The first sentence is information-dense; the second sentence about the /offers page is a minor extra that does not support invocation but is not verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with an output schema, no required parameters, and strong annotations, the description is mostly sufficient. The main gap is not explicitly differentiating it from the cart- and product-promotion siblings, which would help an agent choose correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters locale and group_by are already documented. The description's 'grouped by brand or category' echoes the group_by enum values without adding meaningful new semantics, and locale is not mentioned in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it lists current storefront promotions, including the types of promotions covered and optional grouping. It does not explicitly contrast with sibling tools like get_cart_promotions or get_product_promotions, though 'storefront' narrows the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied by 'current storefront promotions', suggesting this is for site-level offers rather than cart- or product-specific ones. However, it does not explicitly state when to choose this tool over sibling promotions tools or mention any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_productsList productsARead-onlyInspect
Browse a product collection: most popular, newest, on sale, Website Express eligible, or a category by slug (see list_categories). Supports paging, sorting and brand/price filters.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, starting at 1. | |
| sort | No | Sort order: price_low, price_high, name_asc, name_desc or newest. Omit for the default (most popular) order. | |
| brand | No | Brand slug to filter by. | |
| locale | No | Storefront locale such as en-GB (default), en-US, de, fr-FR, es-ES, it-IT, nl-NL, pl. Controls product names, slugs and prices. | |
| per_page | No | Results per page: 15, 30, 50 or 100 (default 15). | |
| max_price | No | Maximum price in the locale currency. | |
| min_price | No | Minimum price in the locale currency. | |
| collection | Yes | Which collection to list. | |
| min_discount | No | Minimum discount percentage (on-sale listings). | |
| category_slug | No | Required when collection is 'category'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| category | No | The category, when collection is category. |
| products | Yes | |
| collection | Yes | |
| pagination | Yes |
TDQS
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 that paging, sorting, and brand/price filters are supported, which is useful, but it does not disclose behavioral details like pagination limits, locale-controlled output, or defaults—though these appear in the schema. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: two sentences, with the core browse action and collection modes front-loaded, followed by supporting capability details. No redundant phrases or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 10 parameters and presence of an output schema, the description plus schema is largely sufficient for an agent to invoke the tool correctly. It covers the main use case and points to list_categories for category slugs, but it does not help an agent choose between this and other product-listing siblings, which is a minor completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are documented structurally. The description's mention of paging, sorting, and brand/price filters merely paraphrases existing schema properties without adding new meaning. The only slight addition is the cross-reference to list_categories for category slugs, which is already implied by category_slug's schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action ('Browse a product collection') and names the specific collections it covers (most popular, newest, on sale, Website Express eligible, category by slug). It is unambiguous about the tool's resource, but it does not explicitly differentiate from sibling listing tools like get_products or search_products beyond the collection framing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: for browsing predefined product collections, paging, sorting, and filtering. It cross-references list_categories for category slugs, but provides no explicit guidance on when not to use it or which sibling to choose instead, such as search_products for keyword search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_uk_postcodeLook up a UK postcodeARead-onlyInspect
Addresses for a UK postcode (rate limited upstream). Returns matching addresses or suggestions when the postcode is incomplete.
| Name | Required | Description | Default |
|---|---|---|---|
| postcode | Yes | UK postcode, e.g. NW2 7JW. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| addresses | Yes | |
| suggestions | Yes | Possible postcodes when the one given is incomplete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only, and the description adds meaningful behavior beyond that: upstream rate limiting and graceful fallback to suggestions for incomplete postcodes. No contradiction with the annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The core behavior and an important caveat (rate limiting) are front-loaded, and the fallback behavior follows naturally.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only lookup with an output schema, the description is sufficiently complete: it covers the core behavior, the rate-limit caveat, and the incomplete-postcode fallback. No essential invocation detail is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter already includes an example. The description adds value by indicating that incomplete postcodes are accepted and produce suggestions, which is not stated in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation ('Returns matching addresses or suggestions for a UK postcode') and identifies the resource. It is immediately distinguishable from the product/cart/order sibling tools, none of which perform postcode address lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than explicit: an agent can infer this tool is for UK postcode address lookups, but the description does not name alternatives or state when-not-to-use it. The note about incomplete postcodes gives some input-handling guidance but no comparative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_blog_postsSearch blog postsBRead-onlyInspect
Guides and articles from the Camden Tools blog (how-tos, buying guides, brand news).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, starting at 1. | |
| query | No | Search text; omit for the latest posts. |
Output Schema
| Name | Required | Description |
|---|---|---|
| posts | Yes | |
| blog_url | Yes | |
| pagination | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context about the content types (how-tos, buying guides, brand news) but does not disclose behavior such as pagination, ordering, or how query omission behaves beyond what the schema already states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler. It front-loads the resource and scope, though it could be slightly more informative without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only search tool with full schema coverage and an output schema, the description is mostly adequate. The main gap is the lack of usage guidance distinguishing it from get_blog_post, which an agent would need to choose correctly among siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both page and query already documented in the schema. The description adds no additional parameter-level meaning, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title provides the verb 'Search' and the description identifies the resource as 'Guides and articles from the Camden Tools blog,' which is specific enough to distinguish it from the singular get_blog_post sibling. It could be stronger by explicitly stating it returns a list of matching posts, but the scope and content types are clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as get_blog_post or search_products. The description implies it is for blog content, but it does not state exclusions, prerequisites, or when a sibling would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_productsSearch productsARead-onlyInspect
Full-text search of the Camden Tools catalogue (hand tools, power tools, accessories, safety equipment). Returns compact products with prices ex/inc VAT, stock and a link. Use page/per_page to paginate and brand/min_price/max_price to narrow down.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, starting at 1. | |
| sort | No | Sort order: price_low, price_high, name_asc, name_desc or newest. Omit for the default (most popular) order. | |
| brand | No | Brand slug to filter by. | |
| query | Yes | What the shopper is looking for, e.g. 'cordless combi drill 18v'. | |
| locale | No | Storefront locale such as en-GB (default), en-US, de, fr-FR, es-ES, it-IT, nl-NL, pl. Controls product names, slugs and prices. | |
| express | No | Only products eligible for Website Express same-day dispatch (UK). | |
| per_page | No | Results per page: 15, 30, 50 or 100 (default 15). | |
| max_price | No | Maximum price in the locale currency. | |
| min_price | No | Minimum price in the locale currency. |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| products | Yes | |
| pagination | Yes | |
| search_url | Yes | The same search on camdentools.com. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool safe (readOnlyHint, destructiveHint false), so the description only needs to add behavioral context. It does this by noting results are 'compact products' with prices ex/inc VAT, stock, and a link, which tells the agent the response is not full product detail and that follow-up calls to get_product may be useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler: the first states what the tool searches, the second describes the return payload, and the third gives the essential parameter usage. The most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich input schema and the presence of an output schema, the description is complete enough: it orients the agent to catalogue scope, result compactness, and key filters. A minor gap is that it does not explicitly point to get_product for full product details, but that is not required for invoking this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each of the 9 parameters already documented. The description adds a useful grouping of page/per_page and brand/min_price/max_price as the main controls, but it does not introduce meaning beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Full-text search of the Camden Tools catalogue' and enumerates product categories, making the action and resource explicit. This clearly distinguishes it from listing-oriented siblings like list_products and get_products, which do not imply free-text search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context by framing the tool as full-text search and then tells the agent how to paginate and narrow results with page/per_page and brand/min_price/max_price. It stops short of an explicit when-not or alternative-tool routing, so it does not earn a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_guest_orderTrack an orderARead-onlyInspect
Order status, tracking number/URL, shipping method and line items for any order, given the order number and the delivery postcode (no sign-in needed).
| Name | Required | Description | Default |
|---|---|---|---|
| postcode | Yes | Delivery postcode / ZIP on the order. | |
| order_number | Yes | Order number from the confirmation email. |
Output Schema
| Name | Required | Description |
|---|---|---|
| order | Yes | |
| track_url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds meaningful behavioral context: this works for 'any order' with just an order number and postcode, and requires no sign-in, which is important for understanding access and prerequisites. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence: it leads with the returned information and then states the inputs and access requirement. There is no filler, repetition, or unnecessary structuring.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup with two fully documented parameters and an output schema present, the description covers everything an agent needs: what the tool returns, how to identify the order, and that no login is needed. No important context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters have clear descriptions in the schema. The tool description references the two inputs but adds no parameter-specific detail beyond what the schema already provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is specific: it states that the tool returns order status, tracking number/URL, shipping method, and line items for an order. It also clarifies the identifying inputs (order number and delivery postcode) and adds 'no sign-in needed', which differentiates it from order tools that require authentication or from narrower delivery-status siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates when to use the tool: whenever you need order information via order number plus postcode, with no sign-in required. It does not explicitly name alternative tools or exclusion conditions, but the usage context is clear enough for an agent to select it correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
29 tool updates
- Changed
check_express_eligibility1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "basket_eligible": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "express": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "available": { + "type": "boolean" + }, + "order_by_iso": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "promised_dispatch_date": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "same_day": { + "type": "boolean" + } + }, + "required": [ + "available", + "same_day", + "order_by_iso", + "promised_dispatch_date" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "lines": { + "items": { + "additionalProperties": false, + "properties": { + "eligible": { + "type": "boolean" + }, + "id": { + "type": "number" + }, + "reason": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Why a line is not eligible." + }, + "sku": { + "type": "string" + } + }, + "required": [ + "id", + "sku", + "eligible", + "reason" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "enabled", + "basket_eligible", + "express", + "lines" + ], + "type": "object" +}
- Changed
check_shipping_availability1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "available": { + "type": "boolean" + }, + "country_code": { + "type": "string" + }, + "deliveries_url": { + "type": "string" + }, + "message": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "country_code", + "available", + "message", + "deliveries_url" + ], + "type": "object" +}
- Changed
compare_products1 field changed- changed
Output 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" +}
- Changed
create_basket_link1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "lines": { + "items": { + "additionalProperties": false, + "properties": { + "currency": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "id": { + "type": "number" + }, + "in_stock": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "quantity": { + "type": "number" + }, + "sku": { + "type": "string" + }, + "stock_level": { + "type": "number" + }, + "unit_price": { + "type": "number" + } + }, + "required": [ + "id", + "sku", + "name", + "quantity", + "unit_price", + "currency", + "in_stock", + "stock_level" + ], + "type": "object" + }, + "type": "array" + }, + "note": { + "type": "string" + }, + "out_of_stock_ids": { + "items": { + "type": "number" + }, + "type": "array" + }, + "unavailable_ids": { + "description": "Product ids that were not found.", + "items": { + "type": "number" + }, + "type": "array" + }, + "url": { + "description": "Fills the shopper's basket with these lines. Share it unchanged.", + "type": "string" + } + }, + "required": [ + "url", + "lines", + "unavailable_ids", + "out_of_stock_ids", + "note" + ], + "type": "object" +}
- Changed
estimate_delivery1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "country_code": { + "type": "string" + }, + "ddp_included": { + "description": "Duties and taxes are prepaid (DDP) in the charges.", + "type": "boolean" + }, + "note": { + "type": "string" + }, + "rates": { + "items": { + "additionalProperties": false, + "properties": { + "currency": { + "type": "string" + }, + "estimated_transit_days": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "express_dispatch": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Website Express same-day dispatch applies to this rate." + }, + "insured": { + "type": "boolean" + }, + "service_code": { + "type": "string" + }, + "service_name": { + "type": "string" + }, + "total_charges": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "service_code", + "service_name", + "total_charges", + "currency", + "estimated_transit_days", + "insured", + "express_dispatch" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "country_code", + "ddp_included", + "rates", + "note" + ], + "type": "object" +}
- Changed
get_blog_post1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "post": { + "additionalProperties": false, + "properties": { + "categories": { + "items": { + "type": "string" + }, + "type": "array" + }, + "content": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The post body as plain text." + }, + "excerpt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "id": { + "type": "number" + }, + "published_at": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "id", + "title", + "slug", + "url", + "excerpt", + "published_at", + "categories", + "content" + ], + "type": "object" + } + }, + "required": [ + "post" + ], + "type": "object" +}
- Changed
get_brand_products1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "brand": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "id": { + "type": "number" + }, + "logo": { + "type": "string" + }, + "name": { + "type": "string" + }, + "product_count": { + "type": "number" + }, + "slug": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "name", + "slug", + "url" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "pagination": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "last_page": { + "type": "number" + }, + "page": { + "type": "number" + }, + "per_page": { + "type": "number" + }, + "total": { + "type": "number" + } + }, + "required": [ + "page", + "per_page", + "total", + "last_page" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "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" + }, + "promotions": { + "items": { + "additionalProperties": false, + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "ends_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "name": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "name", + "description", + "type", + "ends_at" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "brand", + "promotions", + "products", + "pagination" + ], + "type": "object" +}
- Changed
get_cart_promotions1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "adjusted_value": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Basket value after promotions." + }, + "basket_value": { + "type": "number" + }, + "can_fulfill": { + "type": "boolean" + }, + "free_gifts": { + "items": { + "additionalProperties": false, + "properties": { + "quantity": { + "type": "number" + }, + "sku": { + "type": "string" + } + }, + "required": [ + "sku", + "quantity" + ], + "type": "object" + }, + "type": "array" + }, + "lines": { + "items": { + "additionalProperties": false, + "properties": { + "quantity": { + "type": "number" + }, + "sku": { + "type": "string" + }, + "unit_price": { + "type": "number" + } + }, + "required": [ + "sku", + "quantity", + "unit_price" + ], + "type": "object" + }, + "type": "array" + }, + "message": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "promotions": { + "items": { + "additionalProperties": false, + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "discount_value": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "name": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "name", + "description", + "type", + "discount_value" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "can_fulfill", + "message", + "basket_value", + "adjusted_value", + "promotions", + "free_gifts", + "lines" + ], + "type": "object" +}
- Changed
get_category1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "category": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "id": { + "type": "number" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "name", + "slug", + "url" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "pagination": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "last_page": { + "type": "number" + }, + "page": { + "type": "number" + }, + "per_page": { + "type": "number" + }, + "total": { + "type": "number" + } + }, + "required": [ + "page", + "per_page", + "total", + "last_page" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "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": [ + "category", + "products", + "pagination" + ], + "type": "object" +}
- Changed
get_collection_point_info1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "address_lines": { + "items": { + "type": "string" + }, + "type": "array" + }, + "how_it_works": { + "type": "string" + }, + "name": { + "type": "string" + }, + "opening_hours": { + "items": { + "additionalProperties": false, + "properties": { + "days": { + "type": "string" + }, + "hours": { + "type": "string" + } + }, + "required": [ + "days", + "hours" + ], + "type": "object" + }, + "type": "array" + }, + "page_url": { + "type": "string" + }, + "status": { + "additionalProperties": false, + "properties": { + "closes_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "e.g. Monday 17:00." + }, + "is_bank_holiday": { + "type": "boolean" + }, + "is_open": { + "type": "boolean" + }, + "next_opening": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "is_open", + "is_bank_holiday", + "closes_at", + "next_opening" + ], + "type": "object" + }, + "timezone": { + "type": "string" + } + }, + "required": [ + "name", + "address_lines", + "opening_hours", + "timezone", + "status", + "how_it_works", + "page_url" + ], + "type": "object" +}
- Changed
get_express_delivery_status1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "available_now": { + "type": "boolean" + }, + "cutoff": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "enabled": { + "type": "boolean" + }, + "express_products_url": { + "type": "string" + }, + "order_by_iso": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "promised_dispatch_date": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "enabled", + "available_now", + "cutoff", + "order_by_iso", + "promised_dispatch_date", + "express_products_url" + ], + "type": "object" +}
- Changed
get_policy1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "id": { + "enum": [ + "delivery", + "returns", + "payment-options", + "faqs", + "contact" + ], + "type": "string" + }, + "markdown": { + "type": "string" + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "id", + "title", + "url", + "markdown" + ], + "type": "object" +}
- Changed
get_prices_for_country1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "currency": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "fallback_used": { + "description": "No prices for this country: another country's were used.", + "type": "boolean" + }, + "items": { + "items": { + "additionalProperties": false, + "properties": { + "final_price": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "id": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "sale_price": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "unit_price": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "quantity", + "unit_price", + "sale_price", + "final_price" + ], + "type": "object" + }, + "type": "array" + }, + "pricing_country": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "shipping_country": { + "type": "string" + }, + "subtotal": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "shipping_country", + "pricing_country", + "currency", + "fallback_used", + "items", + "subtotal" + ], + "type": "object" +}
- Changed
get_product1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "product": { + "additionalProperties": false, + "properties": { + "brand": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "brand_slug": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "categories": { + "items": { + "type": "string" + }, + "type": "array" + }, + "coshh_codes": { + "items": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "description": { + "type": "string" + } + }, + "required": [ + "code", + "description" + ], + "type": "object" + }, + "type": "array" + }, + "country_of_origin": { + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "documents": { + "items": { + "additionalProperties": false, + "properties": { + "type": { + "description": "safety_sheet or specification_sheet.", + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "type", + "url" + ], + "type": "object" + }, + "type": "array" + }, + "express_eligible": { + "description": "Website Express (same-working-day UK dispatch); only when the listing reports it.", + "type": "boolean" + }, + "gtin": { + "type": "string" + }, + "has_related_products": { + "description": "get_related_products has variants or alternatives.", + "type": "boolean" + }, + "hazardous": { + "type": "boolean" + }, + "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" + } + ] + }, + "specifications": { + "items": { + "type": "string" + }, + "type": "array" + }, + "stock_level": { + "type": "number" + }, + "summary": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "tags": { + "items": { + "type": "string" + }, + "type": "array" + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "variants": { + "items": { + "additionalProperties": false, + "properties": { + "in_stock": { + "type": "boolean" + }, + "label": { + "type": "string" + }, + "options": { + "additionalProperties": { + "type": "string" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "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" + }, + "slug": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "sku", + "label", + "options", + "slug", + "url", + "price", + "in_stock" + ], + "type": "object" + }, + "type": "array" + }, + "weight_kg": { + "type": "number" + } + }, + "required": [ + "id", + "sku", + "name", + "slug", + "url", + "brand", + "brand_slug", + "categories", + "price", + "in_stock", + "stock_level", + "image", + "summary", + "tags", + "description", + "specifications", + "hazardous", + "has_related_products" + ], + "type": "object" + } + }, + "required": [ + "product" + ], + "type": "object" +}
- Changed
get_product_documents1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "coshh_codes": { + "items": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "description": { + "type": "string" + } + }, + "required": [ + "code", + "description" + ], + "type": "object" + }, + "type": "array" + }, + "documents": { + "items": { + "additionalProperties": false, + "properties": { + "type": { + "description": "safety_sheet or specification_sheet.", + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "type", + "url" + ], + "type": "object" + }, + "type": "array" + }, + "hazardous": { + "type": "boolean" + }, + "product": { + "additionalProperties": false, + "properties": { + "name": { + "type": "string" + }, + "sku": { + "type": "string" + } + }, + "required": [ + "sku", + "name" + ], + "type": "object" + } + }, + "required": [ + "product", + "hazardous", + "documents", + "coshh_codes" + ], + "type": "object" +}
- Changed
get_product_promotions1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "promotions": { + "items": { + "additionalProperties": false, + "properties": { + "brands": { + "items": { + "type": "string" + }, + "type": "array" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "discount_value": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Percent or amount off, depending on type." + }, + "ends_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "free_gift": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "name": { + "type": "string" + }, + "sku": { + "type": "string" + } + }, + "required": [ + "sku", + "name" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "id": { + "type": "number" + }, + "name": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "terms_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "description": "percentage_discount, fixed_discount or free_gift.", + "type": "string" + } + }, + "required": [ + "id", + "name", + "description", + "type", + "discount_value", + "ends_at", + "scope", + "brands", + "free_gift", + "terms_url" + ], + "type": "object" + }, + "type": "array" + }, + "sku": { + "type": "string" + } + }, + "required": [ + "sku", + "promotions" + ], + "type": "object" +}
- Changed
get_products1 field changed- changed
Output 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" +}
- Changed
get_related_products1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "may_like": { + "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" + }, + "product": { + "additionalProperties": false, + "properties": { + "name": { + "type": "string" + }, + "sku": { + "type": "string" + } + }, + "required": [ + "sku", + "name" + ], + "type": "object" + }, + "recommendations": { + "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" + }, + "similar_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" + }, + "variants": { + "items": { + "additionalProperties": false, + "properties": { + "in_stock": { + "type": "boolean" + }, + "label": { + "type": "string" + }, + "options": { + "additionalProperties": { + "type": "string" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "sku": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "sku", + "label", + "options", + "in_stock", + "url" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "product", + "variants", + "similar_products", + "recommendations", + "may_like" + ], + "type": "object" +}
- Changed
get_site_info1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "announcements": { + "items": { + "additionalProperties": false, + "properties": { + "message": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "title", + "message" + ], + "type": "object" + }, + "type": "array" + }, + "collection_point": { + "additionalProperties": false, + "properties": { + "address_lines": { + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "opening_hours": { + "items": { + "additionalProperties": false, + "properties": { + "days": { + "type": "string" + }, + "hours": { + "type": "string" + } + }, + "required": [ + "days", + "hours" + ], + "type": "object" + }, + "type": "array" + }, + "timezone": { + "type": "string" + } + }, + "required": [ + "name", + "address_lines", + "opening_hours", + "timezone" + ], + "type": "object" + }, + "how_to_buy": { + "type": "string" + }, + "pages": { + "additionalProperties": false, + "properties": { + "bundles": { + "type": "string" + }, + "cart": { + "type": "string" + }, + "collections": { + "type": "string" + }, + "contact": { + "type": "string" + }, + "deliveries": { + "type": "string" + }, + "developers": { + "type": "string" + }, + "express_delivery": { + "type": "string" + }, + "faqs": { + "type": "string" + }, + "offers": { + "type": "string" + }, + "payment_options": { + "type": "string" + }, + "returns_policy": { + "type": "string" + }, + "shop": { + "type": "string" + }, + "track_order": { + "type": "string" + } + }, + "required": [ + "shop", + "offers", + "bundles", + "express_delivery", + "deliveries", + "returns_policy", + "payment_options", + "faqs", + "contact", + "track_order", + "collections", + "cart", + "developers" + ], + "type": "object" + }, + "policies": { + "items": { + "additionalProperties": false, + "properties": { + "excerpt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "id": { + "enum": [ + "delivery", + "returns", + "payment-options", + "faqs", + "contact" + ], + "type": "string" + }, + "resource_uri": { + "type": "string" + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "id", + "title", + "url", + "resource_uri", + "excerpt" + ], + "type": "object" + }, + "type": "array" + }, + "store": { + "additionalProperties": false, + "properties": { + "currency_default": { + "type": "string" + }, + "email": { + "type": "string" + }, + "legal_name": { + "type": "string" + }, + "name": { + "type": "string" + }, + "phone": { + "type": "string" + }, + "vat_display": { + "type": "string" + }, + "vat_number": { + "type": "string" + }, + "website": { + "type": "string" + } + }, + "required": [ + "name", + "legal_name", + "vat_number", + "email", + "phone", + "website", + "currency_default", + "vat_display" + ], + "type": "object" + } + }, + "required": [ + "store", + "collection_point", + "how_to_buy", + "pages", + "announcements", + "policies" + ], + "type": "object" +}
- Changed
get_stock_level1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "available": { + "type": "boolean" + }, + "locale": { + "type": "string" + }, + "sku": { + "type": "string" + }, + "warehouse_quantity": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Units in the London warehouse; null when not reported." + } + }, + "required": [ + "sku", + "available", + "warehouse_quantity", + "locale" + ], + "type": "object" +}
- Changed
list_brands1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "brands": { + "items": { + "additionalProperties": false, + "properties": { + "id": { + "type": "number" + }, + "logo": { + "type": "string" + }, + "name": { + "type": "string" + }, + "product_count": { + "type": "number" + }, + "slug": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "name", + "slug", + "url" + ], + "type": "object" + }, + "type": "array" + }, + "pagination": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "last_page": { + "type": "number" + }, + "page": { + "type": "number" + }, + "per_page": { + "type": "number" + }, + "total": { + "type": "number" + } + }, + "required": [ + "page", + "per_page", + "total", + "last_page" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "brands", + "pagination" + ], + "type": "object" +}
- Changed
list_bundles1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "bundles_url": { + "type": "string" + }, + "groups": { + "items": { + "additionalProperties": false, + "properties": { + "bundles": { + "items": { + "additionalProperties": false, + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "id": { + "type": "number" + }, + "items": { + "items": { + "additionalProperties": false, + "properties": { + "product": { + "anyOf": [ + { + "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": "null" + } + ] + }, + "quantity": { + "type": "number" + } + }, + "required": [ + "quantity", + "product" + ], + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "description", + "items" + ], + "type": "object" + }, + "type": "array" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "name": { + "type": "string" + } + }, + "required": [ + "name", + "description", + "bundles" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "groups", + "bundles_url" + ], + "type": "object" +}
- Changed
list_categories1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "categories": { + "items": { + "additionalProperties": false, + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "id": { + "type": "number" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "name", + "slug", + "url" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "categories" + ], + "type": "object" +}
- Changed
list_offers1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "groups": { + "description": "With group_by brand or category.", + "items": { + "additionalProperties": false, + "properties": { + "group": { + "type": "string" + }, + "promotions": { + "items": { + "additionalProperties": false, + "properties": { + "brands": { + "items": { + "type": "string" + }, + "type": "array" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "discount_value": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Percent or amount off, depending on type." + }, + "ends_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "free_gift": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "name": { + "type": "string" + }, + "sku": { + "type": "string" + } + }, + "required": [ + "sku", + "name" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "id": { + "type": "number" + }, + "name": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "terms_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "description": "percentage_discount, fixed_discount or free_gift.", + "type": "string" + } + }, + "required": [ + "id", + "name", + "description", + "type", + "discount_value", + "ends_at", + "scope", + "brands", + "free_gift", + "terms_url" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "group", + "promotions" + ], + "type": "object" + }, + "type": "array" + }, + "offers": { + "description": "With group_by all (the default).", + "items": { + "additionalProperties": false, + "properties": { + "brands": { + "items": { + "type": "string" + }, + "type": "array" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "discount_value": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Percent or amount off, depending on type." + }, + "ends_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "free_gift": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "name": { + "type": "string" + }, + "sku": { + "type": "string" + } + }, + "required": [ + "sku", + "name" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "id": { + "type": "number" + }, + "name": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "terms_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": { + "description": "percentage_discount, fixed_discount or free_gift.", + "type": "string" + } + }, + "required": [ + "id", + "name", + "description", + "type", + "discount_value", + "ends_at", + "scope", + "brands", + "free_gift", + "terms_url" + ], + "type": "object" + }, + "type": "array" + }, + "offers_url": { + "type": "string" + } + }, + "required": [ + "offers_url" + ], + "type": "object" +}
- Changed
list_products1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "category": { + "additionalProperties": false, + "description": "The category, when collection is category.", + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "id": { + "type": "number" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "name", + "slug", + "url" + ], + "type": "object" + }, + "collection": { + "enum": [ + "popular", + "new", + "on-sale", + "express", + "category" + ], + "type": "string" + }, + "pagination": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "last_page": { + "type": "number" + }, + "page": { + "type": "number" + }, + "per_page": { + "type": "number" + }, + "total": { + "type": "number" + } + }, + "required": [ + "page", + "per_page", + "total", + "last_page" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "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": [ + "collection", + "products", + "pagination" + ], + "type": "object" +}
- Changed
lookup_uk_postcode1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "addresses": { + "items": { + "additionalProperties": false, + "properties": { + "county": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "label": { + "type": "string" + }, + "line_1": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "line_2": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "post_town": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "postcode": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "label", + "line_1", + "line_2", + "post_town", + "county", + "postcode" + ], + "type": "object" + }, + "type": "array" + }, + "status": { + "type": "string" + }, + "suggestions": { + "description": "Possible postcodes when the one given is incomplete.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "status", + "addresses", + "suggestions" + ], + "type": "object" +}
- Changed
search_blog_posts1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "blog_url": { + "type": "string" + }, + "pagination": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "last_page": { + "type": "number" + }, + "page": { + "type": "number" + }, + "per_page": { + "type": "number" + }, + "total": { + "type": "number" + } + }, + "required": [ + "page", + "per_page", + "total", + "last_page" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "posts": { + "items": { + "additionalProperties": false, + "properties": { + "categories": { + "items": { + "type": "string" + }, + "type": "array" + }, + "excerpt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "id": { + "type": "number" + }, + "published_at": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "id", + "title", + "slug", + "url", + "excerpt", + "published_at", + "categories" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "posts", + "pagination", + "blog_url" + ], + "type": "object" +}
- Changed
search_products1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "pagination": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "last_page": { + "type": "number" + }, + "page": { + "type": "number" + }, + "per_page": { + "type": "number" + }, + "total": { + "type": "number" + } + }, + "required": [ + "page", + "per_page", + "total", + "last_page" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "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" + }, + "query": { + "type": "string" + }, + "search_url": { + "description": "The same search on camdentools.com.", + "type": "string" + } + }, + "required": [ + "query", + "search_url", + "products", + "pagination" + ], + "type": "object" +}
- Changed
track_guest_order1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "order": { + "additionalProperties": false, + "properties": { + "currency": { + "type": "string" + }, + "discount": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "express_promised_dispatch_date": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "is_express": { + "type": "boolean" + }, + "items": { + "items": { + "additionalProperties": false, + "properties": { + "line_total": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "name": { + "type": "string" + }, + "quantity": { + "type": "number" + }, + "sku": { + "type": "string" + }, + "unit_price": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "sku", + "name", + "quantity", + "unit_price", + "line_total" + ], + "type": "object" + }, + "type": "array" + }, + "order_date": { + "type": "string" + }, + "order_number": { + "type": "string" + }, + "paid_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "shipped_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "shipping_company": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "shipping_cost": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "shipping_method": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "shipping_to": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "city": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "country_code": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "postal_code": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "city", + "postal_code", + "country_code" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "status": { + "type": "string" + }, + "subtotal": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "tax": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "total": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "tracking_number": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "tracking_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "order_number", + "status", + "order_date", + "currency", + "total", + "subtotal", + "shipping_cost", + "tax", + "discount", + "shipping_method", + "tracking_number", + "tracking_url", + "shipping_company", + "shipped_at", + "paid_at", + "items", + "shipping_to" + ], + "type": "object" + }, + "track_url": { + "type": "string" + } + }, + "required": [ + "order", + "track_url" + ], + "type": "object" +}
29 tool updates
- First observed
check_express_eligibility - First observed
check_shipping_availability - First observed
compare_products - First observed
create_basket_link - First observed
estimate_delivery - First observed
get_blog_post - First observed
get_brand_products - First observed
get_cart_promotions - First observed
get_category - First observed
get_collection_point_info - First observed
get_express_delivery_status - First observed
get_policy - First observed
get_prices_for_country - First observed
get_product - First observed
get_product_documents - First observed
get_product_promotions - First observed
get_products - First observed
get_related_products - First observed
get_site_info - First observed
get_stock_level - First observed
list_brands - First observed
list_bundles - First observed
list_categories - First observed
list_offers - First observed
list_products - First observed
lookup_uk_postcode - First observed
search_blog_posts - First observed
search_products - First observed
track_guest_order
Publisher details
- Operator
- Camden Tools LTD · Publisher source
- Operator website
- https://camdentools.com
- Vendor relationship
- Not applicable
- Documentation
- https://camdentools.com/developers
- Trust center
- Not available
- Restrictions
- None. No account, API key, paid plan or admin approval needed. Free to use from anywhere.
Related MCP Connectors
Specialty parts and tools, free US shipping. Search, filters, cart checkout links, order status.
UK company lookup & monitor, UK/EU tenders, awards, planning, charities, schools, NHS, trade marks.
Finnish industrial supplies store. Read-only MCP: catalog search, product details, cart, policies.
UK vehicle lookup, MOT status and full MOT history from official DVSA data, by registration.
Related MCP Servers
- AlicenseAqualityBmaintenanceSearches UK electronics products across multiple retailers, compares prices, and provides purchase links.2438 npmMIT
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to search and compare live UK product prices from marketplaces like eBay and Amazon, returning normalised JSON with direct buy links.-
- AlicenseAqualityCmaintenanceEnables searching products, retrieving product details, listing stores, checking stock availability, and comparing prices across Czech DIY retailers.5MIT
- AlicenseAqualityBmaintenanceSearch for products available in physical stores near you. Find prices, stock, and store locations for hardware, tools, and construction supplies. Useful when you need something today and can't wait for delivery. 5 tools: search products, search stores, get product details, get store details, list categories. No authentication required. Covers ~2400 products across ~4000 stores in Spain.181Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.