Your bank accounts, one command away.
The bankbridge command reads your connected accounts, transactions, recurring charges and holdings from a shell. It’s built for agents that work by running commands, like Aider and Pi, and it works for anything else that can start a program: cron, scripts, spreadsheets, the CSV your accountant asked for.
curl -fsSL https://bankbridge.money/install.sh | sh
$ bankbridge accounts --demo INSTITUTION NAME TYPE SUBTYPE LAST 4 BALANCE Chase Chase Total Checking depository checking 1029 $4,234.18 Chase Chase Savings depository savings 5531 $18,750.00 Chase Sapphire Preferred credit credit card 7714 $1,284.56 Bank of America BoA Cash Rewards credit credit card 3390 $847.22 Fidelity Fidelity Brokerage investment brokerage 7854 $50,154.00
Then run bankbridge login and paste an API key from your dashboard. A subscription is $5/month or $50/year per connected bank, and the command line tool comes with it. It reads the same banks as every MCP app you connect.
Why agents use it
Most agents reach BankBridge over MCP. Some are built around a different idea: the model runs shell commands and reads what they print. For those agents, a command-line tool is the natural way in: install it, sign in, and the agent can run it.
Aider
Aider has no MCP support. It does run commands: /run (or !) runs one and offers to add the output to the chat, and the model can suggest commands of its own, which Aider asks you to approve.
> /run bankbridge recurring --json Add 1.6k tokens of command output to the chat? (Y)es/(N)o [Yes]: y > Which of these should I cancel to save $100 a month?
For a bigger question, export a file and hand it over read-only with aider --read october.csv. Aider setup
Pi
Pi ships with four tools by default: read, bash, edit and write. Anything on your PATH is already within reach. Pi has also spoken MCP since version 0.99.0, so you can choose: the MCP connection, or the command line tool plus a short skill that Pi loads only when a question is about money. The command line tool lets the model filter with jq before the output reaches the conversation.
!bankbridge cashflow --month 2026-10 > What did I spend on food in October, compared with September? (Pi runs: bankbridge spending --month 2026-10 --json) (Pi runs: bankbridge spending --month 2026-09 --json)
Pi setup, with the skill file and the MCP command.
Any other agent with a shell
Add a line to the file your agent reads for project notes, such as AGENTS.md:
Bank data: run `bankbridge --help`. Use --json. Read-only. Positive amounts are money out. If a command prints a warning, tell me: a bank may be missing from the result.
Whatever a command prints and the agent reads goes to the model provider that agent uses, the same as any other command output.
And everything else
No agent required. It’s a normal Unix tool: data on stdout, errors on stderr, exit codes you can branch on.
Your accountant’s CSV
bankbridge transactions --from 2025-01-01 --to 2025-12-31 -o 2025-transactions.csv
Cron
Run bankbridge login once, then schedule it. --strict exits 8 if a bank didn’t answer, so a job can’t quietly save a short file.
0 7 * * 1 $HOME/.local/bin/bankbridge recurring --strict -o $HOME/finance/recurring.csv
Scripts
bankbridge transactions --month 2026-10 --json \ | jq '[.transactions[] | select(.amount > 100)] | length'
Spreadsheets
Every CSV is plain UTF-8 with a fixed header row, and it opens directly in Excel, Numbers or Google Sheets. Amounts are real numbers. Merchant names that start with = or + are escaped so a spreadsheet can’t run them as formulas.
Commands
bankbridge accountsEvery connected account with its balancebankbridge transactions --month 2026-10Transactions, by month, date range, account, category or amountbankbridge search netflixFind transactions by merchant or descriptionbankbridge spending --by merchantTotals by category, merchant, month or weekbankbridge recurringSubscriptions and billsbankbridge cashflow --month 2026-10Income, expenses and net for a monthbankbridge merchant netflixEvery charge from one merchant, with totalsbankbridge categoriesThe spending categories in your databankbridge holdingsInvestment positions with cost basis and gain or lossbankbridge investments --subtype dividendBuys, sells, dividends and feesbankbridge connectThe link for adding or reconnecting a bankTables by default. --json prints the same fields as the matching MCP tool. --csv prints CSV. -o FILE writes a file, and a name ending in .csv or .json picks the format. --account takes an account id or its last 4 digits. Long lists read every page unless you pass --limit. On transactions, positive amounts are money out and negative amounts are money in. bankbridge <command> --help lists the rest.
Exit codes
- 0
- Success
- 1
- General error, such as an account id that doesn't exist
- 2
- Bad arguments
- 3
- No API key, or the key was rejected
- 4
- Finish setup: no subscription yet, or no bank connected
- 5
- Every bank asked for needs reconnecting
- 6
- Network problem or timeout
- 7
- Rate limited, even after retries
- 8
- With --strict: at least one bank did not answer
Where your data goes
- Read-only. No command can move money or change anything at your bank.
- We keep no copy of your balances or transactions, and running a command doesn’t change that. An export is written to your disk and nowhere else.
- Files from
-oare readable only by your user (mode 600). After that the file is yours to look after, like a statement you downloaded from your bank. - Your API key is saved at
~/.config/bankbridge/config.json(mode 600), or read fromBANKBRIDGE_API_KEY. It’s never accepted as a flag, so it stays out of your shell history. Rotate your key in settings and the old one stops working.
Install details
The script reads your OS and CPU, downloads one binary from bankbridge.money, checks its SHA-256 and puts it in ~/.local/bin. Set BANKBRIDGE_INSTALL_DIR to use another folder. It doesn’t edit your shell profile or touch any agent’s settings. It runs on macOS and Linux, on arm64 and x64, with nothing else to install, and the macOS builds are signed and notarized.
bankbridge update rm ~/.local/bin/bankbridge ~/.config/bankbridge/config.json