---
name: shop-at-mock-merchant
description: Shop at Mock Merchant Co. (testnet demo merchant). Verified members of partner programs pay 20% less; every purchase can mint the shop's own credential.
---

# Shopping at Mock Merchant Co.

Gear for people who measure their mornings. A testnet demo merchant on Base Sepolia (USDC). Nothing here is real merchandise; all payments are testnet-only.

## The member discount (do this BEFORE paying)

Mock Merchant Co. accepts memberships from other applications:

- `01KY07MP6JNSZMWZAQ7C1N` — Astra Coffee Rewards — Gold (issued by Astra (another app); claim a demo credential: https://air-mock-issuance-sandbox.vercel.app/issue/gold)
- `01KY07MP6JNSZMWZAQ7C1N` — Northline Miles — Silver+ (issued by Northline; claim a demo credential: https://air-mock-issuance-sandbox.vercel.app/issue/gold)

1. Verify ONE accepted program with your credential tools (`air_credential_verify`, responseMode query_match).
2. Redeem the verification: `POST https://mock-merchant.air.0xmythril.xyz/api/verify` with JSON `{ "accessToken": "<from verify>", "programId": "<the program>" }` → `{ voucher }` (member pricing proof, 30 min).

## Catalog

- `beans-ethiopia` — Single-Origin — Ethiopia Yirgacheffe: 0.40 USDC (members 0.32) — light; Ethiopia; washed; notes: jasmine, bergamot, lemon zest; for pour-over / filter; high acidity
- `beans-ethiopia-natural` — Single-Origin — Ethiopia Guji: 0.45 USDC (members 0.36) — light; Ethiopia; natural; notes: blueberry, strawberry, cocoa nib; for pour-over / cold brew; high acidity
- `beans-kenya` — Single-Origin — Kenya Nyeri AA: 0.45 USDC (members 0.36) — medium-light; Kenya; washed; notes: blackcurrant, tomato leaf, cane sugar; for pour-over / filter; high acidity
- `beans-colombia` — Single-Origin — Colombia Huila: 0.35 USDC (members 0.28) — medium; Colombia; washed; notes: red apple, caramel, almond; for espresso / filter; medium acidity
- `beans-colombia-honey` — Single-Origin — Colombia Nariño: 0.40 USDC (members 0.32) — medium-light; Colombia; honey; notes: peach, brown sugar, vanilla; for pour-over / espresso; medium acidity
- `beans-guatemala` — Single-Origin — Guatemala Huehuetenango: 0.35 USDC (members 0.28) — medium; Guatemala; washed; notes: milk chocolate, orange peel, hazelnut; for espresso / moka; medium acidity
- `beans-brazil` — Single-Origin — Brazil Cerrado: 0.30 USDC (members 0.24) — medium-dark; Brazil; natural; notes: peanut, dark chocolate, malt; for espresso / moka / french press; low acidity
- `beans-sumatra` — Single-Origin — Sumatra Gayo: 0.35 USDC (members 0.28) — dark; Indonesia; wet-hulled; notes: cedar, tobacco, baking spice; for french press / moka; low acidity
- `beans-costa-rica` — Single-Origin — Costa Rica Tarrazú: 0.40 USDC (members 0.32) — medium; Costa Rica; washed; notes: honey, apricot, toffee; for pour-over / espresso; medium acidity
- `beans-costa-rica-anaerobic` — Single-Origin — Costa Rica West Valley: 0.55 USDC (members 0.44) — light; Costa Rica; anaerobic natural; notes: lychee, rum raisin, cinnamon; for pour-over / cold brew; high acidity
- `beans-rwanda` — Single-Origin — Rwanda Nyamasheke: 0.40 USDC (members 0.32) — medium-light; Rwanda; washed; notes: plum, black tea, cocoa; for pour-over / filter; medium acidity
- `beans-panama-gesha` — Micro-lot — Panama Gesha: 0.90 USDC (members 0.72) — light; Panama; washed; notes: jasmine, mango, bergamot; for pour-over; high acidity
- `beans-yemen` — Single-Origin — Yemen Haraaz: 0.70 USDC (members 0.56) — medium-dark; Yemen; natural; notes: date, dried fig, cardamom; for espresso / moka; low acidity
- `blend-house` — House Blend — Morning Rail: 0.30 USDC (members 0.24) — medium; blend; notes: cocoa, hazelnut, orange; for espresso / filter; medium acidity
- `blend-espresso` — Espresso Blend — Iron Bridge: 0.35 USDC (members 0.28) — medium-dark; blend; notes: dark chocolate, molasses, walnut; for espresso / moka; low acidity
- `blend-breakfast` — Breakfast Blend — First Light: 0.28 USDC (members 0.22) — medium-light; blend; notes: citrus, honey, biscuit; for filter / french press; medium acidity
- `blend-cold-brew` — Cold Brew Blend — Slow Tide: 0.30 USDC (members 0.24) — medium-dark; blend; notes: molasses, fig, cocoa; for cold brew / french press; low acidity
- `decaf-colombia` — Decaf — Colombia Sugarcane: 0.35 USDC (members 0.28) — medium; Colombia; sugarcane EA decaf; decaf; notes: cocoa, cherry, brown sugar; for espresso / filter; medium acidity
- `decaf-ethiopia` — Decaf — Ethiopia Water Process: 0.40 USDC (members 0.32) — medium-light; Ethiopia; water process decaf; decaf; notes: citrus, floral, caramel; for pour-over; medium acidity
- `dripper-02` — Ceramic Dripper 02: 0.25 USDC (members 0.20) — for pour-over
- `kettle-pro` — Pour-Over Kettle Pro: 0.60 USDC (members 0.48) — for pour-over
- `grinder-s2` — Hand Grinder S2: 0.70 USDC (members 0.56) — for espresso / pour-over / french press / moka
- `scale-micro` — Brew Scale Micro: 0.45 USDC (members 0.36) — for pour-over / espresso
- `filters-02` — Cone Filters ×100: 0.15 USDC (members 0.12) — for pour-over
- `press-french` — French Press 0.6L: 0.40 USDC (members 0.32) — for french press / cold brew

Machine-readable prices + tiers: `https://mock-merchant.air.0xmythril.xyz/.well-known/x402-policy.json`

## Door A — buy over HTTP x402

Use your x402 payment tool (e.g. `air_payments_x402_fetch`) against:

    https://mock-merchant.air.0xmythril.xyz/buy/<productId>                      (base price)
    https://mock-merchant.air.0xmythril.xyz/buy/<productId>?tier=member&voucher=<voucher>   (member price)

The 402 challenge carries the `air-credentials` extension naming the accepted programs. Any ONE program suffices for the member tier.

## Door B — negotiate agent-to-agent (A2A)

AgentCards:

- Shop desk: `https://mock-merchant.air.0xmythril.xyz/.well-known/agent.json` (rpc: `https://mock-merchant.air.0xmythril.xyz/api/a2a/rpc`)
- Concierge: `https://mock-merchant.air.0xmythril.xyz/api/concierge/agent.json` (rpc: `https://mock-merchant.air.0xmythril.xyz/api/concierge/rpc`)

Open a task with `message/send`. Member evidence travels in-band on the message:

    "metadata": { "air-credentials": { "voucher": "<voucher>" } }
    // or: { "air-credentials": { "accessToken": "<token>", "programId": "<program>" } }

No evidence → base-price quote plus a structured member offer (metadata `air-credentials.memberOffer`) telling you how to upgrade. Payment is x402 exact / Permit2 on Base Sepolia; the seller settles server-side and returns the receipt + order artifact.

## Watch your session

Every A2A reply's metadata carries `air-desk.watchUrl` — a live console showing the seller's side of YOUR session only. Send `metadata["air-desk"].session` (4–32 chars, [A-Za-z0-9_-]) to pick your own id.

## After you buy — the flywheel

Every receipt includes an `orderUrl`. Tell your human to open it: the order page issues Mock Merchant Co.'s own "Mock Merchant Regular" credential to their AIR account — which other merchants in this demo network accept for THEIR discounts.
