Pay is one concept — Agentic Pay — with two execution modes. Whichever mode runs, every transaction lands on aDocumentation Index
Fetch the complete documentation index at: https://docs.getovra.com/llms.txt
Use this file to discover all available pages before exploring further.
transactions row with requireIntent enforced and a full audit trail.
| Mode | When to use it | Status |
|---|---|---|
| MPP (Machine Payments Protocol) | Merchant returns 402 Payment Required with WWW-Authenticate: Payment. JWE-wrapped network token, server-to-server settle. | Code-complete (Phase 7) |
| CUA (Computer-Use Autofill) | Merchant only has a browser checkout. Tokenized DPAN injected into form by a harness — never via the LLM context. | Phase 8 (just shipped) |
Both modes are sandbox-only today. Real merchant settlement is on the v1.3+ roadmap.
The shared lifecycle
Intent
Agent posts an intent. Policy engine and risk engine evaluate it. Result:
approved, pending_approval, denied.Credential
Either Ovra mints an MPP credential (JWE-wrapped) or a CUA autofill token (single-use, 30s TTL). Both bind the credential to the approved intent.
Execute
MPP: agent presents the credential to the merchant via
Authorization: Payment. CUA: harness writes the DPAN into the form via CDP Input.insertText — the LLM only sees { status: "filled" }.Choose the right surface
REST
POST /intents · POST /v1/mpp/pay · POST /v1/cua/autofill-tokensSDK
payments.payViaMpp(...), payments.mintMppCredential(...)MCP
ovra_pay (action: checkout | handle_402 | status | discover)Dashboard
Pay is developer-driven; the dashboard shows transactions, decisions, audit. No “pay now” button.
Quick example — MPP one-shot
The high-level orchestrator handles the 402 round-trip, mint, present, and verify in a single call:Quick example — CUA mint
{ aft_id: "aft_...", expires_at: "..." }. Hand the aft_id to the harness — only the harness can redeem it via X-CUA-Harness-Secret.
What Pay does not do
- No direct merchant call from the LLM context. PAN/CVV never enter the model. CUA enforces this at the harness boundary; MPP enforces it via JWE.
- No live settlement. Both modes use sandbox card data and simulated wallet effects. Live mode opens in v1.3+.
- No wallet provisioning for Apple Pay / Google Pay / Click-to-Pay yet (the rails exist via the network token service but are not surfaced as a product promise today).
Sacred guarantees
requireIntentis enforced at every checkpoint —intent,grant,issue,redeem,checkout.- A money-moving POST without an
Idempotency-Keyis rejected withE_IDEMPOTENCY_REQUIRED. - Single-use credentials enforce CAS consume — replay returns
402 invalid-challenge, never an oracle.
Next
MPP deep-dive
402 challenge format, JWE wrapping, mint + verify endpoints.
CUA deep-dive
Autofill token TTL, harness boundary, Trusted Agent Protocol prep.
Intents
The approval primitive every payment depends on.
Cards
Multi-card per agent, freeze, rotate, network tokens.
