FDIC Bank Diligence MCP Server
Pricing
from $50.00 / 1,000 tool calls
FDIC Bank Diligence MCP Server
Answer questions about US banks from the FDIC's public data: institution details, structural history, current status, closures and failures - for vetting a bank counterparty.
Pricing
from $50.00 / 1,000 tool calls
Rating
0.0
(0)
Developer
NexGen Watch
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
2 days ago
Last modified
Share
🧰 FDIC Bank Diligence MCP Server
Answer questions about US banks from the FDIC's public BankFind data — institution details, structural history, current status, closures and failures — live, for vetting a bank counterparty.
This is a standby MCP server: it stays warm on Apify and answers tool calls from any MCP client (Claude Desktop, Cursor, an agent framework) at https://nexgenwatch--fdic-bank-diligence-mcp.apify.actor/mcp. Billing is pay-per-event: $0.05 when the server starts, then $0.05 per tool call (mcp-tool-call). Source: banks.data.fdic.gov.
No login, no source API key and no CAPTCHA solving are involved: the source is read logged-out.
📊 Sample Output
A standby server answers tool calls rather than writing a dataset, so the sample is the server's own live health answer (GET https://nexgenwatch--fdic-bank-diligence-mcp.apify.actor/, HTTP 200, read on 2026-09-17) followed by its tool table:
{"server": "fdic-bank-diligence","billing_gate": true,"declared_events": ["apify-actor-start","mcp-tool-call"],"scope": "FDIC-insured US institutions, from the FDIC's public BankFind data. Institutions, their structural history and the failed-bank register. Credit unions (NCUA), uninsured entities, non-US banks and any supervisory rating are outside it.","rate_limit_per_sec": 1.0,"rate_waits": 0,"ready": true}
| Tool | Arguments | What it returns |
|---|---|---|
find_bank | name: str, active_only: bool = True, limit: int = 20 | Find FDIC-insured institutions by name. Returns each with its FDIC certificate number, which is the identity you use everywhere else here. |
get_bank | cert: int | Everything the FDIC publishes about one institution: status, charter class and what it means, primary federal regulator, established and insured dates, offices, total assets and deposits — plus its failure record if it h |
get_bank_history | cert: int, limit: int = 25 | The institution's structural history, newest first: name changes, mergers, acquisitions, relocations, branch events — each with its effective date. |
list_recent_failures | limit: int = 20 | Failed FDIC-insured institutions, newest first, with resolution type and the estimated cost to the insurance fund. |
list_recent_closures | limit: int = 20 | Institutions that have ceased to exist as separate FDIC-insured entities, newest first. A closure is usually a merger, not a failure — use list_recent_failures for failures. |
explain_limits | `` | What this server can and cannot tell you, and the four measured traps in the source. Read this before acting on any answer above. |
✅ What you get
6 tools, each returning a JSON object built only from what the source answered, with a scope and note field stating what the source does and does not cover. A lookup the source answers with 'not found' is a sourced answer (charged); malformed input or a source failure returns a notice that is NOT charged; nothing is ever fabricated.
Four things this server gets right that a naive read gets wrong
Every one measured live against the source on 2026-07-30.
1. The source states its own rate limit, and it is one request per second
Every FDIC response carries x-ratelimit-limit: 1. During the pre-gate a burst of queries
earned a real HTTP 429. This server paces at 1 request/second — five times slower
than the other JSON servers in this family, because the source says so — and treats a 429
as a temporary failure that charges nothing.
A 429 is never an answer. "No such bank" is HTTP 200 with a total of 0, and that is different.
2. 12/31/9999 is a sentinel meaning "no end date", and it poisons a naive sort
Ask for the most recently closed institutions the obvious way — inactive, sorted by end date, descending — and the FDIC returns:
12/31/9999 Wells Fargo Trust Company, National Association12/31/9999 Fiduciary Trust Company International12/31/9999 Fidelity Management Trust Company
Three institutions that never closed, sitting at the top of a list of closures. 26 of the 23,581 inactive records carry the sentinel. Exclude it and the answer is right:
2026-07-17 Small Business Bank2026-07-10 Kentland Federal Savings and Loan Association2026-07-01 Zapata National Bank
This server excludes the sentinel at the query and converts it to null at the
parser, so it cannot reach a sort, a comparison, or your screen as a real date.
3. Three date formats in one API
institutions ESTYMD / INSDATE / ENDEFYMD "01/01/1870" MM/DD/YYYYhistory EFFDATE "1910-01-20T00:00:00" ISO with a Tfailures FAILDATE "5/1/2026" M/D/YYYY, unpadded
All three go through one parser that returns ISO or null, and never guesses.
4. An unknown field name is silently dropped — no error
Measured: fields=NAME,NOT_A_REAL_FIELD returns HTTP 200 and a row containing only NAME.
A typo does not fail; it quietly returns an answer with a hole in it. So field lists here
are fixed constants and the caller cannot choose them.
Tools
| tool | what it answers |
|---|---|
find_bank | Institutions matching a name, each with its FDIC certificate number |
get_bank | Everything published about one institution — status, charter class, regulator, dates, assets, deposits, plus its failure record if it has one |
get_bank_history | Structural history newest first: name changes, mergers, acquisitions, relocations |
list_recent_failures | Failed institutions, with resolution type and estimated cost to the insurance fund |
list_recent_closures | Institutions that ceased to exist — usually a merger, not a failure |
explain_limits | What this server will and will not say, and the four traps above. Read before acting. |
The FDIC certificate number is the identity. Names repeat, change and merge; the cert does not.
Scope
FDIC-insured US institutions only. Credit unions (NCUA-insured), uninsured entities, non-US banks other than insured US branches, and any supervisory or CAMELS rating are outside it — supervisory ratings are not public data.
All money figures are in thousands of US dollars, as the FDIC publishes them. A total
of 1,852,239,000 means $1.852 trillion.
banks.data.fdic.gov/robots.txt is 404 — no rules on the API host — but the API states its
own limit and this server obeys it.
This server reports what the FDIC publishes. It does not rate a bank, does not assess creditworthiness, and does not say a counterparty is safe.
⚙️ Sample inputs
1. Connect an MCP client (Claude Desktop / Cursor style config; your Apify API token goes in the header):
{"mcpServers": {"fdic-bank-diligence-mcp": {"url": "https://nexgenwatch--fdic-bank-diligence-mcp.apify.actor/mcp","headers": {"Authorization": "Bearer <YOUR_APIFY_TOKEN>"}}}}
2. One tool call over JSON-RPC (what the client sends to /mcp; each call is one mcp-tool-call event):
{"jsonrpc": "2.0","id": 1,"method": "tools/call","params": {"name": "find_bank","arguments": {"name": "<name>","active_only": "True","limit": 20}}}
3. Health check from a shell (free — no tool call is charged):
$curl -H "Authorization: Bearer $APIFY_TOKEN" https://nexgenwatch--fdic-bank-diligence-mcp.apify.actor/
🧾 JSON sample record
The live health record above is the server's own answer; a tool result carries the fields listed in the tool table plus scope and note.
🔧 How it works
Source. banks.data.fdic.gov — endpoints: https://banks.data.fdic.gov/api. Public, logged-out reads only.
Standby. Apify keeps one server process warm; each MCP session is served by that process and idle servers are stopped by the platform. Nothing is cached between calls except what the source itself caches.
Charging. Every tool call charges one mcp-tool-call at $0.05 through Apify's pay-per-event billing before the answer is returned; the declared events are asserted against the live pricing at startup (billing_gate in the health answer).
What is not done. No login, no CAPTCHA bypass, no private data, no scraping of pages the source does not publish to any visitor.
💰 Pricing example
| Event | Free | Bronze | Silver | Gold |
|---|---|---|---|---|
Actor Start (apify-actor-start) | $0.05 | $0.05 | $0.05 | $0.05 |
Tool call (mcp-tool-call) | $0.05 | $0.05 | $0.05 | $0.05 |
- 10 tool calls in one session: $0.05 start + 10 × $0.05 = $0.55
- 100 tool calls in one session: $0.05 start + 100 × $0.05 = $5.05
- 1000 tool calls in one session: $0.05 start + 1000 × $0.05 = $50.05
A health check or a connection that makes no tool call charges only the $0.05 start fee. A sourced 'not found' answer is a completed tool call and is charged; a notice for malformed input or a source failure is not charged (settle() charges only chargeable outcomes).
⚖️ Legal & ToS
The server reads public data published by banks.data.fdic.gov to any visitor, identifies itself, and does not access accounts or private data. Use the answers in line with the source's terms and your local law; the intended use is B2B research and agent tooling.
❓ FAQ
Q: Do I need a source API key?
A: No. banks.data.fdic.gov is read logged-out. You need only your Apify API token to connect to the server.
Q: Which MCP clients work?
A: Any client that speaks the MCP HTTP transport: Claude Desktop, Cursor, Windsurf, LangChain/LlamaIndex MCP adapters and Apify's own MCP client. Point it at the /mcp URL above.
Q: What happens when the source has no answer?
A: A sourced 'not found' (for example a 404 for an unknown identifier) comes back as an answer with scope and note explaining what was checked (where the server carries those fields), and is charged as a completed call; malformed input or a source outage returns a notice that is not charged. Nothing is invented.
Q: How is a call billed?
A: One mcp-tool-call event per tool call at $0.05, plus $0.05 when the server starts. Idle time is not billed to you.
Q: Is it rate limited?
A: The server paces requests to the source (RATE_PER_SEC=1.0) and answers calls in the order they arrive.
Q: Can I call it without an MCP client?
A: Yes — the /mcp endpoint is plain JSON-RPC over HTTP (sample input 2), and GET / is a free health check.
🆘 Troubleshooting
- 401 / 403 from the server → the Authorization header is missing or the token is wrong → use
Bearer <your Apify API token>. - 400
Missing session ID→ the client hit/mcpwithout initialising an MCP session → let the MCP client connect (it performs the handshake); raw JSON-RPC needs the session header the initialise call returns. - Tool returns a notice instead of data → the input was malformed or empty, or the source failed → the call was not charged; check the
note/reasonfield, fix the input and call again. - First call is slow → the standby server was cold and Apify started it → later calls in the same session are fast.
🔗 Related Actors
- Crossref Citation MCP Server — An MCP server over the official Crossref REST API (api.crossref.org) — scholarly work
- EPO Publication Evidence MCP Server — Retrieve official European patent publications by number or publication day from the EPO publication server, with the INID-coded front page parsed in…
- Eurostat Labor Stats MCP Server — An MCP server over the official Eurostat dissemination API (ec.europa.eu/eurostat) — EU
- Federal Award Counterparty MCP Server — Answer questions about US federal award recipients from USAspending.gov: who won awards from an agency, one organisation's award history, and who tha…
- Federal Rule Impact MCP Server — Answer 'what regulations changed for this industry' from the US Federal Register: search and retrieve rules, proposed rules and notices by CFR title,…
- Grants Qualification MCP Server — Report what a US federal grant agency actually states about who may apply, and screen an applicant type against it. Three outcomes, and 'qualified' i…
- 🏢 About NexGenData — NexGen Watch is NexGenData's fleet of 256 public monitoring and lookup actors built on official sources, pay-per-result. Browse the catalog at apify.com/nexgenwatch.
⭐ Found this useful?
If this server answered a question your agent could not, a quick review on the Apify Store helps other teams find it. Feature request or a source that changed? Open it from the Issues tab — every one is read.
