An intent is a declaration of what an agent wants to pay for, how much, and to whom. The policy engine and risk engine evaluate every intent before it can settle.Documentation Index
Fetch the complete documentation index at: https://docs.getovra.com/llms.txt
Use this file to discover all available pages before exploring further.
requireIntent is one of the sacred invariants — never silently dropped, never bypassed.
The intent model
| Field | Description |
|---|---|
id | int_* |
agentId | Owning agent |
cardId / cardName | Which card to charge — exactly one of these |
purpose | Free text — surfaces in audit and dashboard |
expectedAmountEuros | Optional but strongly recommended |
expectedMerchant | Optional but strongly recommended |
recurring | Optional — cadence (daily/weekly/monthly/yearly) + tolerance windows |
clientIntentId | Optional client-side dedupe key |
ttlMinutes | Default 24h, max 30 days (43200) |
status | FSM (below) |
Lifecycle (FSM)
| Status | Meaning |
|---|---|
pending_approval | Policy or risk requires a human |
approved | Auto-approved or human-approved; ready to pay |
completed | Successfully settled |
denied | Rejected by policy or risk |
failed | Settlement failed downstream |
expired | TTL passed |
cancelled | Owner cancelled before settlement |
Create an intent
pending_approval, approve via dashboard or API.
Approve / deny
Recurring intents
A single intent can authorize a series of charges, with tolerance windows on amount and time:Verification (post-settlement)
After a charge completes you can record the actual amount and merchant for reconciliation:actualAmountEuros deviates from expectedAmountEuros beyond the policy’s amountTolerancePercent, the intent is flagged.
Webhooks
| Event | When |
|---|---|
intent.created | Intent insert |
intent.approved | Status flip to approved |
intent.denied | Policy or risk rejected |
intent.expired | TTL hit |
intent.cancelled | Owner cancelled |
Surfaces
| Surface | Capability |
|---|---|
| REST | /intents, /intents/:id/{approve,deny,verify,cancel} |
| SDK | ovra.intents.* |
| MCP | ovra_intent (action: declare · get · cancel · verify) |
| Dashboard | /dashboard/intents (list, drawer, approve/deny inline) |
Next
Policies
The rules that drive
approved vs pending_approval vs denied.Pay
What happens after
approved.Transactions
The record a settled intent produces.
Webhooks
React to FSM transitions in real time.
