# io.github.cyanheads/fdic-banks-mcp-server (remote · fdic-banks.caseyjhand.com)

Search FDIC-insured banks, Call Report financials, peer rankings, failures, mergers, deposit share.

- Trust score: 87/100 (high trust)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `fdic-banks.caseyjhand.com`: 87/100 (this document), [markdown](https://verifymcp.io/servers/cyanheads-fdic-banks-mcp-server/fdic-banks.md), [page](https://verifymcp.io/servers/cyanheads-fdic-banks-mcp-server/fdic-banks)
- npm · `@cyanheads/fdic-banks-mcp-server`: 39/100, [markdown](https://verifymcp.io/servers/cyanheads-fdic-banks-mcp-server/cyanheads-fdic-banks-mcp-server.md), [page](https://verifymcp.io/servers/cyanheads-fdic-banks-mcp-server/cyanheads-fdic-banks-mcp-server)

## Channel facts

- Endpoint: `https://fdic-banks.caseyjhand.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.3.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 83/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Nothing on it is marked destructive, but we can't show that an anonymous caller can only read: full credit needs the server to list at least one tool and every tool to be verifiably read-only. We use a best-effort check of tool names and descriptions to tell read-only tools from tools that change things, so some genuinely read-only tools may not get full credit. Names that start with a read verb (get, list, read, search and similar) and accurate readOnlyHint annotations help. Meet that to earn full credit, or require authorisation.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 73/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 4679 tokens (~425/item across 11 items; 10 tools + 1 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 87/100
  - Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 10 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 12 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the io.github.cyanheads/fdic-banks-mcp-server server?

io.github.cyanheads/fdic-banks-mcp-server is a hosted endpoint at https://fdic-banks.caseyjhand.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http cyanheads-fdic-banks-mcp-server 'https://fdic-banks.caseyjhand.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "cyanheads-fdic-banks-mcp-server": {
      "url": "https://fdic-banks.caseyjhand.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "cyanheads-fdic-banks-mcp-server": {
      "type": "http",
      "url": "https://fdic-banks.caseyjhand.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.cyanheads-fdic-banks-mcp-server]
url = "https://fdic-banks.caseyjhand.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "cyanheads-fdic-banks-mcp-server": {
      "type": "remote",
      "url": "https://fdic-banks.caseyjhand.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add cyanheads-fdic-banks-mcp-server --url 'https://fdic-banks.caseyjhand.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  cyanheads-fdic-banks-mcp-server:
    url: "https://fdic-banks.caseyjhand.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "cyanheads-fdic-banks-mcp-server": {
      "Transport": "http",
      "Url": "https://fdic-banks.caseyjhand.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add cyanheads-fdic-banks-mcp-server -t streamable-http -u 'https://fdic-banks.caseyjhand.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "cyanheads-fdic-banks-mcp-server": {
      "type": "http",
      "url": "https://fdic-banks.caseyjhand.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 87, +1)

No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-03 (score 86, +1)

No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-01 (score 85, +1)

No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-30 (score 84, +1)

No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-28 (score 83, +3)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “fdic_query_financials” rewrote its description, which is the text the model reads
- [security] Tool “fdic_list_reference” rewrote its description, which is the text the model reads
- [security] Tool “fdic_get_deposits” rewrote its description, which is the text the model reads
- [security] Tool “fdic_dataframe_describe” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 4013 → 4679
- [functional improvement] Schema quality: unverified → 100
- [functional] New resource “fdic-banks-guide”
- [functional] Server version: 0.2.0 → 0.3.0
- [functional] New tool “fdic_get_institution_history”
- [cosmetic] “fdic_get_deposits” added an optional parameter “offset”
- [cosmetic] “fdic_query_financials” added an optional parameter “offset”
- [cosmetic] “fdic_list_reference” reworded the description of “topic”
- [cosmetic] “fdic_get_deposits” reworded the description of “msa_code”
- [cosmetic] “fdic_get_deposits” reworded the description of “limit”
- [cosmetic] “fdic_search_failures” reworded the description of “certs”
- [cosmetic] “fdic_query_financials” reworded the description of “sort_by”
- [cosmetic] “fdic_query_financials” reworded the description of “limit”

### 2026-10-27 (score 80, +1)

No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-25 (score 79, +1)

No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-23 (score 78, +1)

No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (10)

### `fdic_search_institutions` (~683 tokens)

Search FDIC-insured institutions

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.

Input parameters:

- `bank_classes` (array): 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 b…
- `certs` (array): Nonempty CERT selection, at most 1000 raw items. Deduplicated first; the first 50 are queried and the rest returned as deferred_certs. missing_certs covers only processed_certs.
- `city` (string): 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…
- `holding_company_rssd` (integer): 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.
- `limit` (integer): Institutions per page; accepts 1–10000, executes at most 100. effective_limit reports the applied count; use next_offset to continue.
- `max_assets` (number): Maximum latest reported total assets, in thousands of US dollars.
- `min_assets` (number): Minimum latest reported total assets, in thousands of US dollars (1000000 = $1 billion).
- `name` (string): 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…
- `offset` (integer): Matches to skip (0–100,000); pass next_offset from the previous page.
- `sort` (string): 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),…
- `state` (string): Headquarters state: two-letter code in any case (wa) or full name (Washington); DC and territories accepted.
- `status` (string): 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.

Output parameters:

- `cap` (number): The limit applied to this page.
- `data_as_of` (string): When FDIC last rebuilt the institutions index (ISO timestamp).
- `deferred_certs` (array): CERTs not queried; pass these as certs (peer_certs for comparisons) in a new call.
- `effective_limit` (integer): Page size applied, at most 100.
- `error` (object): Present when the call failed. Absent on success.
- `institutions` (array): Matching institutions for this page.
- `missing_certs` (array): Requested CERTs that match no institution record.
- `next_offset` (integer): Offset of the next page; present when more matches remain.
- `notice` (string): Guidance when nothing matched, the page is past the end, or more pages remain.
- `processed_certs` (array): Deduplicated CERT selection actually queried; missing CERTs are a subset of these.
- `selection_notice` (string): Execution caps and how to retrieve deferred selections.
- `shown` (number): Institutions returned on this page.
- `status_filter` (string): The status filter applied.
- `total` (integer): Institutions matching the filters across all pages.
- `truncated` (boolean): True when more matches remain beyond this page.

### `fdic_get_institution_financials` (~290 tokens)

Get institution quarterly financials

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.

Input parameters:

- `cert` (integer, required): FDIC certificate number, from fdic_search_institutions.
- `from_date` (string): Earliest quarter to include: a quarter-end date (2025-03-31), the same without dashes (20250331), or a quarter label (2025Q1).
- `metrics` (array): At most 1000 raw metric names (fdic_list_reference topic metrics). Deduplicated before querying the first 25; deferred_metrics holds the rest. Omit or pass [] for the default health set.
- `quarters` (integer): Most recent quarters to return; accepts 1–10000, executes at most 200 within from_date/to_date. effective_quarters reports the applied count. Continue with to_date before the oldest returned quarter.
- `to_date` (string): Latest quarter to include, in the same forms as from_date. Omit for the latest published quarter.

Output parameters:

- `cap` (number): The quarters cap applied.
- `data_as_of` (string): When FDIC last rebuilt the financials index (ISO timestamp).
- `deferred_metrics` (array): Metrics not queried; pass these as metrics in a new call.
- `effective_quarters` (integer): Quarters execution cap applied, at most 200.
- `error` (object): Present when the call failed. Absent on success.
- `institution` (object): 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` (array): Field, unit, and basis of each metric in rows.
- `notice` (string): Guidance for an empty window, an inactive institution, or quarters left out by the cap.
- `processed_metrics` (array): Metrics actually queried, including automatic panel sort/filter metrics.
- `quarters_available` (integer): Reported quarters in the requested window, before the quarters cap.
- `rows` (array): Quarterly rows, most recent first.
- `selection_notice` (string): Execution caps and how to retrieve deferred selections.
- `shown` (number): Quarters returned.
- `truncated` (boolean): True when more quarters were available than the quarters cap returned.

### `fdic_get_institution_history` (~341 tokens)

Get institution structure-change history

Get one institution's structure-change history by CERT, newest first: the mergers it absorbed or was absorbed in, failures and assisted takeovers, branch purchases and sales, renames, relocations, charter and regulator changes, openings, and closings, each with its effective date, FDIC change code, the institution's role, and the other institution's CERT and name. A merger or failure appears once, from whichever side the CERT was on. Branch-level openings, closings, sales, and relocations are left out unless event_types includes branch. Merger records start in 1969 and failure records in 1970.

Input parameters:

- `cert` (integer, required): FDIC certificate number, from fdic_search_institutions.
- `event_types` (array): Nonempty selection of at most 1000 event types, deduplicated: merger, failure_or_assistance, branch_purchase, name_change, relocation, charter_change, opening, closing, other (a change code this serv…
- `from_date` (string): Earliest effective date to include (YYYY-MM-DD, e.g. 2008-01-01).
- `limit` (integer): Events per page, at least 1. The whole matching history is read, so any limit is served; use next_offset to continue.
- `offset` (integer): Events to skip; pass next_offset from the previous page.
- `to_date` (string): Latest effective date to include (YYYY-MM-DD).

Output parameters:

- `cap` (number): The limit applied to this page.
- `data_as_of` (string): When FDIC last rebuilt the history index (ISO timestamp).
- `error` (object): Present when the call failed. Absent on success.
- `event_types_filter` (array): The event types searched, after the default and deduplication.
- `events` (array): Events on this page, newest first.
- `institution` (object): The institution record for the CERT.
- `next_offset` (integer): Offset of the next page; present when more events remain.
- `notice` (string): Guidance when nothing matched, the page is past the end, or more pages remain.
- `shown` (number): Events returned on this page.
- `total` (integer): Events matching the filters across all pages.
- `truncated` (boolean): True when more events remain beyond this page.

### `fdic_compare_peers` (~410 tokens)

Compare an institution with its peers

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.

Input parameters:

- `cert` (integer, required): FDIC certificate number of the institution to compare, from fdic_search_institutions.
- `metrics` (array): At most 1000 raw metric names. Deduplicated before querying the first 20; deferred_metrics holds the rest. Omit or pass [] for the default health set.
- `peer_asset_band` (string): 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_ass…
- `peer_certs` (array): Nonempty peer selection, at most 1000 raw CERTs, replacing band/state filters. Deduplicated before querying the first 200; deferred_certs holds the rest and marks the cohort incomplete. Fewer than fi…
- `peer_state` (string): 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` (string): 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.

Output parameters:

- `comparisons` (array): Per-metric comparison, in metric order.
- `data_as_of` (string): When FDIC last rebuilt the financials index (ISO timestamp).
- `deferred_certs` (array): CERTs not queried; pass these as certs (peer_certs for comparisons) in a new call.
- `deferred_metrics` (array): Metrics not queried; pass these as metrics in a new call.
- `error` (object): Present when the call failed. Absent on success.
- `institution` (object): The institution being compared.
- `notice` (string): Guidance when the peer group is empty or a metric has fewer than five peer values.
- `peer_certs_missing` (array): Explicit peer CERTs that filed no Call Report for the quarter.
- `peer_cohort_incomplete` (boolean): True when deferred peer CERTs were excluded from every statistic; rerun with deferred_certs as peer_certs or use a smaller cohort.
- `peer_group` (object): How the peer group was built.
- `processed_certs` (array): Deduplicated CERT selection actually queried; missing CERTs are a subset of these.
- `processed_metrics` (array): Metrics actually queried, including automatic panel sort/filter metrics.
- `report_date` (string): Quarter-end date compared (YYYY-MM-DD).
- `report_date_defaulted` (boolean): True when report_date was omitted and the latest published quarter was used.
- `selection_notice` (string): Execution caps and how to retrieve deferred selections.

### `fdic_query_financials` (~586 tokens)

Query a multi-bank financial panel

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 one page of the panel sorted as requested, continued with offset; at offset 0 a panel larger than the page is also staged as a dataframe for fdic_dataframe_query. With no dates it covers the latest published quarter only.

Input parameters:

- `certs` (array): Nonempty selection, at most 1000 raw CERTs. Deduplicated before querying the first 100; deferred_certs holds the rest for another call. Omit to screen every filer.
- `from_date` (string): Earliest quarter: a quarter-end date (2024-03-31), the same without dashes, or a quarter label (2024Q1). Omit for to_date alone.
- `limit` (integer): Positive count of rows per page, sliced from the already-fetched panel at offset. At offset 0 a larger panel is also staged whole as a dataframe when this deployment stages dataframes.
- `max_assets` (number): Maximum total assets in that quarter, thousands of US dollars; applied to each quarter's report.
- `metric_filters` (array): 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.
- `metrics` (array): At most 1000 raw metric names. Deduplicated before querying the first 30; deferred_metrics holds the rest. Sort/filter metrics are always added. Omit or pass [] for the default health set.
- `min_assets` (number): Minimum total assets in that quarter, thousands of US dollars (1000000 = $1 billion); applied to each quarter's report.
- `offset` (integer): Fetched panel rows to skip; pass next_offset from the previous page. Only offset 0 stages a dataframe.
- `sort_by` (string): Metric to order the pages (and the staged table) by; added to metrics when absent. Omit to order by newest quarter, then CERT.
- `sort_order` (string): desc (default, largest first) or asc; applies to sort_by. Rows without a value sort last.
- `state` (string): Headquarters state: two-letter code in any case or full name. Branch locations are in fdic_get_deposits.
- `to_date` (string): 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.

Output parameters:

- `cap` (number): The limit applied to this page.
- `data_as_of` (string): When FDIC last rebuilt the financials index (ISO timestamp).
- `dataset` (object): The staged full panel; present only at offset 0 when the panel exceeded limit and this deployment staged it as a dataframe.
- `deferred_certs` (array): CERTs not queried; pass these as certs (peer_certs for comparisons) in a new call.
- `deferred_metrics` (array): Metrics not queried; pass these as metrics in a new call.
- `error` (object): Present when the call failed. Absent on success.
- `metric_definitions` (array): Field, unit, and basis of each metric in rows.
- `next_offset` (integer): Offset of the next page; present while fetched rows remain past this page.
- `notice` (string): Guidance for zero matches, more pages remaining, a page past the end, a capped panel, or where the full panel is staged.
- `panel_row_cap` (integer): This server's row cap for one panel.
- `panel_truncated` (boolean): 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…
- `processed_certs` (array): Deduplicated CERT selection actually queried; missing CERTs are a subset of these.
- `processed_metrics` (array): Metrics actually queried, including automatic panel sort/filter metrics.
- `report_dates` (object): Quarter range as applied.
- `report_dates_defaulted` (boolean): True when neither from_date nor to_date was given, so only the latest published quarter was covered.
- `rows` (array): One page of the fetched panel in the requested order, starting at offset.
- `rows_fetched` (integer): Rows fetched into the panel.
- `selection_notice` (string): Execution caps and how to retrieve deferred selections.
- `shown` (number): Rows on this page.
- `total_matching` (integer): Institution-quarter rows at FDIC matching the filters.
- `truncated` (boolean): True when fetched rows remain past this page (next_offset is set).

### `fdic_search_failures` (~564 tokens)

Search FDIC bank failures

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.

Input parameters:

- `certs` (array): Nonempty selection of at most 1000 raw CERTs; deduplicated before querying the first 50. deferred_certs holds the rest for another call. Most events before 1977, and every one before 1970, carry no C…
- `from_date` (string): Earliest failure date to include (YYYY-MM-DD, e.g. 2023-03-10).
- `group_by` (string): Add counts, assets, deposits, and estimated losses per year, state, method, or insurance_fund over every matching event.
- `limit` (integer): Events per page; accepts 1–10000, executes at most 200. effective_limit reports the applied count; use next_offset to continue.
- `methods` (array): 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 trans…
- `min_assets` (number): Minimum total assets at the last report before failure, in thousands of US dollars.
- `name` (string): 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…
- `offset` (integer): Events to skip (0–100,000); pass next_offset from the previous page.
- `resolution` (string): failure (default), assistance (open-bank assistance and similar transactions), or all. Echoed as resolution_filter.
- `sort` (string): date_desc (newest first, default), date_asc, loss_desc (largest estimated loss first), or assets_desc.
- `state` (string): Failed institution's headquarters state: two-letter code in any case or full name.
- `to_date` (string): Latest failure date to include (YYYY-MM-DD).

Output parameters:

- `cap` (number): The limit applied to this page.
- `data_as_of` (string): When FDIC last rebuilt the failures index (ISO timestamp).
- `deferred_certs` (array): CERTs not queried; pass these as certs (peer_certs for comparisons) in a new call.
- `effective_limit` (integer): Page size applied, at most 200.
- `error` (object): Present when the call failed. Absent on success.
- `failures` (array): Matching events for this page.
- `groups` (array): Present with group_by. Years run ascending with empty years filled in; other keys by count, largest first.
- `next_offset` (integer): Offset of the next page; present when more events remain.
- `notice` (string): Guidance when nothing matched, the page is past the end, or more pages remain.
- `processed_certs` (array): Deduplicated CERT selection actually queried; missing CERTs are a subset of these.
- `resolution_filter` (string): The resolution filter applied.
- `selection_notice` (string): Execution caps and how to retrieve deferred selections.
- `shown` (number): Events returned on this page.
- `summary` (object): Totals over every matching event, not just this page.
- `total` (integer): Matching events across all pages.
- `truncated` (boolean): True when more events remain beyond this page.

### `fdic_get_deposits` (~530 tokens)

Get Summary of Deposits branches and market share

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. Branches and rankings come a page at a time, continued with offset; at offset 0 a set larger than the page is also staged as a dataframe for fdic_dataframe_query. Defaults to the latest survey year. Dollar amounts are in thousands.

Input parameters:

- `cert` (integer): FDIC certificate number, from fdic_search_institutions. Alone: its branches and per-state share. With a geography: its position in that market.
- `city` (string): 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 re…
- `county` (string): 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…
- `limit` (integer): Positive count of rows per page, sliced from the already-fetched branches or ranking at offset. At offset 0 a larger set is also staged whole as a dataframe when this deployment stages dataframes.
- `msa_code` (string): Five-digit CBSA (metropolitan area) code, 10180–49740; branch rows (returned when cert is given) carry msa_code values to reuse. Non-metropolitan branches have no code.
- `offset` (integer): Branches or ranked institutions to skip; pass next_offset from the previous page. Only offset 0 stages a dataframe.
- `state` (string): Branch state: two-letter code in any case or full name.
- `year` (integer): Survey year (deposits as of June 30), 1994 on. Omit for the latest survey.
- `zip` (string): Five-digit branch ZIP code; leading zeros kept (02110).

Output parameters:

- `branches` (array): Institution modes: one page of the branches in scope by branch number (main office first), starting at offset.
- `cap` (number): The limit applied to this page.
- `data_as_of` (string): When FDIC last rebuilt the Summary of Deposits index (ISO timestamp).
- `dataset` (object): The staged full collection; present only at offset 0 when it exceeded limit and this deployment staged it as a dataframe.
- `error` (object): Present when the call failed. Absent on success.
- `footprint` (array): Institution mode: its deposits and share per state, largest first.
- `geography` (object): The geography as applied; absent in institution mode.
- `institution` (object): The institution; present when it reported branches in scope.
- `institutions` (array): Market mode: one page of the institutions ranked by deposits (ties by CERT), starting at offset.
- `market` (object): Market modes: the whole market in the geography.
- `mode` (string): institution (cert only), market (geography only), or institution_in_market (both).
- `next_offset` (integer): Offset of the next page; present while rows remain past this page.
- `notice` (string): Guidance when nothing matched, more pages remain, the page is past the end, or where the full collection is staged.
- `position` (object): institution_in_market: present when the institution has branches in the market.
- `shown` (number): Rows on this page.
- `total_rows` (integer): Full count of the branches (institution modes) or ranked institutions (market).
- `truncated` (boolean): True when rows remain past this page (next_offset is set).
- `year` (integer): Survey year (deposits as of June 30).
- `year_defaulted` (boolean): True when year was omitted and the latest survey was used.

### `fdic_list_reference` (~175 tokens)

List FDIC reference vocabulary

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, the structure-change codes fdic_get_institution_history reports and the event type each maps to, insurance funds, the asset bands fdic_compare_peers uses, and the years each dataset covers. Served from built-in tables; no request to FDIC.

Input parameters:

- `topic` (string, required): Which table to list: metrics (names, FDIC fields, units, basis, default set), bank_classes, failure_methods, change_codes (FDIC structure-change codes with their event type and level), insurance_fund…

Output parameters:

- `entries` (array): Every entry of the topic, in table order.
- `error` (object): Present when the call failed. Absent on success.
- `topic` (string): The topic listed.

### `fdic_dataframe_describe` (~265 tokens)

Describe staged dataframes

Describe the df_<id> dataframes that fdic_query_financials and fdic_get_deposits staged when a result at offset 0 was larger than one page, 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.

Input parameters:

- `name` (string): 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` (integer): Listed dataframes to skip; pass next_offset from the previous page. Ignored when name is set.

Output parameters:

- `cap` (number): Dataframes per page of the listing.
- `dataframes` (array): The named dataframe in full, or one page of the live dataframes as summary rows, newest first; empty when none matched.
- `error` (object): Present when the call failed. Absent on success.
- `next_offset` (integer): Offset of the next page of the listing; present when more dataframes remain.
- `notice` (string): Guidance when nothing matched, the page is past the end, the page starts past the first dataframe, or more pages remain.
- `shown` (number): Dataframes listed on this page.
- `total` (integer): Live dataframes across all pages of the listing; with name, 1 or 0.
- `truncated` (boolean): True when more dataframes remain beyond this page.

### `fdic_dataframe_query` (~394 tokens)

Query staged dataframes with SQL

Run one read-only SELECT (DuckDB SQL) across the df_<id> 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.

Input parameters:

- `preview` (integer): Rows to return inline; defaults to the effective row_limit and is clamped to it. Set it low when register_as keeps the full result.
- `register_as` (string): 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 cal…
- `row_limit` (integer): Requested materialization cap (default 1,000; hard input ceiling 1,000,000), clamped to the execution cap of 10,000. Without register_as, row_count_capped reports more matches; continue with ordered…
- `sql` (string, required): One SELECT against df_<id> tables named in a dataset field or by fdic_dataframe_describe, up to 20,000 characters.

Output parameters:

- `cap` (number): The cap that bound: preview when lower, else row_limit.
- `columns` (array): Columns in projection order.
- `effective_preview` (integer): Inline row cap after clamping preview to the effective row_limit.
- `effective_row_limit` (integer): Effective row_limit, at most 10,000.
- `error` (object): Present when the call failed. Absent on success.
- `expires_at` (string): When the register_as dataframe is dropped (ISO 8601).
- `notice` (string): Guidance when the query returned no rows or a cap withheld some.
- `registered_as` (string): Name of the dataframe register_as created.
- `requested_preview` (integer): Explicit preview before clamping; absent when omitted.
- `requested_row_limit` (integer): Requested row_limit before the execution cap.
- `row_count` (integer): Rows the query produced, up to effective_row_limit; with register_as, the exact count of the new dataframe.
- `row_count_capped` (boolean): True when the query matched more rows than effective_row_limit, so row_count is that cap.
- `rows` (array): Result rows, bounded by preview and row_limit.
- `shown` (number): Rows returned inline.
- `truncated` (boolean): True when rows were withheld by preview or row_limit.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/cyanheads-fdic-banks-mcp-server/fdic-banks#diagnostics

## Score history

- 2026-11-05: 87
- 2026-11-04: 86
- 2026-11-03: 86
- 2026-11-02: 85
- 2026-11-01: 85
- 2026-10-31: 84
- 2026-10-30: 84
- 2026-10-29: 83
- 2026-10-28: 83
- 2026-10-27: 80
- 2026-10-26: 79
- 2026-10-25: 79
- 2026-10-24: 78
- 2026-10-23: 78
- 2026-10-22: 77
- 2026-10-21: 77
- 2026-10-20: 76
- 2026-10-19: 76
- 2026-10-18: 76
- 2026-10-17: 75
- 2026-10-16: 24
- 2026-10-15: 75
- 2026-10-14: 74
- 2026-10-13: 74
- 2026-10-12: 73
- 2026-10-10: 72

## Common questions

### What is the io.github.cyanheads/fdic-banks-mcp-server server?

io.github.cyanheads/fdic-banks-mcp-server is listed in the public MCP registry as io.github.cyanheads/fdic-banks-mcp-server. Search FDIC-insured banks, Call Report financials, peer rankings, failures, mergers, deposit share. This page covers its hosted endpoint (https://fdic-banks.caseyjhand.com/mcp).

### Is the io.github.cyanheads/fdic-banks-mcp-server server safe to use?

io.github.cyanheads/fdic-banks-mcp-server scores 87 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the io.github.cyanheads/fdic-banks-mcp-server server expose?

io.github.cyanheads/fdic-banks-mcp-server exposes 10 tools: fdic_search_institutions, fdic_get_institution_financials, fdic_get_institution_history, fdic_compare_peers, fdic_query_financials, and 5 more. Their descriptions and schemas cost roughly 4,238 tokens of context every time the server is loaded.

### Does the io.github.cyanheads/fdic-banks-mcp-server server require authentication?

No. We connected to io.github.cyanheads/fdic-banks-mcp-server without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the io.github.cyanheads/fdic-banks-mcp-server server still maintained?

io.github.cyanheads/fdic-banks-mcp-server is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What did VerifyMCP test on the io.github.cyanheads/fdic-banks-mcp-server server?

VerifyMCP ran 13 checks on io.github.cyanheads/fdic-banks-mcp-server, covering TLS certificate, Authorization, HTTPS, HSTS header and 9 more. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- Remote endpoint: https://fdic-banks.caseyjhand.com/mcp
- Repository: https://github.com/cyanheads/fdic-banks-mcp-server
- Changelog RSS feed: https://verifymcp.io/servers/cyanheads-fdic-banks-mcp-server/fdic-banks.xml
- Changelog JSON feed: https://verifymcp.io/servers/cyanheads-fdic-banks-mcp-server/fdic-banks/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/cyanheads-fdic-banks-mcp-server/fdic-banks.json
- HTML version of this page: https://verifymcp.io/servers/cyanheads-fdic-banks-mcp-server/fdic-banks
