Demo script

One credential, four doors.

Run the doors in order. Each proves the same thing a different way: a partner-program credential unlocks −20%, verified server-side every time.

Door 1 · humanPromotions page
Do this

Open /promotions, connect AIR, prove your Astra Coffee Rewards — Gold (another app's credential).

Watch for

Banner flips to "member active", tickets turn to the accent color. Pay by mock card at checkout.

What it proves

Someone else's loyalty becomes this shop's acquisition — yes/no check, nothing disclosed.

Door 2 · conciergeEmbedded widget
Do this

Ask the concierge for the dripper with your discount. Bind, verify — the price drops before you pay — then pick AIR wallet or card checkout (the discount carries over).

Watch for

"Member −20% secured" voucher before any payment; both rails end at the same order page.

What it proves

A merchant-hosted agent can secure your entitlement first and act on your wallet — scoped, capped, confirmed.

Door 3 · your agentHTTP x402
Do this

In AIR AI Studio: "buy the dripper from /buy/dripper-02 with my member discount". The flow: describe_policy → verify → /api/verify voucher → pay the member-tier 402.

Watch for

describe_policy shows both tiers; the 402 carries the air-credentials extension; receipt shows tier: member.

What it proves

The discount is machine-readable — merchant dictates, agent complies.

Door 4 · agent ↔ agentA2A (direct & concierge)
Do this

Point your agent at /.well-known/agent.json, then at the concierge card — with /desk open on a second screen.

Watch for

Your agent sees terse replies; /desk shows the evidence check, tier grant, and settle behind them.

What it proves

Identity travels between agents — verification survives protocol hops.

Finale · flywheelIssue after purchase
Do this

From any door's order page, press "Issue Mock Merchant Regular".

Watch for

The credential lands in your AIR account — Astra (another app)'s trust got you in, Mock Merchant Co.'s sends you on.

What it proves

Verify in → discount → purchase → issue out: the cross-merchant loop that compounds. Redeploy this site with a different SHOP_CONFIG and the next merchant accepts what this one issues.