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.
Files changed (310) hide show
  1. package/README.md +211 -0
  2. package/dist/client.d.ts +54 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +388 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/instructions.d.ts +8 -0
  7. package/dist/instructions.d.ts.map +1 -0
  8. package/dist/instructions.js +549 -0
  9. package/dist/instructions.js.map +1 -0
  10. package/dist/modules/bea.d.ts +28 -0
  11. package/dist/modules/bea.d.ts.map +1 -0
  12. package/dist/modules/bea.js +158 -0
  13. package/dist/modules/bea.js.map +1 -0
  14. package/dist/modules/bls.d.ts +29 -0
  15. package/dist/modules/bls.d.ts.map +1 -0
  16. package/dist/modules/bls.js +244 -0
  17. package/dist/modules/bls.js.map +1 -0
  18. package/dist/modules/bts.d.ts +26 -0
  19. package/dist/modules/bts.d.ts.map +1 -0
  20. package/dist/modules/bts.js +112 -0
  21. package/dist/modules/bts.js.map +1 -0
  22. package/dist/modules/cdc.d.ts +26 -0
  23. package/dist/modules/cdc.d.ts.map +1 -0
  24. package/dist/modules/cdc.js +310 -0
  25. package/dist/modules/cdc.js.map +1 -0
  26. package/dist/modules/census.d.ts +23 -0
  27. package/dist/modules/census.d.ts.map +1 -0
  28. package/dist/modules/census.js +141 -0
  29. package/dist/modules/census.js.map +1 -0
  30. package/dist/modules/cfpb.d.ts +20 -0
  31. package/dist/modules/cfpb.d.ts.map +1 -0
  32. package/dist/modules/cfpb.js +135 -0
  33. package/dist/modules/cfpb.js.map +1 -0
  34. package/dist/modules/clinical-trials.d.ts +22 -0
  35. package/dist/modules/clinical-trials.d.ts.map +1 -0
  36. package/dist/modules/clinical-trials.js +171 -0
  37. package/dist/modules/clinical-trials.js.map +1 -0
  38. package/dist/modules/cms.d.ts +21 -0
  39. package/dist/modules/cms.d.ts.map +1 -0
  40. package/dist/modules/cms.js +135 -0
  41. package/dist/modules/cms.js.map +1 -0
  42. package/dist/modules/college-scorecard.d.ts +39 -0
  43. package/dist/modules/college-scorecard.d.ts.map +1 -0
  44. package/dist/modules/college-scorecard.js +192 -0
  45. package/dist/modules/college-scorecard.js.map +1 -0
  46. package/dist/modules/congress.d.ts +28 -0
  47. package/dist/modules/congress.d.ts.map +1 -0
  48. package/dist/modules/congress.js +883 -0
  49. package/dist/modules/congress.js.map +1 -0
  50. package/dist/modules/dol.d.ts +27 -0
  51. package/dist/modules/dol.d.ts.map +1 -0
  52. package/dist/modules/dol.js +209 -0
  53. package/dist/modules/dol.js.map +1 -0
  54. package/dist/modules/eia.d.ts +33 -0
  55. package/dist/modules/eia.d.ts.map +1 -0
  56. package/dist/modules/eia.js +227 -0
  57. package/dist/modules/eia.js.map +1 -0
  58. package/dist/modules/epa.d.ts +21 -0
  59. package/dist/modules/epa.d.ts.map +1 -0
  60. package/dist/modules/epa.js +91 -0
  61. package/dist/modules/epa.js.map +1 -0
  62. package/dist/modules/fbi.d.ts +28 -0
  63. package/dist/modules/fbi.d.ts.map +1 -0
  64. package/dist/modules/fbi.js +143 -0
  65. package/dist/modules/fbi.js.map +1 -0
  66. package/dist/modules/fda.d.ts +35 -0
  67. package/dist/modules/fda.d.ts.map +1 -0
  68. package/dist/modules/fda.js +262 -0
  69. package/dist/modules/fda.js.map +1 -0
  70. package/dist/modules/fdic.d.ts +21 -0
  71. package/dist/modules/fdic.d.ts.map +1 -0
  72. package/dist/modules/fdic.js +186 -0
  73. package/dist/modules/fdic.js.map +1 -0
  74. package/dist/modules/fec.d.ts +29 -0
  75. package/dist/modules/fec.d.ts.map +1 -0
  76. package/dist/modules/fec.js +282 -0
  77. package/dist/modules/fec.js.map +1 -0
  78. package/dist/modules/federal-register.d.ts +24 -0
  79. package/dist/modules/federal-register.d.ts.map +1 -0
  80. package/dist/modules/federal-register.js +184 -0
  81. package/dist/modules/federal-register.js.map +1 -0
  82. package/dist/modules/fema.d.ts +20 -0
  83. package/dist/modules/fema.d.ts.map +1 -0
  84. package/dist/modules/fema.js +156 -0
  85. package/dist/modules/fema.js.map +1 -0
  86. package/dist/modules/fred.d.ts +40 -0
  87. package/dist/modules/fred.d.ts.map +1 -0
  88. package/dist/modules/fred.js +143 -0
  89. package/dist/modules/fred.js.map +1 -0
  90. package/dist/modules/govinfo.d.ts +24 -0
  91. package/dist/modules/govinfo.d.ts.map +1 -0
  92. package/dist/modules/govinfo.js +147 -0
  93. package/dist/modules/govinfo.js.map +1 -0
  94. package/dist/modules/hud.d.ts +17 -0
  95. package/dist/modules/hud.d.ts.map +1 -0
  96. package/dist/modules/hud.js +170 -0
  97. package/dist/modules/hud.js.map +1 -0
  98. package/dist/modules/naep.d.ts +27 -0
  99. package/dist/modules/naep.d.ts.map +1 -0
  100. package/dist/modules/naep.js +210 -0
  101. package/dist/modules/naep.js.map +1 -0
  102. package/dist/modules/nhtsa.d.ts +13 -0
  103. package/dist/modules/nhtsa.d.ts.map +1 -0
  104. package/dist/modules/nhtsa.js +196 -0
  105. package/dist/modules/nhtsa.js.map +1 -0
  106. package/dist/modules/noaa.d.ts +41 -0
  107. package/dist/modules/noaa.d.ts.map +1 -0
  108. package/dist/modules/noaa.js +135 -0
  109. package/dist/modules/noaa.js.map +1 -0
  110. package/dist/modules/nrel.d.ts +25 -0
  111. package/dist/modules/nrel.d.ts.map +1 -0
  112. package/dist/modules/nrel.js +87 -0
  113. package/dist/modules/nrel.js.map +1 -0
  114. package/dist/modules/regulations.d.ts +24 -0
  115. package/dist/modules/regulations.d.ts.map +1 -0
  116. package/dist/modules/regulations.js +173 -0
  117. package/dist/modules/regulations.js.map +1 -0
  118. package/dist/modules/sec.d.ts +25 -0
  119. package/dist/modules/sec.d.ts.map +1 -0
  120. package/dist/modules/sec.js +192 -0
  121. package/dist/modules/sec.js.map +1 -0
  122. package/dist/modules/senate-lobbying.d.ts +21 -0
  123. package/dist/modules/senate-lobbying.d.ts.map +1 -0
  124. package/dist/modules/senate-lobbying.js +189 -0
  125. package/dist/modules/senate-lobbying.js.map +1 -0
  126. package/dist/modules/treasury.d.ts +23 -0
  127. package/dist/modules/treasury.d.ts.map +1 -0
  128. package/dist/modules/treasury.js +234 -0
  129. package/dist/modules/treasury.js.map +1 -0
  130. package/dist/modules/usaspending.d.ts +19 -0
  131. package/dist/modules/usaspending.d.ts.map +1 -0
  132. package/dist/modules/usaspending.js +204 -0
  133. package/dist/modules/usaspending.js.map +1 -0
  134. package/dist/modules/usda-fooddata.d.ts +24 -0
  135. package/dist/modules/usda-fooddata.d.ts.map +1 -0
  136. package/dist/modules/usda-fooddata.js +118 -0
  137. package/dist/modules/usda-fooddata.js.map +1 -0
  138. package/dist/modules/usda-nass.d.ts +46 -0
  139. package/dist/modules/usda-nass.d.ts.map +1 -0
  140. package/dist/modules/usda-nass.js +151 -0
  141. package/dist/modules/usda-nass.js.map +1 -0
  142. package/dist/modules/usgs.d.ts +21 -0
  143. package/dist/modules/usgs.d.ts.map +1 -0
  144. package/dist/modules/usgs.js +203 -0
  145. package/dist/modules/usgs.js.map +1 -0
  146. package/dist/modules/uspto.d.ts +13 -0
  147. package/dist/modules/uspto.d.ts.map +1 -0
  148. package/dist/modules/uspto.js +157 -0
  149. package/dist/modules/uspto.js.map +1 -0
  150. package/dist/modules/world-bank.d.ts +21 -0
  151. package/dist/modules/world-bank.d.ts.map +1 -0
  152. package/dist/modules/world-bank.js +130 -0
  153. package/dist/modules/world-bank.js.map +1 -0
  154. package/dist/prompts.d.ts +12 -0
  155. package/dist/prompts.d.ts.map +1 -0
  156. package/dist/prompts.js +858 -0
  157. package/dist/prompts.js.map +1 -0
  158. package/dist/sdk/bea.d.ts +111 -0
  159. package/dist/sdk/bea.d.ts.map +1 -0
  160. package/dist/sdk/bea.js +242 -0
  161. package/dist/sdk/bea.js.map +1 -0
  162. package/dist/sdk/bls.d.ts +65 -0
  163. package/dist/sdk/bls.d.ts.map +1 -0
  164. package/dist/sdk/bls.js +203 -0
  165. package/dist/sdk/bls.js.map +1 -0
  166. package/dist/sdk/bts.d.ts +108 -0
  167. package/dist/sdk/bts.d.ts.map +1 -0
  168. package/dist/sdk/bts.js +121 -0
  169. package/dist/sdk/bts.js.map +1 -0
  170. package/dist/sdk/cdc.d.ts +105 -0
  171. package/dist/sdk/cdc.d.ts.map +1 -0
  172. package/dist/sdk/cdc.js +222 -0
  173. package/dist/sdk/cdc.js.map +1 -0
  174. package/dist/sdk/census.d.ts +47 -0
  175. package/dist/sdk/census.d.ts.map +1 -0
  176. package/dist/sdk/census.js +99 -0
  177. package/dist/sdk/census.js.map +1 -0
  178. package/dist/sdk/cfpb.d.ts +148 -0
  179. package/dist/sdk/cfpb.d.ts.map +1 -0
  180. package/dist/sdk/cfpb.js +153 -0
  181. package/dist/sdk/cfpb.js.map +1 -0
  182. package/dist/sdk/clinical-trials.d.ts +214 -0
  183. package/dist/sdk/clinical-trials.d.ts.map +1 -0
  184. package/dist/sdk/clinical-trials.js +134 -0
  185. package/dist/sdk/clinical-trials.js.map +1 -0
  186. package/dist/sdk/cms.d.ts +81 -0
  187. package/dist/sdk/cms.d.ts.map +1 -0
  188. package/dist/sdk/cms.js +227 -0
  189. package/dist/sdk/cms.js.map +1 -0
  190. package/dist/sdk/college-scorecard.d.ts +63 -0
  191. package/dist/sdk/college-scorecard.d.ts.map +1 -0
  192. package/dist/sdk/college-scorecard.js +131 -0
  193. package/dist/sdk/college-scorecard.js.map +1 -0
  194. package/dist/sdk/congress.d.ts +575 -0
  195. package/dist/sdk/congress.d.ts.map +1 -0
  196. package/dist/sdk/congress.js +659 -0
  197. package/dist/sdk/congress.js.map +1 -0
  198. package/dist/sdk/dol.d.ts +299 -0
  199. package/dist/sdk/dol.d.ts.map +1 -0
  200. package/dist/sdk/dol.js +252 -0
  201. package/dist/sdk/dol.js.map +1 -0
  202. package/dist/sdk/eia.d.ts +91 -0
  203. package/dist/sdk/eia.d.ts.map +1 -0
  204. package/dist/sdk/eia.js +156 -0
  205. package/dist/sdk/eia.js.map +1 -0
  206. package/dist/sdk/epa.d.ts +128 -0
  207. package/dist/sdk/epa.d.ts.map +1 -0
  208. package/dist/sdk/epa.js +120 -0
  209. package/dist/sdk/epa.js.map +1 -0
  210. package/dist/sdk/fbi.d.ts +48 -0
  211. package/dist/sdk/fbi.d.ts.map +1 -0
  212. package/dist/sdk/fbi.js +69 -0
  213. package/dist/sdk/fbi.js.map +1 -0
  214. package/dist/sdk/fda.d.ts +356 -0
  215. package/dist/sdk/fda.d.ts.map +1 -0
  216. package/dist/sdk/fda.js +162 -0
  217. package/dist/sdk/fda.js.map +1 -0
  218. package/dist/sdk/fdic.d.ts +227 -0
  219. package/dist/sdk/fdic.d.ts.map +1 -0
  220. package/dist/sdk/fdic.js +172 -0
  221. package/dist/sdk/fdic.js.map +1 -0
  222. package/dist/sdk/fec.d.ts +142 -0
  223. package/dist/sdk/fec.d.ts.map +1 -0
  224. package/dist/sdk/fec.js +92 -0
  225. package/dist/sdk/fec.js.map +1 -0
  226. package/dist/sdk/federal-register.d.ts +88 -0
  227. package/dist/sdk/federal-register.d.ts.map +1 -0
  228. package/dist/sdk/federal-register.js +100 -0
  229. package/dist/sdk/federal-register.js.map +1 -0
  230. package/dist/sdk/fema.d.ts +137 -0
  231. package/dist/sdk/fema.d.ts.map +1 -0
  232. package/dist/sdk/fema.js +197 -0
  233. package/dist/sdk/fema.js.map +1 -0
  234. package/dist/sdk/fred.d.ts +72 -0
  235. package/dist/sdk/fred.d.ts.map +1 -0
  236. package/dist/sdk/fred.js +59 -0
  237. package/dist/sdk/fred.js.map +1 -0
  238. package/dist/sdk/govinfo.d.ts +64 -0
  239. package/dist/sdk/govinfo.d.ts.map +1 -0
  240. package/dist/sdk/govinfo.js +187 -0
  241. package/dist/sdk/govinfo.js.map +1 -0
  242. package/dist/sdk/hud.d.ts +87 -0
  243. package/dist/sdk/hud.d.ts.map +1 -0
  244. package/dist/sdk/hud.js +91 -0
  245. package/dist/sdk/hud.js.map +1 -0
  246. package/dist/sdk/index.d.ts +51 -0
  247. package/dist/sdk/index.d.ts.map +1 -0
  248. package/dist/sdk/index.js +51 -0
  249. package/dist/sdk/index.js.map +1 -0
  250. package/dist/sdk/naep.d.ts +93 -0
  251. package/dist/sdk/naep.d.ts.map +1 -0
  252. package/dist/sdk/naep.js +163 -0
  253. package/dist/sdk/naep.js.map +1 -0
  254. package/dist/sdk/nhtsa.d.ts +169 -0
  255. package/dist/sdk/nhtsa.d.ts.map +1 -0
  256. package/dist/sdk/nhtsa.js +102 -0
  257. package/dist/sdk/nhtsa.js.map +1 -0
  258. package/dist/sdk/noaa.d.ts +72 -0
  259. package/dist/sdk/noaa.d.ts.map +1 -0
  260. package/dist/sdk/noaa.js +64 -0
  261. package/dist/sdk/noaa.js.map +1 -0
  262. package/dist/sdk/nrel.d.ts +145 -0
  263. package/dist/sdk/nrel.d.ts.map +1 -0
  264. package/dist/sdk/nrel.js +93 -0
  265. package/dist/sdk/nrel.js.map +1 -0
  266. package/dist/sdk/regulations.d.ts +146 -0
  267. package/dist/sdk/regulations.d.ts.map +1 -0
  268. package/dist/sdk/regulations.js +103 -0
  269. package/dist/sdk/regulations.js.map +1 -0
  270. package/dist/sdk/sec.d.ts +114 -0
  271. package/dist/sdk/sec.d.ts.map +1 -0
  272. package/dist/sdk/sec.js +151 -0
  273. package/dist/sdk/sec.js.map +1 -0
  274. package/dist/sdk/senate-lobbying.d.ts +147 -0
  275. package/dist/sdk/senate-lobbying.d.ts.map +1 -0
  276. package/dist/sdk/senate-lobbying.js +125 -0
  277. package/dist/sdk/senate-lobbying.js.map +1 -0
  278. package/dist/sdk/treasury.d.ts +59 -0
  279. package/dist/sdk/treasury.d.ts.map +1 -0
  280. package/dist/sdk/treasury.js +1397 -0
  281. package/dist/sdk/treasury.js.map +1 -0
  282. package/dist/sdk/usaspending.d.ts +126 -0
  283. package/dist/sdk/usaspending.d.ts.map +1 -0
  284. package/dist/sdk/usaspending.js +270 -0
  285. package/dist/sdk/usaspending.js.map +1 -0
  286. package/dist/sdk/usda-fooddata.d.ts +112 -0
  287. package/dist/sdk/usda-fooddata.d.ts.map +1 -0
  288. package/dist/sdk/usda-fooddata.js +80 -0
  289. package/dist/sdk/usda-fooddata.js.map +1 -0
  290. package/dist/sdk/usda-nass.d.ts +75 -0
  291. package/dist/sdk/usda-nass.d.ts.map +1 -0
  292. package/dist/sdk/usda-nass.js +83 -0
  293. package/dist/sdk/usda-nass.js.map +1 -0
  294. package/dist/sdk/usgs.d.ts +221 -0
  295. package/dist/sdk/usgs.d.ts.map +1 -0
  296. package/dist/sdk/usgs.js +182 -0
  297. package/dist/sdk/usgs.js.map +1 -0
  298. package/dist/sdk/uspto.d.ts +109 -0
  299. package/dist/sdk/uspto.d.ts.map +1 -0
  300. package/dist/sdk/uspto.js +286 -0
  301. package/dist/sdk/uspto.js.map +1 -0
  302. package/dist/sdk/world-bank.d.ts +78 -0
  303. package/dist/sdk/world-bank.d.ts.map +1 -0
  304. package/dist/sdk/world-bank.js +72 -0
  305. package/dist/sdk/world-bank.js.map +1 -0
  306. package/dist/server.d.ts +22 -0
  307. package/dist/server.d.ts.map +1 -0
  308. package/dist/server.js +196 -0
  309. package/dist/server.js.map +1 -0
  310. package/package.json +113 -0
@@ -0,0 +1,189 @@
1
+ /**
2
+ * Senate Lobbying Disclosure MCP module — follow the money from lobbyists to legislation.
3
+ */
4
+ import { z } from "zod";
5
+ import { searchFilings, getFilingDetail, searchContributions, searchRegistrants, searchLobbyists, FILING_TYPES, ISSUE_CODES } from "../sdk/senate-lobbying.js";
6
+ export const name = "senate-lobbying";
7
+ export const displayName = "Senate Lobbying Disclosures";
8
+ export const description = "Lobbying filings, expenditures, activities, and campaign contributions — who is lobbying Congress, on what issues, and how much they're spending";
9
+ export const workflow = "lobbying_search to find filings by company/issue → lobbying_detail for specific bills lobbied → lobbying_contributions for campaign donations by lobbyists. For conflict-of-interest investigations: search by trade group AND individual companies to get total industry lobbying spend across 3+ years around a vote.";
10
+ export const tips = "Search by registrant_name (lobbying firm or self-filer like 'Pfizer'), client_name (who hired the lobbyist), " +
11
+ "or issue_code (TAX, HCR, DEF, etc.). Filing types: Q1-Q4 (quarterly), RN (new registration). " +
12
+ "Expenses are in dollars. No API key required. " +
13
+ "KEY TRADE GROUPS: 'American Bankers Association' (banking), 'PhRMA' or 'Pharmaceutical Research' (pharma), " +
14
+ "'American Petroleum Institute' (oil/gas), 'National Association of Realtors' (real estate). " +
15
+ "Always search BOTH the trade group AND individual companies for a complete lobbying picture.";
16
+ export const reference = {
17
+ filingTypes: FILING_TYPES,
18
+ issueCodes: ISSUE_CODES,
19
+ docs: {
20
+ "LDA API": "https://lda.gov/api/v1/",
21
+ "LDA Search": "https://lda.gov/filings/public/filing/search/",
22
+ "Lobbying Disclosure Act": "https://lobbyingdisclosure.house.gov/",
23
+ },
24
+ };
25
+ // ─── Helpers ─────────────────────────────────────────────────────────
26
+ function summarizeFiling(f) {
27
+ return {
28
+ uuid: f.filing_uuid,
29
+ type: f.filing_type_display,
30
+ year: f.filing_year,
31
+ period: f.filing_period_display,
32
+ registrant: f.registrant?.name,
33
+ client: f.client?.name,
34
+ clientDescription: f.client?.general_description,
35
+ income: f.income ? `$${Number(f.income).toLocaleString()}` : null,
36
+ expenses: f.expenses ? `$${Number(f.expenses).toLocaleString()}` : null,
37
+ issuesLobbied: f.lobbying_activities?.map((a) => a.general_issue_code_display).filter(Boolean),
38
+ documentUrl: f.filing_document_url,
39
+ posted: f.dt_posted,
40
+ };
41
+ }
42
+ // ─── Tools ───────────────────────────────────────────────────────────
43
+ export const tools = [
44
+ {
45
+ name: "lobbying_search",
46
+ description: "Search lobbying disclosure filings — find out who is lobbying Congress, on what issues, and how much they're spending.\n\n" +
47
+ "Search by:\n" +
48
+ "- registrant_name: lobbying firm or self-filing org ('Pfizer', 'Amazon', 'National Rifle Association')\n" +
49
+ "- client_name: who hired the lobbyist ('Google', 'ExxonMobil')\n" +
50
+ "- issue_code: policy area ('TAX', 'HCR' health, 'DEF' defense, 'ENV' environment, 'ENG' energy, 'IMM' immigration)\n" +
51
+ "- filing_year: year of filing (2020-2026)\n\n" +
52
+ "Returns expenses/income amounts, issues lobbied, and registrant/client info.",
53
+ annotations: { title: "Lobbying: Search Filings", readOnlyHint: true },
54
+ parameters: z.object({
55
+ registrant_name: z.string().optional().describe("Lobbying firm or organization: 'Pfizer', 'Amazon', 'US Chamber of Commerce'"),
56
+ client_name: z.string().optional().describe("Client who hired the lobbyist: 'Google', 'Meta', 'Boeing'"),
57
+ issue_code: z.string().optional().describe("Issue area code: 'TAX' (taxation), 'HCR' (health), 'DEF' (defense), 'ENV' (environment), 'ENG' (energy), 'IMM' (immigration), 'BUD' (budget), 'FIN' (finance), 'EDU' (education)"),
58
+ filing_year: z.number().int().optional().describe("Year: 2020-2026"),
59
+ filing_type: z.string().optional().describe("'Q1','Q2','Q3','Q4' (quarterly), 'RN' (new registration)"),
60
+ page_size: z.number().int().max(25).optional().describe("Results per page (default 20)"),
61
+ }),
62
+ execute: async ({ registrant_name, client_name, issue_code, filing_year, filing_type, page_size }) => {
63
+ const data = await searchFilings({ registrant_name, client_name, issue_code, filing_year, filing_type, page_size });
64
+ if (!data.results?.length)
65
+ return "No lobbying filings found.";
66
+ return JSON.stringify({
67
+ summary: `Lobbying filings: ${data.count} total, showing ${data.results.length}`,
68
+ total: data.count,
69
+ filings: data.results.map(summarizeFiling),
70
+ });
71
+ },
72
+ },
73
+ {
74
+ name: "lobbying_detail",
75
+ description: "Get full detail on a specific lobbying filing — shows every issue lobbied, specific bills mentioned, and lobbyist names.\n" +
76
+ "Use the filing UUID from lobbying_search results.",
77
+ annotations: { title: "Lobbying: Filing Detail", readOnlyHint: true },
78
+ parameters: z.object({
79
+ filing_uuid: z.string().describe("Filing UUID from lobbying_search results"),
80
+ }),
81
+ execute: async ({ filing_uuid }) => {
82
+ const f = await getFilingDetail(filing_uuid);
83
+ return JSON.stringify({
84
+ summary: `Lobbying filing: ${f.registrant?.name} for ${f.client?.name} (${f.filing_year} ${f.filing_type_display})`,
85
+ registrant: f.registrant?.name,
86
+ client: f.client?.name,
87
+ clientDescription: f.client?.general_description,
88
+ expenses: f.expenses ? `$${Number(f.expenses).toLocaleString()}` : null,
89
+ income: f.income ? `$${Number(f.income).toLocaleString()}` : null,
90
+ activities: f.lobbying_activities?.map((a) => ({
91
+ issue: a.general_issue_code_display,
92
+ description: a.description,
93
+ lobbyists: a.lobbyists?.map((l) => l.lobbyist_full_display_name).filter(Boolean),
94
+ })),
95
+ documentUrl: f.filing_document_url,
96
+ });
97
+ },
98
+ },
99
+ {
100
+ name: "lobbying_contributions",
101
+ description: "Search campaign contributions made by lobbyists — shows which lobbyists donated to which politicians.\n" +
102
+ "Required under the LDA to disclose political contributions by registered lobbyists.",
103
+ annotations: { title: "Lobbying: Campaign Contributions", readOnlyHint: true },
104
+ parameters: z.object({
105
+ filing_year: z.number().int().optional().describe("Year: 2020-2026"),
106
+ registrant_name: z.string().optional().describe("Lobbying firm name"),
107
+ lobbyist_name: z.string().optional().describe("Individual lobbyist name"),
108
+ page_size: z.number().int().max(25).optional().describe("Results per page (default 20)"),
109
+ }),
110
+ execute: async ({ filing_year, registrant_name, lobbyist_name, page_size }) => {
111
+ const data = await searchContributions({ filing_year, registrant_name, lobbyist_name, page_size });
112
+ if (!data.results?.length)
113
+ return "No contribution filings found.";
114
+ // Flatten nested contribution_items from each filing
115
+ const allContributions = [];
116
+ for (const filing of data.results) {
117
+ if (!filing.contribution_items?.length)
118
+ continue;
119
+ for (const item of filing.contribution_items) {
120
+ allContributions.push({
121
+ lobbyist: filing.lobbyist ? `${filing.lobbyist.first_name} ${filing.lobbyist.last_name}`.trim() : null,
122
+ registrant: filing.registrant?.name,
123
+ filerType: filing.filer_type_display,
124
+ recipient: item.payee_name,
125
+ honoree: item.honoree_name,
126
+ amount: item.amount ? `$${Number(item.amount).toLocaleString()}` : null,
127
+ date: item.date,
128
+ type: item.contribution_type_display,
129
+ contributor: item.contributor_name,
130
+ });
131
+ }
132
+ }
133
+ const filingsWithItems = data.results.filter((r) => r.contribution_items?.length > 0).length;
134
+ return JSON.stringify({
135
+ summary: `Lobbying contributions: ${data.count} filings total, ${filingsWithItems} with contribution items, ${allContributions.length} individual contributions`,
136
+ totalFilings: data.count,
137
+ filingsWithContributions: filingsWithItems,
138
+ contributions: allContributions.slice(0, 50),
139
+ });
140
+ },
141
+ },
142
+ {
143
+ name: "lobbying_registrants",
144
+ description: "Search lobbying firms and organizations registered to lobby Congress.",
145
+ annotations: { title: "Lobbying: Search Registrants", readOnlyHint: true },
146
+ parameters: z.object({
147
+ name: z.string().describe("Registrant name: 'Amazon', 'Pfizer', 'National Rifle Association'"),
148
+ page_size: z.number().int().max(25).optional().describe("Results per page (default 20)"),
149
+ }),
150
+ execute: async ({ name, page_size }) => {
151
+ const data = await searchRegistrants({ registrant_name: name, page_size });
152
+ if (!data.results?.length)
153
+ return `No registrants found matching "${name}".`;
154
+ return JSON.stringify({
155
+ summary: `Lobbying registrants matching "${name}": ${data.count} found`,
156
+ registrants: data.results.map((r) => ({
157
+ id: r.id, name: r.name, description: r.description,
158
+ address: `${r.address_1}, ${r.city}, ${r.state}`,
159
+ contact: r.contact_name, phone: r.contact_telephone,
160
+ })),
161
+ });
162
+ },
163
+ },
164
+ {
165
+ name: "lobbying_lobbyists",
166
+ description: "Search individual lobbyists by name or firm.\n" +
167
+ "Find specific people who lobby Congress and which firms they work for.",
168
+ annotations: { title: "Lobbying: Lobbyist Search", readOnlyHint: true },
169
+ parameters: z.object({
170
+ name: z.string().optional().describe("Lobbyist name (partial match): 'Smith', 'Johnson'"),
171
+ firm: z.string().optional().describe("Lobbying firm name: 'Akin Gump', 'K Street'"),
172
+ page_size: z.number().int().max(50).optional().describe("Results per page (default 20)"),
173
+ }),
174
+ execute: async ({ name, firm, page_size }) => {
175
+ const data = await searchLobbyists({ lobbyist_name: name, registrant_name: firm, page_size });
176
+ if (!data.results?.length)
177
+ return `No lobbyists found.`;
178
+ return JSON.stringify({
179
+ summary: `Lobbyists: ${data.count} found`,
180
+ results: data.results.map((r) => ({
181
+ name: `${r.prefix ?? ""} ${r.first_name ?? ""} ${r.last_name ?? ""}${r.suffix ? " " + r.suffix : ""}`.trim(),
182
+ firm: r.registrant?.name,
183
+ })),
184
+ });
185
+ },
186
+ },
187
+ ];
188
+ export { clearCache } from "../sdk/senate-lobbying.js";
189
+ //# sourceMappingURL=senate-lobbying.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"senate-lobbying.js","sourceRoot":"","sources":["../../src/modules/senate-lobbying.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,mBAAmB,EAAE,iBAAiB,EAAiB,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE9K,MAAM,CAAC,MAAM,IAAI,GAAG,iBAAiB,CAAC;AACtC,MAAM,CAAC,MAAM,WAAW,GAAG,6BAA6B,CAAC;AACzD,MAAM,CAAC,MAAM,WAAW,GAAG,kJAAkJ,CAAC;AAC9K,MAAM,CAAC,MAAM,QAAQ,GAAG,yTAAyT,CAAC;AAClV,MAAM,CAAC,MAAM,IAAI,GACf,+GAA+G;IAC/G,+FAA+F;IAC/F,gDAAgD;IAChD,6GAA6G;IAC7G,8FAA8F;IAC9F,8FAA8F,CAAC;AAEjG,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,WAAW,EAAE,YAAY;IACzB,UAAU,EAAE,WAAW;IACvB,IAAI,EAAE;QACJ,SAAS,EAAE,yBAAyB;QACpC,YAAY,EAAE,+CAA+C;QAC7D,yBAAyB,EAAE,uCAAuC;KACnE;CACF,CAAC;AAEF,wEAAwE;AAExE,SAAS,eAAe,CAAC,CAAM;IAC7B,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,WAAW;QACnB,IAAI,EAAE,CAAC,CAAC,mBAAmB;QAC3B,IAAI,EAAE,CAAC,CAAC,WAAW;QACnB,MAAM,EAAE,CAAC,CAAC,qBAAqB;QAC/B,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,IAAI;QAC9B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI;QACtB,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,mBAAmB;QAChD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI;QACjE,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI;QACvE,aAAa,EAAE,CAAC,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QACnG,WAAW,EAAE,CAAC,CAAC,mBAAmB;QAClC,MAAM,EAAE,CAAC,CAAC,SAAS;KACpB,CAAC;AACJ,CAAC;AAED,wEAAwE;AAExE,MAAM,CAAC,MAAM,KAAK,GAAqB;IACrC;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,4HAA4H;YAC5H,cAAc;YACd,0GAA0G;YAC1G,kEAAkE;YAClE,sHAAsH;YACtH,+CAA+C;YAC/C,8EAA8E;QAChF,WAAW,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,YAAY,EAAE,IAAI,EAAE;QACtE,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YACnB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6EAA6E,CAAC;YAC9H,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;YACxG,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kLAAkL,CAAC;YAC9N,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACpE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;YACvG,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;SACzF,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE;YACnG,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;YACpH,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM;gBAAE,OAAO,4BAA4B,CAAC;YAC/D,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,OAAO,EAAE,qBAAqB,IAAI,CAAC,KAAK,mBAAmB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBAChF,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;aAC3C,CAAC,CAAC;QACL,CAAC;KACF;IAED;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,4HAA4H;YAC5H,mDAAmD;QACrD,WAAW,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,YAAY,EAAE,IAAI,EAAE;QACrE,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YACnB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;SAC7E,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;YACjC,MAAM,CAAC,GAAG,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC;YAC7C,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,OAAO,EAAE,oBAAoB,CAAC,CAAC,UAAU,EAAE,IAAI,QAAQ,CAAC,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,mBAAmB,GAAG;gBACnH,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,IAAI;gBAC9B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI;gBACtB,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,mBAAmB;gBAChD,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI;gBACvE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI;gBACjE,UAAU,EAAE,CAAC,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;oBAClD,KAAK,EAAE,CAAC,CAAC,0BAA0B;oBACnC,WAAW,EAAE,CAAC,CAAC,WAAW;oBAC1B,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;iBACtF,CAAC,CAAC;gBACH,WAAW,EAAE,CAAC,CAAC,mBAAmB;aACnC,CAAC,CAAC;QACL,CAAC;KACF;IAED;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EACT,yGAAyG;YACzG,qFAAqF;QACvF,WAAW,EAAE,EAAE,KAAK,EAAE,kCAAkC,EAAE,YAAY,EAAE,IAAI,EAAE;QAC9E,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YACnB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACpE,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YACrE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;YACzE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;SACzF,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,EAAE;YAC5E,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC;YACnG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM;gBAAE,OAAO,gCAAgC,CAAC;YAEnE,qDAAqD;YACrD,MAAM,gBAAgB,GAAU,EAAE,CAAC;YACnC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM;oBAAE,SAAS;gBACjD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;oBAC7C,gBAAgB,CAAC,IAAI,CAAC;wBACpB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;wBACtG,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI;wBACnC,SAAS,EAAE,MAAM,CAAC,kBAAkB;wBACpC,SAAS,EAAE,IAAI,CAAC,UAAU;wBAC1B,OAAO,EAAE,IAAI,CAAC,YAAY;wBAC1B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI;wBACvE,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,IAAI,EAAE,IAAI,CAAC,yBAAyB;wBACpC,WAAW,EAAE,IAAI,CAAC,gBAAgB;qBACnC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;YAElG,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,OAAO,EAAE,2BAA2B,IAAI,CAAC,KAAK,mBAAmB,gBAAgB,6BAA6B,gBAAgB,CAAC,MAAM,2BAA2B;gBAChK,YAAY,EAAE,IAAI,CAAC,KAAK;gBACxB,wBAAwB,EAAE,gBAAgB;gBAC1C,aAAa,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;aAC7C,CAAC,CAAC;QACL,CAAC;KACF;IAED;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,uEAAuE;QACpF,WAAW,EAAE,EAAE,KAAK,EAAE,8BAA8B,EAAE,YAAY,EAAE,IAAI,EAAE;QAC1E,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mEAAmE,CAAC;YAC9F,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;SACzF,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YAC3E,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM;gBAAE,OAAO,kCAAkC,IAAI,IAAI,CAAC;YAC7E,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,OAAO,EAAE,kCAAkC,IAAI,MAAM,IAAI,CAAC,KAAK,QAAQ;gBACvE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;oBACzC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW;oBAClD,OAAO,EAAE,GAAG,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE;oBAChD,OAAO,EAAE,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,iBAAiB;iBACpD,CAAC,CAAC;aACJ,CAAC,CAAC;QACL,CAAC;KACF;IAED;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EACT,gDAAgD;YAChD,wEAAwE;QAC1E,WAAW,EAAE,EAAE,KAAK,EAAE,2BAA2B,EAAE,YAAY,EAAE,IAAI,EAAE;QACvE,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;YACzF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;YACnF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;SACzF,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE;YAC3C,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YAC9F,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM;gBAAE,OAAO,qBAAqB,CAAC;YACxD,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,OAAO,EAAE,cAAc,IAAI,CAAC,KAAK,QAAQ;gBACzC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;oBACrC,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,IAAI,CAAC,CAAC,UAAU,IAAI,EAAE,IAAI,CAAC,CAAC,SAAS,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE;oBAC5G,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,IAAI;iBACzB,CAAC,CAAC;aACJ,CAAC,CAAC;QACL,CAAC;KACF;CACF,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Treasury Fiscal Data MCP module — tools + metadata. Delegates all API calls to sdk/treasury.
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 = "treasury";
8
+ export declare const displayName = "U.S. Treasury Fiscal Data";
9
+ export declare const description = "National debt, revenue, spending, interest rates, exchange rates, savings bonds, auctions, trust funds \u2014 53 datasets, 181 endpoints";
10
+ export declare const workflow = "search_datasets \u2192 get_endpoint_fields \u2192 query_fiscal_data";
11
+ export declare const tips = "No API key required. Use search_datasets to find endpoints by keyword. Use get_endpoint_fields to discover field names before querying. Sort by -record_date for latest data. Use page_size=1 for most recent record. Filter syntax: field:operator:value.";
12
+ export declare const reference: {
13
+ popularEndpoints: Record<string, string>;
14
+ filterOperators: Record<string, string>;
15
+ docs: {
16
+ "API Documentation": string;
17
+ "Endpoint List": string;
18
+ };
19
+ };
20
+ export declare const tools: Tool<any, any>[];
21
+ export declare const prompts: InputPrompt<any, any>[];
22
+ export { clearCache } from "../sdk/treasury.js";
23
+ //# sourceMappingURL=treasury.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"treasury.d.ts","sourceRoot":"","sources":["../../src/modules/treasury.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAWjD,eAAO,MAAM,IAAI,aAAa,CAAC;AAC/B,eAAO,MAAM,WAAW,8BAA8B,CAAC;AACvD,eAAO,MAAM,WAAW,6IAAwI,CAAC;AACjK,eAAO,MAAM,QAAQ,wEAA8D,CAAC;AACpF,eAAO,MAAM,IAAI,+PAA+P,CAAC;AAEjR,eAAO,MAAM,SAAS;sBAUf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;qBAQtB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;CAK5B,CAAC;AAIF,eAAO,MAAM,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAiJjC,CAAC;AAIF,eAAO,MAAM,OAAO,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,EA4E1C,CAAC;AAIF,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,234 @@
1
+ /**
2
+ * Treasury Fiscal Data MCP module — tools + metadata. Delegates all API calls to sdk/treasury.
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 { listDatasets, searchEndpoints, getEndpointFields, queryFiscalData, ENDPOINTS, } from "../sdk/treasury.js";
8
+ // ─── Metadata (server.ts reads these) ────────────────────────────────
9
+ export const name = "treasury";
10
+ export const displayName = "U.S. Treasury Fiscal Data";
11
+ export const description = "National debt, revenue, spending, interest rates, exchange rates, savings bonds, auctions, trust funds — 53 datasets, 181 endpoints";
12
+ export const workflow = "search_datasets → get_endpoint_fields → query_fiscal_data";
13
+ export const tips = "No API key required. Use search_datasets to find endpoints by keyword. Use get_endpoint_fields to discover field names before querying. Sort by -record_date for latest data. Use page_size=1 for most recent record. Filter syntax: field:operator:value.";
14
+ export const reference = {
15
+ popularEndpoints: {
16
+ "/v2/accounting/od/debt_to_penny": "Total public debt outstanding (daily)",
17
+ "/v2/accounting/od/avg_interest_rates": "Average interest rates on Treasury securities",
18
+ "/v1/accounting/od/rates_of_exchange": "Treasury reporting exchange rates",
19
+ "/v2/accounting/od/gold_reserve": "U.S. Treasury-owned gold reserves",
20
+ "/v1/accounting/mts/mts_table_1": "Monthly Treasury Statement: receipts, outlays, deficit",
21
+ "/v1/accounting/od/auctions_query": "Treasury securities auction data",
22
+ "/v2/accounting/od/debt_outstanding": "Historical debt outstanding (since 1790)",
23
+ "/v2/accounting/od/interest_expense": "Interest expense on public debt",
24
+ },
25
+ filterOperators: {
26
+ eq: "equal",
27
+ gt: "greater than",
28
+ gte: "greater than or equal",
29
+ lt: "less than",
30
+ lte: "less than or equal",
31
+ in: "in list (comma-separated in parens)",
32
+ },
33
+ docs: {
34
+ "API Documentation": "https://fiscaldata.treasury.gov/api-documentation/",
35
+ "Endpoint List": "https://fiscaldata.treasury.gov/api-documentation/#list-of-endpoints",
36
+ },
37
+ };
38
+ // ─── Tools ───────────────────────────────────────────────────────────
39
+ export const tools = [
40
+ {
41
+ name: "list_datasets",
42
+ description: "List all 53 U.S. Treasury Fiscal Data API datasets and their 181 endpoints. " +
43
+ "Returns dataset name, data table name, API endpoint path, and description.",
44
+ annotations: { title: "Treasury: List Datasets", readOnlyHint: true },
45
+ parameters: z.object({}),
46
+ execute: async () => {
47
+ const grouped = listDatasets();
48
+ const datasets = Object.entries(grouped).map(([name, tables]) => ({
49
+ dataset: name,
50
+ datasetUrl: `https://fiscaldata.treasury.gov/datasets${tables[0].slug}`,
51
+ tables: tables.map(t => ({
52
+ dataTable: t.dataTable,
53
+ endpoint: t.endpoint,
54
+ description: t.description,
55
+ })),
56
+ }));
57
+ return JSON.stringify({
58
+ summary: `U.S. Treasury Fiscal Data: ${Object.keys(grouped).length} datasets, ${ENDPOINTS.length} total endpoints`,
59
+ baseUrl: "https://api.fiscaldata.treasury.gov/services/api/fiscal_service",
60
+ datasets,
61
+ });
62
+ },
63
+ },
64
+ {
65
+ name: "search_datasets",
66
+ description: "Search for Treasury Fiscal Data datasets and endpoints by keyword. " +
67
+ "Searches across all 53 datasets (181 endpoints) by name, table name, endpoint path, and description.",
68
+ annotations: { title: "Treasury: Search Datasets", readOnlyHint: true },
69
+ parameters: z.object({
70
+ query: z.string().describe("The keyword or phrase to search for (case-insensitive). Examples: 'debt', 'exchange rate', 'gold', 'auction'"),
71
+ }),
72
+ execute: async ({ query }) => {
73
+ const matches = searchEndpoints(query);
74
+ if (!matches.length) {
75
+ return JSON.stringify({ summary: `No datasets found matching "${query}". Try a broader search term.`, matches: [] });
76
+ }
77
+ const results = matches.map(ep => ({
78
+ dataset: ep.dataset,
79
+ dataTable: ep.dataTable,
80
+ endpoint: ep.endpoint,
81
+ description: ep.description,
82
+ datasetUrl: `https://fiscaldata.treasury.gov/datasets${ep.slug}`,
83
+ }));
84
+ return JSON.stringify({
85
+ summary: `Found ${matches.length} endpoint(s) matching "${query}"`,
86
+ matches: results,
87
+ });
88
+ },
89
+ },
90
+ {
91
+ name: "get_endpoint_fields",
92
+ description: "Get field names, data types, and formats for a specific Treasury Fiscal Data API endpoint. " +
93
+ "This helps you discover what fields are available before querying data.",
94
+ annotations: { title: "Treasury: Get Endpoint Fields", readOnlyHint: true },
95
+ parameters: z.object({
96
+ endpoint: z.string().describe("The API endpoint path, e.g. '/v2/accounting/od/debt_to_penny' or '/v1/accounting/dts/operating_cash_balance'"),
97
+ }),
98
+ execute: async ({ endpoint }) => {
99
+ const res = await getEndpointFields(endpoint);
100
+ const fields = Object.keys(res.meta.labels);
101
+ const fieldDetails = fields.map(f => ({
102
+ name: f,
103
+ label: res.meta.labels[f],
104
+ type: res.meta.dataTypes[f] || "unknown",
105
+ format: res.meta.dataFormats?.[f] || "unknown",
106
+ }));
107
+ return JSON.stringify({
108
+ summary: `Endpoint ${endpoint}: ${fields.length} fields, ${res.meta["total-count"]} total records`,
109
+ endpoint,
110
+ totalRecords: res.meta["total-count"],
111
+ fields: fieldDetails,
112
+ });
113
+ },
114
+ },
115
+ {
116
+ name: "query_fiscal_data",
117
+ description: "Query the U.S. Treasury Fiscal Data API. Supports field selection, filtering, sorting, and pagination.\n\n" +
118
+ "Filter operators: eq (equal), gt, gte, lt, lte, in.\n" +
119
+ "Example filter: 'record_date:gte:2024-01-01'\n" +
120
+ "Example sort: '-record_date' (descending)\n" +
121
+ "Multiple filters: 'country_currency_desc:in:(Canada-Dollar,Mexico-Peso),record_date:gte:2024-01-01'",
122
+ annotations: { title: "Treasury: Query Fiscal Data", readOnlyHint: true },
123
+ parameters: z.object({
124
+ endpoint: z.string().describe("The API endpoint path, e.g. '/v2/accounting/od/debt_to_penny'"),
125
+ fields: z.string().optional().describe("Comma-separated list of field names to return. If omitted, all fields are returned. Example: 'record_date,tot_pub_debt_out_amt'"),
126
+ filter: z.string().optional().describe("Filter expression. Format: field:operator:value. Multiple: field1:op1:val1,field2:op2:val2. " +
127
+ "Example: 'record_date:gte:2024-01-01,security_type_desc:eq:Treasury Bills'"),
128
+ sort: z.string().optional().describe("Comma-separated list of fields to sort by. Prefix with '-' for descending. Example: '-record_date'"),
129
+ page_number: z.number().int().positive().optional().describe("Page number (1-indexed). Default: 1"),
130
+ page_size: z.number().int().positive().max(10000).optional().describe("Number of records per page (1-10000). Default: 100"),
131
+ }),
132
+ execute: async ({ endpoint, fields, filter, sort, page_number, page_size }) => {
133
+ const res = await queryFiscalData(endpoint, {
134
+ fields,
135
+ filter,
136
+ sort,
137
+ pageNumber: page_number,
138
+ pageSize: page_size,
139
+ });
140
+ const maxRows = 50;
141
+ const rows = res.data.slice(0, maxRows);
142
+ const truncated = res.data.length > maxRows;
143
+ const fieldInfo = Object.entries(res.meta.labels).map(([k, v]) => ({
144
+ name: k,
145
+ label: v,
146
+ type: res.meta.dataTypes[k] || "unknown",
147
+ }));
148
+ return JSON.stringify({
149
+ summary: `Query ${endpoint}: ${res.meta.count} returned, ${res.meta["total-count"]} total, page ${page_number || 1} of ${res.meta["total-pages"]}${truncated ? ` (showing first ${maxRows})` : ""}`,
150
+ endpoint,
151
+ recordsReturned: res.meta.count,
152
+ totalRecords: res.meta["total-count"],
153
+ totalPages: res.meta["total-pages"],
154
+ truncated,
155
+ fields: fieldInfo,
156
+ rows,
157
+ });
158
+ },
159
+ },
160
+ ];
161
+ // ─── Prompts ─────────────────────────────────────────────────────────
162
+ export const prompts = [
163
+ {
164
+ name: "fiscal_snapshot",
165
+ description: "Get a comprehensive snapshot of current U.S. fiscal data including national debt, interest rates, and recent revenue/spending.",
166
+ load: async () => "Please give me a comprehensive fiscal snapshot of the United States using the Treasury Fiscal Data API. Include:\n\n" +
167
+ "1. **Current national debt** — query /v2/accounting/od/debt_to_penny with sort=-record_date, page_size=1, fields=record_date,tot_pub_debt_out_amt,debt_held_public_amt,intragov_hold_amt\n" +
168
+ "2. **Latest average interest rates** — query /v2/accounting/od/avg_interest_rates with sort=-record_date, page_size=10, fields=record_date,security_type_desc,avg_interest_rate_amt\n" +
169
+ "3. **Latest monthly receipts & outlays** — query /v1/accounting/mts/mts_table_1 with sort=-record_date, page_size=5\n" +
170
+ "4. **Gold reserves** — query /v2/accounting/od/gold_reserve with sort=-record_date, page_size=5\n\n" +
171
+ "Format the results in a clear summary with dollar amounts and dates.",
172
+ },
173
+ {
174
+ name: "debt_analysis",
175
+ description: "Analyze the national debt trend with legislative context and vote breakdowns.",
176
+ arguments: [
177
+ { name: "start_date", description: "Start date in YYYY-MM-DD format (default: 1 year ago)", required: false },
178
+ ],
179
+ load: async (args) => {
180
+ const defaultDate = new Date();
181
+ defaultDate.setFullYear(defaultDate.getFullYear() - 1);
182
+ const startStr = args.start_date || defaultDate.toISOString().split("T")[0];
183
+ return (`Analyze the U.S. national debt trend since ${startStr}.\n\n` +
184
+ `== DEBT DATA ==\n` +
185
+ `1. Query /v2/accounting/od/debt_to_penny with filter=record_date:gte:${startStr}, sort=-record_date, page_size=50, fields=record_date,tot_pub_debt_out_amt,debt_held_public_amt,intragov_hold_amt\n` +
186
+ `2. Calculate the change from the earliest to latest record\n` +
187
+ `3. Show the trend — is debt increasing or decreasing?\n` +
188
+ `4. Break down by debt held by public vs intragovernmental holdings\n\n` +
189
+ `== LEGISLATIVE CONTEXT ==\n` +
190
+ `5. Use congress_search_bills for 'debt ceiling' or 'appropriations' to find relevant legislation\n` +
191
+ `6. Use congress_house_votes and congress_senate_votes to show how each party voted on debt-related bills\n` +
192
+ `7. Use FRED GDP series to calculate debt-to-GDP ratio for context\n\n` +
193
+ `Present the analysis with clear numbers, percentage changes, and note which congress/president was in office.`);
194
+ },
195
+ },
196
+ {
197
+ name: "exchange_rates",
198
+ description: "Look up Treasury exchange rates for a specific currency.",
199
+ arguments: [
200
+ { name: "currency", description: "Currency to look up, e.g. 'Euro Zone-Euro', 'Canada-Dollar', 'Japan-Yen'", required: true },
201
+ ],
202
+ load: async (args) => `Get the Treasury reporting exchange rates for "${args.currency}".\n\n` +
203
+ `Query /v1/accounting/od/rates_of_exchange with:\n` +
204
+ `- fields: record_date,country_currency_desc,exchange_rate\n` +
205
+ `- filter: country_currency_desc:eq:${args.currency}\n` +
206
+ `- sort: -record_date\n- page_size: 20\n\nShow the exchange rate history and note any trends.`,
207
+ },
208
+ {
209
+ name: "auction_results",
210
+ description: "Get recent Treasury securities auction results.",
211
+ arguments: [
212
+ { name: "security_type", description: "Type of security: 'Bill', 'Note', 'Bond', 'TIPS', 'FRN'", required: false },
213
+ ],
214
+ load: async (args) => {
215
+ const filterPart = args.security_type ? `\n- filter: security_type_desc:eq:${args.security_type}` : "";
216
+ return (`Get the latest Treasury securities auction results.\n\n` +
217
+ `Query /v1/accounting/od/auctions_query with:\n- sort: -auction_date\n- page_size: 15${filterPart}\n\n` +
218
+ `Summarize the results showing auction dates, security types, amounts, and interest rates.`);
219
+ },
220
+ },
221
+ {
222
+ name: "interest_rate_comparison",
223
+ description: "Compare current interest rates across all Treasury security types.",
224
+ load: async () => "Compare current average interest rates across all Treasury security types.\n\n" +
225
+ "1. First use get_endpoint_fields on /v2/accounting/od/avg_interest_rates to see available fields\n" +
226
+ "2. Query /v2/accounting/od/avg_interest_rates with sort=-record_date, page_size=50, fields=record_date,security_type_desc,security_desc,avg_interest_rate_amt\n" +
227
+ "3. Group the latest rates by security type\n" +
228
+ "4. Show which security types have the highest and lowest rates\n\n" +
229
+ "Present as a comparison table.",
230
+ },
231
+ ];
232
+ // ─── Re-export cache control from SDK ────────────────────────────────
233
+ export { clearCache } from "../sdk/treasury.js";
234
+ //# sourceMappingURL=treasury.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"treasury.js","sourceRoot":"","sources":["../../src/modules/treasury.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,SAAS,GACV,MAAM,oBAAoB,CAAC;AAE5B,wEAAwE;AAExE,MAAM,CAAC,MAAM,IAAI,GAAG,UAAU,CAAC;AAC/B,MAAM,CAAC,MAAM,WAAW,GAAG,2BAA2B,CAAC;AACvD,MAAM,CAAC,MAAM,WAAW,GAAG,qIAAqI,CAAC;AACjK,MAAM,CAAC,MAAM,QAAQ,GAAG,2DAA2D,CAAC;AACpF,MAAM,CAAC,MAAM,IAAI,GAAG,4PAA4P,CAAC;AAEjR,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,gBAAgB,EAAE;QAChB,iCAAiC,EAAE,uCAAuC;QAC1E,sCAAsC,EAAE,+CAA+C;QACvF,qCAAqC,EAAE,mCAAmC;QAC1E,gCAAgC,EAAE,mCAAmC;QACrE,gCAAgC,EAAE,wDAAwD;QAC1F,kCAAkC,EAAE,kCAAkC;QACtE,oCAAoC,EAAE,0CAA0C;QAChF,oCAAoC,EAAE,iCAAiC;KAC9C;IAC3B,eAAe,EAAE;QACf,EAAE,EAAE,OAAO;QACX,EAAE,EAAE,cAAc;QAClB,GAAG,EAAE,uBAAuB;QAC5B,EAAE,EAAE,WAAW;QACf,GAAG,EAAE,oBAAoB;QACzB,EAAE,EAAE,qCAAqC;KAChB;IAC3B,IAAI,EAAE;QACJ,mBAAmB,EAAE,oDAAoD;QACzE,eAAe,EAAE,sEAAsE;KACxF;CACF,CAAC;AAEF,wEAAwE;AAExE,MAAM,CAAC,MAAM,KAAK,GAAqB;IACrC;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,8EAA8E;YAC9E,4EAA4E;QAC9E,WAAW,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,YAAY,EAAE,IAAI,EAAE;QACrE,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;gBAChE,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,2CAA2C,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;gBACvE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACvB,SAAS,EAAE,CAAC,CAAC,SAAS;oBACtB,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,WAAW,EAAE,CAAC,CAAC,WAAW;iBAC3B,CAAC,CAAC;aACJ,CAAC,CAAC,CAAC;YAEJ,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,OAAO,EAAE,8BAA8B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,cAAc,SAAS,CAAC,MAAM,kBAAkB;gBAClH,OAAO,EAAE,iEAAiE;gBAC1E,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;KACF;IAED;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,qEAAqE;YACrE,sGAAsG;QACxG,WAAW,EAAE,EAAE,KAAK,EAAE,2BAA2B,EAAE,YAAY,EAAE,IAAI,EAAE;QACvE,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CACxB,8GAA8G,CAC/G;SACF,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;YAC3B,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;YAEvC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACpB,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,+BAA+B,KAAK,+BAA+B,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YACvH,CAAC;YAED,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACjC,OAAO,EAAE,EAAE,CAAC,OAAO;gBACnB,SAAS,EAAE,EAAE,CAAC,SAAS;gBACvB,QAAQ,EAAE,EAAE,CAAC,QAAQ;gBACrB,WAAW,EAAE,EAAE,CAAC,WAAW;gBAC3B,UAAU,EAAE,2CAA2C,EAAE,CAAC,IAAI,EAAE;aACjE,CAAC,CAAC,CAAC;YAEJ,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,OAAO,EAAE,SAAS,OAAO,CAAC,MAAM,0BAA0B,KAAK,GAAG;gBAClE,OAAO,EAAE,OAAO;aACjB,CAAC,CAAC;QACL,CAAC;KACF;IAED;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EACT,6FAA6F;YAC7F,yEAAyE;QAC3E,WAAW,EAAE,EAAE,KAAK,EAAE,+BAA+B,EAAE,YAAY,EAAE,IAAI,EAAE;QAC3E,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAC3B,8GAA8G,CAC/G;SACF,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;YAC9B,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE5C,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpC,IAAI,EAAE,CAAC;gBACP,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBACzB,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS;gBACxC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS;aAC/C,CAAC,CAAC,CAAC;YAEJ,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,OAAO,EAAE,YAAY,QAAQ,KAAK,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB;gBAClG,QAAQ;gBACR,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;gBACrC,MAAM,EAAE,YAAY;aACrB,CAAC,CAAC;QACL,CAAC;KACF;IAED;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,4GAA4G;YAC5G,uDAAuD;YACvD,gDAAgD;YAChD,6CAA6C;YAC7C,qGAAqG;QACvG,WAAW,EAAE,EAAE,KAAK,EAAE,6BAA6B,EAAE,YAAY,EAAE,IAAI,EAAE;QACzE,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+DAA+D,CAAC;YAC9F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACpC,iIAAiI,CAClI;YACD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACpC,8FAA8F;gBAC9F,4EAA4E,CAC7E;YACD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oGAAoG,CAAC;YAC1I,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;YACnG,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;SAC5H,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE;YAC5E,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE;gBAC1C,MAAM;gBACN,MAAM;gBACN,IAAI;gBACJ,UAAU,EAAE,WAAW;gBACvB,QAAQ,EAAE,SAAS;aACpB,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,EAAE,CAAC;YACnB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACxC,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;YAE5C,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACjE,IAAI,EAAE,CAAC;gBACP,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS;aACzC,CAAC,CAAC,CAAC;YAEJ,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,OAAO,EAAE,SAAS,QAAQ,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,cAAc,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,WAAW,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,mBAAmB,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACnM,QAAQ;gBACR,eAAe,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK;gBAC/B,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;gBACrC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;gBACnC,SAAS;gBACT,MAAM,EAAE,SAAS;gBACjB,IAAI;aACL,CAAC,CAAC;QACL,CAAC;KACF;CACF,CAAC;AAEF,wEAAwE;AAExE,MAAM,CAAC,MAAM,OAAO,GAA4B;IAC9C;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,gIAAgI;QAC7I,IAAI,EAAE,KAAK,IAAI,EAAE,CACf,sHAAsH;YACtH,4LAA4L;YAC5L,uLAAuL;YACvL,uHAAuH;YACvH,qGAAqG;YACrG,sEAAsE;KACzE;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,+EAA+E;QAC5F,SAAS,EAAE;YACT,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,uDAAuD,EAAE,QAAQ,EAAE,KAAK,EAAE;SAC9G;QACD,IAAI,EAAE,KAAK,EAAE,IAAS,EAAE,EAAE;YACxB,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;YAC/B,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5E,OAAO,CACL,8CAA8C,QAAQ,OAAO;gBAC7D,mBAAmB;gBACnB,wEAAwE,QAAQ,qHAAqH;gBACrM,8DAA8D;gBAC9D,yDAAyD;gBACzD,wEAAwE;gBACxE,6BAA6B;gBAC7B,oGAAoG;gBACpG,4GAA4G;gBAC5G,uEAAuE;gBACvE,+GAA+G,CAChH,CAAC;QACJ,CAAC;KACF;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,0DAA0D;QACvE,SAAS,EAAE;YACT,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,0EAA0E,EAAE,QAAQ,EAAE,IAAI,EAAE;SAC9H;QACD,IAAI,EAAE,KAAK,EAAE,IAAS,EAAE,EAAE,CACxB,kDAAkD,IAAI,CAAC,QAAQ,QAAQ;YACvE,mDAAmD;YACnD,6DAA6D;YAC7D,sCAAsC,IAAI,CAAC,QAAQ,IAAI;YACvD,8FAA8F;KACjG;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,iDAAiD;QAC9D,SAAS,EAAE;YACT,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,yDAAyD,EAAE,QAAQ,EAAE,KAAK,EAAE;SACnH;QACD,IAAI,EAAE,KAAK,EAAE,IAAS,EAAE,EAAE;YACxB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,qCAAqC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvG,OAAO,CACL,yDAAyD;gBACzD,uFAAuF,UAAU,MAAM;gBACvG,2FAA2F,CAC5F,CAAC;QACJ,CAAC;KACF;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,WAAW,EAAE,oEAAoE;QACjF,IAAI,EAAE,KAAK,IAAI,EAAE,CACf,gFAAgF;YAChF,oGAAoG;YACpG,iKAAiK;YACjK,8CAA8C;YAC9C,oEAAoE;YACpE,gCAAgC;KACnC;CACF,CAAC;AAEF,wEAAwE;AAExE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * USAspending MCP module — tools + metadata. Delegates all API calls to sdk/usaspending.
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 = "usaspending";
8
+ export declare const displayName = "USAspending";
9
+ export declare const description = "Federal contracts, grants, loans, direct payments \u2014 who got the money and where";
10
+ export declare const workflow = "search awards by keyword/agency/state \u2192 drill into recipients or trends";
11
+ export declare const tips = "No API key required. Data updates nightly. Earliest data: FY2008 (2007-10-01).";
12
+ export declare const reference: {
13
+ awardTypes: Record<string, string[]>;
14
+ agencyCodes: Record<string, string>;
15
+ };
16
+ export declare const tools: Tool<any, any>[];
17
+ export { clearCache } from "../sdk/usaspending.js";
18
+ export declare const prompts: InputPrompt<any, any>[];
19
+ //# sourceMappingURL=usaspending.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usaspending.d.ts","sourceRoot":"","sources":["../../src/modules/usaspending.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAejD,eAAO,MAAM,IAAI,gBAAgB,CAAC;AAClC,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,WAAW,yFAAoF,CAAC;AAC7G,eAAO,MAAM,QAAQ,iFAA4E,CAAC;AAClG,eAAO,MAAM,IAAI,mFAAmF,CAAC;AAErG,eAAO,MAAM,SAAS;;;CAGrB,CAAC;AAIF,eAAO,MAAM,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EA4KjC,CAAC;AAIF,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAInD,eAAO,MAAM,OAAO,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,EAoB1C,CAAC"}