@ovra/mcp
v1.0.3
Published
MCP server for Ovra — agentic payment infrastructure, EU-native. Accounts, cards, payments, collect, workflows.
Maintainers
Readme
@ovra/mcp
Official MCP (Model Context Protocol) server for Ovra — the European agentic payment infrastructure.
Drops 19 typed tools into any MCP-aware client (Claude Desktop, Cursor, Claude Code, your own agent runtime) so an LLM can declare payment intents, issue virtual cards, settle payments, and reconcile transactions — without ever seeing raw card data.
Install
Use directly via npx (no global install needed — most MCP configs pin to a specific version this way):
npx -y @ovra/mcpOr install globally if you want the ovra-mcp binary on your $PATH:
npm install -g @ovra/mcpConfigure your MCP client
Claude Desktop / Claude Code
Add to your mcp.json (or claude_desktop_config.json on macOS/Windows):
{
"mcpServers": {
"ovra": {
"command": "npx",
"args": ["-y", "@ovra/mcp"],
"env": {
"OVRA_AGENT_TOKEN": "at_..."
}
}
}
}Cursor
~/.cursor/mcp.json:
{
"mcpServers": {
"ovra": {
"command": "npx",
"args": ["-y", "@ovra/mcp"],
"env": { "OVRA_AGENT_TOKEN": "at_..." }
}
}
}Restart the client. The 19 ovra_* tools should appear in the model's tool list.
Auth modes — pick one
| Env var | Scope | Use when |
| --- | --- | --- |
| OVRA_AGENT_TOKEN (at_...) | One specific agent | Production. Recommended for any LLM session that should act as a single agent. |
| OVRA_API_KEY (sk_...) | Full org | Admin / dev / one-off scripts. Can provision agents, rotate keys, manage policies. |
Set exactly one. Get a token at getovra.com → dashboard → agent → tokens.
Optional:
OVRA_API_URL— defaults tohttps://api.getovra.com. Override for self-hosted or testing.
Tools
Payment flow — what an LLM uses 90% of the time:
| Tool | What it does |
| --- | --- |
| ovra_pay | One-call payment loop: declare intent → tokenized DPAN → pay. Handles HTTP 402 challenges (MPP) end-to-end. |
| ovra_intent | Lower-level: declare / get / cancel / verify a payment intent. |
| ovra_credential | Lower-level: 3-step grant → issue → redeem credential flow. |
| ovra_card | Issue / list / freeze / unfreeze / close / rotate virtual cards (single-use or multi-use). |
History & evidence:
| Tool | What it does |
| --- | --- |
| ovra_transaction | List / get transactions, attach memos. |
| ovra_receipt | Upload merchant PDF receipts (base64) and retrieve them. |
| ovra_dispute | File / list / get disputes against settled transactions. |
| ovra_outcome | Report what happened after a purchase (subscription activated, cost saved, …). |
Money movement:
| Tool | What it does |
| --- | --- |
| ovra_account | Create / list / fund accounts. Each account has a dedicated IBAN. |
| ovra_payment | Send money — account-to-account, account-to-vendor, or atomic multi-leg split. |
| ovra_vendor | Register external payees (with IBAN validation) before paying them. |
Workflows & B2B2B:
| Tool | What it does |
| --- | --- |
| ovra_workflow | Group every call made during one agent job. Stamps payments + events with a thread id for later replay. |
| ovra_authorization | Scoped spending grants — share an acceptUrl, recipient redeems for a scoped key. |
| ovra_collect | Inbound money: A2A (internal), A2E (SEPA IBAN), or A2B (hosted payment page). |
Admin (typically API-key only):
| Tool | What it does |
| --- | --- |
| ovra_agent | Provision / list / update agents, mint and revoke agent tokens. |
| ovra_policy | View spending policy (read-only — set in dashboard). |
| ovra_customer | Account profile + GDPR (export / consent / delete). |
| ovra_merchant | MCC classification, merchant resolution. |
| ovra_config | View API keys and webhook subscriptions. |
Quick example
Once wired up, an LLM session can do this on its own:
User: Buy the Notion Team Plan on this card.
LLM: [ovra_pay action=checkout, agentId=ag_xxx, amount=79, merchant=Notion]
→ returns tokenized DPAN + cryptogram, completes the 402 flow,
posts a receipt back, never sees the underlying card number.
Done — €79 charged, transaction tx_abc123, receipt attached.Security invariants
- Raw PAN / CVV never reach the model. Card data is encrypted at rest (AES-256-GCM) and only ever returned as tokenized DPANs scoped to the intent + merchant + amount.
- Every charge is policy-gated. The Ovra policy engine evaluates merchant, amount, and velocity before any tokenization. An agent that exceeds its limit gets a typed
E_POLICY_DENIED— there is no way to bypass. - Idempotency is automatic. Every state-changing tool generates a fresh
Idempotency-Keyper call, so retries are safe. - Audit trail is mandatory. Every tool call lands in the decision log with full request + response + signal snapshot.
Source
- API: docs.getovra.com
- Repo: github.com/ovra/ovra (private — public mirror coming with v1.3)
- TypeScript SDK:
@ovra/sdk - CLI:
@ovra/cli
License
MIT
