← WebMCP Directory

Tool tree

camdentools.com

Commerce
https://camdentools.com/
Construction tools and equipment
Explore capabilities

Tools verified

cart_add_itemAction

Add a product to the shopper's basket by product id (from search_products / get_product). The shopper still pays at checkout.

View tool JSON
{
  "name": "cart_add_item",
  "kind": "act",
  "impl": "imperative",
  "description": "Add a product to the shopper's basket by product id (from search_products / get_product). The shopper still pays at checkout.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "product_id": {
        "type": "integer",
        "description": "Product id."
      },
      "quantity": {
        "type": "integer",
        "minimum": 1,
        "maximum": 999,
        "default": 1
      },
      "product_name": {
        "type": "string",
        "description": "Product name, shown in the shopper's notification."
      }
    },
    "required": [
      "product_id"
    ]
  }
}
cart_apply_promoAction

Apply a promo code to the basket. The shop validates codes against the shopper's email, so provide the email the order will use.

View tool JSON
{
  "name": "cart_apply_promo",
  "kind": "act",
  "impl": "imperative",
  "description": "Apply a promo code to the basket. The shop validates codes against the shopper's email, so provide the email the order will use.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "code": {
        "type": "string"
      },
      "email": {
        "type": "string",
        "format": "email"
      }
    },
    "required": [
      "code",
      "email"
    ]
  }
}
cart_clearAction

Empty the shopper's basket.

View tool JSON
{
  "name": "cart_clear",
  "kind": "act",
  "impl": "imperative",
  "description": "Empty the shopper's basket.",
  "inputSchema": {
    "type": "object",
    "properties": {}
  }
}
cart_getAnswer

The shopper's current basket on this site: lines (product id, SKU, name, quantity, unit price), item count, subtotal, promo code and the cart/checkout URLs.

View tool JSON
{
  "name": "cart_get",
  "kind": "answer",
  "impl": "imperative",
  "description": "The shopper's current basket on this site: lines (product id, SKU, name, quantity, unit price), item count, subtotal, promo code and the cart/checkout URLs.",
  "inputSchema": {
    "type": "object",
    "properties": {}
  }
}
cart_remove_itemAction

Remove a product from the basket by product id.

View tool JSON
{
  "name": "cart_remove_item",
  "kind": "act",
  "impl": "imperative",
  "description": "Remove a product from the basket by product id.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "product_id": {
        "type": "integer",
        "description": "Product id."
      }
    },
    "required": [
      "product_id"
    ]
  }
}
cart_remove_promoAction

Remove the applied promo code from the basket.

View tool JSON
{
  "name": "cart_remove_promo",
  "kind": "act",
  "impl": "imperative",
  "description": "Remove the applied promo code from the basket.",
  "inputSchema": {
    "type": "object",
    "properties": {}
  }
}
cart_update_itemAction

Set the quantity of a basket line (product id).

View tool JSON
{
  "name": "cart_update_item",
  "kind": "act",
  "impl": "imperative",
  "description": "Set the quantity of a basket line (product id).",
  "inputSchema": {
    "type": "object",
    "properties": {
      "product_id": {
        "type": "integer",
        "description": "Product id."
      },
      "quantity": {
        "type": "integer",
        "minimum": 1,
        "maximum": 999
      }
    },
    "required": [
      "product_id",
      "quantity"
    ]
  }
}
check_express_eligibilityAnswer

Whole-basket Website Express verdict for a set of product ids and quantities: every line must be eligible (no split shipments).

View tool JSON
{
  "name": "check_express_eligibility",
  "kind": "answer",
  "impl": "imperative",
  "description": "Whole-basket Website Express verdict for a set of product ids and quantities: every line must be eligible (no split shipments).",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "items": {
        "minItems": 1,
        "maxItems": 50,
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "id": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991,
              "description": "Product id from search/product tools."
            },
            "quantity": {
              "default": 1,
              "type": "integer",
              "minimum": 1,
              "maximum": 999
            }
          },
          "required": [
            "id"
          ]
        },
        "description": "Basket lines as product ids with quantities."
      },
      "locale": {
        "description": "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.",
        "type": "string",
        "minLength": 2,
        "maxLength": 5
      }
    },
    "required": [
      "items"
    ]
  }
}
check_shipping_availabilityAnswer

Whether Camden Tools ships to a country, with any restriction message.

View tool JSON
{
  "name": "check_shipping_availability",
  "kind": "answer",
  "impl": "imperative",
  "description": "Whether Camden Tools ships to a country, with any restriction message.",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "country_code": {
        "type": "string",
        "pattern": "^[A-Za-z]{2}$",
        "description": "ISO 3166-1 alpha-2 country code, e.g. GB, IE, DE, US."
      },
      "locale": {
        "description": "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.",
        "type": "string",
        "minLength": 2,
        "maxLength": 5
      }
    },
    "required": [
      "country_code"
    ]
  }
}
compare_productsAnswer

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.

View tool JSON
{
  "name": "compare_products",
  "kind": "answer",
  "impl": "imperative",
  "description": "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.",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "skus": {
        "minItems": 2,
        "maxItems": 5,
        "type": "array",
        "items": {
          "type": "string",
          "minLength": 1,
          "maxLength": 64,
          "description": "Product SKU exactly as shown on the site."
        }
      },
      "locale": {
        "description": "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.",
        "type": "string",
        "minLength": 2,
        "maxLength": 5
      }
    },
    "required": [
      "skus"
    ]
  }
}
create_basket_linkAnswer

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.

View tool JSON
{
  "name": "create_basket_link",
  "kind": "answer",
  "impl": "imperative",
  "description": "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.",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "items": {
        "minItems": 1,
        "maxItems": 50,
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "id": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991,
              "description": "Product id from search/product tools."
            },
            "quantity": {
              "default": 1,
              "type": "integer",
              "minimum": 1,
              "maximum": 999
            }
          },
          "required": [
            "id"
          ]
        },
        "description": "Basket lines as product ids with quantities."
      },
      "locale": {
        "description": "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.",
        "type": "string",
        "minLength": 2,
        "maxLength": 5
      }
    },
    "required": [
      "items"
    ]
  }
}
estimate_deliveryAnswer

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.

View tool JSON
{
  "name": "estimate_delivery",
  "kind": "answer",
  "impl": "imperative",
  "description": "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.",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "country_code": {
        "type": "string",
        "pattern": "^[A-Za-z]{2}$",
        "description": "ISO 3166-1 alpha-2 country code, e.g. GB, IE, DE, US."
      },
      "postcode": {
        "description": "Destination postcode / ZIP.",
        "type": "string",
        "maxLength": 20
      },
      "city": {
        "description": "Destination city.",
        "type": "string",
        "maxLength": 80
      },
      "items": {
        "minItems": 1,
        "maxItems": 50,
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "id": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991,
              "description": "Product id from search/product tools."
            },
            "quantity": {
              "default": 1,
              "type": "integer",
              "minimum": 1,
              "maximum": 999
            }
          },
          "required": [
            "id"
          ]
        },
        "description": "Basket lines as product ids with quantities."
      },
      "locale": {
        "description": "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.",
        "type": "string",
        "minLength": 2,
        "maxLength": 5
      }
    },
    "required": [
      "country_code",
      "items"
    ]
  }
}
get_blog_postAnswer

A blog post's full text (plain text) by slug.

View tool JSON
{
  "name": "get_blog_post",
  "kind": "answer",
  "impl": "imperative",
  "description": "A blog post's full text (plain text) by slug.",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "slug": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      },
      "locale": {
        "description": "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.",
        "type": "string",
        "minLength": 2,
        "maxLength": 5
      }
    },
    "required": [
      "slug"
    ]
  }
}
get_brand_productsAnswer

A brand's details, its active promotions and its products (paged) by brand slug.

View tool JSON
{
  "name": "get_brand_products",
  "kind": "answer",
  "impl": "imperative",
  "description": "A brand's details, its active promotions and its products (paged) by brand slug.",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "slug": {
        "type": "string",
        "minLength": 1,
        "maxLength": 80,
        "description": "Brand slug from list_brands."
      },
      "page": {
        "description": "Page number, starting at 1.",
        "type": "integer",
        "minimum": 1,
        "maximum": 500
      },
      "per_page": {
        "description": "Results per page: 15, 30, 50 or 100 (default 15).",
        "type": "integer",
        "minimum": -9007199254740991,
        "maximum": 9007199254740991
      },
      "locale": {
        "description": "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.",
        "type": "string",
        "minLength": 2,
        "maxLength": 5
      }
    },
    "required": [
      "slug"
    ]
  }
}
get_cart_promotionsAnswer

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.

View tool JSON
{
  "name": "get_cart_promotions",
  "kind": "answer",
  "impl": "imperative",
  "description": "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.",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "country_code": {
        "type": "string",
        "pattern": "^[A-Za-z]{2}$",
        "description": "Destination country (ISO alpha-2)."
      },
      "items": {
        "minItems": 1,
        "maxItems": 50,
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "id": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991,
              "description": "Product id from search/product tools."
            },
            "quantity": {
              "default": 1,
              "type": "integer",
              "minimum": 1,
              "maximum": 999
            }
          },
          "required": [
            "id"
          ]
        },
        "description": "Basket lines as product ids with quantities."
      },
      "has_tax_id": {
        "description": "Whether the buyer has a VAT/tax id (business purchase).",
        "type": "boolean"
      },
      "locale": {
        "description": "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.",
        "type": "string",
        "minLength": 2,
        "maxLength": 5
      }
    },
    "required": [
      "country_code",
      "items"
    ]
  }
}
get_categoryAnswer

A category's name, description and its products (paged) by category slug.

View tool JSON
{
  "name": "get_category",
  "kind": "answer",
  "impl": "imperative",
  "description": "A category's name, description and its products (paged) by category slug.",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "slug": {
        "type": "string",
        "minLength": 1,
        "maxLength": 120,
        "description": "Category slug from list_categories."
      },
      "page": {
        "description": "Page number, starting at 1.",
        "type": "integer",
        "minimum": 1,
        "maximum": 500
      },
      "per_page": {
        "description": "Results per page: 15, 30, 50 or 100 (default 15).",
        "type": "integer",
        "minimum": -9007199254740991,
        "maximum": 9007199254740991
      },
      "sort": {
        "description": "Sort order: price_low, price_high, name_asc, name_desc or newest. Omit for the default (most popular) order.",
        "type": "string",
        "maxLength": 40
      },
      "locale": {
        "description": "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.",
        "type": "string",
        "minLength": 2,
        "maxLength": 5
      }
    },
    "required": [
      "slug"
    ]
  }
}
get_collection_point_infoAnswer

The London Click & Collect warehouse: address, opening hours, whether it is open right now (Europe/London, bank holidays respected) and when it next opens.

View tool JSON
{
  "name": "get_collection_point_info",
  "kind": "answer",
  "impl": "imperative",
  "description": "The London Click & Collect warehouse: address, opening hours, whether it is open right now (Europe/London, bank holidays respected) and when it next opens.",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {}
  }
}
get_express_delivery_statusAnswer

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.

View tool JSON
{
  "name": "get_express_delivery_status",
  "kind": "answer",
  "impl": "imperative",
  "description": "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.",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "locale": {
        "description": "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.",
        "type": "string",
        "minLength": 2,
        "maxLength": 5
      }
    }
  }
}
get_my_orderAnswer

One of the signed-in shopper's orders by order number, with status, tracking and line items. Needs the shopper's browser session with AI agent access, or an OAuth token with the orders:read scope.

View tool JSON
{
  "name": "get_my_order",
  "kind": "answer",
  "impl": "imperative",
  "description": "One of the signed-in shopper's orders by order number, with status, tracking and line items. Needs the shopper's browser session with AI agent access, or an OAuth token with the orders:read scope.",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "order_number": {
        "type": "string",
        "minLength": 3,
        "maxLength": 40
      }
    },
    "required": [
      "order_number"
    ]
  }
}
get_my_profileAnswer

The signed-in shopper's name, email and saved addresses. Needs the shopper's browser session with AI agent access, or an OAuth token with the profile:read scope.

View tool JSON
{
  "name": "get_my_profile",
  "kind": "answer",
  "impl": "imperative",
  "description": "The signed-in shopper's name, email and saved addresses. Needs the shopper's browser session with AI agent access, or an OAuth token with the profile:read scope.",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {}
  }
}
get_policyAnswer

Full text (markdown) of a store policy: delivery, returns, payment-options, faqs or contact.

View tool JSON
{
  "name": "get_policy",
  "kind": "answer",
  "impl": "imperative",
  "description": "Full text (markdown) of a store policy: delivery, returns, payment-options, faqs or contact.",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "policy": {
        "type": "string",
        "enum": [
          "delivery",
          "returns",
          "payment-options",
          "faqs",
          "contact"
        ]
      },
      "locale": {
        "description": "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.",
        "type": "string",
        "minLength": 2,
        "maxLength": 5
      }
    },
    "required": [
      "policy"
    ]
  }
}
get_prices_for_countryAnswer

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.

View tool JSON
{
  "name": "get_prices_for_country",
  "kind": "answer",
  "impl": "imperative",
  "description": "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.",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "shipping_country": {
        "type": "string",
        "pattern": "^[A-Za-z]{2}$",
        "description": "ISO 3166-1 alpha-2 country code, e.g. GB, IE, DE, US."
      },
      "items": {
        "minItems": 1,
        "maxItems": 50,
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "id": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991,
              "description": "Product id from search/product tools."
            },
            "quantity": {
              "default": 1,
              "type": "integer",
              "minimum": 1,
              "maximum": 999
            }
          },
          "required": [
            "id"
          ]
        },
        "description": "Basket lines as product ids with quantities."
      },
      "locale": {
        "description": "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.",
        "type": "string",
        "minLength": 2,
        "maxLength": 5
      }
    },
    "required": [
      "shipping_country",
      "items"
    ]
  }
}
get_productAnswer

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.

View tool JSON
{
  "name": "get_product",
  "kind": "answer",
  "impl": "imperative",
  "description": "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.",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "slug": {
        "description": "Product slug from a product URL (…/product/<slug>).",
        "type": "string",
        "maxLength": 200
      },
      "sku": {
        "description": "Product SKU.",
        "type": "string",
        "maxLength": 64
      },
      "id": {
        "description": "Numeric product id.",
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      },
      "locale": {
        "description": "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.",
        "type": "string",
        "minLength": 2,
        "maxLength": 5
      }
    }
  }
}
get_product_documentsAnswer

Safety data sheets, specification sheets and COSHH hazard codes for a product (by slug or SKU). Returns document URLs.

View tool JSON
{
  "name": "get_product_documents",
  "kind": "answer",
  "impl": "imperative",
  "description": "Safety data sheets, specification sheets and COSHH hazard codes for a product (by slug or SKU). Returns document URLs.",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "slug": {
        "description": "Product slug from a product URL (…/product/<slug>).",
        "type": "string",
        "maxLength": 200
      },
      "sku": {
        "description": "Product SKU.",
        "type": "string",
        "maxLength": 64
      },
      "locale": {
        "description": "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.",
        "type": "string",
        "minLength": 2,
        "maxLength": 5
      }
    }
  }
}
get_product_promotionsAnswer

Active promotions that apply to one SKU (discounts, free gifts, end dates).

View tool JSON
{
  "name": "get_product_promotions",
  "kind": "answer",
  "impl": "imperative",
  "description": "Active promotions that apply to one SKU (discounts, free gifts, end dates).",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "sku": {
        "type": "string",
        "minLength": 1,
        "maxLength": 64,
        "description": "Product SKU exactly as shown on the site."
      },
      "locale": {
        "description": "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.",
        "type": "string",
        "minLength": 2,
        "maxLength": 5
      }
    },
    "required": [
      "sku"
    ]
  }
}
get_productsAnswer

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

View tool JSON
{
  "name": "get_products",
  "kind": "answer",
  "impl": "imperative",
  "description": "Look up up to 50 products at once by SKU or by numeric id. Returns compact products (name, price ex/inc VAT, stock, link).",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "skus": {
        "minItems": 1,
        "maxItems": 50,
        "type": "array",
        "items": {
          "type": "string",
          "minLength": 1,
          "maxLength": 64,
          "description": "Product SKU exactly as shown on the site."
        }
      },
      "ids": {
        "minItems": 1,
        "maxItems": 50,
        "type": "array",
        "items": {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        }
      },
      "locale": {
        "description": "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.",
        "type": "string",
        "minLength": 2,
        "maxLength": 5
      }
    }
  }
}
get_related_productsAnswer

Variants, similar products, recommendations and 'you may also like' items for a product (by slug or SKU). Useful for alternatives when something is out of stock.

View tool JSON
{
  "name": "get_related_products",
  "kind": "answer",
  "impl": "imperative",
  "description": "Variants, similar products, recommendations and 'you may also like' items for a product (by slug or SKU). Useful for alternatives when something is out of stock.",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "slug": {
        "description": "Product slug from a product URL (…/product/<slug>).",
        "type": "string",
        "maxLength": 200
      },
      "sku": {
        "description": "Product SKU.",
        "type": "string",
        "maxLength": 64
      },
      "locale": {
        "description": "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.",
        "type": "string",
        "minLength": 2,
        "maxLength": 5
      }
    }
  }
}
get_site_infoAnswer

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.

View tool JSON
{
  "name": "get_site_info",
  "kind": "answer",
  "impl": "imperative",
  "description": "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.",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "locale": {
        "description": "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.",
        "type": "string",
        "minLength": 2,
        "maxLength": 5
      }
    }
  }
}
get_stock_levelAnswer

Live availability check for a SKU (is it available now and how many are in the London warehouse).

View tool JSON
{
  "name": "get_stock_level",
  "kind": "answer",
  "impl": "imperative",
  "description": "Live availability check for a SKU (is it available now and how many are in the London warehouse).",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "sku": {
        "type": "string",
        "minLength": 1,
        "maxLength": 64,
        "description": "Product SKU exactly as shown on the site."
      }
    },
    "required": [
      "sku"
    ]
  }
}
inspect_image_c2paAnswer

Fetch a single image (by CSS selector or URL) and return its fully decoded C2PA manifest store: every manifest's claim, assertions (e.g. c2pa.actions edit history, schema.org authorship), and the COSE signature details (algorithm and signing-certificate identity). Provide exactly one of `selector` or `url`. Note: the signature is decoded but NOT cryptographically verified.

View tool JSON
{
  "name": "inspect_image_c2pa",
  "kind": "answer",
  "impl": "imperative",
  "description": "Fetch a single image (by CSS selector or URL) and return its fully decoded C2PA manifest store: every manifest's claim, assertions (e.g. c2pa.actions edit history, schema.org authorship), and the COSE signature details (algorithm and signing-certificate identity). Provide exactly one of `selector` or `url`. Note: the signature is decoded but NOT cryptographically verified.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "selector": {
        "type": "string",
        "maxLength": 8192,
        "description": "CSS selector for an <img> element on the page."
      },
      "url": {
        "type": "string",
        "maxLength": 8192,
        "description": "Image URL (absolute, or relative to the current page) to fetch and inspect."
      }
    },
    "required": []
  }
}
list_brandsAnswer

Brands sold by Camden Tools (DeWalt, Makita, Milwaukee, Bosch, Stanley …). Without a query returns the popular brands; with a query searches brand names.

View tool JSON
{
  "name": "list_brands",
  "kind": "answer",
  "impl": "imperative",
  "description": "Brands sold by Camden Tools (DeWalt, Makita, Milwaukee, Bosch, Stanley …). Without a query returns the popular brands; with a query searches brand names.",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "query": {
        "description": "Brand name search text.",
        "type": "string",
        "maxLength": 80
      },
      "page": {
        "description": "Page number, starting at 1.",
        "type": "integer",
        "minimum": 1,
        "maximum": 500
      },
      "per_page": {
        "description": "Results per page: 15, 30, 50 or 100 (default 15).",
        "type": "integer",
        "minimum": -9007199254740991,
        "maximum": 9007199254740991
      },
      "sort": {
        "description": "Sort order: price_low, price_high, name_asc, name_desc or newest. Omit for the default (most popular) order.",
        "type": "string",
        "maxLength": 40
      }
    }
  }
}
list_bundlesAnswer

Curated product bundles (kits) with their items and prices.

View tool JSON
{
  "name": "list_bundles",
  "kind": "answer",
  "impl": "imperative",
  "description": "Curated product bundles (kits) with their items and prices.",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "locale": {
        "description": "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.",
        "type": "string",
        "minLength": 2,
        "maxLength": 5
      }
    }
  }
}
list_categoriesAnswer

Product categories with slugs and links. Use popular_only for the curated set shown on the site; otherwise the full list.

View tool JSON
{
  "name": "list_categories",
  "kind": "answer",
  "impl": "imperative",
  "description": "Product categories with slugs and links. Use popular_only for the curated set shown on the site; otherwise the full list.",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "popular_only": {
        "description": "Only the popular categories (default false).",
        "type": "boolean"
      },
      "limit": {
        "description": "Maximum categories to return (default 100).",
        "type": "integer",
        "minimum": 1,
        "maximum": 200
      },
      "locale": {
        "description": "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.",
        "type": "string",
        "minLength": 2,
        "maxLength": 5
      }
    }
  }
}
list_my_ordersAnswer

The signed-in shopper's order history (most recent first). Needs the shopper's browser session with AI agent access, or an OAuth token with the orders:read scope.

View tool JSON
{
  "name": "list_my_orders",
  "kind": "answer",
  "impl": "imperative",
  "description": "The signed-in shopper's order history (most recent first). Needs the shopper's browser session with AI agent access, or an OAuth token with the orders:read scope.",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "page": {
        "description": "Page number, starting at 1.",
        "type": "integer",
        "minimum": 1,
        "maximum": 500
      }
    }
  }
}
list_offersAnswer

Current storefront promotions (percentage/fixed discounts and free gifts), optionally grouped by brand or category. Also points at the /offers page.

View tool JSON
{
  "name": "list_offers",
  "kind": "answer",
  "impl": "imperative",
  "description": "Current storefront promotions (percentage/fixed discounts and free gifts), optionally grouped by brand or category. Also points at the /offers page.",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "group_by": {
        "description": "Grouping (default all).",
        "type": "string",
        "enum": [
          "all",
          "brand",
          "category"
        ]
      },
      "locale": {
        "description": "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.",
        "type": "string",
        "minLength": 2,
        "maxLength": 5
      }
    }
  }
}
list_productsAnswer

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.

View tool JSON
{
  "name": "list_products",
  "kind": "answer",
  "impl": "imperative",
  "description": "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.",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "collection": {
        "type": "string",
        "enum": [
          "popular",
          "new",
          "on-sale",
          "express",
          "category"
        ],
        "description": "Which collection to list."
      },
      "category_slug": {
        "description": "Required when collection is 'category'.",
        "type": "string",
        "maxLength": 120
      },
      "min_discount": {
        "description": "Minimum discount percentage (on-sale listings).",
        "type": "number",
        "minimum": 0,
        "maximum": 100
      },
      "page": {
        "description": "Page number, starting at 1.",
        "type": "integer",
        "minimum": 1,
        "maximum": 500
      },
      "per_page": {
        "description": "Results per page: 15, 30, 50 or 100 (default 15).",
        "type": "integer",
        "minimum": -9007199254740991,
        "maximum": 9007199254740991
      },
      "sort": {
        "description": "Sort order: price_low, price_high, name_asc, name_desc or newest. Omit for the default (most popular) order.",
        "type": "string",
        "maxLength": 40
      },
      "brand": {
        "description": "Brand slug to filter by.",
        "type": "string",
        "maxLength": 80
      },
      "min_price": {
        "description": "Minimum price in the locale currency.",
        "type": "number",
        "minimum": 0
      },
      "max_price": {
        "description": "Maximum price in the locale currency.",
        "type": "number",
        "minimum": 0
      },
      "locale": {
        "description": "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.",
        "type": "string",
        "minLength": 2,
        "maxLength": 5
      }
    },
    "required": [
      "collection"
    ]
  }
}
lookup_uk_postcodeAnswer

Addresses for a UK postcode (rate limited upstream). Returns matching addresses or suggestions when the postcode is incomplete.

View tool JSON
{
  "name": "lookup_uk_postcode",
  "kind": "answer",
  "impl": "imperative",
  "description": "Addresses for a UK postcode (rate limited upstream). Returns matching addresses or suggestions when the postcode is incomplete.",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "postcode": {
        "type": "string",
        "minLength": 2,
        "maxLength": 12,
        "description": "UK postcode, e.g. NW2 7JW."
      }
    },
    "required": [
      "postcode"
    ]
  }
}
newsletter_subscribeAction

Start a Camden Tools newsletter sign-up (offers, new products and trade news) with the shopper's email address. The shopper then gives consent and submits the form themselves.

View tool JSON
{
  "name": "newsletter_subscribe",
  "kind": "act",
  "impl": "declarative",
  "description": "Start a Camden Tools newsletter sign-up (offers, new products and trade news) with the shopper's email address. The shopper then gives consent and submits the form themselves.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "email": {
        "type": "string",
        "description": "The shopper's email address."
      },
      "name": {
        "type": "string"
      },
      "consent": {
        "type": "boolean"
      }
    },
    "required": []
  }
}
page_get_contextAnswer

What the shopper is looking at right now: page type (product, category, search, cart, checkout…), the product on a product page (SKU, name, price), the search query, locale, VAT display mode, basket count and a basket handoff link for the current basket.

View tool JSON
{
  "name": "page_get_context",
  "kind": "answer",
  "impl": "imperative",
  "description": "What the shopper is looking at right now: page type (product, category, search, cart, checkout…), the product on a product page (SKU, name, price), the search query, locale, VAT display mode, basket count and a basket handoff link for the current basket.",
  "inputSchema": {
    "type": "object",
    "properties": {}
  }
}
page_navigateAction

Navigate the shopper's browser within camdentools.com: a product (slug), category (slug), search results (query), the basket, checkout, or any site path.

View tool JSON
{
  "name": "page_navigate",
  "kind": "act",
  "impl": "imperative",
  "description": "Navigate the shopper's browser within camdentools.com: a product (slug), category (slug), search results (query), the basket, checkout, or any site path.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "destination": {
        "type": "string",
        "enum": [
          "product",
          "category",
          "search",
          "cart",
          "checkout",
          "path"
        ]
      },
      "slug": {
        "type": "string",
        "description": "Product or category slug."
      },
      "query": {
        "type": "string",
        "description": "Search text (destination search)."
      },
      "path": {
        "type": "string",
        "description": "Site path starting with / (destination path)."
      }
    },
    "required": [
      "destination"
    ]
  }
}
page_prefill_checkout_addressAction

On the checkout page, pre-fill the delivery contact and address form. The shopper reviews it and completes payment themselves; nothing is submitted.

View tool JSON
{
  "name": "page_prefill_checkout_address",
  "kind": "act",
  "impl": "imperative",
  "description": "On the checkout page, pre-fill the delivery contact and address form. The shopper reviews it and completes payment themselves; nothing is submitted.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "full_name": {
        "type": "string"
      },
      "email": {
        "type": "string",
        "format": "email"
      },
      "phone_number_code": {
        "type": "string",
        "description": "Dialling code, e.g. +44."
      },
      "phone_number": {
        "type": "string"
      },
      "address_line_1": {
        "type": "string"
      },
      "address_line_2": {
        "type": "string"
      },
      "city": {
        "type": "string"
      },
      "postcode": {
        "type": "string"
      },
      "state": {
        "type": "string"
      },
      "country": {
        "type": "string",
        "description": "ISO 3166-1 alpha-2 country code."
      }
    }
  }
}
page_request_account_accessAction

Ask the shopper to allow AI agent access to their account (orders, profile). Opens a consent prompt in the page; returns whether it was granted. Required before get_my_profile / list_my_orders / get_my_order.

View tool JSON
{
  "name": "page_request_account_access",
  "kind": "act",
  "impl": "imperative",
  "description": "Ask the shopper to allow AI agent access to their account (orders, profile). Opens a consent prompt in the page; returns whether it was granted. Required before get_my_profile / list_my_orders / get_my_order.",
  "inputSchema": {
    "type": "object",
    "properties": {}
  }
}
page_select_variantAction

On a product page, switch to the variant matching the given options (e.g. {"Colour": "Red", "Size": "M"}) or SKU by navigating to its page.

View tool JSON
{
  "name": "page_select_variant",
  "kind": "act",
  "impl": "imperative",
  "description": "On a product page, switch to the variant matching the given options (e.g. {\"Colour\": \"Red\", \"Size\": \"M\"}) or SKU by navigating to its page.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "options": {
        "type": "object",
        "additionalProperties": {
          "type": "string"
        },
        "description": "Variation option values to match."
      },
      "sku": {
        "type": "string",
        "description": "Variant SKU to select."
      }
    }
  }
}
page_set_vat_displayAction

Switch the site's price display between including and excluding VAT.

View tool JSON
{
  "name": "page_set_vat_display",
  "kind": "act",
  "impl": "imperative",
  "description": "Switch the site's price display between including and excluding VAT.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "inclusive": {
        "type": "boolean"
      }
    },
    "required": [
      "inclusive"
    ]
  }
}
scan_images_c2paAnswer

Scan every <img> on the current page for C2PA Content Credentials (content provenance metadata) and return a per-image summary: whether a manifest is present, the claim generator (the tool that produced or edited the image), the title, and the signer name. Use this to find which images on a page carry provenance data. Note: provenance is decoded but NOT cryptographically verified.

View tool JSON
{
  "name": "scan_images_c2pa",
  "kind": "answer",
  "impl": "imperative",
  "description": "Scan every <img> on the current page for C2PA Content Credentials (content provenance metadata) and return a per-image summary: whether a manifest is present, the claim generator (the tool that produced or edited the image), the title, and the signer name. Use this to find which images on a page carry provenance data. Note: provenance is decoded but NOT cryptographically verified.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "limit": {
        "type": "integer",
        "minimum": 1,
        "maximum": 100,
        "default": 25,
        "description": "Maximum number of images to fetch and scan (default 25, max 100)."
      }
    },
    "required": []
  }
}
search_blog_postsAnswer

Guides and articles from the Camden Tools blog (how-tos, buying guides, brand news).

View tool JSON
{
  "name": "search_blog_posts",
  "kind": "answer",
  "impl": "imperative",
  "description": "Guides and articles from the Camden Tools blog (how-tos, buying guides, brand news).",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "query": {
        "description": "Search text; omit for the latest posts.",
        "type": "string",
        "maxLength": 120
      },
      "page": {
        "description": "Page number, starting at 1.",
        "type": "integer",
        "minimum": 1,
        "maximum": 500
      }
    }
  }
}
search_productsAnswer

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.

View tool JSON
{
  "name": "search_products",
  "kind": "answer",
  "impl": "imperative",
  "description": "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.",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "query": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200,
        "description": "What the shopper is looking for, e.g. 'cordless combi drill 18v'."
      },
      "express": {
        "description": "Only products eligible for Website Express same-day dispatch (UK).",
        "type": "boolean"
      },
      "page": {
        "description": "Page number, starting at 1.",
        "type": "integer",
        "minimum": 1,
        "maximum": 500
      },
      "per_page": {
        "description": "Results per page: 15, 30, 50 or 100 (default 15).",
        "type": "integer",
        "minimum": -9007199254740991,
        "maximum": 9007199254740991
      },
      "sort": {
        "description": "Sort order: price_low, price_high, name_asc, name_desc or newest. Omit for the default (most popular) order.",
        "type": "string",
        "maxLength": 40
      },
      "brand": {
        "description": "Brand slug to filter by.",
        "type": "string",
        "maxLength": 80
      },
      "min_price": {
        "description": "Minimum price in the locale currency.",
        "type": "number",
        "minimum": 0
      },
      "max_price": {
        "description": "Maximum price in the locale currency.",
        "type": "number",
        "minimum": 0
      },
      "locale": {
        "description": "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.",
        "type": "string",
        "minLength": 2,
        "maxLength": 5
      }
    },
    "required": [
      "query"
    ]
  }
}
track_guest_orderAnswer

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).

View tool JSON
{
  "name": "track_guest_order",
  "kind": "answer",
  "impl": "imperative",
  "description": "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).",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "order_number": {
        "type": "string",
        "minLength": 3,
        "maxLength": 40,
        "description": "Order number from the confirmation email."
      },
      "postcode": {
        "type": "string",
        "minLength": 2,
        "maxLength": 20,
        "description": "Delivery postcode / ZIP on the order."
      }
    },
    "required": [
      "order_number",
      "postcode"
    ]
  }
}
wishlist_addAction

Save a product to the shopper's wishlist by product id.

View tool JSON
{
  "name": "wishlist_add",
  "kind": "act",
  "impl": "imperative",
  "description": "Save a product to the shopper's wishlist by product id.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "product_id": {
        "type": "integer",
        "description": "Product id."
      }
    },
    "required": [
      "product_id"
    ]
  }
}
wishlist_removeAction

Remove a product from the shopper's wishlist by product id.

View tool JSON
{
  "name": "wishlist_remove",
  "kind": "act",
  "impl": "imperative",
  "description": "Remove a product from the shopper's wishlist by product id.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "product_id": {
        "type": "integer",
        "description": "Product id."
      }
    },
    "required": [
      "product_id"
    ]
  }
}