The full tool surface available via /api/mcp and /api/v1/tools.
Cartwright exposes 36 tools across 12 domains. Every tool can be called by an external AI agent (MCP at /api/mcp), a REST client (/api/v1/tools), the storefront chat assistant, or the admin AI — all funneled through the same lib/tools/registry.ts.
This page is a reference catalogue. For the validation pipeline and audit-log behaviour see Architecture: tool registry.
All MCP and REST calls require a bearer token from an API key created in /admin/api-keys. Each key carries an explicit list of scopes; tools verify scope before executing.
Scopes are defined in lib/scopes.ts. 19 scopes total across the read/write split:
products:read, products:writecategories:read, categories:writepages:read, pages:writediscounts:read, discounts:writeorders:read, orders:writesettings:read, settings:writeaudit:read, audit:revertanalytics:readmarketing:writecatalog:read ← read-only catalog access for storefront chatcart:write ← cart mutations for storefront chatcustomer:read ← customer lookup for cart/account context
* exists as a wildcard for admin UI keys. Never grant it to a storefront chat session.
Several product/category read tools require catalog:read rather than products:read or categories:read. The latter scopes exist for symmetry but are not currently required by any registered tool. When granting a key, prefer catalog:read for storefront/agent reads.
Requires UNSPLASH_ACCESS_KEY env. Falls back gracefully if absent.
Tool
Scope
Audit
address.autocomplete
catalog:read
skip
Tool
Scope
Audit
cart.add
cart:write
skip
cart.update_quantity
cart:write
skip
cart.remove
cart:write
skip
cart.get_summary
cart:write
skip
customer.lookup_by_email
customer:read
skip
customer.lookup_by_phone
customer:read
skip
user.get_last_shipping
customer:read
skip
Cart and customer tools assume a storefront chat session with a cookie-based customer context. An API-key-only call with cart:write scope will accept the call but operate on an empty session — you usually want these tools called by the chat assistant, not directly by an external agent.