---
name: shopping
description: Shop Amaze Cph, a Danish fashion brand's online store at amazecph.dk. Use this skill when a buyer wants to search the product catalog, look up a specific product or variant, build a cart, or check out on amazecph.dk. Covers the store's real commerce interface — the Universal Commerce Protocol (UCP) shopping API served over MCP JSON-RPC at https://a29d86.myshopify.com/api/ucp/mcp, no authentication required for catalog search and lookup — and the hard checkout-approval rule: never complete payment without the buyer's explicit, contemporaneous consent at the moment of payment.
metadata:
  store: amazecph.dk
  platform: shopify
  protocol: ucp/2026-04-08
---

# Shopping at Amaze Cph

Amaze Cph is a Danish fashion brand. This skill lets an agent search its
product catalog, inspect products and variants, build a cart, and run
checkout on the buyer's behalf through the store's real, live commerce
interface — not by scraping storefront HTML.

## What this store sells

Ready-to-wear fashion (Amaze Cph, SS26 and prior collections): garments,
outerwear, and accessories. Browse the full catalog at
`https://amazecph.dk/collections/all`, or use `search_catalog` below instead
of navigating pages — it is faster and returns structured data.

## How to talk to the store

The store implements the Universal Commerce Protocol (UCP) for agent-driven
commerce. Discover its current capabilities first, then talk to the MCP
endpoint directly:

1. **Discover** — `GET https://amazecph.dk/.well-known/ucp` returns the
   store's UCP merchant profile: supported protocol versions, service
   endpoints, capabilities, and payment handlers.
2. **Connect** — `POST https://a29d86.myshopify.com/api/ucp/mcp` with
   `Content-Type: application/json` and `Accept: application/json, text/event-stream`,
   body `{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"<your-agent-name>","version":"<version>"}}}`.
3. **List tools** — `{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}`.
   **Always call this at runtime** rather than trusting a cached tool list —
   the store can add or change tools. No `Authorization` header is required
   for `initialize` or `tools/list`.

As of 2026-08-28, `tools/list` returns 13 tools:

| Tool | Purpose |
|---|---|
| `search_catalog` | Search for products from the online store |
| `lookup_catalog` | Look up multiple products or variants by identifier |
| `get_product` | Retrieve complete detail for a single product |
| `get_cart` | Get the current cart contents |
| `create_cart` | Create a new cart |
| `update_cart` | Add/remove/change items in a cart |
| `cancel_cart` | Cancel a cart |
| `get_checkout` | Get checkout details — line items, totals, discounts, taxes |
| `create_checkout` | Start a checkout from a cart |
| `update_checkout` | Set shipping address/method, apply changes to a checkout |
| `complete_checkout` | Finalize a checkout — **requires buyer approval, see below** |
| `cancel_checkout` | Cancel a checkout |
| `get_order` | Get the details of a placed order |

Prices returned by these tools are integers in the currency's minor unit
paired with a currency code (e.g. `{"amount": 600, "currency": "DKK"}` is
DKK 6.00 for a two-decimal currency; convert before quoting a price to a
buyer).

## Typical flow

1. `search_catalog` with the buyer's intent (free text, filters) to find
   candidate products.
2. `get_product` for full detail on the buyer's chosen item (sizes, colors,
   price, availability).
3. `create_cart`, then `update_cart` to add the chosen variant(s) and quantity.
4. `create_checkout` from the cart.
5. `update_checkout` to set shipping address and method — pass
   `context.address_country` and `context.currency` for accurate pricing.
6. `complete_checkout` **only after the buyer has explicitly approved paying,
   at that moment** — see the invariant below.

Two calls — `resources/list` and `prompts/list` — additionally require a
`meta.ucp-agent.profile` field (a URI identifying your agent) in the request;
this is a UCP protocol requirement, not OAuth. See `/auth.md` for the full
authentication picture, including when Shopify's Customer Account OAuth flow
actually applies (customer-identity-bound actions, not general catalog use).

## The buyer-approval invariant — do not violate this

This store's own agent instructions (`https://amazecph.dk/agents.md`) state
it plainly: **"Checkout requires human approval. Agents must not complete
payment without explicit buyer consent."** `complete_checkout` is reachable
over the same unauthenticated transport as catalog search — nothing at the
protocol level stops an agent from calling it. The constraint is behavioral,
not a technical gate, which makes it the agent's responsibility to enforce:

- Never call `complete_checkout` without the buyer explicitly, contemporaneously
  approving the specific charge (amount, items, destination) immediately
  beforehand — not a standing approval given earlier in the conversation.
- If you cannot obtain that contemporaneous approval — e.g. you are acting
  autonomously with no buyer present to confirm the payment — do not complete
  checkout. `agents.md` recommends routing the purchase through
  `https://shop.app/SKILL.md` (Shop Pay) instead, which handles buyer-approved
  payment without the agent handling card details.
- This applies regardless of how confident you are that the buyer wants the
  item. Confidence is not consent.

## Reading store data without transacting

For read-only browsing (no MCP call needed):

- `GET /products/{handle}.json` — single product as JSON
- `GET /collections/{handle}/products.json` — collection listing as JSON
- `GET /search?q={query}&type=product` — storefront search
- `GET /sitemap.xml` — full site map

## Sources

Everything above was read from the live store on 2026-08-28:
`https://amazecph.dk/.well-known/ucp`, `https://amazecph.dk/agents.md`,
and a live `initialize`/`tools/list` JSON-RPC call against
`https://a29d86.myshopify.com/api/ucp/mcp`.
