---
title: "BankBridge for developers: live bank data for your finance agent"
description: "Give every user of your AI agent read-only access to their own bank accounts through one remote MCP endpoint, with OAuth 2.1, Dynamic Client Registration, and PKCE. No bank-data developer account needed."
url: "https://bankbridge.money/for-developers"
---
For developers

# Live bank data for your finance agent.

Building an agent that answers questions about money? Point it at one remote MCP endpoint. Each of your users signs in with OAuth and connects their own banks. You skip the bank-data developer account and its approval process, the token storage, and the per-bank plumbing.

[Email hello@greatwork.company](mailto:hello@greatwork.company?subject=BankBridge%20for%20developers)[Raw API docs](https://bankbridge.money/docs/api)

## How it works

1.  1.
    
    ### Register your client
    
    Your app registers itself with Dynamic Client Registration (RFC 7591) at /oauth/register. Public clients (no secret, PKCE only) and confidential clients (client\_secret\_post) both work. Most MCP client libraries do this for you from the discovery metadata.
    
2.  2.
    
    ### Each user signs in and links their banks
    
    Send the user through the OAuth 2.1 authorization-code flow with PKCE (S256) at /oauth/authorize. They sign in to BankBridge, connect their own banks, and approve your app. You never handle bank credentials.
    
3.  3.
    
    ### Call the MCP endpoint with that user's token
    
    The token endpoint returns a bearer token scoped to that one user (scope mcp:tools) plus a refresh token that rotates on every use and lasts 90 days. Every tool call your agent makes with it reads only that user's banks.
    

## What your agent gets

12 tools, the same set every BankBridge user gets. 11 read data; the 12th returns a link the user opens to add another bank. All of them are read-only against the bank: nothing can move money.

-   `list_accounts`: Balances and types for every connected account.
-   `get_account`: Detail lookup for one account by id.
-   `list_transactions`: Transactions filtered by date, amount, category or account (paginated).
-   `search_transactions`: Substring search over transaction name and merchant.
-   `get_spending_summary`: Spending grouped by category, merchant, month or week.
-   `get_recurring_charges`: Detected subscriptions, bills and other recurring charges.
-   `get_monthly_cashflow`: Income vs expenses for a month plus top sources and categories.
-   `get_merchant_history`: Every charge from one merchant plus totals and cadence.
-   `list_categories`: Spending categories present in the user's data.
-   `list_holdings`: Current investment positions with cost basis and gain/loss.
-   `list_investment_transactions`: Buys, sells, dividends, fees and transfers.
-   `connect_bank`: Returns a URL the user opens once to link another bank.

Every call fetches live from the user’s banks. Amounts come back in dollars. If one bank fails while others succeed, the result still returns with a `warnings` array and a reconnect link, so your agent can tell the user what to fix. The server also ships 19 MCP prompts (monthly report, subscriptions audit, budget draft, and more).

## Compared with wiring a bank-data API yourself

You can build this. You’d need a bank-data developer account approved for production, an OAuth server your users trust, the tools themselves, and cleanup that stops per-connection billing when a user leaves. Then you’d keep it working across every agent client your users bring.

BankBridge

Build it yourself

Bank-data developer account and production approval

Not needed

You apply and wait

OAuth 2.1 + Dynamic Client Registration + PKCE

Built in

You implement the spec

12 tools (search, spending, cashflow, recurring, holdings...)

Built in

You design and maintain them

Live fetch, no stored transactions

Yes

Your choice, your liability

Partial failures and reconnect links

Warnings array per call

You build it

Connection cleanup when a user cancels

Built in, with an audit log

You build it, or keep paying for dead connections

Setup guides for 29 agent hosts

Yes

You write them

Cost

$5 per bank per month, paid by each user

Provider fees, hosting, and your time

## Try it without an account

The demo key `bbk_demo` returns consistent sample data for a made-up person, so you can wire up your client before anyone signs up.

shell

```
curl -s https://bankbridge.money/api/mcp \
  -H "Authorization: Bearer bbk_demo" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_accounts","arguments":{}}}'
```

## Endpoints

MCP (Streamable HTTP)

`https://bankbridge.money/api/mcp`

Authorization server metadata

`https://bankbridge.money/.well-known/oauth-authorization-server`

Protected resource metadata

`https://bankbridge.money/.well-known/oauth-protected-resource`

Client registration

`https://bankbridge.money/oauth/register`

Authorize

`https://bankbridge.money/oauth/authorize`

Token

`https://bankbridge.money/oauth/token`

Revoke (RFC 7009)

`https://bankbridge.money/oauth/revoke`

MCP server card

`https://bankbridge.money/.well-known/mcp/server-card.json`

## Pricing and privacy

Each user has their own BankBridge subscription: $5 per month per connected bank, or $50 per year. BankBridge stores no balances, transactions, or holdings, and neither do you unless you choose to. Details on the [security page](https://bankbridge.money/security).

Building something with many users, or need a setup that isn’t covered here? Email [hello@greatwork.company](mailto:hello@greatwork.company?subject=BankBridge%20for%20developers) with what you’re building.
