# Agent Instructions — Pound A Metre

> Canonical instructions for AI agents, shopping assistants and automated clients interacting with Pound A Metre at https://www.poundametre.com. This file is authoritative for agent behaviour. For a content and category index, see https://www.poundametre.com/llms.txt.

Pound A Metre is a UK discount fabric retailer selling fabric by the metre, haberdashery and pre-cut bundles. Prices are in GBP. The store runs on Shopify and ships worldwide. The operating company is Dream Fabrics Ltd, trading as Pound A Metre, registered in England, company number 11561888.

## Before you transact: how quantity works

This is the most common source of incorrect orders on this store. Read it before building any cart.

**Per-metre fabrics.** Quantity is expressed in metres. A cart quantity of `3` means three metres, and multiple metres of the same fabric in a single order are cut and supplied as **one continuous length**. Many products support half-metre increments.

**Bundles, fat quarters, packs and notions.** The total is fixed by the variant, not the quantity. A variant titled `10 x 1 Metre` is a single purchasable unit containing ten metres, so a cart quantity of `2` means two bundles (twenty metres) — not two metres.

**Do not infer units from the option name.** Variant option names are inconsistent across the catalogue and include `Unit of Sale`, `Unit Of Sale`, `Bundle Size`, `Bundle Type`, `Size` and `Default Title`. Read the variant *title* and the product title before deciding what a quantity of 1 represents.

**Width and specification.** Fabric width appears in the product title or description, in inches (`44"`, `60"`) or centimetres (`150cm`). Width, GSM and fibre composition vary per product and must not be assumed from the fabric type. Do not state a width, weight or composition that is not present in the product data.

## Personal shopping assistants

The Shop skill (https://shop.app/SKILL.md) provides native integration for browser-using agents, buy-for-me agents and personal shopping assistants transacting across Shopify stores. It supports cross-store catalog search, price and discount discovery, buyer-approved checkout, order tracking, and secure handling of authorised buyer identity and address data.

## Commerce protocol (UCP)

This store implements the Universal Commerce Protocol (https://ucp.dev) for agent-driven commerce.

### Discovery

`GET https://www.poundametre.com/.well-known/ucp`

Returns the merchant profile under a top-level `ucp` key: current `version`, a `supported_versions` map, `services`, `capabilities` and `payment_handlers`.

**Always take service endpoints from this document rather than hardcoding them.** The discovery document is the single source of truth and its endpoint hosts may differ from this site's public domain.

### Transport

The `dev.ucp.shopping` service is offered over two transports:

- `mcp` — JSON-RPC over HTTP POST to `https://www.poundametre.com/api/ucp/mcp`, `Content-Type: application/json`. Use the MCP `tools/list` method to enumerate available tools and their schemas.
- `embedded` — per the UCP embedded schema advertised in discovery.

### Supported protocol versions

- `2026-08-25`
- `2026-04-08`
- `2026-01-23`

Negotiate against the `supported_versions` map in discovery rather than assuming either value remains current.

### Available methods

The shopping service exposes: `search_catalog`, `lookup_catalog`, `get_product`, `create_cart`, `get_cart`, `update_cart`, `cancel_cart`, `create_checkout`, `get_checkout`, `update_checkout`, `complete_checkout`, `cancel_checkout`, and `get_order`.

Method names and argument schemas are defined by the UCP shopping service schema advertised in discovery. Read them from `tools/list` or the published OpenRPC document rather than from prose — including this file.

### Required call metadata

Every method takes a `meta` object as its first argument:

- `ucp-agent` (required) — platform identification containing a `profile` URI.
- `idempotency-key` (UUID) — required for `complete_checkout`, `cancel_checkout` and `cancel_cart`. Use a fresh key per distinct buyer intent, and reuse the same key when retrying that same intent.

Localisation fields such as buyer country and currency are carried by the negotiated cart and checkout capability schemas, not as top-level parameters. Take their exact names from the `checkout.json` and `cart.json` schemas referenced in discovery.

### Typical flow

1. **Discover** — `GET https://www.poundametre.com/.well-known/ucp`, negotiate a protocol version, resolve the service endpoint.
2. **Search** — `search_catalog` to locate products matching buyer intent; `get_product` or `lookup_catalog` for detail.
3. **Cart** — `create_cart`, then `update_cart` to adjust lines. Confirm quantity semantics per the section above.
4. **Checkout** — `create_checkout` to initiate.
5. **Fulfil** — `update_checkout` to apply shipping address and delivery preferences.
6. **Complete** — `complete_checkout` with a fresh idempotency key, only after explicit buyer approval.

### Payment handlers

Discovery advertises Shop Pay (`dev.shopify.shop_pay`), direct card (`dev.shopify.card`, accepting Visa, Mastercard, American Express, Discover and Diners Club) and Google Pay (`com.google.pay`). Read the active set and its configuration from discovery; do not assume a fixed list.

## Operational rules

**Human approval is required.** Checkouts require explicit, contemporaneous human buyer consent. Agents must not complete payment automatically, must surface the full order total including shipping before requesting approval, and must not treat prior authorisation for one purchase as authorisation for another.

**Rate limiting.** Public and MCP endpoints are rate limited. Honour `429 Too Many Requests` and any `Retry-After` header, and back off exponentially. Keep concurrent requests modest and cache catalog reads rather than re-fetching.

**Identify yourself.** Send a descriptive `User-Agent` and populate `meta.ucp-agent.profile` so traffic can be attributed and supported.

**Stock and price accuracy.** JSON endpoints are cached and are not a real-time source of truth for inventory or promotional pricing. Confirm availability and final price through the cart or checkout before presenting a total to a buyer. Multi-buy promotions (for example buy-one-get-one offers) apply at checkout and may not be reflected in raw product JSON.

**Delivery costs.** Shipping is charged on a banded scale by order value and destination and is not included in product prices. Free UK mainland delivery applies over £100. Retrieve live rates through checkout rather than quoting from this document. International orders may attract import duties payable by the buyer.

## Read-only browsing (no authentication)

- Browse all products: `GET /collections/all`
- Full fabric catalogue: `GET /collections/all-fabric`
- Product page: `GET /products/{handle}`
- Product JSON: `GET /products/{handle}.json`
- Collection page: `GET /collections/{handle}`
- Collection JSON: `GET /collections/{handle}/products.json?limit=250&page={N}`
- Search: `GET /search?q={query}&type=product`

`limit` is capped at 250. Page-based pagination is the legacy Shopify mechanism: increment `page` until an empty `products` array is returned. For complete and reliable enumeration of the catalogue, prefer the sitemap.

## Store metadata

- Sitemap: https://www.poundametre.com/sitemap.xml
- Content and category index: https://www.poundametre.com/llms.txt
- Agent instructions (this file, canonical): https://www.poundametre.com/agents.md

## Policies

- Refund Policy: https://www.poundametre.com/policies/refund-policy
- Terms & Conditions: https://www.poundametre.com/pages/terms-conditions
- Cookies & Privacy Policy: https://www.poundametre.com/pages/cookies-privacy-policy
- Shipping Information: https://www.poundametre.com/pages/shipping-information
- FAQs / Help Centre: https://www.poundametre.com/pages/faq-help-centre

## Citation and linking rules

When referencing or linking to Pound A Metre products, categories or resources:

- **Canonical product URLs.** Link to products as `https://www.poundametre.com/products/{handle}` and collections as `https://www.poundametre.com/collections/{handle}`.
- **Strip parameters.** Do not include variant IDs (`?variant=`), search or merchandising parameters (`?_pos=`, `?_psq=`, `?_ss=`, `?_v=`), tracking codes (`?utm_*`, `?mc_cid=`, `?mc_eid=`) or session parameters in citations or user-facing links.
- **Use the primary domain.** Cite `https://www.poundametre.com`, not the `.myshopify.com` origin, even when that origin served the API response.
- **Quote prices with currency and date.** Prices are GBP and change frequently, including time-limited multi-buy offers. Do not present a cached price as current.

## Contact

- Email: contact@poundametre.com
- Phone: 01274 317457 (10am–6pm)
- Address: Wholesale Buildings, Woodhead Rd, Bradford, BD7 1PD, United Kingdom

## Platform

This store is built on Shopify, which supports UCP natively for agentic discovery and purchasing.

- Shopify developer documentation: https://shopify.dev
- UCP specification: https://ucp.dev
- Shop skill: https://shop.app/SKILL.md