# auth.md

Authentication and registration information for AI agents using Camden Tools (https://camdentools.com).

## Audience

This document is for autonomous agents, shopping assistants and their developers who want to use the Camden Tools agent endpoints:

- MCP server: `POST https://camdentools.com/mcp` (Streamable HTTP, stateless, JSON responses)
- A2A agent: `POST https://camdentools.com/a2a` (JSON-RPC)
- Capabilities catalogue: `GET https://camdentools.com/api/agent-capabilities` (every tool with its input schema, resources, prompts, skills, in-page tools, changelog)
- Discovery: `/.well-known/mcp/server-card.json`, `/.well-known/agent-card.json`, `/.well-known/api-catalog`, `/.well-known/openapi.json`, `/.well-known/ai-catalog.json`, `/.well-known/agent-skills/index.json`, `/llms.txt`

## Public tools — no credentials required

All catalogue, pricing, stock, promotion, delivery, basket-link, order-tracking and store-information tools are public. No API key, token or registration is needed. Requests are rate limited per client; a `429` response means wait and retry.

## Customer account tools — browser session

The tools `get_my_profile`, `list_my_orders` and `get_my_order` read a signed-in shopper's data. From the shopper's own browser on camdentools.com (for example through Chrome's WebMCP bridge) they rely on the existing site session cookie, and only work after the shopper has approved the "AI agent access" prompt (tool `page_request_account_access`). The consent is stored as a cookie for 30 days and can be revoked in the account settings page.

Remote MCP clients without a bearer token are not offered these tools (`tools/list` omits them).

## Customer account tools — OAuth for remote clients

Remote MCP clients can use the account tools through `POST https://camdentools.com/mcp/account`, which requires an OAuth 2.1 bearer token issued by the Camden Tools authorization server (`https://api.camdentools.com`). The endpoint answers `401` with `WWW-Authenticate: Bearer resource_metadata="https://camdentools.com/.well-known/oauth-protected-resource/mcp/account"` until a valid token is presented; MCP clients (Claude, ChatGPT and others) use that to start the sign-in flow. The authorization server sends the shopper's browser to `https://camdentools.com/connect`, where they sign in to Camden Tools (password, two-factor code or passkey) and approve the named client, its return address and the scopes; agents never see the password, and nothing is shared if the shopper cancels.

- Protected resource metadata (RFC 9728): `https://camdentools.com/.well-known/oauth-protected-resource/mcp/account` (also at `https://camdentools.com/.well-known/oauth-protected-resource`)
- Authorization server metadata (RFC 8414): `https://api.camdentools.com/.well-known/oauth-authorization-server`
- Scopes: `profile:read`, `orders:read` (read-only)
- Authorization code with PKCE (S256), dynamic client registration or client ID metadata documents; refresh tokens are rotated.
- `POST https://camdentools.com/mcp` stays public; a valid bearer token there unlocks the same account tools.

Shoppers can review and revoke connected assistants on their account page.

Developers who need higher rate limits or a commercial integration can contact Camden Tools at info@camdentools.com or via https://camdentools.com/contact.

## How Camden Tools identifies its own requests (Web Bot Auth)

Requests sent by the site's agent layer to Camden Tools services carry RFC 9421 HTTP message signatures (`Signature-Agent: "https://camdentools.com"`, `Signature-Input` with `tag="web-bot-auth"`, `Signature`, Ed25519). The public keys are published at `https://camdentools.com/.well-known/http-message-signatures-directory` (`application/http-message-signatures-directory+json`, itself signed). Verifiers resolve the `keyid` (RFC 7638 JWK thumbprint) against that directory.

## Agentic checkout (ACP)

Agents never pay. The ACP discovery document at `/.well-known/acp.json` returns 404 until agentic checkout through Stripe's Agentic Commerce Suite is enabled; do not attempt ACP checkout calls before it exists. Until then, finish with `create_basket_link` (or the A2A `create-basket` skill): the link fills the shopper's basket and they pay at https://camdentools.com/checkout.

## Credential use

- Never send credentials to the public endpoints; they are ignored.
- Never attempt to log in, register accounts, reset passwords or submit forms on behalf of a shopper. Hand the shopper the relevant page link instead.
- Orders are always placed by the shopper at https://camdentools.com/checkout.

More: https://camdentools.com/developers
