fdic_search_history
Search for structural change events in FDIC-insured financial institutions, including mergers, acquisitions, name changes, charter conversions, and failures. Filter by certificate number, event type, date range, or location to analyze institutional history.
Instructions
Search for structural change events for FDIC-insured financial institutions.
Returns records on mergers, acquisitions, name changes, charter conversions, failures, and other significant structural events.
Common filter examples:
History for a specific bank: CERT:3511
Mergers: TYPE:merger
Failures: TYPE:failure
Name changes: CHANGECODE:CO
By date range: PROCDATE:[2008-01-01 TO 2009-12-31]
By state: PSTALP:CA (two-letter state code)
Event types (TYPE): merger = institution was merged into another failure = institution failed assistance = received FDIC assistance transaction insurance = insurance-related event (new coverage, termination)
Common change codes (CHANGECODE): CO = name change CR = charter conversion DC = deposit assumption change MA = merger/acquisition (absorbed by another institution) NI = new institution insured TC = trust company conversion
Key returned fields:
CERT: FDIC Certificate Number
INSTNAME: Institution name
CLASS: Charter class at time of change
PCITY, PSTALP: Location (city, two-letter state code)
PROCDATE: Processing date of the change (YYYY-MM-DD)
EFFDATE: Effective date of the change (YYYY-MM-DD)
ENDEFYMD: End effective date
PCERT: Predecessor/successor CERT (for mergers)
TYPE: Type of structural change (see above)
CHANGECODE: Code for type of change (see above)
CHANGECODE_DESC: Human-readable description of the change code
INSDATE: Insurance date
Args:
cert (number, optional): Filter by institution CERT number
filters (string, optional): ElasticSearch query filters
fields (string, optional): Comma-separated field names
limit (number): Records to return (default: 20)
offset (number): Pagination offset (default: 0)
sort_by (string, optional): Field to sort by (e.g., PROCDATE)
sort_order ('ASC'|'DESC'): Sort direction (default: 'ASC')
Prefer concise human-readable summaries or tables when answering users. Structured fields are available for totals, pagination, and event records.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | FDIC API filter using ElasticSearch query string syntax. Combine conditions with AND/OR, use quotes for multi-word values, and [min TO max] for ranges (* = unbounded). Common fields: NAME (institution name), STNAME (state name), STALP (two-letter state code), CERT (certificate number), ASSET (total assets in $thousands), ACTIVE (1=active, 0=inactive). Examples: STNAME:"California", ACTIVE:1 AND ASSET:[1000000 TO *], NAME:"Chase" | |
| fields | No | Comma-separated list of FDIC field names to return. Leave empty to return all fields. Field names are ALL_CAPS (e.g., NAME, CERT, ASSET, DEP, STALP). Example: NAME,CERT,ASSET,DEP,STALP | |
| limit | No | Maximum number of records to return (1-10000, default: 20) | |
| offset | No | Number of records to skip for pagination (default: 0) | |
| sort_by | No | Field name to sort results by. Example: ASSET, NAME, FAILDATE | |
| sort_order | No | Sort direction: ASC (ascending) or DESC (descending) | ASC |
| cert | No | Filter by FDIC Certificate Number to get history for a specific institution |
Implementation Reference
- src/tools/history.ts:89-125 (handler)The handler function for 'fdic_search_history', which queries the FDIC history endpoint and processes the results.
async ({ cert, ...params }) => { try { const response = await queryEndpoint(ENDPOINTS.HISTORY, { ...params, filters: buildFilterString({ cert, rawFilters: params.filters, rawFiltersPosition: "last", }), }); const records = extractRecords(response); const pagination = buildPaginationInfo( response.meta.total, params.offset ?? 0, records.length, ); const output = { ...pagination, events: records }; const text = truncateIfNeeded( formatSearchResultText("events", records, pagination, [ "CERT", "INSTNAME", "TYPE", "PROCDATE", "PCITY", "PSTALP", ]), CHARACTER_LIMIT, "Request fewer fields, narrow your filters, or paginate with limit/offset.", ); return { content: [{ type: "text", text }], structuredContent: output, }; } catch (err) { return formatToolError(err); } }, - src/tools/history.ts:15-24 (schema)The input schema (zod) defining the arguments for 'fdic_search_history'.
const HistoryQuerySchema = CommonQuerySchema.extend({ cert: z .number() .int() .positive() .optional() .describe( "Filter by FDIC Certificate Number to get history for a specific institution", ), }); - src/tools/history.ts:27-126 (registration)The registration of 'fdic_search_history' tool using the McpServer instance.
server.registerTool( "fdic_search_history", { title: "Search Institution History / Structure Changes", description: `Search for structural change events for FDIC-insured financial institutions. Returns records on mergers, acquisitions, name changes, charter conversions, failures, and other significant structural events. Common filter examples: - History for a specific bank: CERT:3511 - Mergers: TYPE:merger - Failures: TYPE:failure - Name changes: CHANGECODE:CO - By date range: PROCDATE:[2008-01-01 TO 2009-12-31] - By state: PSTALP:CA (two-letter state code) Event types (TYPE): merger = institution was merged into another failure = institution failed assistance = received FDIC assistance transaction insurance = insurance-related event (new coverage, termination) Common change codes (CHANGECODE): CO = name change CR = charter conversion DC = deposit assumption change MA = merger/acquisition (absorbed by another institution) NI = new institution insured TC = trust company conversion Key returned fields: - CERT: FDIC Certificate Number - INSTNAME: Institution name - CLASS: Charter class at time of change - PCITY, PSTALP: Location (city, two-letter state code) - PROCDATE: Processing date of the change (YYYY-MM-DD) - EFFDATE: Effective date of the change (YYYY-MM-DD) - ENDEFYMD: End effective date - PCERT: Predecessor/successor CERT (for mergers) - TYPE: Type of structural change (see above) - CHANGECODE: Code for type of change (see above) - CHANGECODE_DESC: Human-readable description of the change code - INSDATE: Insurance date Args: - cert (number, optional): Filter by institution CERT number - filters (string, optional): ElasticSearch query filters - fields (string, optional): Comma-separated field names - limit (number): Records to return (default: 20) - offset (number): Pagination offset (default: 0) - sort_by (string, optional): Field to sort by (e.g., PROCDATE) - sort_order ('ASC'|'DESC'): Sort direction (default: 'ASC') Prefer concise human-readable summaries or tables when answering users. Structured fields are available for totals, pagination, and event records.`, inputSchema: HistoryQuerySchema, annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true, }, }, async ({ cert, ...params }) => { try { const response = await queryEndpoint(ENDPOINTS.HISTORY, { ...params, filters: buildFilterString({ cert, rawFilters: params.filters, rawFiltersPosition: "last", }), }); const records = extractRecords(response); const pagination = buildPaginationInfo( response.meta.total, params.offset ?? 0, records.length, ); const output = { ...pagination, events: records }; const text = truncateIfNeeded( formatSearchResultText("events", records, pagination, [ "CERT", "INSTNAME", "TYPE", "PROCDATE", "PCITY", "PSTALP", ]), CHARACTER_LIMIT, "Request fewer fields, narrow your filters, or paginate with limit/offset.", ); return { content: [{ type: "text", text }], structuredContent: output, }; } catch (err) { return formatToolError(err); } }, );