<p align="center"> <h1 align="center">Prokura</h1> <p align="center"><b>Verifiable authority for AI-agent payments.</b><br>Built in Frankfurt for European rails and European law.</p> </p>
<p align="center"> <a href="LICENSE"><img alt="Apache-2.0" src="https://img.shields.io/badge/license-Apache--2.0-blue.svg"></a> <img alt="status" src="https://img.shields.io/badge/status-pre--release-orange.svg"> <img alt="runtime" src="https://img.shields.io/badge/node-22-brightgreen.svg"> </p>
---
AI agents can already pay. What they cannot do is prove they were allowed to.
Prokura lets a company or person grant an agent a scoped, capped, revocable mandate; checks every payment against it before money moves; and leaves evidence that a bank, merchant or auditor can verify without trusting us.
> _Prokura_ (§ 48 HGB) is the German term for a registered commercial power of attorney. The credential borrows the idea, not the statute.
How it works
Principal ──issues──▶ Credential ──held by──▶ Agent ──intent──▶ Gate ──allow──▶ Rail ──▶ Evidence
│
step_up · deny| | |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| **Credential** | W3C Verifiable Credential: payees, caps, four-eyes threshold, purposes, rails, validity, sub-delegation, B2B fields (PO, invoice hash, Skonto) |
| **Gate** | Deterministic rules, no model in the path. `allow` · `step_up` (passkey) · `deny`, with a reason code |
| **Rail** | Executed server-side. The agent never holds payment credentials |
| **Evidence** | Hash-chained, signed, exportable (_Nachweis_). Daily Merkle roots |
Quick start
git clone https://github.com/prokura-network/prokura && cd prokura cp .env.example .env # set MOLLIE_API_KEY to your Mollie test key (test_…) docker compose up -d # api :8080 · approve :8081 · mcp :8082 · x402-mock :8090 · postgres pnpm install # Node 22 + pnpm, for the demo and verify scripts pnpm demo # allow · step_up · deny, each with a Nachweis pnpm demo:rails # one mandate, three rails: Mollie card, Mollie SEPA, x402 (USDC) pnpm demo:revoke # revoke mid-mandate, next payment denied MANDATE_REVOKED pnpm verify <file> # check a credential, Nachweis (JSON or PDF) or inclusion proof offline
The step-up payment prints a link to the approval page; open the printed enrollment link first to register a passkey. To approve on a phone, see [docs/phone-approval.md](docs/phone-approval.md). API reference: <http://localhost:8080/docs>. Public demo endpoints (feed, stats, session tokens, checkpoints, verify): [docs/public-api.md](docs/public-api.md). `x402-mock` is a development stand-in for the paid API and the licensed partner; it moves no funds.
Connect any MCP client (Claude, ChatGPT, Cursor):
{ "mcpServers": { "prokura": { "url": "http://localhost:8082/mcp" } } }Tools: `prokura.request_mandate` · `prokura.check` · `prokura.pay` · `prokura.evidence` · `prokura.mandate`
Works with
Visa Intelligent Commerce / TAP · Mastercard Agent Pay · Google AP2 · OpenAI/Stripe ACP · x402 / MPP · Mollie · Hyperswitch · SEPA
One mandate, emitted in whatever format the rail speaks.
What Prokura is not
Not an identity issuer. Not a wallet. Not a PSP. Not a guarantor. Networks authenticate, banks settle, insurers carry risk. Prokura proves the authority behind the instruction.
Repository
packages/ schema · authority · gate · evidence · adapters · mcp · sdk apps/ api · approve · docs examples/ claude-desktop · browser-agent SPEC.md architecture, API, milestones
Principles
Deterministic before execution · agents never hold credentials · evidence over trust · protocol-neutral.
Licence
`packages/` Apache-2.0. `apps/` source-available during pre-release.
<p align="center"><sub>Prokura Network · Frankfurt am Main · hello@prokura.network</sub></p>