Cutoff--:--:--
Free UK delivery

Shop Camden Tools with your AI assistant

Camden Tools is built for AI assistants. An MCP server, an A2A agent and in-browser tools let Claude, ChatGPT, Perplexity and browser agents search the catalogue, quote live prices and stock, check delivery and hand you a ready-made basket. You always pay yourself at checkout.
MCP serverA2A agentIn-browser tools (WebMCP)v1.8.0+426d84d

What your assistant can do here

Everything an assistant needs to research a purchase and prepare it for you, straight from the live shop data.

Find and compare

Search the whole catalogue, open full product details and compare up to five products side by side.

Live prices

Prices ex and inc VAT with bulk breaks and sale prices, in your currency.

Stock right now

Warehouse availability checked live, so nothing is recommended that cannot ship.

Delivery and Website Express

Shipping to your country, delivery estimates and whether same-day dispatch is still open.

Offers and bundles

Current promotions, free gifts and curated kits, plus which offers apply to a basket.

Track orders

Any order by number and postcode; your own order history in the browser after you allow it.

Policies and help

Delivery, returns, payment options, FAQs, the London collection point and the blog.

A basket, ready to pay

Get one link that fills your basket, or let a browser agent do it on the page. Opening a link twice never doubles your order, and you always pay yourself.

Connect your assistant

One server URL works everywhere a custom MCP connector is accepted. No account, key or sign-in is needed for the catalogue tools.
Claude
Free, Pro and Max plans (claude.ai, desktop and mobile)
  1. Open Camden Tools in the Claude connectors directory.
  2. Choose Connect. No sign-in is needed.
  3. Enable the connector in a chat and ask about any product.

Or add it by hand: Customize → Connectors → Add custom connector, paste the server URL and choose No sign-in.

ChatGPT
Paid plans, with Developer mode switched on
  1. Settings → Security and login → turn on Developer mode.
  2. Settings → Plugins (Apps & Connectors) → + → name Camden Tools, paste the server URL, no authentication.
  3. In a chat, enable Camden Tools under Tools and ask away. Purchases finish on camdentools.com.
Perplexity
Custom connectors on paid plans (Mac app); answers cite camdentools.com for everyone
  1. Perplexity for Mac → Settings → Connectors → Add custom connector.
  2. Paste the server URL and save.
  3. Or simply ask Perplexity about Camden Tools products: it reads the site directly.
Gemini
Custom MCP connectors in Gemini Spark (Connected apps) and Gemini Business
  1. Gemini Spark → Connected apps → Add → paste the server URL.
  2. Consumer Gemini has no custom connectors yet; ask it about Camden Tools products and it will use the site’s public pages.

Google’s shopping agents will use the Merchant Center feed when the Universal Commerce Protocol reaches the UK.

Microsoft Copilot
No custom connectors in the consumer app; Copilot Studio can add MCP servers
  1. Copilot Studio (Microsoft 365): add the server URL as an MCP connector for your agents.
  2. Shopping inside Copilot arrives through Stripe’s agentic commerce programme; the catalogue tools already work from any MCP-capable client.
Browser agents
Chrome with WebMCP, Claude in Chrome, ChatGPT Atlas, Perplexity Comet
  1. Nothing to install: every page on camdentools.com registers its tools with the browser.
  2. Chrome runs WebMCP on camdentools.com as an origin trial, so there is no flag to enable in versions that support it; use an agent that speaks WebMCP. Other agent browsers read the page directly.
  3. The agent can fill your basket, switch VAT display and pre-fill checkout; you see a notice for every action and pay yourself.
Your orders inside your assistant

Add a second connector with the account URL below. Your assistant will ask you to sign in to Camden Tools once; it can then read your profile and order history (never place orders or pay). Disconnect it at any time from your account page.

  1. Claude: Add custom connector → paste the account URL → Save. ChatGPT (Developer mode): add the account URL with OAuth.
  2. Your browser opens camdentools.com/connect: sign in there, check the assistant's name and return address, and allow the profile and orders permissions.
  3. Ask “show my recent Camden Tools orders” or “where is my order CT-…”.

Buying with an assistant

Assistants research and prepare; you review and pay. That split is deliberate.
What an assistant can do
  • Research: search, compare, read the specification sheets and safety documents.
  • Check the practical bits: stock, delivery to your address, Website Express cutoff, offers that apply.
  • Prepare the basket: hand you a link that fills it, or add items in the page when it runs in your browser.
  • Track an order with its number and postcode, and read your order history in the browser once you allow it.
What it cannot do
  • Pay or place an order: checkout is always yours, on Stripe-hosted payment.
  • Log in, register or change your details on your behalf.
  • See card details: the tools never handle payment data.
  • Read your account from outside your browser: account tools are not offered to remote clients.

Checkout inside assistants (Microsoft Copilot, Google shopping agents and others) is arriving through Stripe’s agentic commerce programme. Until it is switched on, every purchase finishes on camdentools.com.

Things to ask

Copy a prompt into your assistant once the connector is enabled.
Compare two drills

“On camdentools.com, compare the DeWalt DCD796 and the Makita DHP485: price inc VAT, weight, and which one is in stock. Search the web for site:camdentools.com DeWalt DCD796 and site:camdentools.com Makita DHP485. Use only camdentools.com for this, not other shops.”

Delivery to Ireland

“Can camdentools.com deliver a Makita DHP485 to Dublin, what would it cost and how long would it take? Search the web for site:camdentools.com Makita DHP485; delivery rules: https://camdentools.com/deliveries Use only camdentools.com for this, not other shops.”

Track an order

“Track my camdentools.com order CT-102938, delivery postcode NW2 7JW. (Needs the Camden Tools connector; without it, use the track order page on camdentools.com.)”

Safety data sheet

“Find a grab adhesive on camdentools.com and give me its safety data sheet and COSHH hazard codes. Search the web for site:camdentools.com grab adhesive. Use only camdentools.com for this, not other shops.”

Same-day dispatch

“Is Website Express same-day dispatch available on camdentools.com right now, and what is the cutoff? (Needs the Camden Tools connector; without it, see the deliveries page on camdentools.com.)”

Build a basket

“Build me a camdentools.com basket with an 18V combi drill, a set of masonry bits and a pack of 40 mm wall plugs, and give me the link to check out. With the Camden Tools connector, give me one basket link; without it, search the web with site:camdentools.com and list the product pages. Use only camdentools.com for this, not other shops.”

For developers and agents

Description

Endpoints and discovery documents

Connect any MCP client

Streamable HTTP, stateless, JSON responses. Paste the server URL as a remote MCP server; no authentication for the public tools. Browser GETs of the endpoint land on this page.

Server URL

https://camdentools.com/mcp

MCP Inspector

npx @modelcontextprotocol/inspector --transport http --server-url https://camdentools.com/mcp

curl

curl -s https://camdentools.com/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

A2A

curl -s https://camdentools.com/a2a -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"SendMessage","params":{"message":{"messageId":"m1","role":"ROLE_USER","parts":[{"text":"cordless drill"}]}}}'

No connector? Plain URLs

Most conversations have no connector installed, and a browsing tool can only open URLs. These answer compact Markdown with the same live prices, stock and basket links as the tools; add format=json for JSON. Claude and Perplexity open them from a prompt. ChatGPT only opens URLs that OpenAI's web index already knows, so in a ChatGPT prompt name camdentools.com and ask for a site:camdentools.com search, or give it a product page URL without tracking parameters.

  • Guide
    https://camdentools.com/api/agent

    The instructions below as a page an assistant can open.

  • Search
    https://camdentools.com/api/agent/search?q=cordless+combi+drill

    Products with price inc and ex VAT, stock, id, links and a ready basket link for each in-stock product. Optional: page, locale.

  • One product
    https://camdentools.com/api/agent/product/<slug>

    The slug is the last part of a product page URL. Specifications, variants, quantity prices and documents.

  • Basket link
    https://camdentools.com/api/agent/basket?items=<id>:<quantity>,<id>:<quantity>

    Checks stock and answers one link that fills the shopper's basket. Nothing is bought: the shopper pays on the site.

Tools by category (32)

Every tool returns a short text summary plus structured JSON, and every link carries attribution parameters. Prices come back both ex and inc VAT. Browser-session tools are only offered to same-origin calls from the shopper’s own browser.

Search and browse products, full product details, live stock, side-by-side comparisons, documents, categories and brands.

  • search_productsSearch products

    Full-text search of the Camden Tools catalogue (tools and hardware, electrical, cleaning, household, garden, safety and more). Returns compact products with prices ex/inc VAT, stock and a link. Out-of-stock products are left out unless include_out_of_stock is true. Use page/per_page to paginate and brand/min_price/max_price to narrow down.

    ParameterTypeDescription
    query (required)stringWhat the shopper is looking for, e.g. 'cordless combi drill 18v'.
    expressbooleanOnly products eligible for Website Express same-day dispatch (UK).
    include_out_of_stockbooleanAlso return out-of-stock products, which search leaves out by default. Use it when the shopper wants a specific model that may be sold out.
    pageintegerPage number, starting at 1.
    per_pageintegerResults per page: 15, 30, 50 or 100 (default 15).
    sortstringSort order: price_low, price_high, name_asc, name_desc or newest. Omit for the default (most popular) order.
    brandstringBrand slug to filter by.
    min_pricenumberMinimum price in the locale currency.
    max_pricenumberMaximum price in the locale currency.
    localestringStorefront locale such as en-GB (default), en-US, de, fr-FR, es-ES, it-IT, nl-NL, pl. Controls product names, slugs and prices.
  • list_productsList products

    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.

    ParameterTypeDescription
    collection (required)popular | new | on-sale | express | categoryWhich collection to list.
    category_slugstringRequired when collection is 'category': a category (leaf) slug from list_categories.
    min_discountnumberMinimum discount percentage (on-sale listings).
    pageintegerPage number, starting at 1.
    per_pageintegerResults per page: 15, 30, 50 or 100 (default 15).
    sortstringSort order: price_low, price_high, name_asc, name_desc or newest. Omit for the default (most popular) order.
    brandstringBrand slug to filter by.
    min_pricenumberMinimum price in the locale currency.
    max_pricenumberMaximum price in the locale currency.
    localestringStorefront locale such as en-GB (default), en-US, de, fr-FR, es-ES, it-IT, nl-NL, pl. Controls product names, slugs and prices.
  • get_productGet product

    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.

    ParameterTypeDescription
    slugstringProduct slug from a product URL (…/product/<slug>).
    skustringProduct SKU.
    idintegerNumeric product id.
    localestringStorefront locale such as en-GB (default), en-US, de, fr-FR, es-ES, it-IT, nl-NL, pl. Controls product names, slugs and prices.
  • get_productsGet several products

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

    ParameterTypeDescription
    skusarray of string
    idsarray of integer
    localestringStorefront locale such as en-GB (default), en-US, de, fr-FR, es-ES, it-IT, nl-NL, pl. Controls product names, slugs and prices.
  • get_stock_levelGet stock level

    Live availability check for a SKU: whether it can be bought now and how many units can be ordered. Fresher than the stock_level on product results, which can be hours old.

    ParameterTypeDescription
    sku (required)stringProduct SKU exactly as shown on the site.
  • compare_productsCompare products

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

    ParameterTypeDescription
    skus (required)array of string
    localestringStorefront locale such as en-GB (default), en-US, de, fr-FR, es-ES, it-IT, nl-NL, pl. Controls product names, slugs and prices.
  • get_product_documentsGet product documents

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

    ParameterTypeDescription
    slugstringProduct slug from a product URL (…/product/<slug>).
    skustringProduct SKU.
    localestringStorefront locale such as en-GB (default), en-US, de, fr-FR, es-ES, it-IT, nl-NL, pl. Controls product names, slugs and prices.
  • list_categoriesList categories

    The category tree: departments, the groups inside them, and the categories (leaves) that hold products. With no department, lists every department and its groups; with a department or group slug, lists what is inside it. Use popular_only for the popular categories shown on the site. Browse a category's products with get_category or list_products.

    ParameterTypeDescription
    departmentstringA department or group slug from an earlier list_categories call, to list what is inside it.
    popular_onlybooleanOnly the popular categories (default false).
    limitintegerMaximum entries to return (default 200).
    localestringStorefront locale such as en-GB (default), en-US, de, fr-FR, es-ES, it-IT, nl-NL, pl. Controls product names, slugs and prices.
  • get_categoryGet category

    A category's details and its products (paged) by slug. For a department or group slug, returns what is inside it instead, since only categories hold products.

    ParameterTypeDescription
    slug (required)stringCategory slug from list_categories.
    pageintegerPage number, starting at 1.
    per_pageintegerResults per page: 15, 30, 50 or 100 (default 15).
    sortstringSort order: price_low, price_high, name_asc, name_desc or newest. Omit for the default (most popular) order.
    localestringStorefront locale such as en-GB (default), en-US, de, fr-FR, es-ES, it-IT, nl-NL, pl. Controls product names, slugs and prices.
  • list_brandsList brands

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

    ParameterTypeDescription
    querystringBrand name search text.
    pageintegerPage number, starting at 1.
    per_pageintegerResults per page: 15, 30, 50 or 100 (default 15).
    sortstringSort order: price_low, price_high, name_asc, name_desc or newest. Omit for the default (most popular) order.
  • get_brand_productsGet brand products

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

    ParameterTypeDescription
    slug (required)stringBrand slug from list_brands.
    pageintegerPage number, starting at 1.
    per_pageintegerResults per page: 15, 30, 50 or 100 (default 15).
    localestringStorefront locale such as en-GB (default), en-US, de, fr-FR, es-ES, it-IT, nl-NL, pl. Controls product names, slugs and prices.

Resources

  • camdentools://policies/delivery: Camden Tools delivery policy as markdown.
  • camdentools://policies/returns: Camden Tools returns policy as markdown.
  • camdentools://policies/payment-options: Camden Tools payment options policy as markdown.
  • camdentools://policies/faqs: Camden Tools faqs policy as markdown.
  • camdentools://policies/contact: Camden Tools contact policy as markdown.
  • camdentools://store/facts: Company details, contact points, collection point and VAT display rules.
  • camdentools://llms.txt: Site overview for language models (same content as https://camdentools.com/llms.txt).

Prompts

  • find_the_right_tool: Help a shopper choose a product for a task, within a budget and brand preference, and hand them a basket link.Arguments: task, budget?, brand?
  • check_delivery: Work out delivery options, cost and timing for a basket to a destination.Arguments: country_code, postcode?
  • compare: Compare a few SKUs side by side and recommend one.Arguments: skus

A2A skills

POST a JSON-RPC SendMessage to the A2A endpoint with plain text or a JSON part carrying a skill id. Every message is answered synchronously; there are no tasks to poll.

  • search-products: Find tools and equipment in the Camden Tools catalogue with prices, stock and links.Example: cordless combi drill 18v
  • product-lookup: Full details for a product by SKU or slug: price ex/inc VAT, stock, variants, documents.Example: {"skill":"product-lookup","sku":"DCD796P2"}
  • compare-products: Side-by-side comparison of two to five SKUs.Example: DCD796P2, DHP485Z, M18FPD2
  • create-basket: Turn product ids and quantities into a link that fills the shopper's basket on camdentools.com; they review it and pay at checkout.Example: {"skill":"create-basket","items":[{"id":27155,"quantity":2},{"id":4410,"quantity":1}]}
  • order-status: Track an order with its order number and delivery postcode.Example: order CT-102938 postcode NW2 7JW
  • shipping-availability: Whether Camden Tools ships to a country (ISO alpha-2 code).Example: IE
  • express-delivery-status: Whether same-working-day dispatch is available right now for UK orders.Example: express delivery

In-browser tools (WebMCP) (15)

Every page on camdentools.com registers these tools with the browser through the WebMCP API (document.modelContext). They act on the shopper’s own basket and page, show a notice for every action, and account access needs the shopper’s explicit consent.

  • cart_getGet basket
  • cart_add_itemAdd to basket
  • cart_update_itemUpdate basket line
  • cart_remove_itemRemove from basket
  • cart_clearEmpty basket
  • cart_apply_promoApply promo code
  • cart_remove_promoRemove promo code
  • wishlist_addAdd to wishlist
  • wishlist_removeRemove from wishlist
  • page_get_contextGet page context
  • page_navigateNavigate
  • page_set_vat_displaySet VAT display
  • page_select_variantSelect variantproduct page
  • page_prefill_checkout_addressPre-fill checkout addresscheckout page
  • page_request_account_accessRequest account access

Security and privacy

  • Public tools need no credentials. Requests are rate limited per client; a 429 means wait and retry.
  • Browser calls: only same-origin pages can use the shopper’s session; cross-origin browser requests to the endpoints are refused.
  • Account tools run only after the shopper allows AI agent access (30 days, revocable on the account page) and are never offered to remote clients.
  • No card data, no payments: checkout is completed by the shopper on Stripe-hosted payment.
  • Links carry utm_source=ai-agent, utm_medium (channel), utm_campaign (client) and utm_content (tool); keep them intact.
  • Bodies over 64 KB are rejected; the MCP endpoint is stateless and answers with JSON, never streams.
  • Remote account access uses OAuth 2.1 (authorization code with PKCE) issued by the Camden Tools authorization server; /mcp/account answers 401 with an RFC 9728 resource_metadata challenge, tokens are validated for issuer, audience, expiry and scope, and are never logged. https://camdentools.com/.well-known/oauth-protected-resource/mcp/account

Identity (Web Bot Auth)

Requests sent by Camden Tools’ own agent layer are signed with Ed25519 HTTP message signatures. Verify them against the public keys in the key directory.

Agentic checkout (ACP)

Not enabled yet The ACP discovery document returns 404 until agentic checkout through Stripe is switched on. Until then, finish with a basket link and the shopper pays on the site.

https://camdentools.com/.well-known/acp.json

Changelog

  • v1.8.0

    Categories follow the site's new category tree (department, group, category). list_categories lists departments and groups, or with department set, what is inside one; each entry has a level, and only level category holds products. get_category on a department or group returns what is inside it, and category links point at the new /category/{department}/{group}/{category} pages. Categories with no products are left out of lists. A slug from the old tree is followed to the category that replaced it, and an unknown slug says to call list_categories. WebMCP page_navigate and llms.txt use the new pages too.

  • v1.7.0

    Every MCP tool result now carries its full payload as JSON text after the summary, so clients that only pass text content to the model (and not structuredContent) see the products, prices and stock, not just counts. search_products leaves out-of-stock products out by default; pass include_out_of_stock to include them. list_products on-sale adds source: 'discount', 'promotion' (nothing is discounted, so products in active promotions are listed at their normal price) or 'none'. weight_kg is labelled as the shipping weight. The payment policy adds Discover and Klarna to the methods accepted everywhere.

  • v1.6.0

    Fixes from an end-to-end test of every tool. Policy text (get_policy, get_site_info and the policy resources) puts each heading before its own text, pairs every FAQ question with its answer, and no longer shows internal labels or placeholders; delivery lists the countries served and the payment policy names every method. An unknown SKU no longer fails get_product, get_products or compare_products: the others are returned and the unknown one is reported as not found. get_stock_level adds stock_level, the units that can be ordered now (warehouse_quantity is 0 for items shipped from a supplier). get_brand_products prices include VAT. list_bundles names bundles instead of returning translation keys, and check_shipping_availability explains a refused country in words. Clearer errors for an unknown brand slug and a partial UK postcode. Blog posts show featured products as SKUs. Product results list at most 8 categories.

  • v1.5.1

    Every tool states readOnlyHint, destructiveHint and openWorldHint explicitly, as OpenAI's app directory requires. None is destructive: every tool is read-only. No other tool changes.

  • v1.5.0

    Every tool declares an outputSchema describing its structured result, and each result is checked against it before it is sent. compare_products reports weight_kg in kilograms (it was grams). list_products returns its category in the same shape as get_category, check_express_eligibility's express block has fixed fields, and prices, totals and discount values are always numbers.

  • v1.4.1

    The server description and instructions now cover international delivery: orders typically arrive in 2–7 days, with premium UPS services (Worldwide Saver, Express, Express Plus). Agents are asked to quote estimate_delivery's services and transit times for an address rather than the general range. No tool changes.

  • v1.4.0

    The MCP endpoints also speak the stateless 2026-07-28 revision: server/discover, per-request protocol version in _meta with the MCP-Protocol-Version, Mcp-Method and Mcp-Name headers, resultType on every result and cache hints on list and read results. Clients using initialize keep the 2025 revisions. New discovery documents: /.well-known/agents.json (every agent endpoint) and /.well-known/oauth-authorization-server (the authorization server's metadata, mirrored on this origin). In-page tools use document.modelContext, and the newsletter form on the homepage is a declarative WebMCP tool (newsletter_subscribe) that fills in the email and leaves consent and submitting to the shopper.

  • v1.3.0

    The shop over plain GET, for assistants with no connector installed: /api/agent (guide), /api/agent/search?q=, /api/agent/product/{slug} and /api/agent/basket?items=id:qty answer compact Markdown (or JSON) with the same live prices, stock and basket links as the MCP tools. llms.txt now opens with these instructions, and they are in SKILL.md and the OpenAPI document.

  • v1.2.0

    OAuth-ready account access for remote clients: POST /mcp/account with RFC 9728 protected resource metadata and a WWW-Authenticate challenge, account tools gated by the profile:read and orders:read scopes, and a generated /auth.md. The shopper signs in and approves the client on camdentools.com/connect; a grant that lacks a scope is reported as such (reconnect and approve it) rather than as a sign-in problem. Served once the Camden Tools authorization server is configured; until then the endpoint and its metadata return 404. create_basket_link now reports stock per line and lists out_of_stock_ids, and its link is idempotent: opening it makes sure the basket holds at least those quantities, so opening it twice never doubles them. Revoked or disconnected access tokens get the 401 invalid_token challenge.

  • v1.1.0

    New create_basket_link tool and A2A create-basket skill: one link fills the shopper's basket on the site (/cart?add=id:qty). Account tools are no longer advertised to remote clients that cannot use them. Capabilities catalogue at /api/agent-capabilities; SKILL.md, OpenAPI and llms-full.txt are generated from it. Web Bot Auth key directory. ACP discovery document (served once agentic checkout is enabled).

  • v1.0.0

    Launch: MCP server with 31 tools, 7 resources and 3 prompts; A2A agent with 6 skills; in-page WebMCP tools for the basket, wishlist, navigation, VAT display, variants, checkout prefill and account consent; discovery documents (API catalog, MCP server card, A2A agent card, OpenAPI, agent skills, ai-catalog, auth.md, llms.txt, llms-full.txt).

Machine-readable documents

Building something with Camden Tools?

Partnerships, higher rate limits and commercial integrations: get in touch.