Connect your agent to your finances

Give your agent access
to your finances.

Connect your bank. Add BankBridge to your agent. Ask it anything about your money — Claude Code, Gemini CLI, and Codex all work.

Get started — from $5/monthHow it works →

$5/mo per connected bank · Cancel anytime.

Supported banks

12,000+ institutions. Probably yours.

A few of the big ones, but the list goes much further — credit unions, brokerages, neobanks, all of it.

Chase
Bank of America
Wells Fargo
Citi
Capital One
U.S. Bank
PNC
TD Bank
Truist
American Express
Discover
Ally
Charles Schwab
Fidelity
Vanguard
E*TRADE
Robinhood
SoFi
Navy Federal
USAA
Marcus
Regions
Citizens Bank
Fifth Third
KeyBank
Huntington
M&T Bank
HSBC
Santander
Synchrony
Barclays
Morgan Stanley
Merrill
Varo
Chime
How it works

Three steps. About two minutes.

01

Sign up

Create an account with just your email. Magic link — no passwords.

02

Connect your bank

Securely link your accounts in a few clicks. Read-only — we never move money.

03

Add to your agent

Copy your MCP config into Claude Code, Gemini CLI, or Codex. Done.

Integrations

Works with every major agent.

First-class connectors for Claude Code and Claude Desktop. Plain HTTP for everything else.

01Claude Code

One-line plugin install.

The fastest way in. Runs inside Claude Code — just paste your API token when it asks.

/plugin marketplace add bankbridge/bankbridge-plugin
/plugin install bankbridge
02Claude Desktop

Double-click connector.

A signed .mcpb bundle. Drop it on Claude Desktop, paste your token, done. Credentials live in your OS keychain.

# download bankbridge.mcpb
# double-click it
03Gemini CLI · Codex · anything else

Raw HTTP MCP endpoint.

Works with any MCP-speaking client. Point it at the endpoint, add an Authorization header, you're in.

url:     https://bankbridge.money/api/mcp
header:  Authorization: Bearer ldgr_...
What you can ask

Talk to your money in plain English.

Once BankBridge is connected, your agent can answer questions you'd normally ask an accountant — instantly, anytime.

Spending
  • How much did I spend on restaurants last month?
  • Where did all my money go in March?
  • What's the most expensive thing I bought this year?
  • Am I spending more on groceries this year than last?
Subscriptions
  • List every subscription I'm paying for.
  • Which subscriptions have I not used lately?
  • How much am I spending on software a month?
  • Did I get charged twice for anything this month?
Cashflow
  • Am I making more than I spend?
  • What's my average monthly burn?
  • How's my cashflow trending over the last six months?
  • When did my income start going up?
Investments
  • How are my holdings doing?
  • What's my biggest gainer?
  • How much did I make in dividends this year?
  • Am I over-indexed on tech?
What your agent can do

Ask anything about your money.

Twelve tools across accounts, transactions, spending, and investments. Your agent decides which to call.

Prompt

How much did I spend on food last month?

tool calllist_transactions
list_transactions({ category: "FOOD_AND_DRINK", start_date: "2026-03-01", end_date: "2026-03-31" })
{
  transactions: [
    { date: "2026-03-28", merchant: "Blue Bottle",   amount: 6.50  },
    { date: "2026-03-27", merchant: "Whole Foods",   amount: 84.23 },
    { date: "2026-03-25", merchant: "Sweetgreen",    amount: 14.95 },
    ... 41 more
  ],
  total_count: 44,
  has_more: false
}
Prompt

What's my cashflow for March?

tool callget_monthly_cashflow
get_monthly_cashflow({ month: "2026-03" })
{
  income:    8420.00,
  expenses:  6315.47,
  net:       2104.53,
  top_expense_categories: [
    { category: "RENT_AND_UTILITIES", amount: 2400.00 },
    { category: "FOOD_AND_DRINK",     amount:  812.34 },
    { category: "TRANSPORTATION",     amount:  340.12 }
  ]
}
Prompt

Show me all my Netflix charges.

tool callget_merchant_history
get_merchant_history({ merchant: "Netflix" })
{
  merchant: "Netflix",
  charge_count: 24,
  first_charge: "2024-04-12",
  last_charge:  "2026-03-12",
  average_amount: 15.49,
  total_spent:   371.76
}
Prompt

What are my recurring subscriptions?

tool callget_recurring_charges
get_recurring_charges({})
[
  { merchant: "Netflix",   amount: 15.49, frequency: "monthly" },
  { merchant: "Spotify",   amount: 10.99, frequency: "monthly" },
  { merchant: "Notion",    amount: 10.00, frequency: "monthly" },
  { merchant: "Anthropic", amount: 20.00, frequency: "monthly" },
  { merchant: "Dropbox",   amount: 119.88, frequency: "yearly" }
]
Prompt

How are my investments doing?

tool calllist_holdings
list_holdings({})
[
  { ticker: "AAPL", qty: 50.0, value: 12405.00, gain_loss: 3205.00 },
  { ticker: "MSFT", qty: 24.0, value:  9901.20, gain_loss: 2101.20 },
  { ticker: "NVDA", qty: 30.0, value:  4284.00, gain_loss:  624.00 }
]
Prompt

Break down my spending by category.

tool callget_spending_summary
get_spending_summary({ group_by: "category", start_date: "2026-03-01" })
[
  { group: "RENT_AND_UTILITIES", total: 2400.00, count:  4 },
  { group: "FOOD_AND_DRINK",     total:  812.34, count: 44 },
  { group: "TRANSPORTATION",     total:  340.12, count: 18 },
  { group: "ENTERTAINMENT",      total:  120.00, count:  6 }
]
Pricing

Pay for what you connect.

$5 per connected bank per month. No minimums. No caps. Prorated automatically when you add or remove a bank.

Banks
/month
1
$5
2
$10
3
$15
N
N × $5
  • Connect as many banks as you want
  • All 12 MCP tools on every plan
  • 24 months of transaction history
  • Investment holdings & activity included
  • AES-256 encrypted credentials
  • Cancel anytime — items removed on cancel
Get started

Billed monthly via Stripe. First bank starts your subscription at $5/mo.

Security

Your data, safe.

Read-only access

We can see your transactions. We can’t move money.

Bank-grade encryption

AES-256-GCM for access tokens. TLS 1.3 for everything else.

Your data, your control

Delete your data or close your account anytime from settings.

Trusted banking rails

We use the same banking infrastructure Venmo and Robinhood rely on.

The full surface

Tons of tools. See everything.

Every tool your agent can call, with an example input and the exact shape it returns. Amounts are in dollars. Positive transaction amounts = money spent, negative = money received.

01list_accounts

All connected accounts with current balances. No input — returns everything your agent has access to.

Example input
{}
Example output
{
  "accounts": [
    {
      "id": "acc_blgvvBlXw3",
      "name": "My Checking",
      "official_name": "ACME Bank Everyday Checking",
      "institution": "ACME Bank",
      "type": "depository",
      "subtype": "checking",
      "mask": "0000",
      "current_balance": 110.00,
      "available_balance": 100.00,
      "limit": null,
      "currency": "USD",
      "last_updated": "2026-04-12T09:14:22Z",
      "needs_reauth": false
    },
    {
      "id": "acc_3gE5gUdEC7",
      "name": "My Credit Card",
      "institution": "ACME Bank",
      "type": "credit",
      "subtype": "credit card",
      "mask": "3333",
      "current_balance": 410.00,
      "available_balance": null,
      "limit": 2000.00,
      "currency": "USD",
      "last_updated": "2026-04-12T09:14:22Z",
      "needs_reauth": false
    }
  ]
}
02get_account

Full detail for a specific account by id.

Example input
{ "account_id": "acc_blgvvBlXw3" }
Example output
{
  "id": "acc_blgvvBlXw3",
  "name": "My Checking",
  "official_name": "ACME Bank Everyday Checking",
  "institution": "ACME Bank",
  "institution_id": "ins_109508",
  "type": "depository",
  "subtype": "checking",
  "mask": "0000",
  "current_balance": 110.00,
  "available_balance": 100.00,
  "limit": null,
  "currency": "USD",
  "last_synced_at": "2026-04-12T09:14:22Z",
  "needs_reauth": false
}
03list_transactions

Transactions with filters — date range, amount range, category, account, pending. Paginated. Newest first. Positive amount = money spent, negative = money received.

Example input
{
  "category": "FOOD_AND_DRINK",
  "start_date": "2026-03-01",
  "end_date": "2026-03-31",
  "limit": 50
}
Example output
{
  "transactions": [
    {
      "id": "tx_lPNjeW1nR6",
      "account_id": "acc_3gE5gUdEC7",
      "account_name": "My Credit Card",
      "account_mask": "3333",
      "date": "2023-09-24",
      "datetime": "2023-09-24T11:01:01Z",
      "name": "PURCHASE WM SUPERCENTER #1700",
      "merchant_name": "Walmart",
      "amount": 72.10,
      "currency": "USD",
      "category": "GENERAL_MERCHANDISE",
      "category_detailed": "GENERAL_MERCHANDISE_SUPERSTORES",
      "pending": false,
      "payment_channel": "in store"
    }
  ],
  "total_count": 342,
  "returned": 1,
  "offset": 0,
  "has_more": true
}
04search_transactions

Case-insensitive substring match on both the raw transaction name and the merchant name.

Example input
{ "query": "Netflix", "limit": 10 }
Example output
{
  "transactions": [
    {
      "id": "tx_abc123",
      "account_id": "acc_3gE5gUdEC7",
      "account_name": "My Credit Card",
      "account_mask": "3333",
      "date": "2026-03-12",
      "name": "NETFLIX.COM",
      "merchant_name": "Netflix",
      "amount": 15.49,
      "currency": "USD",
      "category": "ENTERTAINMENT",
      "category_detailed": "ENTERTAINMENT_TV_AND_MOVIES",
      "pending": false,
      "payment_channel": "online"
    }
  ],
  "total_count": 24,
  "returned": 1,
  "offset": 0,
  "has_more": true
}
05get_transaction

Full detail for one transaction by id.

Example input
{ "transaction_id": "tx_lPNjeW1nR6" }
Example output
{
  "id": "tx_lPNjeW1nR6",
  "account_id": "acc_3gE5gUdEC7",
  "account_name": "My Credit Card",
  "account_mask": "3333",
  "date": "2023-09-24",
  "datetime": "2023-09-24T11:01:01Z",
  "name": "PURCHASE WM SUPERCENTER #1700",
  "merchant_name": "Walmart",
  "amount": 72.10,
  "currency": "USD",
  "category": "GENERAL_MERCHANDISE",
  "category_detailed": "GENERAL_MERCHANDISE_SUPERSTORES",
  "pending": false,
  "payment_channel": "in store"
}
06get_spending_summary

Aggregate spending (expenses only) grouped by category, merchant, month, or week. Top N groups by total.

Example input
{
  "group_by": "category",
  "start_date": "2026-03-01",
  "end_date": "2026-03-31",
  "limit": 5
}
Example output
{
  "group_by": "category",
  "start_date": "2026-03-01",
  "end_date": "2026-03-31",
  "groups": [
    { "group": "RENT_AND_UTILITIES", "total": 2400.00, "transaction_count": 4,  "average": 600.00 },
    { "group": "FOOD_AND_DRINK",     "total":  812.34, "transaction_count": 44, "average":  18.46 },
    { "group": "TRANSPORTATION",     "total":  340.12, "transaction_count": 18, "average":  18.90 },
    { "group": "ENTERTAINMENT",      "total":  120.00, "transaction_count":  6, "average":  20.00 },
    { "group": "GENERAL_MERCHANDISE","total":   94.23, "transaction_count":  3, "average":  31.41 }
  ]
}
07get_recurring_charges

Auto-detected subscriptions. Classifies by median interval between charges — weekly, biweekly, monthly, quarterly, yearly.

Example input
{ "min_occurrences": 3 }
Example output
{
  "recurring": [
    { "merchant": "Netflix",   "amount": 15.49,  "frequency": "monthly",  "last_charge": "2026-04-12", "charge_count": 24, "total_spent": 371.76 },
    { "merchant": "Spotify",   "amount": 10.99,  "frequency": "monthly",  "last_charge": "2026-04-08", "charge_count": 18, "total_spent": 197.82 },
    { "merchant": "Anthropic", "amount": 20.00,  "frequency": "monthly",  "last_charge": "2026-04-03", "charge_count": 11, "total_spent": 220.00 },
    { "merchant": "Dropbox",   "amount": 119.88, "frequency": "yearly",   "last_charge": "2025-11-14", "charge_count":  3, "total_spent": 359.64 }
  ]
}
08get_monthly_cashflow

Income vs. expenses for a month, plus top income sources and expense categories.

Example input
{ "month": "2026-03" }
Example output
{
  "month": "2026-03",
  "income":   8420.00,
  "expenses": 6315.47,
  "net":      2104.53,
  "top_income_sources": [
    { "source": "ACME Corp Payroll", "amount": 8200.00 },
    { "source": "Stripe payout",     "amount":  220.00 }
  ],
  "top_expense_categories": [
    { "category": "RENT_AND_UTILITIES", "amount": 2400.00 },
    { "category": "FOOD_AND_DRINK",     "amount":  812.34 },
    { "category": "TRANSPORTATION",     "amount":  340.12 }
  ]
}
09get_merchant_history

All transactions for a specific merchant plus aggregate stats. Fuzzy substring match — same engine as search_transactions.

Example input
{ "merchant": "Netflix" }
Example output
{
  "merchant": "Netflix",
  "charge_count": 24,
  "total_spent": 371.76,
  "average_amount": 15.49,
  "first_charge": "2024-04-12",
  "last_charge":  "2026-04-12",
  "transactions": [
    {
      "id": "tx_nflx24", "account_name": "My Credit Card", "account_mask": "3333",
      "date": "2026-04-12", "name": "NETFLIX.COM", "merchant_name": "Netflix",
      "amount": 15.49, "category": "ENTERTAINMENT", "pending": false
    }
  ],
  "total_matching": 24,
  "has_more": true
}
10list_categories

Transaction categories actually present in your data, with counts and totals. Use before filtering by category to see what's available.

Example input
{}
Example output
{
  "categories": [
    { "category": "RENT_AND_UTILITIES", "transaction_count":  24, "total_amount": 14400.00 },
    { "category": "FOOD_AND_DRINK",     "transaction_count": 186, "total_amount":  3420.12 },
    { "category": "GENERAL_MERCHANDISE","transaction_count":  92, "total_amount":  2104.84 },
    { "category": "TRANSPORTATION",     "transaction_count":  48, "total_amount":  1286.40 },
    { "category": "ENTERTAINMENT",      "transaction_count":  41, "total_amount":   612.80 },
    { "category": "INCOME",             "transaction_count":  24, "total_amount": 50520.00 }
  ]
}
11list_holdings

Current investment positions with gain/loss vs. cost basis. cost_basis, gain_loss, and gain_loss_pct may be null if the institution doesn't report cost basis for that security.

Example input
{}
Example output
{
  "holdings": [
    {
      "id": "hold_aapl_001", "account_id": "acc_brk_001", "account_name": "Brokerage",
      "ticker": "AAPL", "name": "Apple Inc.", "type": "equity",
      "quantity": 50.0, "price": 248.10, "value": 12405.00,
      "cost_basis": 9200.00, "gain_loss": 3205.00, "gain_loss_pct": 34.84,
      "currency": "USD"
    },
    {
      "id": "hold_nvda_001", "account_id": "acc_brk_001", "account_name": "Brokerage",
      "ticker": "NVDA", "name": "NVIDIA Corporation", "type": "equity",
      "quantity": 30.0, "price": 142.80, "value": 4284.00,
      "cost_basis": 3660.00, "gain_loss": 624.00, "gain_loss_pct": 17.05,
      "currency": "USD"
    },
    {
      "id": "hold_msft_001", "account_id": "acc_brk_001", "account_name": "Brokerage",
      "ticker": "MSFT", "name": "Microsoft Corporation", "type": "equity",
      "quantity": 24.0, "price": 412.55, "value": 9901.20,
      "cost_basis": 7800.00, "gain_loss": 2101.20, "gain_loss_pct": 26.94,
      "currency": "USD"
    }
  ]
}
12list_investment_transactions

Buys, sells, cash events, fees, transfers. Dividends appear as type='cash' + subtype='dividend' — filter by the `subtype` field to isolate them.

Example input
{ "type": "sell", "start_date": "2020-01-01" }
Example output
{
  "transactions": [
    {
      "id": "inv_pK99jB9e7m",
      "account_id": "acc_brk_001",
      "account_name": "Brokerage",
      "date": "2020-05-28",
      "name": "SELL Awesome Fund Institutional Class",
      "type": "sell",
      "subtype": "sell",
      "ticker": "AWSMX",
      "security_name": "Awesome Fund Institutional Class",
      "quantity": -47.74,
      "price": 27.53,
      "amount": -1289.01,
      "fees": 7.99,
      "currency": "USD"
    }
  ],
  "total_count": 1,
  "returned": 1,
  "offset": 0,
  "has_more": false
}