┌──────────────────┐ 1. discover() ┌────────────────────────┐
│ │ ────────────────────▶ │ │
│ Consumer agent │ 2. /v1/agents │ OpenKarta registry │
│ (Claude, GPT, │ ◀──── verified list ─ │ - domain verified │
│ Krutrim, …) │ │ - conformance tested │
│ │ │ - signed badge │
└────────┬─────────┘ │ - daily re-verify │
│ └───────────┬────────────┘
│ 3. search() │
│ quote() │ verifies + signs
│ checkout() ▼
│ ┌────────────────────────┐
└───────────────────────────────▶ │ │
│ Brand agent │
│ (halcyon-shop.com) │
│ │
│ /.well-known/ │
│ openkarta-owner.txt │
└────────────────────────┘
What the registry signs
Conformance badge: HMAC over {agentId, ranAt, packs, passed} with the registry secret. Tamper-evident.
What the merchant signs
Every quote, with their own secret. The agent cannot forge a price; the merchant cannot deny it.
What the registry never sees
Money, PII, payment instruments. The registry is a directory and a notary — not a payment processor.