fdic-mcp-server 1.2.8 → 1.2.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -32,7 +32,7 @@ var import_types = require("@modelcontextprotocol/sdk/types.js");
32
32
  var import_express = __toESM(require("express"));
33
33
 
34
34
  // src/constants.ts
35
- var VERSION = true ? "1.2.8" : process.env.npm_package_version ?? "0.0.0-dev";
35
+ var VERSION = true ? "1.2.10" : process.env.npm_package_version ?? "0.0.0-dev";
36
36
  var FDIC_API_BASE_URL = "https://banks.data.fdic.gov/api";
37
37
  var CHARACTER_LIMIT = 5e4;
38
38
  var DEFAULT_FDIC_MAX_RESPONSE_BYTES = 5 * 1024 * 1024;
@@ -31182,6 +31182,18 @@ function parseCommaSeparatedFields(value) {
31182
31182
  function quoteFieldList(fields) {
31183
31183
  return fields.map((field) => `'${field}'`).join(", ");
31184
31184
  }
31185
+ function findInvalidEndpointFields(endpoint, fields) {
31186
+ const metadata = getEndpointMetadata(endpoint);
31187
+ if (!metadata) {
31188
+ return [];
31189
+ }
31190
+ return fields.filter((field) => metadata.fields[field] === void 0);
31191
+ }
31192
+ function buildInvalidFieldError(endpoint, invalidFields) {
31193
+ return new Error(
31194
+ `Invalid field ${quoteFieldList(invalidFields)} for endpoint ${endpoint}. Use the endpoint-specific field catalog for ${endpoint}.`
31195
+ );
31196
+ }
31185
31197
  function getEndpointMetadata(endpoint) {
31186
31198
  const baseMetadata = FDIC_ENDPOINT_METADATA[endpoint];
31187
31199
  if (!baseMetadata) {
@@ -31212,13 +31224,9 @@ function validateEndpointQueryParams(endpoint, params) {
31212
31224
  }
31213
31225
  if (params.fields) {
31214
31226
  const requestedFields = parseCommaSeparatedFields(params.fields);
31215
- const invalidFields = requestedFields.filter(
31216
- (field) => metadata.fields[field] === void 0
31217
- );
31227
+ const invalidFields = findInvalidEndpointFields(endpoint, requestedFields);
31218
31228
  if (invalidFields.length > 0) {
31219
- throw new Error(
31220
- `Invalid field ${quoteFieldList(invalidFields)} for endpoint ${endpoint}. Use the endpoint-specific field catalog for ${endpoint}.`
31221
- );
31229
+ throw buildInvalidFieldError(endpoint, invalidFields);
31222
31230
  }
31223
31231
  }
31224
31232
  if (params.sort_by && metadata.fields[params.sort_by] === void 0) {
@@ -33438,6 +33446,19 @@ function validatePeerGroupParams(value) {
33438
33446
  }
33439
33447
  return null;
33440
33448
  }
33449
+ function validateExtraFields(extraFields) {
33450
+ if (!extraFields || extraFields.length === 0) {
33451
+ return null;
33452
+ }
33453
+ const invalidFields = findInvalidEndpointFields(
33454
+ ENDPOINTS.FINANCIALS,
33455
+ extraFields
33456
+ );
33457
+ if (invalidFields.length === 0) {
33458
+ return null;
33459
+ }
33460
+ return buildInvalidFieldError(ENDPOINTS.FINANCIALS, invalidFields);
33461
+ }
33441
33462
  var FINANCIAL_FIELDS = "CERT,ASSET,DEP,NETINC,ROA,ROE,NETNIM,EQTOT,LNLSNET,INTINC,EINTEXP,NONII,NONIX";
33442
33463
  function comparePeerEntriesByAsset(left, right) {
33443
33464
  const primary = (right.metrics.asset ?? 0) - (left.metrics.asset ?? 0);
@@ -33557,6 +33578,10 @@ Override precedence: cert derives defaults, then explicit params override them.`
33557
33578
  if (validationError) {
33558
33579
  return formatToolError(new Error(validationError));
33559
33580
  }
33581
+ const extraFieldsError = validateExtraFields(params.extra_fields);
33582
+ if (extraFieldsError) {
33583
+ return formatToolError(extraFieldsError);
33584
+ }
33560
33585
  await sendProgressNotification(
33561
33586
  server.server,
33562
33587
  progressToken,
package/dist/server.js CHANGED
@@ -46,7 +46,7 @@ var import_types = require("@modelcontextprotocol/sdk/types.js");
46
46
  var import_express = __toESM(require("express"));
47
47
 
48
48
  // src/constants.ts
49
- var VERSION = true ? "1.2.8" : process.env.npm_package_version ?? "0.0.0-dev";
49
+ var VERSION = true ? "1.2.10" : process.env.npm_package_version ?? "0.0.0-dev";
50
50
  var FDIC_API_BASE_URL = "https://banks.data.fdic.gov/api";
51
51
  var CHARACTER_LIMIT = 5e4;
52
52
  var DEFAULT_FDIC_MAX_RESPONSE_BYTES = 5 * 1024 * 1024;
@@ -31196,6 +31196,18 @@ function parseCommaSeparatedFields(value) {
31196
31196
  function quoteFieldList(fields) {
31197
31197
  return fields.map((field) => `'${field}'`).join(", ");
31198
31198
  }
31199
+ function findInvalidEndpointFields(endpoint, fields) {
31200
+ const metadata = getEndpointMetadata(endpoint);
31201
+ if (!metadata) {
31202
+ return [];
31203
+ }
31204
+ return fields.filter((field) => metadata.fields[field] === void 0);
31205
+ }
31206
+ function buildInvalidFieldError(endpoint, invalidFields) {
31207
+ return new Error(
31208
+ `Invalid field ${quoteFieldList(invalidFields)} for endpoint ${endpoint}. Use the endpoint-specific field catalog for ${endpoint}.`
31209
+ );
31210
+ }
31199
31211
  function getEndpointMetadata(endpoint) {
31200
31212
  const baseMetadata = FDIC_ENDPOINT_METADATA[endpoint];
31201
31213
  if (!baseMetadata) {
@@ -31226,13 +31238,9 @@ function validateEndpointQueryParams(endpoint, params) {
31226
31238
  }
31227
31239
  if (params.fields) {
31228
31240
  const requestedFields = parseCommaSeparatedFields(params.fields);
31229
- const invalidFields = requestedFields.filter(
31230
- (field) => metadata.fields[field] === void 0
31231
- );
31241
+ const invalidFields = findInvalidEndpointFields(endpoint, requestedFields);
31232
31242
  if (invalidFields.length > 0) {
31233
- throw new Error(
31234
- `Invalid field ${quoteFieldList(invalidFields)} for endpoint ${endpoint}. Use the endpoint-specific field catalog for ${endpoint}.`
31235
- );
31243
+ throw buildInvalidFieldError(endpoint, invalidFields);
31236
31244
  }
31237
31245
  }
31238
31246
  if (params.sort_by && metadata.fields[params.sort_by] === void 0) {
@@ -33452,6 +33460,19 @@ function validatePeerGroupParams(value) {
33452
33460
  }
33453
33461
  return null;
33454
33462
  }
33463
+ function validateExtraFields(extraFields) {
33464
+ if (!extraFields || extraFields.length === 0) {
33465
+ return null;
33466
+ }
33467
+ const invalidFields = findInvalidEndpointFields(
33468
+ ENDPOINTS.FINANCIALS,
33469
+ extraFields
33470
+ );
33471
+ if (invalidFields.length === 0) {
33472
+ return null;
33473
+ }
33474
+ return buildInvalidFieldError(ENDPOINTS.FINANCIALS, invalidFields);
33475
+ }
33455
33476
  var FINANCIAL_FIELDS = "CERT,ASSET,DEP,NETINC,ROA,ROE,NETNIM,EQTOT,LNLSNET,INTINC,EINTEXP,NONII,NONIX";
33456
33477
  function comparePeerEntriesByAsset(left, right) {
33457
33478
  const primary = (right.metrics.asset ?? 0) - (left.metrics.asset ?? 0);
@@ -33571,6 +33592,10 @@ Override precedence: cert derives defaults, then explicit params override them.`
33571
33592
  if (validationError) {
33572
33593
  return formatToolError(new Error(validationError));
33573
33594
  }
33595
+ const extraFieldsError = validateExtraFields(params.extra_fields);
33596
+ if (extraFieldsError) {
33597
+ return formatToolError(extraFieldsError);
33598
+ }
33574
33599
  await sendProgressNotification(
33575
33600
  server.server,
33576
33601
  progressToken,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fdic-mcp-server",
3
- "version": "1.2.8",
3
+ "version": "1.2.10",
4
4
  "description": "MCP server for the FDIC BankFind Suite API",
5
5
  "mcpName": "io.github.jflamb/fdic-mcp-server",
6
6
  "main": "dist/server.js",