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,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Federal Register MCP module — tools + metadata.
|
|
3
|
+
* Delegates all API calls to sdk/federal-register.
|
|
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 { searchExecutiveOrders, searchPresidentialDocuments, searchRules, getDocumentDetail, listAgencies, } from "../sdk/federal-register.js";
|
|
9
|
+
// ─── Metadata (server.ts reads these) ────────────────────────────────
|
|
10
|
+
export const name = "federal-register";
|
|
11
|
+
export const displayName = "Federal Register";
|
|
12
|
+
export const description = "Executive orders, presidential documents, rules, agency notices";
|
|
13
|
+
export const workflow = "fr_executive_orders or fr_search_rules → review results";
|
|
14
|
+
export const tips = "Use president slugs: 'donald-trump', 'joe-biden', 'barack-obama', 'george-w-bush', 'william-j-clinton'. " +
|
|
15
|
+
"No API key required.";
|
|
16
|
+
export const reference = {
|
|
17
|
+
presidentSlugs: {
|
|
18
|
+
trump: "donald-trump",
|
|
19
|
+
biden: "joe-biden",
|
|
20
|
+
obama: "barack-obama",
|
|
21
|
+
bush: "george-w-bush",
|
|
22
|
+
clinton: "william-j-clinton",
|
|
23
|
+
},
|
|
24
|
+
documentTypes: {
|
|
25
|
+
RULE: "Rule — final rule published in CFR",
|
|
26
|
+
PRORULE: "Proposed Rule — notice of proposed rulemaking",
|
|
27
|
+
NOTICE: "Notice — agency announcement",
|
|
28
|
+
PRESDOCU: "Presidential Document — EOs, memoranda, proclamations",
|
|
29
|
+
},
|
|
30
|
+
presidentialDocTypes: {
|
|
31
|
+
executive_order: "Executive Order",
|
|
32
|
+
determination: "Presidential Determination",
|
|
33
|
+
executive_memorandum: "Presidential Memorandum",
|
|
34
|
+
proclamation: "Proclamation",
|
|
35
|
+
notice: "Notice",
|
|
36
|
+
},
|
|
37
|
+
docs: {
|
|
38
|
+
"API Docs": "https://www.federalregister.gov/developers/documentation/api/v1",
|
|
39
|
+
"Developer Hub": "https://www.federalregister.gov/developers",
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
// ─── Helpers ─────────────────────────────────────────────────────────
|
|
43
|
+
function summarizeDoc(d) {
|
|
44
|
+
return {
|
|
45
|
+
title: d.title,
|
|
46
|
+
type: d.type,
|
|
47
|
+
subtype: d.subtype ?? d.presidential_document_type_id ?? null,
|
|
48
|
+
documentNumber: d.document_number,
|
|
49
|
+
executiveOrderNumber: d.executive_order_number ?? null,
|
|
50
|
+
publicationDate: d.publication_date,
|
|
51
|
+
signingDate: d.signing_date ?? null,
|
|
52
|
+
president: d.president?.name ?? null,
|
|
53
|
+
abstract: d.abstract ?? null,
|
|
54
|
+
htmlUrl: d.html_url,
|
|
55
|
+
agencies: d.agencies?.map(a => a.name ?? a.raw_name).filter(Boolean) ?? [],
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
// ─── Tools ───────────────────────────────────────────────────────────
|
|
59
|
+
export const tools = [
|
|
60
|
+
{
|
|
61
|
+
name: "fr_executive_orders",
|
|
62
|
+
description: "Search for presidential executive orders. Filter by president, year, or keyword. " +
|
|
63
|
+
"Covers all executive orders since 1994.",
|
|
64
|
+
annotations: { title: "Federal Register: Executive Orders", readOnlyHint: true },
|
|
65
|
+
parameters: z.object({
|
|
66
|
+
keyword: z.string().optional().describe("Search keyword in title/abstract, e.g. 'tariff', 'immigration', 'climate'"),
|
|
67
|
+
president: z.string().optional().describe("President slug: 'donald-trump', 'joe-biden', 'barack-obama', 'george-w-bush', 'william-j-clinton'"),
|
|
68
|
+
year: z.number().int().optional().describe("Year to filter by, e.g. 2025"),
|
|
69
|
+
per_page: z.number().int().positive().max(100).optional().describe("Results per page (default: 20)"),
|
|
70
|
+
page: z.number().int().positive().optional().describe("Page number (default: 1)"),
|
|
71
|
+
}),
|
|
72
|
+
execute: async ({ keyword, president, year, per_page, page }) => {
|
|
73
|
+
const data = await searchExecutiveOrders({ keyword, president, year, per_page, page });
|
|
74
|
+
const results = data.results ?? [];
|
|
75
|
+
if (!results.length)
|
|
76
|
+
return JSON.stringify({ summary: "No executive orders found.", count: 0, results: [] });
|
|
77
|
+
return JSON.stringify({
|
|
78
|
+
summary: `Executive orders: ${data.count} total, showing ${results.length}`,
|
|
79
|
+
count: data.count,
|
|
80
|
+
totalPages: data.total_pages,
|
|
81
|
+
results: results.map(summarizeDoc),
|
|
82
|
+
});
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
name: "fr_presidential_documents",
|
|
87
|
+
description: "Search all presidential documents: executive orders, memoranda, proclamations, and other presidential actions.",
|
|
88
|
+
annotations: { title: "Federal Register: Presidential Documents", readOnlyHint: true },
|
|
89
|
+
parameters: z.object({
|
|
90
|
+
keyword: z.string().optional().describe("Search keyword"),
|
|
91
|
+
doc_type: z.string().optional().describe("Document subtype: 'executive_order', 'memorandum', 'proclamation', 'notice', 'determination'. Omit for all."),
|
|
92
|
+
president: z.string().optional().describe("President slug: 'donald-trump', 'joe-biden', 'barack-obama'"),
|
|
93
|
+
start_date: z.string().optional().describe("Start date YYYY-MM-DD"),
|
|
94
|
+
end_date: z.string().optional().describe("End date YYYY-MM-DD"),
|
|
95
|
+
per_page: z.number().int().positive().max(100).optional().describe("Results per page (default: 20)"),
|
|
96
|
+
}),
|
|
97
|
+
execute: async ({ keyword, doc_type, president, start_date, end_date, per_page }) => {
|
|
98
|
+
const data = await searchPresidentialDocuments({ keyword, doc_type, president, start_date, end_date, per_page });
|
|
99
|
+
const results = data.results ?? [];
|
|
100
|
+
if (!results.length)
|
|
101
|
+
return JSON.stringify({ summary: "No presidential documents found.", count: 0, results: [] });
|
|
102
|
+
return JSON.stringify({
|
|
103
|
+
summary: `Presidential documents: ${data.count} total, showing ${results.length}`,
|
|
104
|
+
count: data.count,
|
|
105
|
+
totalPages: data.total_pages,
|
|
106
|
+
results: results.map(summarizeDoc),
|
|
107
|
+
});
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
name: "fr_search_rules",
|
|
112
|
+
description: "Search for proposed rules, final rules, and agency notices in the Federal Register. " +
|
|
113
|
+
"Use to track regulatory activity by agencies.",
|
|
114
|
+
annotations: { title: "Federal Register: Search Rules & Regulations", readOnlyHint: true },
|
|
115
|
+
parameters: z.object({
|
|
116
|
+
keyword: z.string().optional().describe("Search keyword, e.g. 'tariff', 'emissions', 'banking'"),
|
|
117
|
+
doc_type: z.string().optional().describe("'RULE' (final rules), 'PRORULE' (proposed rules), 'NOTICE' (notices). Omit for all."),
|
|
118
|
+
agency: z.string().optional().describe("Agency slug, e.g. 'environmental-protection-agency', 'securities-and-exchange-commission'"),
|
|
119
|
+
start_date: z.string().optional().describe("Start date YYYY-MM-DD"),
|
|
120
|
+
end_date: z.string().optional().describe("End date YYYY-MM-DD"),
|
|
121
|
+
per_page: z.number().int().positive().max(100).optional().describe("Results per page (default: 20)"),
|
|
122
|
+
significant: z.boolean().optional().describe("Only show significant/major rules (true/false)"),
|
|
123
|
+
}),
|
|
124
|
+
execute: async ({ keyword, doc_type, agency, start_date, end_date, per_page, significant }) => {
|
|
125
|
+
const data = await searchRules({ keyword, doc_type, agency, start_date, end_date, per_page, significant });
|
|
126
|
+
const results = data.results ?? [];
|
|
127
|
+
if (!results.length)
|
|
128
|
+
return JSON.stringify({ summary: "No rules/notices found.", count: 0, results: [] });
|
|
129
|
+
return JSON.stringify({
|
|
130
|
+
summary: `Federal Register documents: ${data.count} total, showing ${results.length}`,
|
|
131
|
+
count: data.count,
|
|
132
|
+
totalPages: data.total_pages,
|
|
133
|
+
results: results.map(summarizeDoc),
|
|
134
|
+
});
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
name: "fr_document_detail",
|
|
139
|
+
description: "Get full details for a specific Federal Register document by document number.\n" +
|
|
140
|
+
"Returns title, abstract, full text URL, agencies, CFR references, and more.",
|
|
141
|
+
annotations: { title: "Federal Register: Document Detail", readOnlyHint: true },
|
|
142
|
+
parameters: z.object({
|
|
143
|
+
document_number: z.string().describe("Federal Register document number: '2024-00001'"),
|
|
144
|
+
}),
|
|
145
|
+
execute: async ({ document_number }) => {
|
|
146
|
+
const doc = await getDocumentDetail(document_number);
|
|
147
|
+
if (!doc)
|
|
148
|
+
return JSON.stringify({ error: "Document not found." });
|
|
149
|
+
return JSON.stringify({
|
|
150
|
+
title: doc.title,
|
|
151
|
+
type: doc.type,
|
|
152
|
+
documentNumber: doc.document_number,
|
|
153
|
+
publicationDate: doc.publication_date,
|
|
154
|
+
agencies: doc.agencies?.map((a) => a.name),
|
|
155
|
+
abstract: doc.abstract,
|
|
156
|
+
htmlUrl: doc.html_url,
|
|
157
|
+
pdfUrl: doc.pdf_url,
|
|
158
|
+
citation: doc.citation,
|
|
159
|
+
signingDate: doc.signing_date,
|
|
160
|
+
executiveOrderNumber: doc.executive_order_number,
|
|
161
|
+
});
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
name: "fr_agencies",
|
|
166
|
+
description: "List all federal agencies that publish in the Federal Register.\n" +
|
|
167
|
+
"Returns agency names, short names, slugs (for filtering), and URLs. 470+ agencies.",
|
|
168
|
+
annotations: { title: "Federal Register: Agencies", readOnlyHint: true },
|
|
169
|
+
parameters: z.object({}),
|
|
170
|
+
execute: async () => {
|
|
171
|
+
const agencies = await listAgencies();
|
|
172
|
+
if (!agencies?.length)
|
|
173
|
+
return "No agencies returned.";
|
|
174
|
+
const top = agencies.filter((a) => !a.parent_id).slice(0, 50);
|
|
175
|
+
return JSON.stringify({
|
|
176
|
+
summary: `${agencies.length} total agencies (showing ${top.length} top-level)`,
|
|
177
|
+
agencies: top.map((a) => ({ name: a.name, shortName: a.short_name, slug: a.slug })),
|
|
178
|
+
});
|
|
179
|
+
},
|
|
180
|
+
},
|
|
181
|
+
];
|
|
182
|
+
// ─── Re-export cache control from SDK ────────────────────────────────
|
|
183
|
+
export { clearCache } from "../sdk/federal-register.js";
|
|
184
|
+
//# sourceMappingURL=federal-register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"federal-register.js","sourceRoot":"","sources":["../../src/modules/federal-register.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FEMA module — OpenFEMA disaster declarations, housing assistance, NFIP claims, public assistance
|
|
3
|
+
*/
|
|
4
|
+
import type { Tool } from "fastmcp";
|
|
5
|
+
import { clearCache as sdkClearCache } from "../sdk/fema.js";
|
|
6
|
+
export declare const name = "fema";
|
|
7
|
+
export declare const displayName = "FEMA";
|
|
8
|
+
export declare const description = "Federal Emergency Management Agency \u2014 disaster declarations, emergency/major disaster assistance, NFIP flood insurance claims, housing assistance, public assistance grants. Data since 1953.";
|
|
9
|
+
export declare const workflow = "Use fema_disaster_declarations to find disasters by state/year/type \u2192 fema_housing_assistance for individual assistance details \u2192 fema_public_assistance for PA grants \u2192 fema_query for NFIP claims or any other dataset.";
|
|
10
|
+
export declare const tips = "State codes are two-letter uppercase (TX, FL, CA). Incident types include Hurricane, Flood, Fire, Severe Storm(s), Tornado, Earthquake, Snow, Biological. Declaration types: DR (Major Disaster), EM (Emergency), FM (Fire Management). Use fema_query with dataset 'nfip_claims' to analyze flood insurance data.";
|
|
11
|
+
export declare const reference: {
|
|
12
|
+
datasets: Record<string, {
|
|
13
|
+
endpoint: string;
|
|
14
|
+
name: string;
|
|
15
|
+
description: string;
|
|
16
|
+
}>;
|
|
17
|
+
};
|
|
18
|
+
export declare const tools: Tool<any, any>[];
|
|
19
|
+
export { sdkClearCache as clearCache };
|
|
20
|
+
//# sourceMappingURL=fema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fema.d.ts","sourceRoot":"","sources":["../../src/modules/fema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAML,UAAU,IAAI,aAAa,EAK5B,MAAM,gBAAgB,CAAC;AAIxB,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,WAAW,SAAS,CAAC;AAClC,eAAO,MAAM,WAAW,uMACyK,CAAC;AAClM,eAAO,MAAM,QAAQ,6OACwM,CAAC;AAC9N,eAAO,MAAM,IAAI,uTACqS,CAAC;AACvT,eAAO,MAAM,SAAS;;;;;;CAAyB,CAAC;AAkChD,eAAO,MAAM,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAoHjC,CAAC;AAEF,OAAO,EAAE,aAAa,IAAI,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FEMA module — OpenFEMA disaster declarations, housing assistance, NFIP claims, public assistance
|
|
3
|
+
*/
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import { getDisasterDeclarations, getHousingAssistance, getPublicAssistance, getFemaRegions, queryDataset, clearCache as sdkClearCache, DATASETS, } from "../sdk/fema.js";
|
|
6
|
+
// ─── Metadata ────────────────────────────────────────────────────────
|
|
7
|
+
export const name = "fema";
|
|
8
|
+
export const displayName = "FEMA";
|
|
9
|
+
export const description = "Federal Emergency Management Agency — disaster declarations, emergency/major disaster assistance, NFIP flood insurance claims, housing assistance, public assistance grants. Data since 1953.";
|
|
10
|
+
export const workflow = "Use fema_disaster_declarations to find disasters by state/year/type → fema_housing_assistance for individual assistance details → fema_public_assistance for PA grants → fema_query for NFIP claims or any other dataset.";
|
|
11
|
+
export const tips = "State codes are two-letter uppercase (TX, FL, CA). Incident types include Hurricane, Flood, Fire, Severe Storm(s), Tornado, Earthquake, Snow, Biological. Declaration types: DR (Major Disaster), EM (Emergency), FM (Fire Management). Use fema_query with dataset 'nfip_claims' to analyze flood insurance data.";
|
|
12
|
+
export const reference = { datasets: DATASETS };
|
|
13
|
+
// ─── Helpers ─────────────────────────────────────────────────────────
|
|
14
|
+
function summarizeDisasters(data) {
|
|
15
|
+
if (!data.length)
|
|
16
|
+
return "No disaster declarations found.";
|
|
17
|
+
const lines = data.map((d) => {
|
|
18
|
+
const date = d.declarationDate ? d.declarationDate.slice(0, 10) : "unknown date";
|
|
19
|
+
return `[${d.disasterNumber ?? "?"}] ${date} — ${d.disasterName ?? "Unnamed"} (${d.incidentType ?? "?"}) — ${d.state ?? "?"}, ${d.designatedArea ?? ""} [${d.declarationType ?? "?"}]`;
|
|
20
|
+
});
|
|
21
|
+
return `${data.length} disaster declaration(s):\n${lines.join("\n")}`;
|
|
22
|
+
}
|
|
23
|
+
function summarizeHousing(data) {
|
|
24
|
+
if (!data.length)
|
|
25
|
+
return "No housing assistance records found.";
|
|
26
|
+
const lines = data.map((d) => {
|
|
27
|
+
const loc = [d.county, d.state, d.zipCode].filter(Boolean).join(", ");
|
|
28
|
+
const amt = d.totalApprovedIhpAmount != null ? `$${d.totalApprovedIhpAmount.toLocaleString()}` : "N/A";
|
|
29
|
+
return `Disaster ${d.disasterNumber ?? "?"} — ${loc} — Total IHP: ${amt}, Registrations: ${d.validRegistrations ?? "?"}, Inspected: ${d.totalInspected ?? "?"}`;
|
|
30
|
+
});
|
|
31
|
+
return `${data.length} housing assistance record(s):\n${lines.join("\n")}`;
|
|
32
|
+
}
|
|
33
|
+
function summarizePA(data) {
|
|
34
|
+
if (!data.length)
|
|
35
|
+
return "No public assistance records found.";
|
|
36
|
+
const lines = data.map((d) => {
|
|
37
|
+
const amt = d.federalShareObligated != null ? `$${d.federalShareObligated.toLocaleString()}` : "N/A";
|
|
38
|
+
return `Disaster ${d.disasterNumber ?? "?"} — ${d.applicantName ?? "?"} (${d.state ?? "?"}) — ${d.damageCategory ?? "?"}: Federal Share ${amt}`;
|
|
39
|
+
});
|
|
40
|
+
return `${data.length} public assistance record(s):\n${lines.join("\n")}`;
|
|
41
|
+
}
|
|
42
|
+
// ─── Tools ───────────────────────────────────────────────────────────
|
|
43
|
+
export const tools = [
|
|
44
|
+
{
|
|
45
|
+
name: "fema_disaster_declarations",
|
|
46
|
+
description: "Search FEMA disaster declarations (since 1953). Filter by state, year, incident type, or declaration type. Returns disaster name, type, affected area, programs declared.",
|
|
47
|
+
annotations: { title: "FEMA Disaster Declarations", readOnlyHint: true },
|
|
48
|
+
parameters: z.object({
|
|
49
|
+
state: z.string().max(2).optional().describe("Two-letter state code (e.g. TX, FL, CA)"),
|
|
50
|
+
year: z.number().optional().describe("Filter by year of declaration"),
|
|
51
|
+
incident_type: z.string().optional().describe("Incident type: Hurricane, Flood, Fire, Severe Storm(s), Tornado, Earthquake, Snow, Biological"),
|
|
52
|
+
declaration_type: z.string().optional().describe("DR=Major Disaster, EM=Emergency, FM=Fire Management"),
|
|
53
|
+
top: z.number().optional().describe("Max results (default 50)"),
|
|
54
|
+
skip: z.number().optional().describe("Number of records to skip for pagination"),
|
|
55
|
+
}),
|
|
56
|
+
execute: async (args) => {
|
|
57
|
+
const data = await getDisasterDeclarations({
|
|
58
|
+
state: args.state,
|
|
59
|
+
year: args.year,
|
|
60
|
+
incidentType: args.incident_type,
|
|
61
|
+
declarationType: args.declaration_type,
|
|
62
|
+
top: args.top,
|
|
63
|
+
skip: args.skip,
|
|
64
|
+
});
|
|
65
|
+
return { content: [{ type: "text", text: summarizeDisasters(data) }] };
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: "fema_housing_assistance",
|
|
70
|
+
description: "Get FEMA Individual Housing Program (IHP) assistance data for homeowners. Shows approved assistance amounts, inspections, and damage by county/zip for a disaster.",
|
|
71
|
+
annotations: { title: "FEMA Housing Assistance", readOnlyHint: true },
|
|
72
|
+
parameters: z.object({
|
|
73
|
+
disaster_number: z.number().optional().describe("FEMA disaster number (from disaster declarations)"),
|
|
74
|
+
state: z.string().max(2).optional().describe("Two-letter state code"),
|
|
75
|
+
county: z.string().optional().describe("County name"),
|
|
76
|
+
top: z.number().optional().describe("Max results (default 50)"),
|
|
77
|
+
skip: z.number().optional().describe("Number of records to skip"),
|
|
78
|
+
}),
|
|
79
|
+
execute: async (args) => {
|
|
80
|
+
const data = await getHousingAssistance({
|
|
81
|
+
disasterNumber: args.disaster_number,
|
|
82
|
+
state: args.state,
|
|
83
|
+
county: args.county,
|
|
84
|
+
top: args.top,
|
|
85
|
+
skip: args.skip,
|
|
86
|
+
});
|
|
87
|
+
return { content: [{ type: "text", text: summarizeHousing(data) }] };
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
name: "fema_public_assistance",
|
|
92
|
+
description: "Get FEMA Public Assistance (PA) grant awards. Shows project-level grants to state/local/tribal governments and nonprofits for debris removal, emergency work, and permanent repair.",
|
|
93
|
+
annotations: { title: "FEMA Public Assistance", readOnlyHint: true },
|
|
94
|
+
parameters: z.object({
|
|
95
|
+
disaster_number: z.number().optional().describe("FEMA disaster number"),
|
|
96
|
+
state: z.string().max(2).optional().describe("Two-letter state code"),
|
|
97
|
+
top: z.number().optional().describe("Max results (default 50)"),
|
|
98
|
+
skip: z.number().optional().describe("Number of records to skip"),
|
|
99
|
+
}),
|
|
100
|
+
execute: async (args) => {
|
|
101
|
+
const data = await getPublicAssistance({
|
|
102
|
+
disasterNumber: args.disaster_number,
|
|
103
|
+
state: args.state,
|
|
104
|
+
top: args.top,
|
|
105
|
+
skip: args.skip,
|
|
106
|
+
});
|
|
107
|
+
return { content: [{ type: "text", text: summarizePA(data) }] };
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
name: "fema_regions",
|
|
112
|
+
description: "Get FEMA region boundaries and associated states. 10 FEMA regions cover all U.S. states and territories.",
|
|
113
|
+
annotations: { title: "FEMA Regions", readOnlyHint: true },
|
|
114
|
+
parameters: z.object({}),
|
|
115
|
+
execute: async () => {
|
|
116
|
+
const data = await getFemaRegions();
|
|
117
|
+
if (!data.length)
|
|
118
|
+
return { content: [{ type: "text", text: "No FEMA region data found." }] };
|
|
119
|
+
const lines = data.map((r) => `Region ${r.regionNumber}: ${r.regionName ?? ""} — ${r.states ?? ""}`);
|
|
120
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
name: "fema_query",
|
|
125
|
+
description: "General-purpose query against any OpenFEMA v2 dataset. Use this for NFIP flood insurance claims/policies, hazard mitigation grants, mission assignments, IHP registrations, etc. Supports OData $filter syntax.",
|
|
126
|
+
annotations: { title: "FEMA Query", readOnlyHint: true },
|
|
127
|
+
parameters: z.object({
|
|
128
|
+
dataset: z
|
|
129
|
+
.string()
|
|
130
|
+
.describe("Dataset key (disaster_declarations, housing_owners, housing_renters, public_assistance, nfip_claims, nfip_policies, hazard_mitigation, mission_assignments, fema_regions, registrations) or raw endpoint name"),
|
|
131
|
+
filter: z.string().optional().describe("OData $filter expression (e.g. \"state eq 'TX' and yearOfLoss eq '2017'\")"),
|
|
132
|
+
select: z.string().optional().describe("Comma-separated fields to return (OData $select)"),
|
|
133
|
+
order_by: z.string().optional().describe("OData $orderby expression (e.g. 'dateOfLoss desc')"),
|
|
134
|
+
top: z.number().optional().describe("Max results (default 50)"),
|
|
135
|
+
skip: z.number().optional().describe("Offset for pagination"),
|
|
136
|
+
}),
|
|
137
|
+
execute: async (args) => {
|
|
138
|
+
const data = await queryDataset({
|
|
139
|
+
dataset: args.dataset,
|
|
140
|
+
filter: args.filter,
|
|
141
|
+
select: args.select,
|
|
142
|
+
orderBy: args.order_by,
|
|
143
|
+
top: args.top,
|
|
144
|
+
skip: args.skip,
|
|
145
|
+
});
|
|
146
|
+
if (!data.length)
|
|
147
|
+
return { content: [{ type: "text", text: "No records found for the given query." }] };
|
|
148
|
+
const preview = data.slice(0, 10);
|
|
149
|
+
const text = `${data.length} record(s) returned${data.length > 10 ? " (showing first 10)" : ""}:\n` +
|
|
150
|
+
preview.map((r, i) => `[${i + 1}] ${JSON.stringify(r)}`).join("\n");
|
|
151
|
+
return { content: [{ type: "text", text }] };
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
];
|
|
155
|
+
export { sdkClearCache as clearCache };
|
|
156
|
+
//# sourceMappingURL=fema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fema.js","sourceRoot":"","sources":["../../src/modules/fema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FRED MCP module — tools + metadata. Delegates all API calls to sdk/fred.
|
|
3
|
+
*
|
|
4
|
+
* Tools return raw JSON data — no markdown formatting. The client decides how to present it.
|
|
5
|
+
*/
|
|
6
|
+
import type { Tool, InputPrompt } from "fastmcp";
|
|
7
|
+
export declare const name = "fred";
|
|
8
|
+
export declare const displayName = "FRED (Federal Reserve Economic Data)";
|
|
9
|
+
export declare const description = "800K+ economic time series: GDP, CPI, unemployment, interest rates, money supply, housing";
|
|
10
|
+
export declare const auth: {
|
|
11
|
+
envVar: string;
|
|
12
|
+
signup: string;
|
|
13
|
+
};
|
|
14
|
+
export declare const workflow = "fred_search \u2192 fred_series_data to get values";
|
|
15
|
+
export declare const tips = "Popular: GDP, UNRATE, CPIAUCSL, FEDFUNDS, DGS10, MORTGAGE30US, M2SL, SP500";
|
|
16
|
+
export declare const reference: {
|
|
17
|
+
popularSeries: {
|
|
18
|
+
GDP: string;
|
|
19
|
+
UNRATE: string;
|
|
20
|
+
CPIAUCSL: string;
|
|
21
|
+
FEDFUNDS: string;
|
|
22
|
+
DGS10: string;
|
|
23
|
+
MORTGAGE30US: string;
|
|
24
|
+
M2SL: string;
|
|
25
|
+
SP500: string;
|
|
26
|
+
PAYEMS: string;
|
|
27
|
+
CIVPART: string;
|
|
28
|
+
MSPUS: string;
|
|
29
|
+
MEHOINUSA672N: string;
|
|
30
|
+
};
|
|
31
|
+
docs: {
|
|
32
|
+
"v1 API": string;
|
|
33
|
+
"v2 API": string;
|
|
34
|
+
"Get Key": string;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
export declare const tools: Tool<any, any>[];
|
|
38
|
+
export { clearCache } from "../sdk/fred.js";
|
|
39
|
+
export declare const prompts: InputPrompt<any, any>[];
|
|
40
|
+
//# sourceMappingURL=fred.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fred.d.ts","sourceRoot":"","sources":["../../src/modules/fred.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAKjD,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,WAAW,yCAAyC,CAAC;AAClE,eAAO,MAAM,WAAW,8FAA8F,CAAC;AACvH,eAAO,MAAM,IAAI;;;CAAmF,CAAC;AACrG,eAAO,MAAM,QAAQ,sDAAiD,CAAC;AACvE,eAAO,MAAM,IAAI,+EAA+E,CAAC;AAEjG,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;CAcrB,CAAC;AAIF,eAAO,MAAM,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAsFjC,CAAC;AAIF,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAI5C,eAAO,MAAM,OAAO,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,EAsB1C,CAAC"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FRED MCP module — tools + metadata. Delegates all API calls to sdk/fred.
|
|
3
|
+
*
|
|
4
|
+
* Tools return raw JSON data — no markdown formatting. The client decides how to present it.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
import { searchSeries, getSeriesInfo, getObservations, getReleaseData } from "../sdk/fred.js";
|
|
8
|
+
// ─── Metadata (server.ts reads these) ────────────────────────────────
|
|
9
|
+
export const name = "fred";
|
|
10
|
+
export const displayName = "FRED (Federal Reserve Economic Data)";
|
|
11
|
+
export const description = "800K+ economic time series: GDP, CPI, unemployment, interest rates, money supply, housing";
|
|
12
|
+
export const auth = { envVar: "FRED_API_KEY", signup: "https://fredaccount.stlouisfed.org/apikeys" };
|
|
13
|
+
export const workflow = "fred_search → fred_series_data to get values";
|
|
14
|
+
export const tips = "Popular: GDP, UNRATE, CPIAUCSL, FEDFUNDS, DGS10, MORTGAGE30US, M2SL, SP500";
|
|
15
|
+
export const reference = {
|
|
16
|
+
popularSeries: {
|
|
17
|
+
GDP: "Gross Domestic Product (quarterly, $B)", UNRATE: "Unemployment Rate (monthly, %)",
|
|
18
|
+
CPIAUCSL: "CPI All Urban Consumers (monthly)", FEDFUNDS: "Fed Funds Rate (monthly, %)",
|
|
19
|
+
DGS10: "10-Year Treasury (daily, %)", MORTGAGE30US: "30-Year Mortgage (weekly, %)",
|
|
20
|
+
M2SL: "M2 Money Stock (monthly, $B)", SP500: "S&P 500 (daily)",
|
|
21
|
+
PAYEMS: "Nonfarm Payrolls (monthly, K)", CIVPART: "Labor Participation (monthly, %)",
|
|
22
|
+
MSPUS: "Median Home Price (quarterly, $)", MEHOINUSA672N: "Median Household Income (annual)",
|
|
23
|
+
},
|
|
24
|
+
docs: {
|
|
25
|
+
"v1 API": "https://fred.stlouisfed.org/docs/api/fred/",
|
|
26
|
+
"v2 API": "https://research.stlouisfed.org/docs/api/fred/v2/",
|
|
27
|
+
"Get Key": "https://fredaccount.stlouisfed.org/apikeys",
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
// ─── Tools ───────────────────────────────────────────────────────────
|
|
31
|
+
export const tools = [
|
|
32
|
+
{
|
|
33
|
+
name: "fred_search",
|
|
34
|
+
description: "Search FRED series by keyword.\nExamples: 'GDP', 'unemployment', 'CPI', 'mortgage rate'",
|
|
35
|
+
annotations: { title: "FRED: Search", readOnlyHint: true },
|
|
36
|
+
parameters: z.object({
|
|
37
|
+
query: z.string().describe("Keywords"),
|
|
38
|
+
limit: z.number().int().max(100).optional().describe("Max results (default 20)"),
|
|
39
|
+
}),
|
|
40
|
+
execute: async ({ query, limit }) => {
|
|
41
|
+
const data = await searchSeries(query, limit ?? 20);
|
|
42
|
+
if (!data.seriess?.length)
|
|
43
|
+
return `No series found for "${query}".`;
|
|
44
|
+
return JSON.stringify({
|
|
45
|
+
summary: `FRED search "${query}": ${data.count} total, showing ${data.seriess.length}`,
|
|
46
|
+
total: data.count,
|
|
47
|
+
series: data.seriess,
|
|
48
|
+
});
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: "fred_series_info",
|
|
53
|
+
description: "Get metadata for a FRED series — title, units, frequency, range, notes.",
|
|
54
|
+
annotations: { title: "FRED: Series Info", readOnlyHint: true },
|
|
55
|
+
parameters: z.object({
|
|
56
|
+
series_id: z.string().describe("e.g. 'GDP', 'UNRATE', 'CPIAUCSL'"),
|
|
57
|
+
}),
|
|
58
|
+
execute: async ({ series_id }) => {
|
|
59
|
+
const s = await getSeriesInfo(series_id);
|
|
60
|
+
if (!s)
|
|
61
|
+
return `"${series_id}" not found.`;
|
|
62
|
+
return JSON.stringify({
|
|
63
|
+
summary: `${s.id}: ${s.title} (${s.frequency}, ${s.units}, ${s.observation_start}–${s.observation_end})`,
|
|
64
|
+
...s,
|
|
65
|
+
});
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: "fred_series_data",
|
|
70
|
+
description: "Get observations for a FRED series.\nPopular: GDP, UNRATE, CPIAUCSL, FEDFUNDS, DGS10, MORTGAGE30US",
|
|
71
|
+
annotations: { title: "FRED: Series Data", readOnlyHint: true },
|
|
72
|
+
parameters: z.object({
|
|
73
|
+
series_id: z.string().describe("Series ID"),
|
|
74
|
+
limit: z.number().int().max(100000).optional().describe("Max obs (default 1000)"),
|
|
75
|
+
sort_order: z.enum(["asc", "desc"]).optional().describe("default: desc"),
|
|
76
|
+
frequency: z.string().optional().describe("d, w, bw, m, q, sa, a"),
|
|
77
|
+
start_date: z.string().optional().describe("YYYY-MM-DD"),
|
|
78
|
+
end_date: z.string().optional().describe("YYYY-MM-DD"),
|
|
79
|
+
}),
|
|
80
|
+
execute: async ({ series_id, limit, sort_order, frequency, start_date, end_date }) => {
|
|
81
|
+
const data = await getObservations(series_id, {
|
|
82
|
+
start: start_date, end: end_date, limit, sort: sort_order, frequency,
|
|
83
|
+
});
|
|
84
|
+
if (!data.observations?.length)
|
|
85
|
+
return `No observations for "${series_id}".`;
|
|
86
|
+
const obs = data.observations.slice(0, 100);
|
|
87
|
+
return JSON.stringify({
|
|
88
|
+
summary: `${series_id.toUpperCase()}: ${obs.length} of ${data.count} observations, ${data.observation_start} to ${data.observation_end}`,
|
|
89
|
+
seriesId: series_id.toUpperCase(),
|
|
90
|
+
total: data.count,
|
|
91
|
+
start: data.observation_start,
|
|
92
|
+
end: data.observation_end,
|
|
93
|
+
observations: obs,
|
|
94
|
+
});
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
name: "fred_release_data",
|
|
99
|
+
description: "Bulk fetch a FRED release.\nCommon: 53 (GDP), 50 (Employment), 10 (CPI), 18 (Rates)",
|
|
100
|
+
annotations: { title: "FRED: Release Data", readOnlyHint: true },
|
|
101
|
+
parameters: z.object({
|
|
102
|
+
release_id: z.number().int().positive().describe("e.g. 53 (GDP)"),
|
|
103
|
+
limit: z.number().int().max(500000).optional().describe("Max obs"),
|
|
104
|
+
}),
|
|
105
|
+
execute: async ({ release_id, limit }) => {
|
|
106
|
+
const data = await getReleaseData(release_id, limit);
|
|
107
|
+
const series = data.series?.slice(0, 30) ?? [];
|
|
108
|
+
return JSON.stringify({
|
|
109
|
+
summary: `${data.release?.name ?? `Release ${release_id}`}: ${data.series?.length ?? 0} series, has_more: ${data.has_more}`,
|
|
110
|
+
release: data.release,
|
|
111
|
+
hasMore: data.has_more,
|
|
112
|
+
nextCursor: data.next_cursor ?? null,
|
|
113
|
+
series,
|
|
114
|
+
});
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
];
|
|
118
|
+
// ─── Re-export cache control from SDK ────────────────────────────────
|
|
119
|
+
export { clearCache } from "../sdk/fred.js";
|
|
120
|
+
// ─── Prompts (FastMCP InputPrompt type) ──────────────────────────────
|
|
121
|
+
export const prompts = [
|
|
122
|
+
{
|
|
123
|
+
name: "recession_check",
|
|
124
|
+
description: "Analyze whether the U.S. is in or approaching a recession using key economic indicators with legislative context.",
|
|
125
|
+
load: async () => "Use fred_series_data to fetch the following for the last 2 years (sort: desc, frequency: m or q as appropriate):\n\n" +
|
|
126
|
+
"== ECONOMIC INDICATORS ==\n" +
|
|
127
|
+
"1. GDP — quarterly growth (negative 2 consecutive quarters = technical recession)\n" +
|
|
128
|
+
"2. UNRATE — unemployment trend (rising = weakening labor market)\n" +
|
|
129
|
+
"3. PAYEMS — nonfarm payrolls (declining = job losses)\n" +
|
|
130
|
+
"4. CPIAUCSL — inflation trend (context for Fed policy)\n" +
|
|
131
|
+
"5. FEDFUNDS — Fed rate (tightening vs easing cycle)\n" +
|
|
132
|
+
"6. UMCSENT — consumer sentiment (leading indicator)\n\n" +
|
|
133
|
+
"== LEGISLATIVE/FISCAL CONTEXT ==\n" +
|
|
134
|
+
"7. Use congress_recent_laws to find any stimulus, relief, or economic bills passed recently\n" +
|
|
135
|
+
"8. Use congress_house_votes and congress_senate_votes for party-line breakdown on key economic legislation\n" +
|
|
136
|
+
"9. Use Treasury fiscal_snapshot data (debt, revenue, outlays) for fiscal backdrop\n" +
|
|
137
|
+
"10. Use dol_ui_claims_national for the latest weekly unemployment insurance claims (leading indicator)\n\n" +
|
|
138
|
+
"Analyze the trends together. A recession typically shows: declining GDP, rising unemployment, " +
|
|
139
|
+
"falling payrolls, and deteriorating consumer sentiment. Present the data and your assessment " +
|
|
140
|
+
"with appropriate caveats about confounding factors.",
|
|
141
|
+
},
|
|
142
|
+
];
|
|
143
|
+
//# sourceMappingURL=fred.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fred.js","sourceRoot":"","sources":["../../src/modules/fred.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GovInfo MCP module — tools + metadata. Delegates all API calls to sdk/govinfo.
|
|
3
|
+
*
|
|
4
|
+
* Tools return raw JSON data — no markdown formatting. The client decides how to present it.
|
|
5
|
+
*/
|
|
6
|
+
import type { Tool, InputPrompt } from "fastmcp";
|
|
7
|
+
export declare const name = "govinfo";
|
|
8
|
+
export declare const displayName = "GovInfo";
|
|
9
|
+
export declare const description = "Full-text search across Congressional bills, laws, Federal Register, CFR, CBO reports, and more";
|
|
10
|
+
export declare const auth: {
|
|
11
|
+
envVar: string;
|
|
12
|
+
signup: string;
|
|
13
|
+
note: string;
|
|
14
|
+
};
|
|
15
|
+
export declare const workflow = "govinfo_search to find publications \u2192 govinfo_bill_text for full legislative text";
|
|
16
|
+
export declare const tips = "Package ID format for bills: BILLS-{congress}{type}{number}{version}. Example: BILLS-117hr5376enr (Inflation Reduction Act).";
|
|
17
|
+
export declare const reference: {
|
|
18
|
+
collections: Record<string, string>;
|
|
19
|
+
billVersions: Record<string, string>;
|
|
20
|
+
};
|
|
21
|
+
export declare const tools: Tool<any, any>[];
|
|
22
|
+
export declare const prompts: InputPrompt<any, any>[];
|
|
23
|
+
export { clearCache } from "../sdk/govinfo.js";
|
|
24
|
+
//# sourceMappingURL=govinfo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"govinfo.d.ts","sourceRoot":"","sources":["../../src/modules/govinfo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAWjD,eAAO,MAAM,IAAI,YAAY,CAAC;AAC9B,eAAO,MAAM,WAAW,YAAY,CAAC;AACrC,eAAO,MAAM,WAAW,oGAAoG,CAAC;AAC7H,eAAO,MAAM,IAAI;;;;CAA6G,CAAC;AAC/H,eAAO,MAAM,QAAQ,2FAAsF,CAAC;AAC5G,eAAO,MAAM,IAAI,iIAAiI,CAAC;AAEnJ,eAAO,MAAM,SAAS;;;CAGrB,CAAC;AAIF,eAAO,MAAM,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAsHjC,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,EAgB1C,CAAC;AAIF,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
|