Enruta

Docs · preview

MCP tools

One server, five tools, the same in every host. Transport is Streamable HTTP at https://mcp.enruta.ai/mcp; local stdio is available for development.

ToolPurposeRead or write
request_paymentAsk to pay. Returns the decision, and the mandate and credential on allow.write
get_decisionPoll a payment request after a step-up.read
list_mandatesMandates for this agent and their state.read
get_recordFetch a record and its bundle.read
verify_recordRun the verifier on a record the agent holds; returns the report.read

request_payment

input: {
  payee: { name?: string; domain?: string; merchant_id?: string },
  amount: { value: string; currency: string },
  purpose: string,
  checkout?: { protocol: "ucp" | "acp" | "x402" | "mpp" | "card" | "bill"; reference: string },
  evidence?: { type: string; ref: string; digest: string }[],
  trace?: { ref: string; digest: string }
}
output: {
  request_id: string,
  decision: { result: "allow" | "step_up" | "deny"; reasons: string[] },
  mandate?: { id: string; amount: string; expires_at: string; credential: object },
  approval?: { id: string; url: string; expires_at: string },
  record_id: string
}

Annotations

request_payment is annotated as non-idempotent and open-world so hosts ask before the first call; the other four are read-only. The server never asks the agent for a card number, and it rejects any argument that looks like one.

Authentication

Hosts that support OAuth sign in with the Enruta account and receive an agent-scoped token. Hosts that do not send the agent key as a bearer header. Both are tied to one agent id; the record names it.

The skill

The Claude Code plugin and the ChatGPT plugin ship a skill that tells the agent when to call request_payment (before any checkout completion), what to put in purpose and evidence, and how to behave on step_up and deny. The skill is plain text; you can read it before you install it.