Skip to content
Dublin 2 · est. 2019 · agent-ready

A counter that answers machines as politely as people.

Seven small-production things we stand behind, a working age gate, and a shelf that reads itself out in JSON. Built to be poked at by agents.

7 SKUs in stock 2 age-restricted EUR pricing, VAT included /.well-known/ucp published
Discover /.well-known/ucp Catalog /catalog.json Checkout POST /api/checkout 402 quote /api/agent/quote
· The counter

Seven things, chosen once a season.

Prices are what they cost. No member tier, no dark pattern, no drip pricing. Two lines need an age check before they can leave the shop, and that check is enforced by the API, not just the button.

A brown coffee bag with a cream label
Pantry

Gasharu Yirgacheffe

Washed, whole bean, 250 g

JasmineBergamotWhite peach
€18.50 incl. VAT
A dark chocolate bar broken into squares
Pantry

Sea Salt, Seventy

Single origin cacao, 70%, 90 g

TrinitarioFleur de sel
€6.90 incl. VAT
A green olive oil bottle with a cream label
Pantry

Koroneiki First Press

Early harvest, 500 ml

Green almondPeppery
€22.00 incl. VAT
A sourdough loaf beside a starter jar
Kitchen

Sourdough Starter Kit

Jar, stoneground rye, linen cloth

Day 1 cultureRye fed
€32.00 incl. VAT
A carbon steel chef knife laid diagonally 18+ · bladed article
Kitchen

Carbon Steel Gyuto

210 mm, wa-handle, Shirogami 2

Reactive steelID on delivery
€129.00 incl. VAT
An amber pét-nat bottle with a cream label 18+ · alcohol
Wine

Loam & Lilt Pét-Nat

Skin contact, 2023, 75 cl

Volcanic soilUnfined11.5% ABV
€28.00 incl. VAT
A burgundy Barolo bottle with a cream label 18+ · alcohol
Wine · the last of the cellar

Barolo, Vigna Rionda

Nebbiolo, 2019, 75 cl. Serralunga fruit, 48 months in large cask, released only when it stops being angry with you.

Serralunga48-month élevage14.5% ABV
€46.00 incl. VAT

Alcohol and bladed goods need a date of birth on file.

Irish law requires us to verify 18 before these lines leave the shop. In this test build the gate is a single flag on the checkout request, and the API rejects restricted lines without it.

Not verified
· How an agent buys here

Three steps, no shared secret.

An agent reads the profile, prices a basket, and presents a payment credential. A human only appears when the shop asks for one, which here means the age gate.

01

Read the profile

GET /.well-known/ucp lists capabilities, versions and payment handlers. No account, no key exchange.

02

Price the basket

POST /api/checkout returns line items, VAT and a session id. Restricted lines come back gated until age is asserted.

03

Present payment

Card via the platform, or an x402 stablecoin credential from /api/agent/quote. The shop never sees a PAN.

· For agents

Everything on this page has a URL.

The shelf is the same data the browser renders. Point a scraper or an agent runtime at these four endpoints and you have the whole shop.

  • GET /.well-known/ucpBusiness profile: version, capabilities, payment handlers. Cached, no redirects.
  • GET /catalog.jsonSeven products with price in minor units, stock, and restriction codes.
  • POST /api/checkoutSession pricing. Returns 422 age_verification_required for gated lines.
  • GET /api/agent/quote402 Payment Required with an x402 v2 accepts[] array. Wire shape only, no facilitator.
GET /.well-known/ucp
// served with Cache-Control: public, max-age=3600
{
  "ucp": {
    "version": "2026-04-08",
    "supported_versions": ["2026-04-08"],
    "services": {
      "rest": { "base_url": "http://localhost:8088" }
    },
    "capabilities": {
      "dev.ucp.shopping.cart":     ["2026-04-08"],
      "dev.ucp.shopping.checkout": ["2026-04-08"],
      "dev.ucp.shopping.catalog":  ["2026-04-08"]
    },
    "handlers": {
      "card": { "scheme": "platform_token" },
      "x402": {
        "scheme": "exact",
        "network": "eip155:8453",
        "settlement": "unimplemented"
      }
    },
    "signing_keys": []
  }
}

Illustrative profile for local testing. Not a conformance claim.