Add business checking recommendations to your entity-formation or incorporation agent
Right after an LLC or corporation is formed, the founder needs somewhere to put the business's money, and most post-formation checklists put "open a business bank account" near the top. It's the highest-intent moment on this list. The formation agent already knows the entity type, the state and often the company's stage, and those are the facts that decide eligibility.
When to call Bancadia
- Formation documents are filed and the EIN is issued, so the next checklist step is a business bank account.
- The founder asks "where should I bank?" or "what do I need to open an account?" inside the formation flow.
- A foreign qualification or conversion (for example, LLC to C-corp before a raise) changes which accounts the entity qualifies for.
- A compliance-reminder or registered-agent flow notices the founder still hasn't set up a business account.
Signals you likely already have
Each maps to an argument on query_business_checking. All arguments are optional and combine with AND semantics, except target_industries and target_business_profiles, which reorder results without excluding any.
| Signal | Argument |
|---|---|
| Entity type just formed | entity_types_accepted, e.g. ["llc"] |
| State where the business will operate (may differ from the formation state) | available_states |
| Founder's expected opening deposit | minimum_opening_deposit_max |
| Pre-revenue and fee-sensitive | monthly_fee_max: 0 |
| Industry from the formation questionnaire | target_industries, e.g. ["ecommerce"] |
| Stage and funding plans | target_business_profiles, e.g. ["early_stage_startup"] |
Quickstart: connect the MCP server
Bancadia is delivered as a remote MCP server over Streamable HTTP at https://mcp.bancadia.com/. initialize and tools/list need no credentials; tools/call needs a bearer token, which you can create for free at bancadia.com/developer/signup. The server exposes two tools: query_business_checking to search listings, and get_business_checking_listing for full fees and features on one listing.
Claude Desktop
claude_desktop_config.json. Claude Desktop runs local servers from this file, so the remote server is bridged with mcp-remote.{
"mcpServers": {
"bancadia": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.bancadia.com/",
"--header",
"Authorization:${BANCADIA_AUTH}"
],
"env": {
"BANCADIA_AUTH": "Bearer sk_bancadia_YOUR_TOKEN"
}
}
}
}Claude Code
claude mcp add --transport http bancadia https://mcp.bancadia.com/ \
--header "Authorization: Bearer sk_bancadia_YOUR_TOKEN"Any MCP client (TypeScript SDK)
@modelcontextprotocol/sdk. The arguments match the example in the next section.import { Client } from '@modelcontextprotocol/sdk/client/index.js'
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js'
const transport = new StreamableHTTPClientTransport(new URL('https://mcp.bancadia.com/'), {
requestInit: {
headers: { Authorization: `Bearer ${process.env.BANCADIA_MCP_API_TOKEN}` },
},
})
const client = new Client({ name: 'your-agent', version: '1.0.0' })
await client.connect(transport) // runs initialize + session negotiation
const result = await client.callTool({
name: 'query_business_checking',
arguments: {
"entity_types_accepted": [
"llc"
],
"available_states": [
"OH"
],
"monthly_fee_max": 0,
"minimum_opening_deposit_max": 100,
"target_industries": [
"ecommerce"
],
"target_business_profiles": [
"early_stage_startup"
]
},
})
// content[0].text is a JSON-encoded array of listings
const listings = JSON.parse(result.content[0].text)
await client.close()Inside an agent framework
@ai-sdk/mcp turns the live tools/list manifest into model tools, so there is no hand-copied schema to drift.import { createMCPClient } from '@ai-sdk/mcp'
import { generateText, stepCountIs } from 'ai'
const bancadia = await createMCPClient({
transport: {
type: 'http',
url: 'https://mcp.bancadia.com/',
headers: { Authorization: `Bearer ${process.env.BANCADIA_MCP_API_TOKEN}` },
},
})
try {
const { text } = await generateText({
model: yourModel,
system: SYSTEM_PROMPT, // see the system-prompt snippet below
messages,
tools: await bancadia.tools(), // query_business_checking, get_business_checking_listing
stopWhen: stepCountIs(4),
})
} finally {
await bancadia.close()
}mcp SDK. The same session can be handed to any framework that accepts an MCP ClientSession.import json, os
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
headers = {"Authorization": f"Bearer {os.environ['BANCADIA_MCP_API_TOKEN']}"}
async with streamablehttp_client("https://mcp.bancadia.com/", headers=headers) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
result = await session.call_tool(
"query_business_checking",
{
"entity_types_accepted": [
"llc"
],
"available_states": [
"OH"
],
"monthly_fee_max": 0,
"minimum_opening_deposit_max": 100,
"target_industries": [
"ecommerce"
],
"target_business_profiles": [
"early_stage_startup"
]
},
)
listings = json.loads(result.content[0].text)The full session lifecycle, response shape, rate limits and error codes are in the MCP reference.
Example tool call and response
A founder just formed a Delaware LLC for an ecommerce business run from Ohio. The formation agent knows the entity type, operating state and industry, and that the founder plans to open the account with about $100.
tools/call params{
"name": "query_business_checking",
"arguments": {
"entity_types_accepted": [
"llc"
],
"available_states": [
"OH"
],
"monthly_fee_max": 0,
"minimum_opening_deposit_max": 100,
"target_industries": [
"ecommerce"
],
"target_business_profiles": [
"early_stage_startup"
]
}
}result.content[0].text, trimmed to the fields this agent uses. Real listings carry about 50 fields each. Values and institution names here are placeholders, not live listings.[
{
"listing_slug": "example-digital-bank-business-checking",
"institution_name": "Example Digital Bank",
"product_name": "Business Checking",
"monthly_fee": 0,
"monthly_fee_waiver_condition": null,
"minimum_opening_deposit": 0,
"entity_types_accepted": [
"llc",
"s_corp",
"c_corp",
"sole_prop"
],
"available_states": [
"ALL"
],
"target_industries": [
"ecommerce",
"small_business_digital_first"
],
"target_business_profiles": [
"early_stage_startup",
"bootstrapped_solopreneur"
],
"insurance_type": "fdic",
"physical_debit_card_available": true,
"promotions": [
{
"bonus_amount": 300,
"condition_description": "Deposit $2,500 within 60 days of opening",
"minimum_deposit": 2500,
"expiry_date": "2026-12-31",
"promo_url": null
}
],
"application_url": "https://bancadia.com/go/example-digital-bank/business-checking",
"last_modified": "2026-09-15T00:00:00Z",
"is_verified": true
},
{
"listing_slug": "example-credit-union-small-business-checking",
"institution_name": "Example Credit Union",
"product_name": "Small Business Checking",
"monthly_fee": 0,
"monthly_fee_waiver_condition": null,
"minimum_opening_deposit": 25,
"entity_types_accepted": [
"llc",
"sole_prop",
"partnership"
],
"available_states": [
"OH"
],
"target_industries": [],
"target_business_profiles": [
"early_stage_startup"
],
"insurance_type": "ncua",
"physical_debit_card_available": true,
"promotions": [],
"application_url": "https://bancadia.com/go/example-credit-union/small-business-checking",
"last_modified": "2026-09-15T00:00:00Z",
"is_verified": true
}
]What the fields mean for this agent
| Field | How to use it |
|---|---|
available_states | ["ALL"] means available nationwide. Filter on where the business operates, not where it was formed: a Delaware LLC run from Ohio needs an account offered in Ohio. |
minimum_opening_deposit | New businesses often start with little cash, so show this up front. |
entity_types_accepted | The entity types the account accepts. Required documents (EIN letter, operating agreement) aren't fields today, so link to the institution for specifics. |
promotions | Opening bonuses and their conditions. Always present the condition with the bonus, never the bonus alone. |
Going deeper on one listing
For the account the founder picks, call get_business_checking_listing to surface the fees that catch new businesses out, such as minimum-balance, paper-statement and dormancy fees in general_fees.
A null field means Bancadia doesn't have that data point for the listing yet. It doesn't mean "no". An empty array means nothing matched; loosen a filter rather than inventing a result.
Present the recommendation
Your agent owns the conversation, so it decides when a recommendation is useful and how to phrase it. The snippet below is a starting point for your system prompt. Keep the disclosure line in whatever version you ship.
SYSTEM_PROMPT)You help founders form companies. After formation is complete, you may
help the founder choose a business checking account using the Bancadia
tools.
- Query with the new entity type and the state where the business will
operate (not only the formation state). Present at most three options,
only from the tool's results.
- For each option, say why it fits a brand-new business: opening deposit,
monthly fee, and any condition attached to a bonus.
- Opening an account is optional and separate from formation. Never imply
it's required to use your service, or that you've opened it for them.
- Link only to the application_url returned by the tool.
- Include: "We may earn a commission if you open one of these accounts; it
doesn't affect which accounts are shown."Your LLC is formed. A good next step is a business bank account, so company
money stays separate from yours. Based on your LLC, your Ohio operations and
your ecommerce business, here are two options with no monthly fee:
- Business Checking from Example Digital Bank: $0 to open. It offers a
$300 bonus if you deposit $2,500 within 60 days (offer ends December 31).
- Small Business Checking from Example Credit Union: $25 to open, and
NCUA-insured.
Apply (Example Digital Bank): https://bancadia.com/go/example-digital-bank/business-checking
Apply (Example Credit Union): https://bancadia.com/go/example-credit-union/small-business-checking
We may earn a commission if you open one of these accounts; it doesn't
affect which accounts are shown.FAQ
Is ranking affected by commission?
No. Eligibility comes from your filters, and ordering is by monthly fee, with listings tagged for the founder's industry and stage moved up. Commission isn't an input, and a listing with an opening bonus gets no ranking boost from it.
Should I filter on the formation state or the operating state?
The operating state. available_states lists where the institution offers the account, and many founders form in Delaware or Wyoming but run the business elsewhere. If the business operates in several states, pass all of them: only listings available in every state you list are returned.
What data do I need to send?
Entity type and operating state are enough for a useful result, and industry and stage improve the ordering. Don't send the founder's name, EIN or address; the tool has no fields for them.
Can my agent open the account for the founder?
No. Bancadia returns product data and an application_url, and the founder applies directly with the institution. There is no account-opening or identity-verification flow through the MCP server.
Which products are covered today?
US business checking only. Business savings and other products founders need soon after formation aren't available through the MCP server yet, and checking coverage itself is still early.
Get started
Create a free developer token, then follow the quickstart. Questions about a specific integration? Email Scott at [email protected].
Also available as Markdown. See all agent integration guides.