fdic-banks-mcp-server
Server Details
Search FDIC-insured banks, Call Report financials, peer rankings, failures, deposit market share.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- cyanheads/fdic-banks-mcp-server
- GitHub Stars
- 1
- Server Listing
- @cyanheads/fdic-banks-mcp-server
TDQS
Score is being calculated.
Available Tools
9 toolsfdic_compare_peersCompare an institution with its peersRead-onlyIdempotentInspect
Compare one institution with a peer group for one quarter: for each metric, the institution's value next to the peer median, quartiles, minimum and maximum, and its percentile and rank. The default peer group is every institution in the same asset-size band that reported that quarter; narrow it to one state, widen it to all sizes, or name the peers by CERT. Dollar amounts are in thousands; ratios are percentages.
| Name | Required | Description | Default |
|---|---|---|---|
| cert | Yes | FDIC certificate number of the institution to compare, from fdic_search_institutions. | |
| metrics | No | Up to 20 metric names (fdic_list_reference topic metrics). Omit for the default health set. | |
| peer_certs | No | An explicit peer list of up to 200 CERTs, in place of the band and state peer group — pass it without peer_asset_band and peer_state. Fewer than five peers still computes, with a notice. | |
| peer_state | No | Limit peers to one headquarters state: a two-letter code, a full state name, or same for the institution's own state. Omit for nationwide. Not combinable with peer_certs. | |
| report_date | No | Quarter to compare: a quarter-end date (2026-06-30), the same without dashes (20260630), or a quarter label (2026Q2). Omit for the latest quarter FDIC has published. | |
| peer_asset_band | No | Peer size band by total assets: same (the band holding the institution's own assets, default), any (all sizes), under_100m, 100m_1b, 1b_10b, 10b_250b, or over_250b; fdic_list_reference topic peer_asset_bands gives each band's bounds. Not combinable with peer_certs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| notice | No | Guidance when the peer group is empty or a metric has fewer than five peer values. |
| data_as_of | No | When FDIC last rebuilt the financials index (ISO timestamp). |
| peer_group | No | How the peer group was built. |
| comparisons | No | Per-metric comparison, in metric order. |
| institution | No | The institution being compared. |
| report_date | No | Quarter-end date compared (YYYY-MM-DD). |
| peer_certs_missing | No | Explicit peer CERTs that filed no Call Report for the quarter. |
| report_date_defaulted | No | True when report_date was omitted and the latest published quarter was used. |
fdic_dataframe_describeDescribe staged dataframesRead-onlyIdempotentInspect
Describe the df_ dataframes that fdic_query_financials and fdic_get_deposits staged when a result exceeded its inline preview, plus any that fdic_dataframe_query saved with register_as. Pass name (from a dataset field) for one dataframe in full: source tool, the parameters it was called with, row count, creation and expiry time, column schema, and the unit and basis of each amount, ratio, or count column (thousands of dollars, percent, or count). Read a table's columns this way before writing SQL for fdic_dataframe_query. Omit name to list the live dataframes, newest first, 50 per page, as name, source tool, row count, and expiry only. A deployment that serves HTTP without authentication, where every caller shares one canvas, does not list; there, pass the name a dataset field returned.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | A dataframe name (df_XXXXX_XXXXX, from a dataset field) for its provenance, columns, and units; omit to list the live dataframes where this deployment allows it. | |
| offset | No | Listed dataframes to skip; pass next_offset from the previous page. Ignored when name is set. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | Dataframes per page of the listing. |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Dataframes listed on this page. |
| total | No | Live dataframes across all pages of the listing; with name, 1 or 0. |
| notice | No | Guidance when nothing matched, the page is past the end, the page starts past the first dataframe, or more pages remain. |
| truncated | No | True when more dataframes remain beyond this page. |
| dataframes | No | The named dataframe in full, or one page of the live dataframes as summary rows, newest first; empty when none matched. |
| next_offset | No | Offset of the next page of the listing; present when more dataframes remain. |
fdic_dataframe_queryQuery staged dataframes with SQLRead-onlyIdempotentInspect
Run one read-only SELECT (DuckDB SQL) across the df_ dataframes that fdic_query_financials and fdic_get_deposits staged or an earlier register_as saved; joins, aggregates, window functions, and CTEs work. Before writing SQL, pass each table name to fdic_dataframe_describe to read its columns. DOUBLE columns come back as JSON numbers and dollar columns are thousands of US dollars; BIGINT results such as COUNT(*) come back as strings, so CAST them to INTEGER or DOUBLE for arithmetic. Writes, DDL, file-reading functions, and system catalogs are rejected. register_as materializes the result as a new dataframe with a fresh TTL.
| Name | Required | Description | Default |
|---|---|---|---|
| sql | Yes | One SELECT against df_<id> tables named in a dataset field or by fdic_dataframe_describe, up to 20,000 characters. | |
| preview | No | Rows to return inline (0–10,000); defaults to row_limit, and a value above row_limit is treated as row_limit. Set it low when register_as keeps the full result. | |
| row_limit | No | Hard cap on rows materialized (1–10,000). A query matching more stops here and row_count_capped comes back true; use register_as to keep the whole result. | |
| register_as | No | Materialize the full result as a new dataframe under this unused name (df_XXXXX_XXXXX: uppercase letters and digits). A name already staged fails as register_as_clash — including on a repeat of a call that already saved it. The live dataframes share a 1,000,000-row budget: the oldest are dropped to make room, and a result over the budget on its own fails as register_as_too_large. Omit to return rows only. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The cap that bound: preview when lower, else row_limit. |
| rows | No | Result rows, bounded by preview and row_limit. |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Rows returned inline. |
| notice | No | Guidance when the query returned no rows or a cap withheld some. |
| columns | No | Columns in projection order. |
| row_count | No | Rows the query produced, up to row_limit; with register_as, the exact count of the new dataframe. |
| truncated | No | True when rows were withheld by preview or row_limit. |
| expires_at | No | When the register_as dataframe is dropped (ISO 8601). |
| registered_as | No | Name of the dataframe register_as created. |
| row_count_capped | No | True when the query matched more rows than row_limit, so row_count is that cap. |
fdic_get_depositsGet Summary of Deposits branches and market shareRead-onlyIdempotentInspect
Get Summary of Deposits data (branch-level domestic deposits, annual as of June 30, 1994 onward). With cert only: the institution's branches and its deposit market share in each state where it has offices. With a geography (state, county, city, ZIP, or MSA code): every institution in that market ranked by deposits, with market share and the Herfindahl-Hirschman index. With both: the institution's branches in that market and its rank and share there. Defaults to the latest survey year. Dollar amounts are in thousands.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | Five-digit branch ZIP code; leading zeros kept (02110). | |
| cert | No | FDIC certificate number, from fdic_search_institutions. Alone: its branches and per-state share. With a geography: its position in that market. | |
| city | No | Branch city as FDIC spells it (Seattle, St. Louis), up to 50 characters; matched exactly as given or in title case, with a hyphen, apostrophe, or space between words also tried the other ways FDIC records it (Winston-Salem finds Winston Salem); requires state. | |
| year | No | Survey year (deposits as of June 30), 1994 on. Omit for the latest survey. | |
| limit | No | Branches or ranked institutions returned inline (1–200). A larger set is also staged whole as a dataframe when this deployment stages dataframes. | |
| state | No | Branch state: two-letter code in any case or full name. | |
| county | No | County as FDIC spells it (King, not King County — a trailing " County" is stripped), up to 50 characters; matched exactly as given or in title case, with a hyphen, apostrophe, or space between words also tried the other ways FDIC records it; requires state. | |
| msa_code | No | Five-digit CBSA (metropolitan area) code, 10180–49740; branch rows from a state-level call carry msa_code values to reuse. Non-metropolitan branches have no code. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The limit applied to the preview. |
| mode | No | institution (cert only), market (geography only), or institution_in_market (both). |
| year | No | Survey year (deposits as of June 30). |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Rows in the preview. |
| market | No | Market modes: the whole market in the geography. |
| notice | No | Guidance when nothing matched, or where the full collection is staged. |
| dataset | No | The staged full collection; present only when it exceeded the preview and this deployment staged it as a dataframe. |
| branches | No | Institution modes: branches in scope, main office first (preview). |
| position | No | institution_in_market: present when the institution has branches in the market. |
| footprint | No | Institution mode: its deposits and share per state, largest first. |
| geography | No | The geography as applied; absent in institution mode. |
| truncated | No | True when the preview holds fewer rows than total_rows. |
| data_as_of | No | When FDIC last rebuilt the Summary of Deposits index (ISO timestamp). |
| total_rows | No | Full count of the branches (institution modes) or ranked institutions (market). |
| institution | No | The institution; present when it reported branches in scope. |
| institutions | No | Market mode: institutions ranked by deposits (preview). |
| year_defaulted | No | True when year was omitted and the latest survey was used. |
fdic_get_institution_financialsGet institution quarterly financialsRead-onlyIdempotentInspect
Get one institution's quarterly Call Report financials by CERT — balance sheet, income, returns, credit quality, and capital ratios — most recent quarter first, with its name, status, and holding company. Unsuffixed income and return metrics are single-quarter figures; _ytd metrics accumulate from January 1. Dollar amounts are in thousands. Quarterly data lands about seven weeks after quarter end; history reaches back to 1984.
| Name | Required | Description | Default |
|---|---|---|---|
| cert | Yes | FDIC certificate number, from fdic_search_institutions. | |
| metrics | No | Up to 25 metric names (fdic_list_reference topic metrics). Omit for the default health set: assets, deposits, uninsured deposits, equity, net income, ROA, ROE, net interest margin, efficiency, noncurrent-loan and charge-off rates, loans to deposits, and capital ratios. | |
| to_date | No | Latest quarter to include, in the same forms as from_date. Omit for the latest published quarter. | |
| quarters | No | Most recent quarters to return (1–200; 200 covers the whole history back to 1984). Within from_date/to_date it caps the count. | |
| from_date | No | Earliest quarter to include: a quarter-end date (2025-03-31), the same without dashes (20250331), or a quarter label (2025Q1). |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The quarters cap applied. |
| rows | No | Quarterly rows, most recent first. |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Quarters returned. |
| notice | No | Guidance for an empty window, an inactive institution, or quarters left out by the cap. |
| truncated | No | True when more quarters were available than the quarters cap returned. |
| data_as_of | No | When FDIC last rebuilt the financials index (ISO timestamp). |
| institution | No | Institution identity, status, holding company, and succession; fdic_search_institutions with certs returns the full record (charter class, regulator, county, dates, latest assets). |
| metric_definitions | No | Field, unit, and basis of each metric in rows. |
| quarters_available | No | Reported quarters in the requested window, before the quarters cap. |
fdic_list_referenceList FDIC reference vocabularyRead-onlyIdempotentInspect
List the vocabulary the other fdic_ tools accept and return: every financial metric name with its FDIC field, unit, and basis (single quarter, year-to-date, or point in time), bank charter classes, failure resolution methods, insurance funds, the asset bands fdic_compare_peers uses, and the years each dataset covers. Served from built-in tables; no request to FDIC.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | Which table to list: metrics (names, FDIC fields, units, basis, default set), bank_classes, failure_methods, insurance_funds, peer_asset_bands, or coverage (years and cadence of each dataset). |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| topic | No | The topic listed. |
| entries | No | Every entry of the topic, in table order. |
fdic_query_financialsQuery a multi-bank financial panelRead-onlyIdempotentInspect
Pull a multi-institution, multi-quarter Call Report panel — one row per institution per quarter — filtered by CERTs, headquarters state, asset range, and thresholds on any catalog metric. Use it to screen (every bank in a state with a noncurrent-loan rate above 3%) or to build a trend panel for SQL. Returns an inline preview sorted as requested; when the panel exceeds the preview it is staged as a dataframe for fdic_dataframe_query. With no dates it covers the latest published quarter only.
| Name | Required | Description | Default |
|---|---|---|---|
| certs | No | Up to 100 CERTs to include; omit to screen every filer. | |
| limit | No | Rows returned inline (1–500). A panel with more rows is also staged whole as a dataframe when this deployment stages dataframes. | |
| state | No | Headquarters state: two-letter code in any case or full name. Branch locations are in fdic_get_deposits. | |
| metrics | No | Up to 30 metric names (fdic_list_reference topic metrics) to return. Omit for the default health set. | |
| sort_by | No | Metric to order the preview (and the staged table) by; added to metrics when absent. Omit to order by newest quarter, then CERT. | |
| to_date | No | Latest quarter, in the same forms as from_date. Omit for the latest published quarter; beside from_date, a later quarter is cut back to it. | |
| from_date | No | Earliest quarter: a quarter-end date (2024-03-31), the same without dashes, or a quarter label (2024Q1). Omit for to_date alone. | |
| max_assets | No | Maximum total assets in that quarter, thousands of US dollars; applied to each quarter's report. | |
| min_assets | No | Minimum total assets in that quarter, thousands of US dollars (1000000 = $1 billion); applied to each quarter's report. | |
| sort_order | No | desc (default, largest first) or asc; applies to sort_by. Rows without a value sort last. | desc |
| metric_filters | No | Up to 5 metric thresholds, all of which a row must meet. A threshold on a capital ratio or insured_deposit_share skips filers that did not report it. Each filtered metric is added to metrics. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The limit applied to the preview. |
| rows | No | Inline preview of the panel, sorted as requested. |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Rows in the preview. |
| notice | No | Guidance for zero matches, a capped panel, or where the full panel is staged. |
| dataset | No | The staged full panel; present only when the panel exceeded the preview and this deployment staged it as a dataframe. |
| truncated | No | True when the preview holds fewer rows than were fetched. |
| data_as_of | No | When FDIC last rebuilt the financials index (ISO timestamp). |
| report_dates | No | Quarter range as applied. |
| rows_fetched | No | Rows fetched into the panel. |
| panel_row_cap | No | This server's row cap for one panel. |
| total_matching | No | Institution-quarter rows at FDIC matching the filters. |
| panel_truncated | No | True when total_matching exceeded the panel row cap. Whole quarters are kept newest first, so a truncated panel is missing its oldest quarters — or, when the newest quarter alone exceeds the cap, the higher-numbered CERTs of that quarter. |
| metric_definitions | No | Field, unit, and basis of each metric in rows. |
| report_dates_defaulted | No | True when neither from_date nor to_date was given, so only the latest published quarter was covered. |
fdic_search_failuresSearch FDIC bank failuresRead-onlyIdempotentInspect
Search FDIC-insured bank failures and assistance transactions since 1934 by name, CERT, headquarters state, failure date range, resolution method, or size. Returns each event with failure date, acquirer, total assets and deposits, and the FDIC's estimated loss to the insurance fund, plus totals over every matching event; group_by adds counts and losses per year, state, method, or fund. Searches failures only unless resolution is set to assistance or all. Dollar amounts are in thousands.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Failed institution name, up to 100 characters; every word of two or more letters or digits must appear in the name FDIC recorded (e.g. "silicon valley"). Case-insensitive. A standalone NA is ignored beside other words, so it also finds names recorded with N.A. | |
| sort | No | date_desc (newest first, default), date_asc, loss_desc (largest estimated loss first), or assets_desc. | date_desc |
| certs | No | Up to 50 CERTs of failed institutions. Events before 1977 carry no CERT. | |
| limit | No | Events per page (1–200). | |
| state | No | Failed institution's headquarters state: two-letter code in any case or full name. | |
| offset | No | Events to skip (0–100,000); pass next_offset from the previous page. | |
| methods | No | How each event was resolved: PA purchase and assumption of all deposits, PI P&A of insured deposits only, P&A P&A with deposit scope undetermined, IDT insured deposit transfer, ABT asset-backed transfer, PO payout, DINB payout through a Deposit Insurance National Bank, A/A assistance transaction, REP reprivatization, MGR FSLIC management takeover, OBAM undocumented assistance code. | |
| to_date | No | Latest failure date to include (YYYY-MM-DD). | |
| group_by | No | Add counts, assets, deposits, and estimated losses per year, state, method, or insurance_fund over every matching event. | |
| from_date | No | Earliest failure date to include (YYYY-MM-DD, e.g. 2023-03-10). | |
| min_assets | No | Minimum total assets at the last report before failure, in thousands of US dollars. | |
| resolution | No | failure (default), assistance (open-bank assistance and similar transactions), or all. Echoed as resolution_filter. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The limit applied to this page. |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Events returned on this page. |
| total | No | Matching events across all pages. |
| groups | No | Present with group_by. Years run ascending with empty years filled in; other keys by count, largest first. |
| notice | No | Guidance when nothing matched, the page is past the end, or more pages remain. |
| summary | No | Totals over every matching event, not just this page. |
| failures | No | Matching events for this page. |
| truncated | No | True when more events remain beyond this page. |
| data_as_of | No | When FDIC last rebuilt the failures index (ISO timestamp). |
| next_offset | No | Offset of the next page; present when more events remain. |
| resolution_filter | No | The resolution filter applied. |
fdic_search_institutionsSearch FDIC-insured institutionsRead-onlyIdempotentInspect
Find FDIC-insured banks and savings institutions by name, CERT, location, size, charter class, or holding company — including closed, merged, and failed institutions. Name matching is fuzzy, case-insensitive, and also matches former and trade names (a result says which it matched); every word must match. Returns institution records keyed by CERT, the FDIC certificate number every other fdic_ tool takes, with active status, successor CERT for merged or failed institutions, holding company, and latest reported assets and deposits. Credit unions are insured by the NCUA and are not in this data.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Headquarters city as FDIC spells it (e.g. Seattle, St. Louis), up to 50 characters; matched exactly, as given or in title case, with a hyphen, apostrophe, or space between words also tried the other ways FDIC records it (Winston-Salem finds Winston Salem, Coeur d'Alene finds Coeur D Alene). | |
| name | No | Institution name to match, up to 100 characters — current, former, or trade name, case-insensitive, every word required (e.g. "silicon valley"). Punctuation other than & ' . , - is ignored, and so is a standalone N.A. or NA, which then also matches "National Association". | |
| sort | No | relevance (active institutions whose current name holds every word of name first, then every other match, each by match score; default when name is given — without name it falls back to assets_desc), assets_desc (largest first; the default otherwise), or name (A–Z). | |
| certs | No | Exact lookup by up to 50 CERTs; requested CERTs with no record come back in missing_certs. | |
| limit | No | Institutions per page (1–100). | |
| state | No | Headquarters state: two-letter code in any case (wa) or full name (Washington); DC and territories accepted. | |
| offset | No | Matches to skip (0–100,000); pass next_offset from the previous page. | |
| status | No | active, inactive (merged, failed, or closed), or any. Default: any when name or certs is given, otherwise active. The applied value is echoed as status_filter. | |
| max_assets | No | Maximum latest reported total assets, in thousands of US dollars. | |
| min_assets | No | Minimum latest reported total assets, in thousands of US dollars (1000000 = $1 billion). | |
| bank_classes | No | Charter classes to include: N national bank, NM state nonmember bank, SM state member bank, SB federal savings bank, SI state savings bank, SL state savings and loan, OI insured branch of a foreign bank, NC noninsured non-deposit trust company. | |
| holding_company_rssd | No | Holding company RSSD ID from any result's holding_company.rssd; lists the institutions under that top holder. With status any, former subsidiaries are included under the holder they had at closing. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The limit applied to this page. |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Institutions returned on this page. |
| total | No | Institutions matching the filters across all pages. |
| notice | No | Guidance when nothing matched, the page is past the end, or more pages remain. |
| truncated | No | True when more matches remain beyond this page. |
| data_as_of | No | When FDIC last rebuilt the institutions index (ISO timestamp). |
| next_offset | No | Offset of the next page; present when more matches remain. |
| institutions | No | Matching institutions for this page. |
| missing_certs | No | Requested CERTs that match no institution record. |
| status_filter | No | The status filter applied. |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
- First observed
fdic_compare_peers - First observed
fdic_dataframe_describe - First observed
fdic_dataframe_query - First observed
fdic_get_deposits - First observed
fdic_get_institution_financials - First observed
fdic_list_reference - First observed
fdic_query_financials - First observed
fdic_search_failures - First observed
fdic_search_institutions
Related MCP Connectors
Bank financials, branch locations, deposit data, and failure history from FDIC
Community bank intelligence: FDIC financials, peer benchmarking, HMDA lending and CRA posture.
FDIC MCP — FDIC BankFind Suite API (free, no auth)
FFIEC Call Reports MCP — US bank line-item detail (fleet #338).
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables access to quarterly Call Report financials, bank health metrics, failed bank lists, branch maps, and supervisory designations for every US FDIC-insured bank, with no authentication required.256 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables querying US bank regulatory filings at line-item level: search institutions, retrieve labeled call reports, track specific items over time, compare banks, and inspect data coverage and code meanings, with amounts normalized to whole dollars.26 npmMIT

@pipeworx/fed-nicofficial
AlicenseNot gradedqualityCmaintenanceSearches U.S. banks and holding companies, and retrieves their ownership hierarchies and merger/acquisition histories from Federal Reserve NIC data.47 npmMIT- AlicenseAqualityCmaintenanceProvides programmatic access to the FDIC BankFind Suite API, enabling users to query public data on FDIC-insured financial institutions, bank failures, and branch locations. It supports advanced filtering for financial reports, demographics, and institutional history without requiring an API key.2984 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.