mcpField
B
Bancadia MCP

Bancadia MCP

Remote
github.com/BancadiaFinance0Updated 2w ago
Repository

About Bancadia MCP

Bancadia MCP is a server for searching Bancadia’s registry of US business checking account products with structured filters. It serves MCP clients that need to compare listings by details such as fees, entity types, states, payment rails, integrations, and APY.

Key features

  1. 01Filter business checking listings
  2. 02Retrieve full listing details
  3. 03Compare fees and plan tiers
  4. 04Filter by product features and APY
  5. 05Attribution-tagged application links

Use cases

  1. 01Find checking accounts matching business requirements
  2. 02Review fees and features for a specific listing
  3. 03Pass attributed application links to downstream clients

MCP support

Exposes listing-search and listing-detail tools to MCP clients over JSON-RPC 2.0 using Streamable HTTP. Tool calls require a session and bearer token, with per-token rate limiting.

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://mcp.bancadia.com/
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

All endpoints
Streamable HTTPhttps://mcp.bancadia.com/Auth required

Tools

2
ParameterTypeRequiredDescription
apy_minnumberNoOnly return accounts whose best available rate (apy_max) is at least this value, as a decimal (e.g. 0.02 = 2%). This is the best rate the account can pay, not what a typical customer gets — many accounts pay less by default. Check apy_default in the results for the standard rate.
rtp_networkenumNoWhich real-time payment rail is supportedfednow | rtp_network | both | none
rtp_supportedbooleanNoWhether real-time payments (any rail) are supported at all
insurance_typeenumNoDeposit insurance typefdic | ncua | uninsured
monthly_fee_maxnumberNoMaximum monthly fee
available_statesarrayNoReturns listings available in all specified states
interest_bearingbooleanNoWhether the account earns interest
target_industriesarrayNoSoft-ranks results toward listings built for these business types. Does not exclude non-matching but otherwise-eligible listings.
entity_types_acceptedarrayNoReturns listings accepting all specified entity types (e.g. llc, s_corp)
free_transactions_minnumberNoMinimum free transactions per month
cash_deposit_availablebooleanNoWhether cash deposits are supported
sub_accounts_supportedbooleanNoWhether sub-accounts are supported
target_business_profilesarrayNoSoft-ranks results toward listings built for this business stage/shape. Does not exclude non-matching but otherwise-eligible listings.
tax_integration_availablebooleanNoWhether the account connects to any tax-prep or tax-filing software/service
minimum_opening_deposit_maxnumberNoMaximum minimum opening deposit
expense_integration_availablebooleanNoWhether the account connects to any expense/spend-management software
accounting_integration_availablebooleanNoWhether the account connects to any accounting software (e.g. QuickBooks, Xero)

Details

From the project README

Bancadia MCP

A Model Context Protocol server that lets MCP clients (Claude, other LLM agents, etc.) query Bancadia's registry of business deposit account products (US only) — with structured filters.

Runs as a Cloudflare Worker on Hono, exposing MCP over JSON-RPC 2.0 (Streamable HTTP transport), backed by Supabase (Postgres) with an Upstash Redis caching/rate-limiting layer.

Endpoints

MethodPathPurposeAuth
GET/healthLiveness checknone
GET/.well-known/mcpPublic discovery/manifest (server info + tool list)none
POST/JSON-RPC 2.0 endpoint — initialize, tools/list, tools/callsession; tools/call also needs a bearer token
GET/Standalone SSE stream (server-initiated messages, keep-alive)session
DELETE/Terminate a sessionsession
MCP session lifecycle
  1. POST / with method: "initialize" — no auth required. Returns an Mcp-Session-Id response header; every subsequent request must send that value back as the Mcp-Session-Id request header.
  2. POST / with method: "tools/list" — session required, no bearer token needed. Returns the tool manifest.
  3. POST / with method: "tools/call" — session and Authorization: Bearer <token> required. Per-token sliding-window rate limiting applies (X-RateLimit-* response headers on both success and 429).

Responses are plain JSON by default, or Server-Sent Events if the request's Accept header includes text/event-stream.

For production use, obtain a bearer token from the Bancadia developer portal — see bancadia.com/docs for full API documentation.

Available tools

ToolPurpose
query_business_checkingFilter business checking listings (fees, entity types, states, RTP rails, integrations, APY, etc.)
get_business_checking_listingFull detail on one listing by listing_slug — fees and features, including per-plan-tier breakdowns

See src/lib/tools.ts for the full JSON Schema of each tool's arguments, or query GET /.well-known/mcp / tools/list directly.

application_url attribution tags

Every application_url returned by tools/call is an absolute https://bancadia.com/go/... link with attribution params appended: src=mcp and qr=<request_id>, where request_id is a UUID generated once per tools/call and also written to every query_match_events row for that call (so a /go click can be joined back to the tool call that surfaced it). Params already present on the stored URL are never overwritten. qr is added for every tool; a tool that records no query_match_events rows (or returns no listings) has nothing for it to join to. Host-prefixing and tagging both happen in one layer, applyApplicationUrlHost in src/lib/urls.ts, applied in src/index.ts.

Clients and agents should pass application_url through unmodified, including its query string. Stripping the params loses attribution for that click.

Getting started

npm install
cp .dev.vars.example .dev.vars   # fill in Supabase + Upstash credentials
npm run dev                      # wrangler dev — local server

wrangler.toml [vars] provides non-secret defaults (test Supabase/Upstash URLs, session TTL, allowed origins) shared by both npm run dev and the test suite; real secrets go in .dev.vars (git-ignored).

Commands

npm run dev               # wrangler dev — local server
npm test                  # vitest run (runs inside workerd via @cloudflare/vitest-pool-workers)
npm run lint              # tsc --noEmit
npm run deploy:staging    # wrangler deploy --env staging
npm run deploy:production # wrangler deploy --env production

Run a single test file:

npx vitest run src/__tests__/query-business-checking.test.ts

Environments

  • staging — bancadia-mcp-staging, workers.dev enabled. Deployed automatically by CI on every push/PR to main.
  • production — bancadia-mcp-production, routed at mcp.bancadia.com/*. Deployed manually via npm run deploy:production.

Secrets for each environment are set with wrangler secret put <KEY> --env <environment> and are never committed.

Architecture

See CLAUDE.md for a detailed guide to the codebase: request flow, auth/session/rate-limit design, and the Supabase hybrid schema (base tables + per-product-type details tables) that the query handlers are built around.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.