Releases: commoninstruments/revolutcli
v0.1.0 — initial agent-first release
First release of revolutcli — read-only CLI + MCP server for Revolut Business, designed to be invoked by AI agents.
Install
npm install -g @howells/revolutcliAdds two binaries to PATH: revolutcli (CLI) and revolutcli-mcp (stdio MCP server).
Setup
export REVOLUT_CLIENT_ID="<your-client-id>"
export REVOLUT_PRIVATE_KEY_PATH="$HOME/.config/revolut/private.pem"
revolutcli auth # interactive consent
# or non-interactively:
revolutcli auth --code "oa_..." # skip stdin promptAfter initial bootstrap, token refresh is automatic.
What's included
CLI surface — auth, accounts, balance, transactions, schema, version, help. All output is JSON; pretty-printed when stdout is a TTY, compact when piped.
MCP server — four tools (list_accounts, get_balance, list_transactions, get_schema) over stdio with full annotations (readOnlyHint, idempotentHint, openWorldHint), Zod-validated args, and identical error envelopes to the CLI. .mcp.json discovery manifest at the repo root.
Structured errors — every error envelope carries code, is_retriable, optional status, optional revolut_error_code (vendor code from Revolut's body), recovery_hint, and suggestions. Exit codes follow sysexits (64/65/69/77/78). See revolutcli schema for the full table.
Streaming — transactions --ndjson emits one JSON object per line plus a trailing meta line, for streaming consumers (jq, agents).
Edge cases handled — accounts with no name field (Revolut's default GBP pocket) become unnamed-<currency>; duplicate names (e.g. Main for EUR + USD pockets) get disambiguated by currency.
What's intentionally NOT here
Read-only by design. No transfers, payment drafts, or counterparty mutations. Use the Revolut UI for write operations.
Verification
- 101 unit and integration tests passing (vitest + InMemoryTransport)
- CI (
.github/workflows/ci.yml) gates typecheck + tests + build on every push - End-to-end verified against production Revolut: 6 sub-accounts surfaced, balance and transactions returning real data, MCP server exercised over real stdio