apps/mcp/src/tools/<tool>.ts.
Format per tool: name · scope · category · annotations. Full input/output schemas in the source file.
Write tools (/write endpoint, 60 req/min cap)
| Tool | Scope | Annotations |
|---|---|---|
payments.initiate | payments:initiate | destructive · idempotent · requires human approval (step-up threshold) |
payments.simulate | payments:simulate | read-only · idempotent (dry-run) |
cards.issue | cards:manage | idempotent |
cards.freeze | cards:manage | idempotent (already_frozen is no-op) |
beneficiary.add | beneficiary:write | requires human approval (principal multisig-proposal gate) |
transfer.schedule | payments:initiate | idempotent · policy re-eval at execute time |
payroll.run | payments:initiate | destructive · requires human approval · V2-dep-flagged |
x402.pay | x402:pay | destructive · idempotent · F1 server-fetch tx verify |
x402.receive | x402:receive | read-only (endpoint metadata describe) |
Read tools (/read endpoint, 300 req/min cap)
| Tool | Scope |
|---|---|
accounts.list | accounts:read |
accounts.balance | accounts:read |
transactions.list | accounts:read |
agents.list | agents:read |
skills.list | agents:read |
audit.stream | audit:stream (mints SSE cursor — idempotentHint=false) |
Treasury tools (/treasury endpoint, 10 req/min cap)
| Tool | Scope | Notes |
|---|---|---|
agent.budget.create | agent:budget:create | saga with 4-step rollback; requires human approval |
agent.budget.revoke | agent:budget:revoke | destructive · auto-sweep on by default |
agent.grant.issue | agent:budget:create | step-up required; refuses scope escalation |
vault.rotateSigner | treasury:rotate-signer | step-up required; bumps policy_version |
yield.allocate | treasury:yield-allocate | V3-dep-flagged; envelope step-up respected |
killSwitch.all | agent:budget:revoke | destructive · emergency · confirm_scope literal required |
Step-up flow (shared)
Write/treasury tools over the envelope return JSON-RPC-32003 with:
step_up_sigil=<sigil>. CAS-claim guarantees first-use-only; a 5-minute grace window returns the same payload to benign polls (prevents re-asking on network retry).
Annotations honored by MCP clients
Per MCP 2025-11-25 spec:readOnlyHint: no side effects.destructiveHint: cannot be undone by the tool itself.idempotentHint: safe to retry with same params.openWorldHint: interacts with external systems (x402.pay, facilitators).
requiresHumanApproval: client SHOULD surface the step-up flow to the user even before calling.