Skip to main content

Responsibility split

ComponentWho provides itNotes
Browser / pageYou or your agent runtimee.g. local Playwright, Browserbase, or any Chromium exposing the DevTools HTTP JSON API
Checkout UIMerchante.g. Stripe, Shopify, Adyen—their hosted checkout pages, not Ovra infrastructure
Card credentialsOvraResolved only server-side when a fill token is redeemed
Fill or proxy executionOvra APIAfter POST /checkout/token; not by MCP/WebSocket from the agent into Ovra to “remote control” the browser

Flow A: Browser — token → fill

  1. Intent is approved and includes expectedMerchant (required to mint a token).
  2. POST /checkout/token with { intentId } returns a short-lived, single-use opaque token bound to that merchant domain.
  3. POST /checkout/fill with { token, cdpBaseUrl } — for example cdpBaseUrl: "http://localhost:9333" (Chrome DevTools HTTP JSON API; do not pass a ws:// URL as cdpBaseUrl in this payload).
  4. Ovra validates the token, resolves the card internally, fills PAN/expiry/CVC in the page, and completes booking when the fill succeeds.
The agent (or LLM) only handles intentId and the opaque token. It never receives PAN/CVV. Ovra does not require the agent to open a WebSocket to Ovra; during fill, the API talks to your browser’s DevTools endpoint.

Flow B: API — token → proxy

  1. Same POST /checkout/token step.
  2. POST /checkout/proxy with { token, request }. request includes url, optional method, headers, and body. Placeholders in strings or JSON (e.g. {{PAN}}, {{CVC}}, {{EXP_MONTH}}, {{EXP_YEAR}}, {{EXP_SHORT}}, {{HOLDER}}, {{LAST4}}) are replaced server-side; the response is returned without exposing raw card data to the caller.

SDK

@ovra/pay is the recommended browser integration: it obtains credentials and performs fill inside page.evaluate() so card data stays out of agent-visible JS scope.

Cost / hosting

  • Browser: your infrastructure cost (local or a hosted browser provider such as Browserbase).
  • Fill / proxy: Ovra API-side work; no separate “CDP session” product from the agent’s perspective.