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.

What you can ask

Talk to your money in plain English.

Questions you'd normally ask an accountant — answered instantly by your agent, against your actual numbers.

Spending
You

How much did I spend on restaurants last month?

Your agent

You spent $812.34 on restaurants in March across 44 transactions. That's up $180 from February. Biggest single hit: $112.50 at Kona Grill on the 22nd.

Subscriptions
You

List every subscription I'm paying for.

Your agent

I found 9 recurring charges adding up to $187/mo: Netflix ($15.49), Spotify ($10.99), Notion ($10), Anthropic ($20), Dropbox ($119.88/yr), Figma ($15), 1Password ($3), iCloud+ ($2.99), NYT ($17). Want me to flag any you haven't used lately?

Cashflow
You

Am I making more than I spend?

Your agent

Yes. In March you made $8,420 and spent $6,315 +$2,105 net. Over the last 6 months your average savings rate is 23%.

Investments
You

How are my holdings doing?

Your agent

Portfolio is at $26,590, up +$5,930 (+28.7%) vs. cost basis. Biggest gainer: AAPL +34.8%. Biggest drag: NVDA only +17% — you bought in late.

Numbers shown are illustrative. Your agent reads your actual accounts.

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 installers for Claude and ChatGPT. Standard HTTP MCP for everything else — 20+ integrations and counting.

What your agent can do

Ask anything about your money.

Eleven 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 11 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 & privacy

Your transactions live in Plaid. We never store them.

No mainstream competitor can say that. Most cache your financial history server-side for speed. We fetch live on every question.

We don't keep your data

Every question your agent asks live-fetches from Plaid in real time. We store only the single access token needed to call Plaid on your behalf. No transaction cache. No query log.

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

Cancel or delete your account anytime — your access token is revoked with Plaid and deleted from our servers within seconds.

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_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 }
  ]
}
06get_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 }
  ]
}
07get_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 }
  ]
}
08get_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
}
09list_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 }
  ]
}
10list_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"
    }
  ]
}
11list_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
}