us-gov-open-data-mcp 1.0.0
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/README.md +211 -0
- package/dist/client.d.ts +54 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +388 -0
- package/dist/client.js.map +1 -0
- package/dist/instructions.d.ts +8 -0
- package/dist/instructions.d.ts.map +1 -0
- package/dist/instructions.js +549 -0
- package/dist/instructions.js.map +1 -0
- package/dist/modules/bea.d.ts +28 -0
- package/dist/modules/bea.d.ts.map +1 -0
- package/dist/modules/bea.js +158 -0
- package/dist/modules/bea.js.map +1 -0
- package/dist/modules/bls.d.ts +29 -0
- package/dist/modules/bls.d.ts.map +1 -0
- package/dist/modules/bls.js +244 -0
- package/dist/modules/bls.js.map +1 -0
- package/dist/modules/bts.d.ts +26 -0
- package/dist/modules/bts.d.ts.map +1 -0
- package/dist/modules/bts.js +112 -0
- package/dist/modules/bts.js.map +1 -0
- package/dist/modules/cdc.d.ts +26 -0
- package/dist/modules/cdc.d.ts.map +1 -0
- package/dist/modules/cdc.js +310 -0
- package/dist/modules/cdc.js.map +1 -0
- package/dist/modules/census.d.ts +23 -0
- package/dist/modules/census.d.ts.map +1 -0
- package/dist/modules/census.js +141 -0
- package/dist/modules/census.js.map +1 -0
- package/dist/modules/cfpb.d.ts +20 -0
- package/dist/modules/cfpb.d.ts.map +1 -0
- package/dist/modules/cfpb.js +135 -0
- package/dist/modules/cfpb.js.map +1 -0
- package/dist/modules/clinical-trials.d.ts +22 -0
- package/dist/modules/clinical-trials.d.ts.map +1 -0
- package/dist/modules/clinical-trials.js +171 -0
- package/dist/modules/clinical-trials.js.map +1 -0
- package/dist/modules/cms.d.ts +21 -0
- package/dist/modules/cms.d.ts.map +1 -0
- package/dist/modules/cms.js +135 -0
- package/dist/modules/cms.js.map +1 -0
- package/dist/modules/college-scorecard.d.ts +39 -0
- package/dist/modules/college-scorecard.d.ts.map +1 -0
- package/dist/modules/college-scorecard.js +192 -0
- package/dist/modules/college-scorecard.js.map +1 -0
- package/dist/modules/congress.d.ts +28 -0
- package/dist/modules/congress.d.ts.map +1 -0
- package/dist/modules/congress.js +883 -0
- package/dist/modules/congress.js.map +1 -0
- package/dist/modules/dol.d.ts +27 -0
- package/dist/modules/dol.d.ts.map +1 -0
- package/dist/modules/dol.js +209 -0
- package/dist/modules/dol.js.map +1 -0
- package/dist/modules/eia.d.ts +33 -0
- package/dist/modules/eia.d.ts.map +1 -0
- package/dist/modules/eia.js +227 -0
- package/dist/modules/eia.js.map +1 -0
- package/dist/modules/epa.d.ts +21 -0
- package/dist/modules/epa.d.ts.map +1 -0
- package/dist/modules/epa.js +91 -0
- package/dist/modules/epa.js.map +1 -0
- package/dist/modules/fbi.d.ts +28 -0
- package/dist/modules/fbi.d.ts.map +1 -0
- package/dist/modules/fbi.js +143 -0
- package/dist/modules/fbi.js.map +1 -0
- package/dist/modules/fda.d.ts +35 -0
- package/dist/modules/fda.d.ts.map +1 -0
- package/dist/modules/fda.js +262 -0
- package/dist/modules/fda.js.map +1 -0
- package/dist/modules/fdic.d.ts +21 -0
- package/dist/modules/fdic.d.ts.map +1 -0
- package/dist/modules/fdic.js +186 -0
- package/dist/modules/fdic.js.map +1 -0
- package/dist/modules/fec.d.ts +29 -0
- package/dist/modules/fec.d.ts.map +1 -0
- package/dist/modules/fec.js +282 -0
- package/dist/modules/fec.js.map +1 -0
- package/dist/modules/federal-register.d.ts +24 -0
- package/dist/modules/federal-register.d.ts.map +1 -0
- package/dist/modules/federal-register.js +184 -0
- package/dist/modules/federal-register.js.map +1 -0
- package/dist/modules/fema.d.ts +20 -0
- package/dist/modules/fema.d.ts.map +1 -0
- package/dist/modules/fema.js +156 -0
- package/dist/modules/fema.js.map +1 -0
- package/dist/modules/fred.d.ts +40 -0
- package/dist/modules/fred.d.ts.map +1 -0
- package/dist/modules/fred.js +143 -0
- package/dist/modules/fred.js.map +1 -0
- package/dist/modules/govinfo.d.ts +24 -0
- package/dist/modules/govinfo.d.ts.map +1 -0
- package/dist/modules/govinfo.js +147 -0
- package/dist/modules/govinfo.js.map +1 -0
- package/dist/modules/hud.d.ts +17 -0
- package/dist/modules/hud.d.ts.map +1 -0
- package/dist/modules/hud.js +170 -0
- package/dist/modules/hud.js.map +1 -0
- package/dist/modules/naep.d.ts +27 -0
- package/dist/modules/naep.d.ts.map +1 -0
- package/dist/modules/naep.js +210 -0
- package/dist/modules/naep.js.map +1 -0
- package/dist/modules/nhtsa.d.ts +13 -0
- package/dist/modules/nhtsa.d.ts.map +1 -0
- package/dist/modules/nhtsa.js +196 -0
- package/dist/modules/nhtsa.js.map +1 -0
- package/dist/modules/noaa.d.ts +41 -0
- package/dist/modules/noaa.d.ts.map +1 -0
- package/dist/modules/noaa.js +135 -0
- package/dist/modules/noaa.js.map +1 -0
- package/dist/modules/nrel.d.ts +25 -0
- package/dist/modules/nrel.d.ts.map +1 -0
- package/dist/modules/nrel.js +87 -0
- package/dist/modules/nrel.js.map +1 -0
- package/dist/modules/regulations.d.ts +24 -0
- package/dist/modules/regulations.d.ts.map +1 -0
- package/dist/modules/regulations.js +173 -0
- package/dist/modules/regulations.js.map +1 -0
- package/dist/modules/sec.d.ts +25 -0
- package/dist/modules/sec.d.ts.map +1 -0
- package/dist/modules/sec.js +192 -0
- package/dist/modules/sec.js.map +1 -0
- package/dist/modules/senate-lobbying.d.ts +21 -0
- package/dist/modules/senate-lobbying.d.ts.map +1 -0
- package/dist/modules/senate-lobbying.js +189 -0
- package/dist/modules/senate-lobbying.js.map +1 -0
- package/dist/modules/treasury.d.ts +23 -0
- package/dist/modules/treasury.d.ts.map +1 -0
- package/dist/modules/treasury.js +234 -0
- package/dist/modules/treasury.js.map +1 -0
- package/dist/modules/usaspending.d.ts +19 -0
- package/dist/modules/usaspending.d.ts.map +1 -0
- package/dist/modules/usaspending.js +204 -0
- package/dist/modules/usaspending.js.map +1 -0
- package/dist/modules/usda-fooddata.d.ts +24 -0
- package/dist/modules/usda-fooddata.d.ts.map +1 -0
- package/dist/modules/usda-fooddata.js +118 -0
- package/dist/modules/usda-fooddata.js.map +1 -0
- package/dist/modules/usda-nass.d.ts +46 -0
- package/dist/modules/usda-nass.d.ts.map +1 -0
- package/dist/modules/usda-nass.js +151 -0
- package/dist/modules/usda-nass.js.map +1 -0
- package/dist/modules/usgs.d.ts +21 -0
- package/dist/modules/usgs.d.ts.map +1 -0
- package/dist/modules/usgs.js +203 -0
- package/dist/modules/usgs.js.map +1 -0
- package/dist/modules/uspto.d.ts +13 -0
- package/dist/modules/uspto.d.ts.map +1 -0
- package/dist/modules/uspto.js +157 -0
- package/dist/modules/uspto.js.map +1 -0
- package/dist/modules/world-bank.d.ts +21 -0
- package/dist/modules/world-bank.d.ts.map +1 -0
- package/dist/modules/world-bank.js +130 -0
- package/dist/modules/world-bank.js.map +1 -0
- package/dist/prompts.d.ts +12 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +858 -0
- package/dist/prompts.js.map +1 -0
- package/dist/sdk/bea.d.ts +111 -0
- package/dist/sdk/bea.d.ts.map +1 -0
- package/dist/sdk/bea.js +242 -0
- package/dist/sdk/bea.js.map +1 -0
- package/dist/sdk/bls.d.ts +65 -0
- package/dist/sdk/bls.d.ts.map +1 -0
- package/dist/sdk/bls.js +203 -0
- package/dist/sdk/bls.js.map +1 -0
- package/dist/sdk/bts.d.ts +108 -0
- package/dist/sdk/bts.d.ts.map +1 -0
- package/dist/sdk/bts.js +121 -0
- package/dist/sdk/bts.js.map +1 -0
- package/dist/sdk/cdc.d.ts +105 -0
- package/dist/sdk/cdc.d.ts.map +1 -0
- package/dist/sdk/cdc.js +222 -0
- package/dist/sdk/cdc.js.map +1 -0
- package/dist/sdk/census.d.ts +47 -0
- package/dist/sdk/census.d.ts.map +1 -0
- package/dist/sdk/census.js +99 -0
- package/dist/sdk/census.js.map +1 -0
- package/dist/sdk/cfpb.d.ts +148 -0
- package/dist/sdk/cfpb.d.ts.map +1 -0
- package/dist/sdk/cfpb.js +153 -0
- package/dist/sdk/cfpb.js.map +1 -0
- package/dist/sdk/clinical-trials.d.ts +214 -0
- package/dist/sdk/clinical-trials.d.ts.map +1 -0
- package/dist/sdk/clinical-trials.js +134 -0
- package/dist/sdk/clinical-trials.js.map +1 -0
- package/dist/sdk/cms.d.ts +81 -0
- package/dist/sdk/cms.d.ts.map +1 -0
- package/dist/sdk/cms.js +227 -0
- package/dist/sdk/cms.js.map +1 -0
- package/dist/sdk/college-scorecard.d.ts +63 -0
- package/dist/sdk/college-scorecard.d.ts.map +1 -0
- package/dist/sdk/college-scorecard.js +131 -0
- package/dist/sdk/college-scorecard.js.map +1 -0
- package/dist/sdk/congress.d.ts +575 -0
- package/dist/sdk/congress.d.ts.map +1 -0
- package/dist/sdk/congress.js +659 -0
- package/dist/sdk/congress.js.map +1 -0
- package/dist/sdk/dol.d.ts +299 -0
- package/dist/sdk/dol.d.ts.map +1 -0
- package/dist/sdk/dol.js +252 -0
- package/dist/sdk/dol.js.map +1 -0
- package/dist/sdk/eia.d.ts +91 -0
- package/dist/sdk/eia.d.ts.map +1 -0
- package/dist/sdk/eia.js +156 -0
- package/dist/sdk/eia.js.map +1 -0
- package/dist/sdk/epa.d.ts +128 -0
- package/dist/sdk/epa.d.ts.map +1 -0
- package/dist/sdk/epa.js +120 -0
- package/dist/sdk/epa.js.map +1 -0
- package/dist/sdk/fbi.d.ts +48 -0
- package/dist/sdk/fbi.d.ts.map +1 -0
- package/dist/sdk/fbi.js +69 -0
- package/dist/sdk/fbi.js.map +1 -0
- package/dist/sdk/fda.d.ts +356 -0
- package/dist/sdk/fda.d.ts.map +1 -0
- package/dist/sdk/fda.js +162 -0
- package/dist/sdk/fda.js.map +1 -0
- package/dist/sdk/fdic.d.ts +227 -0
- package/dist/sdk/fdic.d.ts.map +1 -0
- package/dist/sdk/fdic.js +172 -0
- package/dist/sdk/fdic.js.map +1 -0
- package/dist/sdk/fec.d.ts +142 -0
- package/dist/sdk/fec.d.ts.map +1 -0
- package/dist/sdk/fec.js +92 -0
- package/dist/sdk/fec.js.map +1 -0
- package/dist/sdk/federal-register.d.ts +88 -0
- package/dist/sdk/federal-register.d.ts.map +1 -0
- package/dist/sdk/federal-register.js +100 -0
- package/dist/sdk/federal-register.js.map +1 -0
- package/dist/sdk/fema.d.ts +137 -0
- package/dist/sdk/fema.d.ts.map +1 -0
- package/dist/sdk/fema.js +197 -0
- package/dist/sdk/fema.js.map +1 -0
- package/dist/sdk/fred.d.ts +72 -0
- package/dist/sdk/fred.d.ts.map +1 -0
- package/dist/sdk/fred.js +59 -0
- package/dist/sdk/fred.js.map +1 -0
- package/dist/sdk/govinfo.d.ts +64 -0
- package/dist/sdk/govinfo.d.ts.map +1 -0
- package/dist/sdk/govinfo.js +187 -0
- package/dist/sdk/govinfo.js.map +1 -0
- package/dist/sdk/hud.d.ts +87 -0
- package/dist/sdk/hud.d.ts.map +1 -0
- package/dist/sdk/hud.js +91 -0
- package/dist/sdk/hud.js.map +1 -0
- package/dist/sdk/index.d.ts +51 -0
- package/dist/sdk/index.d.ts.map +1 -0
- package/dist/sdk/index.js +51 -0
- package/dist/sdk/index.js.map +1 -0
- package/dist/sdk/naep.d.ts +93 -0
- package/dist/sdk/naep.d.ts.map +1 -0
- package/dist/sdk/naep.js +163 -0
- package/dist/sdk/naep.js.map +1 -0
- package/dist/sdk/nhtsa.d.ts +169 -0
- package/dist/sdk/nhtsa.d.ts.map +1 -0
- package/dist/sdk/nhtsa.js +102 -0
- package/dist/sdk/nhtsa.js.map +1 -0
- package/dist/sdk/noaa.d.ts +72 -0
- package/dist/sdk/noaa.d.ts.map +1 -0
- package/dist/sdk/noaa.js +64 -0
- package/dist/sdk/noaa.js.map +1 -0
- package/dist/sdk/nrel.d.ts +145 -0
- package/dist/sdk/nrel.d.ts.map +1 -0
- package/dist/sdk/nrel.js +93 -0
- package/dist/sdk/nrel.js.map +1 -0
- package/dist/sdk/regulations.d.ts +146 -0
- package/dist/sdk/regulations.d.ts.map +1 -0
- package/dist/sdk/regulations.js +103 -0
- package/dist/sdk/regulations.js.map +1 -0
- package/dist/sdk/sec.d.ts +114 -0
- package/dist/sdk/sec.d.ts.map +1 -0
- package/dist/sdk/sec.js +151 -0
- package/dist/sdk/sec.js.map +1 -0
- package/dist/sdk/senate-lobbying.d.ts +147 -0
- package/dist/sdk/senate-lobbying.d.ts.map +1 -0
- package/dist/sdk/senate-lobbying.js +125 -0
- package/dist/sdk/senate-lobbying.js.map +1 -0
- package/dist/sdk/treasury.d.ts +59 -0
- package/dist/sdk/treasury.d.ts.map +1 -0
- package/dist/sdk/treasury.js +1397 -0
- package/dist/sdk/treasury.js.map +1 -0
- package/dist/sdk/usaspending.d.ts +126 -0
- package/dist/sdk/usaspending.d.ts.map +1 -0
- package/dist/sdk/usaspending.js +270 -0
- package/dist/sdk/usaspending.js.map +1 -0
- package/dist/sdk/usda-fooddata.d.ts +112 -0
- package/dist/sdk/usda-fooddata.d.ts.map +1 -0
- package/dist/sdk/usda-fooddata.js +80 -0
- package/dist/sdk/usda-fooddata.js.map +1 -0
- package/dist/sdk/usda-nass.d.ts +75 -0
- package/dist/sdk/usda-nass.d.ts.map +1 -0
- package/dist/sdk/usda-nass.js +83 -0
- package/dist/sdk/usda-nass.js.map +1 -0
- package/dist/sdk/usgs.d.ts +221 -0
- package/dist/sdk/usgs.d.ts.map +1 -0
- package/dist/sdk/usgs.js +182 -0
- package/dist/sdk/usgs.js.map +1 -0
- package/dist/sdk/uspto.d.ts +109 -0
- package/dist/sdk/uspto.d.ts.map +1 -0
- package/dist/sdk/uspto.js +286 -0
- package/dist/sdk/uspto.js.map +1 -0
- package/dist/sdk/world-bank.d.ts +78 -0
- package/dist/sdk/world-bank.d.ts.map +1 -0
- package/dist/sdk/world-bank.js +72 -0
- package/dist/sdk/world-bank.js.map +1 -0
- package/dist/server.d.ts +22 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +196 -0
- package/dist/server.js.map +1 -0
- package/package.json +113 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eia.js","sourceRoot":"","sources":["../../src/modules/eia.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EPA MCP module — air quality, facility compliance, UV index.
|
|
3
|
+
*/
|
|
4
|
+
import type { Tool } from "fastmcp";
|
|
5
|
+
export declare const name = "epa";
|
|
6
|
+
export declare const displayName = "EPA (Environmental Protection Agency)";
|
|
7
|
+
export declare const description = "Air quality data, facility environmental compliance/violations, UV index forecasts";
|
|
8
|
+
export declare const workflow = "epa_air_quality for pollution data \u2192 epa_facilities for compliance violations \u2192 epa_uv for UV forecasts";
|
|
9
|
+
export declare const tips = "Air quality tables: AIR_QUALITY_MEASURES (county-level AQI), MONITORING_SITE (station locations). UV index: 0-2 Low, 3-5 Moderate, 6-7 High, 8-10 Very High, 11+ Extreme.";
|
|
10
|
+
export declare const reference: {
|
|
11
|
+
airTables: Record<string, string>;
|
|
12
|
+
uvScale: Record<string, string>;
|
|
13
|
+
docs: {
|
|
14
|
+
Envirofacts: string;
|
|
15
|
+
ECHO: string;
|
|
16
|
+
"Air Quality System": string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
export declare const tools: Tool<any, any>[];
|
|
20
|
+
export { clearCache } from "../sdk/epa.js";
|
|
21
|
+
//# sourceMappingURL=epa.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"epa.d.ts","sourceRoot":"","sources":["../../src/modules/epa.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAGpC,eAAO,MAAM,IAAI,QAAQ,CAAC;AAC1B,eAAO,MAAM,WAAW,0CAA0C,CAAC;AACnE,eAAO,MAAM,WAAW,uFAAuF,CAAC;AAChH,eAAO,MAAM,QAAQ,sHAA4G,CAAC;AAClI,eAAO,MAAM,IAAI,8KAA8K,CAAC;AAEhM,eAAO,MAAM,SAAS;;;;;;;;CAQrB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAuEjC,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EPA MCP module — air quality, facility compliance, UV index.
|
|
3
|
+
*/
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import { getAirQuality, searchFacilities, getUVIndex, AIR_TABLES, UV_INDEX_SCALE } from "../sdk/epa.js";
|
|
6
|
+
export const name = "epa";
|
|
7
|
+
export const displayName = "EPA (Environmental Protection Agency)";
|
|
8
|
+
export const description = "Air quality data, facility environmental compliance/violations, UV index forecasts";
|
|
9
|
+
export const workflow = "epa_air_quality for pollution data → epa_facilities for compliance violations → epa_uv for UV forecasts";
|
|
10
|
+
export const tips = "Air quality tables: AIR_QUALITY_MEASURES (county-level AQI), MONITORING_SITE (station locations). UV index: 0-2 Low, 3-5 Moderate, 6-7 High, 8-10 Very High, 11+ Extreme.";
|
|
11
|
+
export const reference = {
|
|
12
|
+
airTables: AIR_TABLES,
|
|
13
|
+
uvScale: UV_INDEX_SCALE,
|
|
14
|
+
docs: {
|
|
15
|
+
"Envirofacts": "https://enviro.epa.gov/",
|
|
16
|
+
"ECHO": "https://echo.epa.gov/",
|
|
17
|
+
"Air Quality System": "https://www.epa.gov/aqs",
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
export const tools = [
|
|
21
|
+
{
|
|
22
|
+
name: "epa_air_quality",
|
|
23
|
+
description: "Get air quality data by state from EPA Envirofacts.\n" +
|
|
24
|
+
"Returns county-level air quality measures including ozone and particulate matter (PM2.5).",
|
|
25
|
+
annotations: { title: "EPA: Air Quality", readOnlyHint: true },
|
|
26
|
+
parameters: z.object({
|
|
27
|
+
state: z.string().describe("Two-letter state code: 'CA', 'TX', 'NY'"),
|
|
28
|
+
table: z.string().optional().describe("'AIR_QUALITY_MEASURES' (default), 'MONITORING_SITE'"),
|
|
29
|
+
rows: z.string().optional().describe("Row range: '0:99' (default). Use '0:499' for more data."),
|
|
30
|
+
}),
|
|
31
|
+
execute: async ({ state, table, rows }) => {
|
|
32
|
+
const data = await getAirQuality({ state, table, rows });
|
|
33
|
+
if (!Array.isArray(data) || !data.length)
|
|
34
|
+
return `No air quality data found for ${state}.`;
|
|
35
|
+
return JSON.stringify({
|
|
36
|
+
summary: `EPA air quality: ${data.length} records for ${state}`,
|
|
37
|
+
records: data.slice(0, 100),
|
|
38
|
+
});
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: "epa_facilities",
|
|
43
|
+
description: "Search EPA-regulated facilities for environmental compliance and violations.\n" +
|
|
44
|
+
"Find facilities with air or water permit violations, inspections, and enforcement actions.\n" +
|
|
45
|
+
"Media types: 'air' (Clean Air Act), 'water' (Clean Water Act).",
|
|
46
|
+
annotations: { title: "EPA: Facility Compliance", readOnlyHint: true },
|
|
47
|
+
parameters: z.object({
|
|
48
|
+
state: z.string().describe("Two-letter state code: 'CA', 'TX', 'NY'"),
|
|
49
|
+
media_type: z.string().optional().describe("'air' (Clean Air Act) or 'water' (Clean Water Act). Default: air"),
|
|
50
|
+
major_only: z.boolean().optional().describe("Only show major facilities (true/false, default true)"),
|
|
51
|
+
active_only: z.boolean().optional().describe("Only show active facilities (true/false, default true)"),
|
|
52
|
+
limit: z.number().int().max(1000).optional().describe("Max results (default 20)"),
|
|
53
|
+
}),
|
|
54
|
+
execute: async ({ state, media_type, major_only, active_only, limit }) => {
|
|
55
|
+
const data = await searchFacilities({
|
|
56
|
+
state, mediaType: media_type,
|
|
57
|
+
majorOnly: major_only !== false,
|
|
58
|
+
activeOnly: active_only !== false,
|
|
59
|
+
responseset: limit,
|
|
60
|
+
});
|
|
61
|
+
const results = data?.Results?.Facilities || data?.Results || [];
|
|
62
|
+
if (!Array.isArray(results) || !results.length)
|
|
63
|
+
return `No facilities found in ${state}.`;
|
|
64
|
+
return JSON.stringify({
|
|
65
|
+
summary: `EPA facilities in ${state}: ${results.length} records (${media_type || "air"})`,
|
|
66
|
+
results: results.slice(0, 50),
|
|
67
|
+
});
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: "epa_uv_index",
|
|
72
|
+
description: "Get UV index forecast for a U.S. ZIP code.\n" +
|
|
73
|
+
"UV Scale: 0-2 Low, 3-5 Moderate, 6-7 High, 8-10 Very High, 11+ Extreme.\n" +
|
|
74
|
+
"Useful for health recommendations — high UV correlates with skin cancer risk.",
|
|
75
|
+
annotations: { title: "EPA: UV Index Forecast", readOnlyHint: true },
|
|
76
|
+
parameters: z.object({
|
|
77
|
+
zip: z.string().describe("5-digit ZIP code: '10001', '90210', '60601'"),
|
|
78
|
+
}),
|
|
79
|
+
execute: async ({ zip }) => {
|
|
80
|
+
const data = await getUVIndex(zip);
|
|
81
|
+
if (!Array.isArray(data) || !data.length)
|
|
82
|
+
return `No UV forecast data found for ZIP ${zip}.`;
|
|
83
|
+
return JSON.stringify({
|
|
84
|
+
summary: `UV index forecast for ZIP ${zip}: ${data.length} forecasts`,
|
|
85
|
+
forecasts: data.slice(0, 10),
|
|
86
|
+
});
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
];
|
|
90
|
+
export { clearCache } from "../sdk/epa.js";
|
|
91
|
+
//# sourceMappingURL=epa.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"epa.js","sourceRoot":"","sources":["../../src/modules/epa.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FBI Crime Data Explorer MCP module — tools + metadata.
|
|
3
|
+
* Delegates all API calls to sdk/fbi.
|
|
4
|
+
*
|
|
5
|
+
* Tools return raw JSON data — no markdown formatting. The client decides how to present it.
|
|
6
|
+
*/
|
|
7
|
+
import type { Tool, InputPrompt } from "fastmcp";
|
|
8
|
+
export declare const name = "fbi";
|
|
9
|
+
export declare const displayName = "FBI Crime Data Explorer";
|
|
10
|
+
export declare const description = "National/state crime estimates, arrests, offense demographics";
|
|
11
|
+
export declare const auth: {
|
|
12
|
+
envVar: string;
|
|
13
|
+
signup: string;
|
|
14
|
+
};
|
|
15
|
+
export declare const workflow = "fbi_crime_national or fbi_crime_by_state \u2192 fbi_arrest_data for detail";
|
|
16
|
+
export declare const tips = "State codes: two-letter abbreviations (CA, TX, NY). Data typically available up to 1-2 years ago.";
|
|
17
|
+
export declare const reference: {
|
|
18
|
+
offenseTypes: Record<string, string>;
|
|
19
|
+
docs: {
|
|
20
|
+
"API Docs": string;
|
|
21
|
+
Explorer: string;
|
|
22
|
+
"Get Key": string;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
export declare const tools: Tool<any, any>[];
|
|
26
|
+
export declare const prompts: InputPrompt<any, any>[];
|
|
27
|
+
export { clearCache } from "../sdk/fbi.js";
|
|
28
|
+
//# sourceMappingURL=fbi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fbi.d.ts","sourceRoot":"","sources":["../../src/modules/fbi.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAWjD,eAAO,MAAM,IAAI,QAAQ,CAAC;AAC1B,eAAO,MAAM,WAAW,4BAA4B,CAAC;AACrD,eAAO,MAAM,WAAW,kEAAkE,CAAC;AAC3F,eAAO,MAAM,IAAI;;;CAAyE,CAAC;AAC3F,eAAO,MAAM,QAAQ,+EAA0E,CAAC;AAChG,eAAO,MAAM,IAAI,sGAAsG,CAAC;AAExH,eAAO,MAAM,SAAS;kBAaf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;CAM5B,CAAC;AA8BF,eAAO,MAAM,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAyEjC,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,EAW1C,CAAC;AAIF,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FBI Crime Data Explorer MCP module — tools + metadata.
|
|
3
|
+
* Delegates all API calls to sdk/fbi.
|
|
4
|
+
*
|
|
5
|
+
* Tools return raw JSON data — no markdown formatting. The client decides how to present it.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
import { getCrimeByState, getNationalCrime, getArrestData, } from "../sdk/fbi.js";
|
|
9
|
+
// ─── Metadata (server.ts reads these) ────────────────────────────────
|
|
10
|
+
export const name = "fbi";
|
|
11
|
+
export const displayName = "FBI Crime Data Explorer";
|
|
12
|
+
export const description = "National/state crime estimates, arrests, offense demographics";
|
|
13
|
+
export const auth = { envVar: "DATA_GOV_API_KEY", signup: "https://api.data.gov/signup/" };
|
|
14
|
+
export const workflow = "fbi_crime_national or fbi_crime_by_state → fbi_arrest_data for detail";
|
|
15
|
+
export const tips = "State codes: two-letter abbreviations (CA, TX, NY). Data typically available up to 1-2 years ago.";
|
|
16
|
+
export const reference = {
|
|
17
|
+
offenseTypes: {
|
|
18
|
+
"aggravated-assault": "Aggravated Assault",
|
|
19
|
+
"burglary": "Burglary",
|
|
20
|
+
"larceny": "Larceny/Theft",
|
|
21
|
+
"motor-vehicle-theft": "Motor Vehicle Theft",
|
|
22
|
+
"homicide": "Murder and Nonnegligent Manslaughter",
|
|
23
|
+
"rape": "Rape",
|
|
24
|
+
"robbery": "Robbery",
|
|
25
|
+
"arson": "Arson",
|
|
26
|
+
"violent-crime": "Violent Crime (total)",
|
|
27
|
+
"property-crime": "Property Crime (total)",
|
|
28
|
+
"drug-abuse": "Drug Abuse Violations",
|
|
29
|
+
},
|
|
30
|
+
docs: {
|
|
31
|
+
"API Docs": "https://crime-data-explorer.fr.cloud.gov/pages/docApi",
|
|
32
|
+
"Explorer": "https://crime-data-explorer.fr.cloud.gov/",
|
|
33
|
+
"Get Key": "https://api.data.gov/signup/",
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
// ─── Helpers ─────────────────────────────────────────────────────────
|
|
37
|
+
function summarizeCrime(d) {
|
|
38
|
+
return {
|
|
39
|
+
year: d.year ?? d.data_year ?? null,
|
|
40
|
+
population: d.population ?? null,
|
|
41
|
+
violentCrime: d.violent_crime ?? null,
|
|
42
|
+
propertyCrime: d.property_crime ?? null,
|
|
43
|
+
homicide: d.homicide ?? null,
|
|
44
|
+
robbery: d.robbery ?? null,
|
|
45
|
+
aggravatedAssault: d.aggravated_assault ?? null,
|
|
46
|
+
burglary: d.burglary ?? null,
|
|
47
|
+
larceny: d.larceny ?? null,
|
|
48
|
+
motorVehicleTheft: d.motor_vehicle_theft ?? null,
|
|
49
|
+
rape: d.rape ?? null,
|
|
50
|
+
arson: d.arson ?? null,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
function summarizeArrest(d) {
|
|
54
|
+
return {
|
|
55
|
+
year: d.year ?? d.data_year ?? null,
|
|
56
|
+
totalArrests: d.total_arrests ?? d.value ?? d.arrest_count ?? null,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
// ─── Tools ───────────────────────────────────────────────────────────
|
|
60
|
+
export const tools = [
|
|
61
|
+
{
|
|
62
|
+
name: "fbi_crime_national",
|
|
63
|
+
description: "Get national crime estimates from the FBI UCR program. " +
|
|
64
|
+
"Shows estimated totals for violent crime, property crime, and subcategories.",
|
|
65
|
+
annotations: { title: "FBI: National Crime Estimates", readOnlyHint: true },
|
|
66
|
+
parameters: z.object({
|
|
67
|
+
start_year: z.number().int().optional().describe("Start year (default: 5 years ago)"),
|
|
68
|
+
end_year: z.number().int().optional().describe("End year (default: latest)"),
|
|
69
|
+
}),
|
|
70
|
+
execute: async ({ start_year, end_year }) => {
|
|
71
|
+
const results = await getNationalCrime(start_year, end_year);
|
|
72
|
+
if (!results.length)
|
|
73
|
+
return JSON.stringify({ summary: "No national crime data found.", years: [] });
|
|
74
|
+
return JSON.stringify({
|
|
75
|
+
summary: `National crime estimates: ${results.length} years of data`,
|
|
76
|
+
location: "United States",
|
|
77
|
+
years: results.slice(0, 20).map(summarizeCrime),
|
|
78
|
+
});
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
name: "fbi_crime_by_state",
|
|
83
|
+
description: "Get crime statistics for a U.S. state from the FBI's Uniform Crime Reporting (UCR) program. " +
|
|
84
|
+
"Returns estimated totals for major offense categories. Uses state abbreviations: CA, TX, NY, FL, etc.",
|
|
85
|
+
annotations: { title: "FBI: Crime Statistics by State", readOnlyHint: true },
|
|
86
|
+
parameters: z.object({
|
|
87
|
+
state: z.string().describe("Two-letter state abbreviation (e.g., 'CA', 'TX', 'NY')"),
|
|
88
|
+
start_year: z.number().int().optional().describe("Start year (default: 5 years ago)"),
|
|
89
|
+
end_year: z.number().int().optional().describe("End year (default: latest available)"),
|
|
90
|
+
}),
|
|
91
|
+
execute: async ({ state, start_year, end_year }) => {
|
|
92
|
+
const stateAbbr = state.toUpperCase();
|
|
93
|
+
const results = await getCrimeByState(stateAbbr, start_year, end_year);
|
|
94
|
+
if (!results.length)
|
|
95
|
+
return JSON.stringify({ summary: `No crime data found for ${stateAbbr}.`, state: stateAbbr, years: [] });
|
|
96
|
+
return JSON.stringify({
|
|
97
|
+
summary: `Crime estimates for ${stateAbbr}: ${results.length} years of data`,
|
|
98
|
+
state: stateAbbr,
|
|
99
|
+
years: results.slice(0, 20).map(summarizeCrime),
|
|
100
|
+
});
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
name: "fbi_arrest_data",
|
|
105
|
+
description: "Get arrest statistics from the FBI. Can filter by offense type and state.",
|
|
106
|
+
annotations: { title: "FBI: Arrest Data", readOnlyHint: true },
|
|
107
|
+
parameters: z.object({
|
|
108
|
+
state: z.string().optional().describe("Two-letter state abbreviation. Omit for national."),
|
|
109
|
+
offense: z.string().optional().describe("Offense category. Common: 'aggravated-assault', 'burglary', 'larceny', " +
|
|
110
|
+
"'motor-vehicle-theft', 'homicide', 'rape', 'robbery', 'arson', 'drug-abuse'"),
|
|
111
|
+
start_year: z.number().int().optional().describe("Start year"),
|
|
112
|
+
end_year: z.number().int().optional().describe("End year"),
|
|
113
|
+
}),
|
|
114
|
+
execute: async ({ state, offense, start_year, end_year }) => {
|
|
115
|
+
const results = await getArrestData({
|
|
116
|
+
state, offense, startYear: start_year, endYear: end_year,
|
|
117
|
+
});
|
|
118
|
+
const location = state?.toUpperCase() ?? "National";
|
|
119
|
+
if (!results.length)
|
|
120
|
+
return JSON.stringify({ summary: "No arrest data found.", location, offense: offense ?? null, years: [] });
|
|
121
|
+
return JSON.stringify({
|
|
122
|
+
summary: `Arrest data for ${location}${offense ? ` (${offense})` : ""}: ${results.length} records`,
|
|
123
|
+
location,
|
|
124
|
+
offense: offense ?? null,
|
|
125
|
+
years: results.slice(0, 30).map(summarizeArrest),
|
|
126
|
+
});
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
];
|
|
130
|
+
export const prompts = [
|
|
131
|
+
{
|
|
132
|
+
name: "crime_overview",
|
|
133
|
+
description: "National and state crime trends overview.",
|
|
134
|
+
load: async () => "Build a crime statistics overview:\n\n" +
|
|
135
|
+
"1. Use fbi_crime_national for the last 5 available years\n" +
|
|
136
|
+
"2. Compare violent crime vs property crime trends\n" +
|
|
137
|
+
"3. Show the 5 states with highest and lowest crime rates using fbi_crime_by_state\n\n" +
|
|
138
|
+
"Present trends objectively. Note any data methodology changes that affect comparisons.",
|
|
139
|
+
},
|
|
140
|
+
];
|
|
141
|
+
// ─── Re-export cache control from SDK ────────────────────────────────
|
|
142
|
+
export { clearCache } from "../sdk/fbi.js";
|
|
143
|
+
//# sourceMappingURL=fbi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fbi.js","sourceRoot":"","sources":["../../src/modules/fbi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FDA OpenFDA MCP module — drug adverse events, food recalls, device events.
|
|
3
|
+
*/
|
|
4
|
+
import type { Tool } from "fastmcp";
|
|
5
|
+
export declare const name = "fda";
|
|
6
|
+
export declare const displayName = "FDA (OpenFDA)";
|
|
7
|
+
export declare const description = "Drug adverse events, drug labels, food recalls, medical device reports from the FDA";
|
|
8
|
+
export declare const workflow = "fda_drug_events to search adverse reactions \u2192 fda_drug_counts to aggregate \u2192 fda_food_recalls for food safety";
|
|
9
|
+
export declare const tips: string;
|
|
10
|
+
export declare const reference: {
|
|
11
|
+
drugEventFields: {
|
|
12
|
+
"patient.drug.openfda.brand_name": string;
|
|
13
|
+
"patient.drug.openfda.generic_name": string;
|
|
14
|
+
"patient.reaction.reactionmeddrapt": string;
|
|
15
|
+
serious: string;
|
|
16
|
+
seriousnessdeath: string;
|
|
17
|
+
receivedate: string;
|
|
18
|
+
};
|
|
19
|
+
foodRecallFields: {
|
|
20
|
+
classification: string;
|
|
21
|
+
reason_for_recall: string;
|
|
22
|
+
recalling_firm: string;
|
|
23
|
+
state: string;
|
|
24
|
+
status: string;
|
|
25
|
+
};
|
|
26
|
+
docs: {
|
|
27
|
+
OpenFDA: string;
|
|
28
|
+
"Drug Events API": string;
|
|
29
|
+
"Food Recalls API": string;
|
|
30
|
+
"Device Events API": string;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
export declare const tools: Tool<any, any>[];
|
|
34
|
+
export { clearCache } from "../sdk/fda.js";
|
|
35
|
+
//# sourceMappingURL=fda.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fda.d.ts","sourceRoot":"","sources":["../../src/modules/fda.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAGpC,eAAO,MAAM,IAAI,QAAQ,CAAC;AAC1B,eAAO,MAAM,WAAW,kBAAkB,CAAC;AAC3C,eAAO,MAAM,WAAW,wFAAwF,CAAC;AACjH,eAAO,MAAM,QAAQ,4HAAkH,CAAC;AACxI,eAAO,MAAM,IAAI,QAG6G,CAAC;AAE/H,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;CAsBrB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAuOjC,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FDA OpenFDA MCP module — drug adverse events, food recalls, device events.
|
|
3
|
+
*/
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import { searchDrugEvents, searchFoodRecalls, searchDeviceEvents, countDrugEvents, searchDrugRecalls, searchApprovedDrugs, searchFoodAdverseEvents, searchDeviceRecalls } from "../sdk/fda.js";
|
|
6
|
+
export const name = "fda";
|
|
7
|
+
export const displayName = "FDA (OpenFDA)";
|
|
8
|
+
export const description = "Drug adverse events, drug labels, food recalls, medical device reports from the FDA";
|
|
9
|
+
export const workflow = "fda_drug_events to search adverse reactions → fda_drug_counts to aggregate → fda_food_recalls for food safety";
|
|
10
|
+
export const tips = "Search syntax: 'field:value' e.g. 'patient.drug.openfda.brand_name:aspirin'. " +
|
|
11
|
+
"Use '+AND+' to combine: 'patient.drug.openfda.brand_name:aspirin+AND+serious:1'. " +
|
|
12
|
+
"Count fields: 'patient.reaction.reactionmeddrapt.exact' (reactions), 'patient.drug.openfda.brand_name.exact' (drug names).";
|
|
13
|
+
export const reference = {
|
|
14
|
+
drugEventFields: {
|
|
15
|
+
"patient.drug.openfda.brand_name": "Drug brand name",
|
|
16
|
+
"patient.drug.openfda.generic_name": "Generic drug name",
|
|
17
|
+
"patient.reaction.reactionmeddrapt": "Adverse reaction term",
|
|
18
|
+
"serious": "1=serious, 2=not serious",
|
|
19
|
+
"seriousnessdeath": "1=resulted in death",
|
|
20
|
+
"receivedate": "Date FDA received report (YYYYMMDD)",
|
|
21
|
+
},
|
|
22
|
+
foodRecallFields: {
|
|
23
|
+
"classification": "Class I (most serious), Class II, Class III",
|
|
24
|
+
"reason_for_recall": "Text description of reason",
|
|
25
|
+
"recalling_firm": "Company name",
|
|
26
|
+
"state": "State of recalling firm",
|
|
27
|
+
"status": "Ongoing, Complete, Terminated",
|
|
28
|
+
},
|
|
29
|
+
docs: {
|
|
30
|
+
"OpenFDA": "https://open.fda.gov/",
|
|
31
|
+
"Drug Events API": "https://open.fda.gov/apis/drug/event/",
|
|
32
|
+
"Food Recalls API": "https://open.fda.gov/apis/food/enforcement/",
|
|
33
|
+
"Device Events API": "https://open.fda.gov/apis/device/event/",
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
export const tools = [
|
|
37
|
+
{
|
|
38
|
+
name: "fda_drug_events",
|
|
39
|
+
description: "Search FDA adverse drug event reports — side effects, hospitalizations, deaths associated with drugs.\n" +
|
|
40
|
+
"Over 20 million reports. Search by drug name, reaction, seriousness.\n\n" +
|
|
41
|
+
"Example searches:\n" +
|
|
42
|
+
"- 'patient.drug.openfda.brand_name:aspirin' — events involving aspirin\n" +
|
|
43
|
+
"- 'patient.drug.openfda.generic_name:ibuprofen+AND+serious:1' — serious ibuprofen events\n" +
|
|
44
|
+
"- 'patient.reaction.reactionmeddrapt:nausea' — events where nausea was reported",
|
|
45
|
+
annotations: { title: "FDA: Drug Adverse Events", readOnlyHint: true },
|
|
46
|
+
parameters: z.object({
|
|
47
|
+
search: z.string().optional().describe("OpenFDA search query. Examples: 'patient.drug.openfda.brand_name:tylenol', 'serious:1+AND+seriousnessdeath:1'"),
|
|
48
|
+
limit: z.number().int().max(100).optional().describe("Max results (default 10)"),
|
|
49
|
+
}),
|
|
50
|
+
execute: async ({ search, limit }) => {
|
|
51
|
+
const data = await searchDrugEvents({ search, limit });
|
|
52
|
+
if (!data.results?.length)
|
|
53
|
+
return "No drug event reports found.";
|
|
54
|
+
return JSON.stringify({
|
|
55
|
+
summary: `FDA drug adverse events: ${data.meta?.results?.total ?? "?"} total reports, showing ${data.results.length}`,
|
|
56
|
+
total: data.meta?.results?.total,
|
|
57
|
+
results: data.results.slice(0, 20).map((r) => ({
|
|
58
|
+
reportId: r.safetyreportid,
|
|
59
|
+
serious: r.serious === "1",
|
|
60
|
+
death: r.seriousnessdeath === "1",
|
|
61
|
+
receiveDate: r.receivedate,
|
|
62
|
+
drugs: r.patient?.drug?.map((d) => d.medicinalproduct || d.openfda?.brand_name?.[0]).filter(Boolean),
|
|
63
|
+
reactions: r.patient?.reaction?.map((rx) => rx.reactionmeddrapt).filter(Boolean),
|
|
64
|
+
})),
|
|
65
|
+
});
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: "fda_drug_counts",
|
|
70
|
+
description: "Aggregate/count FDA drug adverse event data by any field.\n" +
|
|
71
|
+
"Great for finding: most reported drugs, most common side effects, trends over time.\n\n" +
|
|
72
|
+
"Common count fields:\n" +
|
|
73
|
+
"- 'patient.reaction.reactionmeddrapt.exact' — most common adverse reactions\n" +
|
|
74
|
+
"- 'patient.drug.openfda.brand_name.exact' — most reported drug brands\n" +
|
|
75
|
+
"- 'patient.drug.openfda.generic_name.exact' — most reported generic names\n" +
|
|
76
|
+
"- 'receivedate' — reports over time\n" +
|
|
77
|
+
"- 'primarysource.reportercountry.exact' — reports by country",
|
|
78
|
+
annotations: { title: "FDA: Drug Event Counts", readOnlyHint: true },
|
|
79
|
+
parameters: z.object({
|
|
80
|
+
count_field: z.string().describe("Field to count/aggregate by. E.g. 'patient.reaction.reactionmeddrapt.exact'"),
|
|
81
|
+
search: z.string().optional().describe("Optional search filter, e.g. 'patient.drug.openfda.brand_name:aspirin'"),
|
|
82
|
+
limit: z.number().int().max(1000).optional().describe("Max count results (default 10)"),
|
|
83
|
+
}),
|
|
84
|
+
execute: async ({ count_field, search, limit }) => {
|
|
85
|
+
const data = await countDrugEvents(count_field, { search, limit });
|
|
86
|
+
if (!data.results?.length)
|
|
87
|
+
return "No count data found.";
|
|
88
|
+
return JSON.stringify({
|
|
89
|
+
summary: `FDA drug event counts by ${count_field}: ${data.results.length} categories`,
|
|
90
|
+
field: count_field,
|
|
91
|
+
counts: data.results.slice(0, 50),
|
|
92
|
+
});
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
name: "fda_food_recalls",
|
|
97
|
+
description: "Search FDA food recall enforcement reports.\n" +
|
|
98
|
+
"Classifications: 'Class I' (most dangerous — may cause death), 'Class II' (may cause temporary health problems), 'Class III' (unlikely to cause health problems).\n\n" +
|
|
99
|
+
"Example searches:\n" +
|
|
100
|
+
"- 'classification:\"Class I\"' — most serious recalls\n" +
|
|
101
|
+
"- 'recalling_firm:tyson' — recalls by a specific company\n" +
|
|
102
|
+
"- 'reason_for_recall:listeria' — recalls due to listeria",
|
|
103
|
+
annotations: { title: "FDA: Food Recalls", readOnlyHint: true },
|
|
104
|
+
parameters: z.object({
|
|
105
|
+
search: z.string().optional().describe("OpenFDA search: 'classification:\"Class I\"', 'reason_for_recall:salmonella', 'state:CA'"),
|
|
106
|
+
limit: z.number().int().max(100).optional().describe("Max results (default 10)"),
|
|
107
|
+
}),
|
|
108
|
+
execute: async ({ search, limit }) => {
|
|
109
|
+
const data = await searchFoodRecalls({ search, limit });
|
|
110
|
+
if (!data.results?.length)
|
|
111
|
+
return "No food recalls found.";
|
|
112
|
+
return JSON.stringify({
|
|
113
|
+
summary: `FDA food recalls: ${data.meta?.results?.total ?? "?"} total, showing ${data.results.length}`,
|
|
114
|
+
total: data.meta?.results?.total,
|
|
115
|
+
results: data.results.slice(0, 20).map((r) => ({
|
|
116
|
+
classification: r.classification,
|
|
117
|
+
reason: r.reason_for_recall,
|
|
118
|
+
firm: r.recalling_firm,
|
|
119
|
+
state: r.state,
|
|
120
|
+
status: r.status,
|
|
121
|
+
productDescription: r.product_description?.substring(0, 200),
|
|
122
|
+
recallDate: r.recall_initiation_date,
|
|
123
|
+
distribution: r.distribution_pattern?.substring(0, 200),
|
|
124
|
+
})),
|
|
125
|
+
});
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
name: "fda_device_events",
|
|
130
|
+
description: "Search FDA medical device adverse event reports — injuries, malfunctions, deaths from medical devices.",
|
|
131
|
+
annotations: { title: "FDA: Device Events", readOnlyHint: true },
|
|
132
|
+
parameters: z.object({
|
|
133
|
+
search: z.string().optional().describe("OpenFDA search: 'device.generic_name:pacemaker', 'event_type:death'"),
|
|
134
|
+
limit: z.number().int().max(100).optional().describe("Max results (default 10)"),
|
|
135
|
+
}),
|
|
136
|
+
execute: async ({ search, limit }) => {
|
|
137
|
+
const data = await searchDeviceEvents({ search, limit });
|
|
138
|
+
if (!data.results?.length)
|
|
139
|
+
return "No device event reports found.";
|
|
140
|
+
return JSON.stringify({
|
|
141
|
+
summary: `FDA device events: ${data.meta?.results?.total ?? "?"} total, showing ${data.results.length}`,
|
|
142
|
+
total: data.meta?.results?.total,
|
|
143
|
+
results: data.results.slice(0, 20).map((r) => ({
|
|
144
|
+
eventType: r.event_type,
|
|
145
|
+
date: r.date_received,
|
|
146
|
+
deviceName: r.device?.[0]?.generic_name,
|
|
147
|
+
manufacturer: r.device?.[0]?.manufacturer_d_name,
|
|
148
|
+
description: (r.mdr_text?.[0]?.text || "").substring(0, 300),
|
|
149
|
+
})),
|
|
150
|
+
});
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
// ─── New endpoints ──────────────────────────────────────────────
|
|
154
|
+
{
|
|
155
|
+
name: "fda_drug_recalls",
|
|
156
|
+
description: "Search FDA drug recall enforcement reports.\n" +
|
|
157
|
+
"Find recalled drugs by classification (Class I=most serious), company, or reason.",
|
|
158
|
+
annotations: { title: "FDA: Drug Recalls", readOnlyHint: true },
|
|
159
|
+
parameters: z.object({
|
|
160
|
+
search: z.string().optional().describe("OpenFDA search: 'classification:\"Class I\"', 'recalling_firm:\"Pfizer\"'"),
|
|
161
|
+
limit: z.number().int().max(100).optional().describe("Max results (default 10)"),
|
|
162
|
+
}),
|
|
163
|
+
execute: async ({ search, limit }) => {
|
|
164
|
+
const data = await searchDrugRecalls({ search, limit });
|
|
165
|
+
if (!data.results?.length)
|
|
166
|
+
return "No drug recalls found.";
|
|
167
|
+
return JSON.stringify({
|
|
168
|
+
summary: `FDA drug recalls: ${data.meta?.results?.total ?? "?"} total, showing ${data.results.length}`,
|
|
169
|
+
results: data.results.slice(0, 20).map((r) => ({
|
|
170
|
+
recallNumber: r.recall_number, classification: r.classification,
|
|
171
|
+
firm: r.recalling_firm, date: r.recall_initiation_date,
|
|
172
|
+
reason: r.reason_for_recall, product: r.product_description?.substring(0, 200),
|
|
173
|
+
status: r.status,
|
|
174
|
+
})),
|
|
175
|
+
});
|
|
176
|
+
},
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
name: "fda_approved_drugs",
|
|
180
|
+
description: "Search FDA-approved drugs (Drugs@FDA database).\n" +
|
|
181
|
+
"Find approved drugs by brand name, sponsor/manufacturer, or application number.\n" +
|
|
182
|
+
"Shows approval history, active ingredients, and marketing status.",
|
|
183
|
+
annotations: { title: "FDA: Approved Drugs", readOnlyHint: true },
|
|
184
|
+
parameters: z.object({
|
|
185
|
+
search: z.string().optional().describe("OpenFDA search: 'openfda.brand_name:\"Ozempic\"', 'sponsor_name:\"Pfizer\"'"),
|
|
186
|
+
limit: z.number().int().max(100).optional().describe("Max results (default 10)"),
|
|
187
|
+
}),
|
|
188
|
+
execute: async ({ search, limit }) => {
|
|
189
|
+
const data = await searchApprovedDrugs({ search, limit });
|
|
190
|
+
if (!data.results?.length)
|
|
191
|
+
return "No approved drugs found.";
|
|
192
|
+
return JSON.stringify({
|
|
193
|
+
summary: `FDA approved drugs: ${data.meta?.results?.total ?? "?"} total, showing ${data.results.length}`,
|
|
194
|
+
results: data.results.slice(0, 20).map((r) => ({
|
|
195
|
+
applicationNumber: r.application_number, sponsor: r.sponsor_name,
|
|
196
|
+
products: r.products?.map((p) => ({
|
|
197
|
+
brandName: p.brand_name, route: p.route, dosageForm: p.dosage_form,
|
|
198
|
+
activeIngredients: p.active_ingredients?.map((i) => `${i.name} ${i.strength}`).join(", "),
|
|
199
|
+
marketingStatus: p.marketing_status,
|
|
200
|
+
})),
|
|
201
|
+
latestSubmission: r.submissions?.[0] ? {
|
|
202
|
+
type: r.submissions[0].submission_type,
|
|
203
|
+
status: r.submissions[0].submission_status,
|
|
204
|
+
date: r.submissions[0].submission_status_date,
|
|
205
|
+
} : undefined,
|
|
206
|
+
})),
|
|
207
|
+
});
|
|
208
|
+
},
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
name: "fda_food_adverse_events",
|
|
212
|
+
description: "Search FDA food adverse event reports (CAERS database).\n" +
|
|
213
|
+
"Find reports of illnesses, allergic reactions, and injuries from foods and dietary supplements.",
|
|
214
|
+
annotations: { title: "FDA: Food Adverse Events", readOnlyHint: true },
|
|
215
|
+
parameters: z.object({
|
|
216
|
+
search: z.string().optional().describe("OpenFDA search: 'products.industry_name:\"Dietary Supplements\"', 'reactions:\"hospitalization\"'"),
|
|
217
|
+
limit: z.number().int().max(100).optional().describe("Max results (default 10)"),
|
|
218
|
+
}),
|
|
219
|
+
execute: async ({ search, limit }) => {
|
|
220
|
+
const data = await searchFoodAdverseEvents({ search, limit });
|
|
221
|
+
if (!data.results?.length)
|
|
222
|
+
return "No food adverse event reports found.";
|
|
223
|
+
return JSON.stringify({
|
|
224
|
+
summary: `FDA food adverse events: ${data.meta?.results?.total ?? "?"} total, showing ${data.results.length}`,
|
|
225
|
+
results: data.results.slice(0, 20).map((r) => ({
|
|
226
|
+
reportNumber: r.report_number, date: r.date_created,
|
|
227
|
+
outcomes: r.outcomes, reactions: r.reactions,
|
|
228
|
+
products: r.products?.map((p) => `${p.name_brand ?? "?"} (${p.industry_name ?? "?"})`.trim()),
|
|
229
|
+
consumer: r.consumer,
|
|
230
|
+
})),
|
|
231
|
+
});
|
|
232
|
+
},
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
name: "fda_device_recalls",
|
|
236
|
+
description: "Search FDA medical device recall reports.\n" +
|
|
237
|
+
"Find recalled devices by name, manufacturer, or reason for recall.",
|
|
238
|
+
annotations: { title: "FDA: Device Recalls", readOnlyHint: true },
|
|
239
|
+
parameters: z.object({
|
|
240
|
+
search: z.string().optional().describe("OpenFDA search: 'openfda.device_name:\"pacemaker\"', 'reason_for_recall:\"software\"'"),
|
|
241
|
+
limit: z.number().int().max(100).optional().describe("Max results (default 10)"),
|
|
242
|
+
}),
|
|
243
|
+
execute: async ({ search, limit }) => {
|
|
244
|
+
const data = await searchDeviceRecalls({ search, limit });
|
|
245
|
+
if (!data.results?.length)
|
|
246
|
+
return "No device recalls found.";
|
|
247
|
+
return JSON.stringify({
|
|
248
|
+
summary: `FDA device recalls: ${data.meta?.results?.total ?? "?"} total, showing ${data.results.length}`,
|
|
249
|
+
results: data.results.slice(0, 20).map((r) => ({
|
|
250
|
+
eventNumber: r.res_event_number,
|
|
251
|
+
product: r.product_description?.substring(0, 200),
|
|
252
|
+
reason: r.reason_for_recall?.substring(0, 300),
|
|
253
|
+
rootCause: r.root_cause_description,
|
|
254
|
+
deviceName: r.openfda?.device_name,
|
|
255
|
+
deviceClass: r.openfda?.device_class,
|
|
256
|
+
})),
|
|
257
|
+
});
|
|
258
|
+
},
|
|
259
|
+
},
|
|
260
|
+
];
|
|
261
|
+
export { clearCache } from "../sdk/fda.js";
|
|
262
|
+
//# sourceMappingURL=fda.js.map
|