For the complete documentation index, see llms.txt. This page is also available as Markdown.

Overview

RobotMoney exposes a Model Context Protocol (MCP) server so agents can read financial state, retrieve memory, and propose actions within tenant-signed policy. RobotMoney runs the underlying ingest, normalization, policy, and execution; the agent works against a single scoped surface.

Agents propose actions. Policies decide what runs. Humans stay in control where the policy says they should.

Property
Value

Endpoint

https://mcp.robotmoney.com (canonical; maps to POST /v1/agents/mcp)

Transport

JSON-RPC 2.0 over single-shot HTTP

Backed by

The same Ledger, Wiki, Authorization, and PaymentIntent surface as the HTTP API

The MCP surface uses single-shot HTTP. One request, one response, one audit event. Streaming transports may follow once we see a use case that needs them.

Surface Map

The MCP surface is intentionally small. 21 tools, 1 concrete resource plus 6 resource templates, 5 canned prompts.

21 Tools

Five Ledger reads, two Wiki reads, two Raw tools, three PaymentIntent tools, four Authorization tools, three proposal tools, one evidence resolve, one agent action propose.

7 Resources

One concrete resource (brain://payments/action_types) readable via resources/read, plus six templated brain:// URIs (ledger accounts/transactions/obligations/payment-intents, wiki pages, per-action proofs) returned only from resources/templates/list, not resources/list.

5 Prompts

Canned prompts for the most common agent loops: cash flow, bills, spending, invoices, subscriptions.

Authentication

JWT plus on-chain scope hash verification against BrainMCPAgentRegistry. Per-tenant rate limit on the route so one misbehaving agent cannot crowd out other tenants.

What an External Agent Can Do

Capability
Tools
On-chain Scope

Read Ledger

ledger.account.get, ledger.accounts.list, ledger.transactions.list, ledger.obligations.list, ledger.counterparties.list

ledger:read

Read Wiki

wiki.question, wiki.page.get

wiki:read

Contribute to Raw

raw.contribute

raw:write

Propose payment

payment_intent.propose

payment_intent:propose

Request a decision

authorizations.create, authorizations.get

payment_intent:propose

Read proposals

proposals.list, proposals.get, evidence.resolve

execution:read

Review a proposal

proposals.decide, authorizations.approve, authorizations.reject

member authority

Propose agent action

agent.action.propose

execution:propose

proposals.decide declares no tool scope of its own. It accepts either payment_intent:approve or execution:read at the call boundary, then enforces member approval authority downstream (user-principal actor resolution, active-member and approval-role checks, and the money-path approval gates).

→ The pre-execution gate

What Makes the MCP Surface Different

The MCP tools call the same Ledger, Wiki, Authorization, and PaymentIntent code paths that back the HTTP API. That has three concrete consequences:

Property
Effect

Identical Policy gating

A payment_intent.propose over MCP runs through the same Policy evaluator as one created via HTTP

Identical audit emission

Tools that mutate state emit the same inner audit events the HTTP API emits, plus an outer agent.mcp.tool_called event

No bypass path

There is no shortcut. MCP cannot skip Policy or write to the Ledger directly.

Architecture

A First Call

Response:

What's Next

Tools

The 21 tools in detail.

Authentication

How JWT and on-chain scope verification work together.

Last updated