Guardrails that enforce, not just advise.
Every charge an Ovra agent attempts is evaluated against a declarative policy before authorization— outside the agent's runtime, memory, and reach.
One declarative object. Every guardrail.
Bind a policy to an agent or a card. The Ovra runtime evaluates every rule on every charge, in order, fail-closed.
Rules compose. Bind a policy at the workspace, the agent, or the card — the engine evaluates the union, narrowest scope wins.
Enforce
Hard block. Authorization is denied before the network ever sees the request.
Approve
Held pending human approval. Charge waits in the queue until a maintainer signs off.
Warn
Proceeds with an advisory. Webhook fires and the event lands in the audit trail.
Three layers. None of them trust the agent.
Defense in depth: the API layer denies first, the network catches what slips through, settlement reconciles what shipped.
Application policy engine
Synchronous, fail-closed evaluation in the authorization path. Every charge resolved against the bound policy before money moves.
- Runs inside the API request, not after
- Fail-closed: a missing policy denies the charge
- Decision + reason persisted to the audit trail
Card-network controls
BIN-level limits configured with the issuer: hard amount caps, MCC blocks, country restrictions. Enforced even if the API is bypassed.
- Per-card spend ceiling at the issuer
- MCC and country filters at the BIN
- Backstop if a higher layer fails open
Post-payment verification
Settlement events reconcile against the original intent. Drift, duplicate charges, or merchant substitutions trigger reversal and alert.
- Webhook-driven reconciliation per settlement
- Detects amount drift and merchant mismatch
- Auto-revoke on anomaly, page on chargeback
Evaluated on the request. Decided in milliseconds.
Every rule, in order. The decision and reason persist to the audit trail before the network ever hears about the charge.
You can't trust the entity you're trying to constrain to enforce its own constraints.
Prompt-based guardrails are suggestions. Ovra policies live in the request path at the API layer — outside the agent's runtime, memory, and context. The agent never sees the rules, can't modify them, and has no mechanism to circumvent them.
Define the rules. Ship the agent.
Get a sandbox workspace in the private beta. Write your first policy and watch every charge resolve against it.