fdic-banks-mcp-server

v0.1.2 pre-1.0

Search FDIC-insured banks, Call Report financials, peer rankings, failures, deposit market share via MCP. STDIO or Streamable HTTP.

fdic-banks.caseyjhand.com/mcp
claude mcp add --transport http fdic-banks-mcp-server https://fdic-banks.caseyjhand.com/mcp
codex mcp add fdic-banks-mcp-server --url https://fdic-banks.caseyjhand.com/mcp
{
  "mcpServers": {
    "fdic-banks-mcp-server": {
      "url": "https://fdic-banks.caseyjhand.com/mcp"
    }
  }
}
gemini mcp add --transport http fdic-banks-mcp-server https://fdic-banks.caseyjhand.com/mcp
{
  "mcpServers": {
    "fdic-banks-mcp-server": {
      "command": "bunx",
      "args": [
        "mcp-remote",
        "https://fdic-banks.caseyjhand.com/mcp"
      ]
    }
  }
}
{
  "mcpServers": {
    "fdic-banks-mcp-server": {
      "type": "http",
      "url": "https://fdic-banks.caseyjhand.com/mcp"
    }
  }
}
curl -X POST https://fdic-banks.caseyjhand.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"curl","version":"1.0.0"}}}'

Tools

10

read 9

fdic_search_institutions

open-world

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.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "fdic_search_institutions",
    "arguments": {}
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "name": {
      "description": "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\".",
      "type": "string",
      "maxLength": 100
    },
    "certs": {
      "description": "Exact lookup by up to 50 CERTs; requested CERTs with no record come back in missing_certs.",
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 1,
        "maximum": 9007199254740991,
        "description": "FDIC certificate number."
      }
    },
    "state": {
      "description": "Headquarters state: two-letter code in any case (wa) or full name (Washington); DC and territories accepted.",
      "type": "string",
      "maxLength": 50
    },
    "city": {
      "description": "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).",
      "type": "string",
      "maxLength": 50
    },
    "status": {
      "description": "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.",
      "type": "string",
      "enum": [
        "active",
        "inactive",
        "any"
      ]
    },
    "bank_classes": {
      "description": "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.",
      "maxItems": 8,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "N",
          "NM",
          "SM",
          "SB",
          "SI",
          "SL",
          "OI",
          "NC"
        ],
        "description": "Charter class code, uppercase; fdic_list_reference topic bank_classes lists them."
      }
    },
    "min_assets": {
      "description": "Minimum latest reported total assets, in thousands of US dollars (1000000 = $1 billion).",
      "type": "number",
      "minimum": 0
    },
    "max_assets": {
      "description": "Maximum latest reported total assets, in thousands of US dollars.",
      "type": "number",
      "minimum": 0
    },
    "holding_company_rssd": {
      "description": "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.",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "sort": {
      "description": "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).",
      "type": "string",
      "enum": [
        "relevance",
        "assets_desc",
        "name"
      ]
    },
    "limit": {
      "description": "Institutions per page (1–100).",
      "default": 20,
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "offset": {
      "description": "Matches to skip (0–100,000); pass next_offset from the previous page.",
      "default": 0,
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    }
  },
  "required": [
    "limit",
    "offset"
  ],
  "additionalProperties": false
}
view source ↗

fdic_get_institution_financials

open-world

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.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "fdic_get_institution_financials",
    "arguments": {
      "cert": "<cert>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "cert": {
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991,
      "description": "FDIC certificate number, from fdic_search_institutions."
    },
    "metrics": {
      "description": "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.",
      "maxItems": 25,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "total_assets",
          "total_liabilities",
          "total_deposits",
          "domestic_deposits",
          "insured_deposits",
          "uninsured_deposits",
          "insured_deposit_share",
          "brokered_deposits",
          "equity_capital",
          "net_loans",
          "securities",
          "cash_and_due",
          "real_estate_loans",
          "construction_loans",
          "multifamily_loans",
          "nonfarm_nonresidential_loans",
          "residential_mortgage_loans",
          "commercial_industrial_loans",
          "consumer_loans",
          "noncurrent_loans",
          "loan_loss_allowance",
          "other_real_estate_owned",
          "net_income",
          "net_income_ytd",
          "noninterest_income",
          "noninterest_expense",
          "provision_for_credit_losses",
          "net_charge_offs",
          "roa",
          "roa_ytd",
          "roe",
          "roe_ytd",
          "net_interest_margin",
          "net_interest_margin_ytd",
          "efficiency_ratio",
          "efficiency_ratio_ytd",
          "net_charge_off_rate",
          "net_charge_off_rate_ytd",
          "noncurrent_loan_rate",
          "nonperforming_asset_rate",
          "reserve_coverage",
          "loans_to_deposits",
          "equity_to_assets",
          "leverage_ratio",
          "cet1_ratio",
          "tier1_risk_based_ratio",
          "total_risk_based_capital_ratio",
          "employees",
          "domestic_offices"
        ],
        "description": "Metric name from the catalog, e.g. roa, net_income_ytd, cet1_ratio."
      }
    },
    "quarters": {
      "description": "Most recent quarters to return (1–200; 200 covers the whole history back to 1984). Within from_date/to_date it caps the count.",
      "default": 8,
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "from_date": {
      "description": "Earliest quarter to include: a quarter-end date (2025-03-31), the same without dashes (20250331), or a quarter label (2025Q1).",
      "type": "string",
      "pattern": "^(\\d{4}-(03-31|06-30|09-30|12-31)|\\d{4}(0331|0630|0930|1231)|\\d{4}-?[Qq][1-4])$"
    },
    "to_date": {
      "description": "Latest quarter to include, in the same forms as from_date. Omit for the latest published quarter.",
      "type": "string",
      "pattern": "^(\\d{4}-(03-31|06-30|09-30|12-31)|\\d{4}(0331|0630|0930|1231)|\\d{4}-?[Qq][1-4])$"
    }
  },
  "required": [
    "cert",
    "quarters"
  ],
  "additionalProperties": false
}
view source ↗

fdic_compare_peers

open-world

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.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "fdic_compare_peers",
    "arguments": {
      "cert": "<cert>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "cert": {
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991,
      "description": "FDIC certificate number of the institution to compare, from fdic_search_institutions."
    },
    "report_date": {
      "description": "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.",
      "type": "string",
      "pattern": "^(\\d{4}-(03-31|06-30|09-30|12-31)|\\d{4}(0331|0630|0930|1231)|\\d{4}-?[Qq][1-4])$"
    },
    "metrics": {
      "description": "Up to 20 metric names (fdic_list_reference topic metrics). Omit for the default health set.",
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "total_assets",
          "total_liabilities",
          "total_deposits",
          "domestic_deposits",
          "insured_deposits",
          "uninsured_deposits",
          "insured_deposit_share",
          "brokered_deposits",
          "equity_capital",
          "net_loans",
          "securities",
          "cash_and_due",
          "real_estate_loans",
          "construction_loans",
          "multifamily_loans",
          "nonfarm_nonresidential_loans",
          "residential_mortgage_loans",
          "commercial_industrial_loans",
          "consumer_loans",
          "noncurrent_loans",
          "loan_loss_allowance",
          "other_real_estate_owned",
          "net_income",
          "net_income_ytd",
          "noninterest_income",
          "noninterest_expense",
          "provision_for_credit_losses",
          "net_charge_offs",
          "roa",
          "roa_ytd",
          "roe",
          "roe_ytd",
          "net_interest_margin",
          "net_interest_margin_ytd",
          "efficiency_ratio",
          "efficiency_ratio_ytd",
          "net_charge_off_rate",
          "net_charge_off_rate_ytd",
          "noncurrent_loan_rate",
          "nonperforming_asset_rate",
          "reserve_coverage",
          "loans_to_deposits",
          "equity_to_assets",
          "leverage_ratio",
          "cet1_ratio",
          "tier1_risk_based_ratio",
          "total_risk_based_capital_ratio",
          "employees",
          "domestic_offices"
        ],
        "description": "Metric name from the catalog, e.g. roa, net_income_ytd, cet1_ratio."
      }
    },
    "peer_asset_band": {
      "description": "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.",
      "type": "string",
      "enum": [
        "same",
        "any",
        "under_100m",
        "100m_1b",
        "1b_10b",
        "10b_250b",
        "over_250b"
      ]
    },
    "peer_state": {
      "description": "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.",
      "type": "string",
      "maxLength": 50
    },
    "peer_certs": {
      "description": "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.",
      "maxItems": 200,
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 1,
        "maximum": 9007199254740991,
        "description": "FDIC certificate number of one peer."
      }
    }
  },
  "required": [
    "cert"
  ],
  "additionalProperties": false
}
view source ↗

fdic_query_financials

open-world

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.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "fdic_query_financials",
    "arguments": {}
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "certs": {
      "description": "Up to 100 CERTs to include; omit to screen every filer.",
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 1,
        "maximum": 9007199254740991,
        "description": "FDIC certificate number."
      }
    },
    "state": {
      "description": "Headquarters state: two-letter code in any case or full name. Branch locations are in fdic_get_deposits.",
      "type": "string",
      "maxLength": 50
    },
    "min_assets": {
      "description": "Minimum total assets in that quarter, thousands of US dollars (1000000 = $1 billion); applied to each quarter's report.",
      "type": "number",
      "minimum": 0
    },
    "max_assets": {
      "description": "Maximum total assets in that quarter, thousands of US dollars; applied to each quarter's report.",
      "type": "number",
      "minimum": 0
    },
    "metric_filters": {
      "description": "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.",
      "maxItems": 5,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "metric": {
            "type": "string",
            "enum": [
              "total_assets",
              "total_liabilities",
              "total_deposits",
              "domestic_deposits",
              "insured_deposits",
              "uninsured_deposits",
              "insured_deposit_share",
              "brokered_deposits",
              "equity_capital",
              "net_loans",
              "securities",
              "cash_and_due",
              "real_estate_loans",
              "construction_loans",
              "multifamily_loans",
              "nonfarm_nonresidential_loans",
              "residential_mortgage_loans",
              "commercial_industrial_loans",
              "consumer_loans",
              "noncurrent_loans",
              "loan_loss_allowance",
              "other_real_estate_owned",
              "net_income",
              "net_income_ytd",
              "noninterest_income",
              "noninterest_expense",
              "provision_for_credit_losses",
              "net_charge_offs",
              "roa",
              "roa_ytd",
              "roe",
              "roe_ytd",
              "net_interest_margin",
              "net_interest_margin_ytd",
              "efficiency_ratio",
              "efficiency_ratio_ytd",
              "net_charge_off_rate",
              "net_charge_off_rate_ytd",
              "noncurrent_loan_rate",
              "nonperforming_asset_rate",
              "reserve_coverage",
              "loans_to_deposits",
              "equity_to_assets",
              "leverage_ratio",
              "cet1_ratio",
              "tier1_risk_based_ratio",
              "total_risk_based_capital_ratio",
              "employees",
              "domestic_offices"
            ],
            "description": "Metric name from the catalog, e.g. roa, net_income_ytd, cet1_ratio."
          },
          "min": {
            "description": "Inclusive lower bound in the metric's unit: percent for ratios (3 = 3%), thousands of dollars for amounts.",
            "type": "number"
          },
          "max": {
            "description": "Inclusive upper bound in the metric's unit.",
            "type": "number"
          }
        },
        "required": [
          "metric"
        ],
        "additionalProperties": false,
        "description": "One threshold: a metric with min, max, or both."
      }
    },
    "metrics": {
      "description": "Up to 30 metric names (fdic_list_reference topic metrics) to return. Omit for the default health set.",
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "total_assets",
          "total_liabilities",
          "total_deposits",
          "domestic_deposits",
          "insured_deposits",
          "uninsured_deposits",
          "insured_deposit_share",
          "brokered_deposits",
          "equity_capital",
          "net_loans",
          "securities",
          "cash_and_due",
          "real_estate_loans",
          "construction_loans",
          "multifamily_loans",
          "nonfarm_nonresidential_loans",
          "residential_mortgage_loans",
          "commercial_industrial_loans",
          "consumer_loans",
          "noncurrent_loans",
          "loan_loss_allowance",
          "other_real_estate_owned",
          "net_income",
          "net_income_ytd",
          "noninterest_income",
          "noninterest_expense",
          "provision_for_credit_losses",
          "net_charge_offs",
          "roa",
          "roa_ytd",
          "roe",
          "roe_ytd",
          "net_interest_margin",
          "net_interest_margin_ytd",
          "efficiency_ratio",
          "efficiency_ratio_ytd",
          "net_charge_off_rate",
          "net_charge_off_rate_ytd",
          "noncurrent_loan_rate",
          "nonperforming_asset_rate",
          "reserve_coverage",
          "loans_to_deposits",
          "equity_to_assets",
          "leverage_ratio",
          "cet1_ratio",
          "tier1_risk_based_ratio",
          "total_risk_based_capital_ratio",
          "employees",
          "domestic_offices"
        ],
        "description": "Metric name from the catalog, e.g. roa, net_income_ytd, cet1_ratio."
      }
    },
    "from_date": {
      "description": "Earliest quarter: a quarter-end date (2024-03-31), the same without dashes, or a quarter label (2024Q1). Omit for to_date alone.",
      "type": "string",
      "pattern": "^(\\d{4}-(03-31|06-30|09-30|12-31)|\\d{4}(0331|0630|0930|1231)|\\d{4}-?[Qq][1-4])$"
    },
    "to_date": {
      "description": "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.",
      "type": "string",
      "pattern": "^(\\d{4}-(03-31|06-30|09-30|12-31)|\\d{4}(0331|0630|0930|1231)|\\d{4}-?[Qq][1-4])$"
    },
    "sort_by": {
      "description": "Metric to order the preview (and the staged table) by; added to metrics when absent. Omit to order by newest quarter, then CERT.",
      "type": "string",
      "enum": [
        "total_assets",
        "total_liabilities",
        "total_deposits",
        "domestic_deposits",
        "insured_deposits",
        "uninsured_deposits",
        "insured_deposit_share",
        "brokered_deposits",
        "equity_capital",
        "net_loans",
        "securities",
        "cash_and_due",
        "real_estate_loans",
        "construction_loans",
        "multifamily_loans",
        "nonfarm_nonresidential_loans",
        "residential_mortgage_loans",
        "commercial_industrial_loans",
        "consumer_loans",
        "noncurrent_loans",
        "loan_loss_allowance",
        "other_real_estate_owned",
        "net_income",
        "net_income_ytd",
        "noninterest_income",
        "noninterest_expense",
        "provision_for_credit_losses",
        "net_charge_offs",
        "roa",
        "roa_ytd",
        "roe",
        "roe_ytd",
        "net_interest_margin",
        "net_interest_margin_ytd",
        "efficiency_ratio",
        "efficiency_ratio_ytd",
        "net_charge_off_rate",
        "net_charge_off_rate_ytd",
        "noncurrent_loan_rate",
        "nonperforming_asset_rate",
        "reserve_coverage",
        "loans_to_deposits",
        "equity_to_assets",
        "leverage_ratio",
        "cet1_ratio",
        "tier1_risk_based_ratio",
        "total_risk_based_capital_ratio",
        "employees",
        "domestic_offices"
      ]
    },
    "sort_order": {
      "description": "desc (default, largest first) or asc; applies to sort_by. Rows without a value sort last.",
      "default": "desc",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "limit": {
      "description": "Rows returned inline (1–500). A panel with more rows is also staged whole as a dataframe when this deployment stages dataframes.",
      "default": 50,
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "required": [
    "sort_order",
    "limit"
  ],
  "additionalProperties": false
}
view source ↗

fdic_search_failures

open-world

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.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "fdic_search_failures",
    "arguments": {}
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "name": {
      "description": "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.",
      "type": "string",
      "maxLength": 100
    },
    "certs": {
      "description": "Up to 50 CERTs of failed institutions. Events before 1977 carry no CERT.",
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 1,
        "maximum": 9007199254740991,
        "description": "FDIC certificate number."
      }
    },
    "state": {
      "description": "Failed institution's headquarters state: two-letter code in any case or full name.",
      "type": "string",
      "maxLength": 50
    },
    "from_date": {
      "description": "Earliest failure date to include (YYYY-MM-DD, e.g. 2023-03-10).",
      "type": "string",
      "pattern": "^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$"
    },
    "to_date": {
      "description": "Latest failure date to include (YYYY-MM-DD).",
      "type": "string",
      "pattern": "^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$"
    },
    "resolution": {
      "description": "failure (default), assistance (open-bank assistance and similar transactions), or all. Echoed as resolution_filter.",
      "type": "string",
      "enum": [
        "failure",
        "assistance",
        "all"
      ]
    },
    "methods": {
      "description": "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.",
      "maxItems": 11,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "PA",
          "PI",
          "P&A",
          "IDT",
          "ABT",
          "PO",
          "DINB",
          "A/A",
          "REP",
          "MGR",
          "OBAM"
        ],
        "description": "Resolution method code, uppercase; fdic_list_reference topic failure_methods lists them."
      }
    },
    "min_assets": {
      "description": "Minimum total assets at the last report before failure, in thousands of US dollars.",
      "type": "number",
      "minimum": 0
    },
    "group_by": {
      "description": "Add counts, assets, deposits, and estimated losses per year, state, method, or insurance_fund over every matching event.",
      "type": "string",
      "enum": [
        "year",
        "state",
        "method",
        "insurance_fund"
      ]
    },
    "sort": {
      "description": "date_desc (newest first, default), date_asc, loss_desc (largest estimated loss first), or assets_desc.",
      "default": "date_desc",
      "type": "string",
      "enum": [
        "date_desc",
        "date_asc",
        "loss_desc",
        "assets_desc"
      ]
    },
    "limit": {
      "description": "Events per page (1–200).",
      "default": 25,
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "offset": {
      "description": "Events to skip (0–100,000); pass next_offset from the previous page.",
      "default": 0,
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    }
  },
  "required": [
    "sort",
    "limit",
    "offset"
  ],
  "additionalProperties": false
}
view source ↗

fdic_get_deposits

open-world

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.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "fdic_get_deposits",
    "arguments": {}
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "cert": {
      "description": "FDIC certificate number, from fdic_search_institutions. Alone: its branches and per-state share. With a geography: its position in that market.",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "state": {
      "description": "Branch state: two-letter code in any case or full name.",
      "type": "string",
      "maxLength": 50
    },
    "county": {
      "description": "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.",
      "type": "string",
      "maxLength": 50
    },
    "city": {
      "description": "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.",
      "type": "string",
      "maxLength": 50
    },
    "zip": {
      "description": "Five-digit branch ZIP code; leading zeros kept (02110).",
      "type": "string",
      "pattern": "^\\d{5}$"
    },
    "msa_code": {
      "description": "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.",
      "type": "string",
      "pattern": "^[1-9]\\d{4}$"
    },
    "year": {
      "description": "Survey year (deposits as of June 30), 1994 on. Omit for the latest survey.",
      "type": "integer",
      "minimum": 1994,
      "maximum": 9007199254740991
    },
    "limit": {
      "description": "Branches or ranked institutions returned inline (1–200). A larger set is also staged whole as a dataframe when this deployment stages dataframes.",
      "default": 25,
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    }
  },
  "required": [
    "limit"
  ],
  "additionalProperties": false
}
view source ↗

fdic_list_reference

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.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "fdic_list_reference",
    "arguments": {
      "topic": "<topic>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "topic": {
      "type": "string",
      "enum": [
        "metrics",
        "bank_classes",
        "failure_methods",
        "insurance_funds",
        "peer_asset_bands",
        "coverage"
      ],
      "description": "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)."
    }
  },
  "required": [
    "topic"
  ],
  "additionalProperties": false
}
view source ↗

fdic_dataframe_describe

Describe the df_<id> 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.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "fdic_dataframe_describe",
    "arguments": {}
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "name": {
      "description": "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.",
      "type": "string",
      "pattern": "^df_[A-Z0-9]{5}_[A-Z0-9]{5}$"
    },
    "offset": {
      "description": "Listed dataframes to skip; pass next_offset from the previous page. Ignored when name is set.",
      "default": 0,
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "offset"
  ],
  "additionalProperties": false
}
view source ↗

fdic_dataframe_query

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.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "fdic_dataframe_query",
    "arguments": {
      "sql": "<sql>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "sql": {
      "type": "string",
      "minLength": 1,
      "maxLength": 20000,
      "description": "One SELECT against df_<id> tables named in a dataset field or by fdic_dataframe_describe, up to 20,000 characters."
    },
    "register_as": {
      "description": "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.",
      "type": "string",
      "pattern": "^df_[A-Z0-9]{5}_[A-Z0-9]{5}$"
    },
    "preview": {
      "description": "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.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000
    },
    "row_limit": {
      "description": "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.",
      "default": 1000,
      "type": "integer",
      "minimum": 1,
      "maximum": 10000
    }
  },
  "required": [
    "sql",
    "row_limit"
  ],
  "additionalProperties": false
}
view source ↗

disabled 1

fdic_dataframe_drop

Drop a staged df_<id> dataframe and its provenance before its TTL expires, freeing the shared canvas once an analysis is done. Idempotent: dropping a name that is not staged returns dropped false.

disabledwould be destructive

Disabled. Dropping dataframes is turned off in this deployment; each staged table expires on its own TTL.

FDIC_DATAFRAME_DROP_ENABLED=true
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "pattern": "^df_[A-Z0-9]{5}_[A-Z0-9]{5}$",
      "description": "Dataframe to drop (df_XXXXX_XXXXX), as fdic_dataframe_describe lists it."
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false
}
view source ↗