Enruta

Docs · preview

Quickstart

One MCP server, installed in the host your agent already runs in. Five minutes.

1. Get a key

An administrator creates an organization in the console, adds a policy, and issues an agent key for each agent. Agent keys can request payments and read their own records. Nothing else.

2. Install in your host

/plugin marketplace add enruta-ai/claude-plugin
/plugin install enruta@enruta

The plugin bundles the MCP server, an enruta-pay skill that teaches the agent when to request a payment, and a hook that blocks tool calls to known checkout endpoints unless a mandate is present.

3. Request a payment

From the agent’s side, a payment is one tool call. Everything Enruta needs to decide is in the arguments; everything it decides comes back in the result.

request_payment({
  payee: { name: "Demo Store", domain: "store.enruta.ai" },
  amount: { value: "168.40", currency: "USD" },
  purpose: "20 reams A4 paper, 1 stapler for the office",
  checkout: { protocol: "ucp", reference: "chk_8f3…" },
  evidence: [{ type: "quote", ref: "https://store.enruta.ai/q/1042", digest: "sha256:…" }]
})

// → { decision: "step_up", approval: { url: "https://app.enruta.ai/a/apr_…", expires_at: "…" }, record_id: "rec_…" }

On allow, the result carries the mandate and the credential the payee’s payment handler accepts. On step_up, the agent waits for a person; the approval link opens in the console or on the approver’s phone. On deny, the reasons are in the result and in the record.

4. Verify the record

npx enruta-verify rec_01J9Q2W6G5X8ZK3R7T1V9M4N2B.json
# enruta-verify 0.1.0
# canonical form   ok
# seal             ok  sha256:b0d4…71c9
# chain            ok  prev rec_01J9Q2VZ…
# timestamps       ok  2 of 4 authorities reachable offline, 4 of 4 proofs valid
# keys             ok  snapshot 2026-09-08
# PASS

The verifier needs nothing from Enruta: no network, no account. Change one byte of the record and it fails.