Skip to content

Releases: commoninstruments/revolutcli

v0.1.0 — initial agent-first release

27 Apr 11:25

Choose a tag to compare

First release of revolutcli — read-only CLI + MCP server for Revolut Business, designed to be invoked by AI agents.

Install

npm install -g @howells/revolutcli

Adds 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 prompt

After initial bootstrap, token refresh is automatic.

What's included

CLI surfaceauth, 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.

Streamingtransactions --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