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
package/dist/sdk/noaa.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NOAA Climate Data Online SDK — weather, temperature, precipitation data.
|
|
3
|
+
*
|
|
4
|
+
* API docs: https://www.ncei.noaa.gov/cdo-web/webservices/v2
|
|
5
|
+
* Get key: https://www.ncei.noaa.gov/cdo-web/token
|
|
6
|
+
* Rate limit: 5 req/sec, 10,000 req/day
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* import { getClimateData, searchStations } from "us-gov-open-data-mcp/sdk/noaa";
|
|
10
|
+
* const data = await getClimateData({ datasetId: "GHCND", stationId: "GHCND:USW00094728", startDate: "2025-01-01", endDate: "2025-12-31" });
|
|
11
|
+
*/
|
|
12
|
+
import { createClient } from "../client.js";
|
|
13
|
+
const api = createClient({
|
|
14
|
+
baseUrl: "https://www.ncei.noaa.gov/cdo-web/api/v2",
|
|
15
|
+
name: "noaa",
|
|
16
|
+
auth: { type: "header", key: "token", envVar: "NOAA_API_KEY" },
|
|
17
|
+
rateLimit: { perSecond: 5, burst: 5 },
|
|
18
|
+
cacheTtlMs: 24 * 60 * 60 * 1000, // 24 hours — historical weather doesn't change
|
|
19
|
+
});
|
|
20
|
+
// ─── Public API ──────────────────────────────────────────────────────
|
|
21
|
+
/** List available datasets (GHCND, GSOM, GSOY, etc.) */
|
|
22
|
+
export async function listDatasets() {
|
|
23
|
+
const data = await api.get("/datasets", { limit: 50 });
|
|
24
|
+
return data.results ?? [];
|
|
25
|
+
}
|
|
26
|
+
/** Search for weather stations by location or dataset. */
|
|
27
|
+
export async function searchStations(opts) {
|
|
28
|
+
const data = await api.get("/stations", {
|
|
29
|
+
datasetid: opts.datasetId,
|
|
30
|
+
locationid: opts.locationId,
|
|
31
|
+
extent: opts.extent,
|
|
32
|
+
limit: opts.limit ?? 25,
|
|
33
|
+
});
|
|
34
|
+
return data.results ?? [];
|
|
35
|
+
}
|
|
36
|
+
/** Get climate observations. */
|
|
37
|
+
export async function getClimateData(opts) {
|
|
38
|
+
const data = await api.get("/data", {
|
|
39
|
+
datasetid: opts.datasetId,
|
|
40
|
+
startdate: opts.startDate,
|
|
41
|
+
enddate: opts.endDate,
|
|
42
|
+
stationid: opts.stationId,
|
|
43
|
+
locationid: opts.locationId,
|
|
44
|
+
datatypeid: opts.datatypeId,
|
|
45
|
+
limit: opts.limit ?? 1000,
|
|
46
|
+
units: "standard",
|
|
47
|
+
});
|
|
48
|
+
return {
|
|
49
|
+
count: data.metadata?.resultset?.count ?? 0,
|
|
50
|
+
data: data.results ?? [],
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/** Search locations (states, cities, countries, etc.) */
|
|
54
|
+
export async function searchLocations(opts) {
|
|
55
|
+
const data = await api.get("/locations", {
|
|
56
|
+
locationcategoryid: opts.categoryId,
|
|
57
|
+
datasetid: opts.datasetId,
|
|
58
|
+
limit: opts.limit ?? 50,
|
|
59
|
+
sortfield: "name",
|
|
60
|
+
});
|
|
61
|
+
return data.results ?? [];
|
|
62
|
+
}
|
|
63
|
+
export function clearCache() { api.clearCache(); }
|
|
64
|
+
//# sourceMappingURL=noaa.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noaa.js","sourceRoot":"","sources":["../../src/sdk/noaa.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,GAAG,GAAG,YAAY,CAAC;IACvB,OAAO,EAAE,0CAA0C;IACnD,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE;IAC9D,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;IACrC,UAAU,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,+CAA+C;CACjF,CAAC,CAAC;AAqCH,wEAAwE;AAExE,wDAAwD;AACxD,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,CAA4B,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAClF,OAAO,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,0DAA0D;AAC1D,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAKpC;IACC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,CAA4B,WAAW,EAAE;QACjE,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;KACxB,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,gCAAgC;AAChC,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAQpC;IACC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,CAA8B,OAAO,EAAE;QAC/D,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;QACzB,KAAK,EAAE,UAAU;KAClB,CAAC,CAAC;IACH,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;QAC3C,IAAI,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;KACzB,CAAC;AACJ,CAAC;AAED,yDAAyD;AACzD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAIrC;IACC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,CAAoB,YAAY,EAAE;QAC1D,kBAAkB,EAAE,IAAI,CAAC,UAAU;QACnC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;QACvB,SAAS,EAAE,MAAM;KAClB,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,UAAU,KAAW,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NREL SDK — typed API client for the National Renewable Energy Laboratory APIs.
|
|
3
|
+
*
|
|
4
|
+
* Standalone — no MCP server required. Usage:
|
|
5
|
+
*
|
|
6
|
+
* import { searchAltFuelStations, getSolarResource, getUtilityRates } from "us-gov-open-data/sdk/nrel";
|
|
7
|
+
*
|
|
8
|
+
* const stations = await searchAltFuelStations({ state: "CA", fuel_type: "ELEC", limit: 10 });
|
|
9
|
+
* console.log(stations.total_results, stations.fuel_stations);
|
|
10
|
+
*
|
|
11
|
+
* const solar = await getSolarResource(40.7128, -74.006);
|
|
12
|
+
* console.log(solar.outputs.avg_ghi);
|
|
13
|
+
*
|
|
14
|
+
* const rates = await getUtilityRates(40.7128, -74.006);
|
|
15
|
+
* console.log(rates.outputs.residential, rates.outputs.utility_name);
|
|
16
|
+
*
|
|
17
|
+
* Requires DATA_GOV_API_KEY env var. Get one at https://api.data.gov/signup/
|
|
18
|
+
* Docs: https://developer.nrel.gov/docs/
|
|
19
|
+
*/
|
|
20
|
+
export interface FuelStation {
|
|
21
|
+
id: number;
|
|
22
|
+
station_name: string;
|
|
23
|
+
street_address: string;
|
|
24
|
+
city: string;
|
|
25
|
+
state: string;
|
|
26
|
+
zip: string;
|
|
27
|
+
country: string;
|
|
28
|
+
fuel_type_code: string;
|
|
29
|
+
status_code: string;
|
|
30
|
+
access_code: string;
|
|
31
|
+
latitude: number;
|
|
32
|
+
longitude: number;
|
|
33
|
+
ev_level1_evse_num: number | null;
|
|
34
|
+
ev_level2_evse_num: number | null;
|
|
35
|
+
ev_dc_fast_num: number | null;
|
|
36
|
+
ev_connector_types: string[] | null;
|
|
37
|
+
ev_network: string | null;
|
|
38
|
+
ev_network_web: string | null;
|
|
39
|
+
station_phone: string | null;
|
|
40
|
+
distance?: number;
|
|
41
|
+
distance_km?: number;
|
|
42
|
+
[key: string]: unknown;
|
|
43
|
+
}
|
|
44
|
+
export interface AltFuelStationsResult {
|
|
45
|
+
total_results: number;
|
|
46
|
+
station_locator_url: string;
|
|
47
|
+
fuel_stations: FuelStation[];
|
|
48
|
+
}
|
|
49
|
+
export interface UtilityRatesOutputs {
|
|
50
|
+
residential: number;
|
|
51
|
+
commercial: number;
|
|
52
|
+
industrial: number;
|
|
53
|
+
utility_name: string;
|
|
54
|
+
utility_info: {
|
|
55
|
+
utility_name: string;
|
|
56
|
+
company_id: number;
|
|
57
|
+
state_abbr: string;
|
|
58
|
+
}[];
|
|
59
|
+
[key: string]: unknown;
|
|
60
|
+
}
|
|
61
|
+
export interface UtilityRatesResult {
|
|
62
|
+
inputs: {
|
|
63
|
+
lat: string;
|
|
64
|
+
lon: string;
|
|
65
|
+
};
|
|
66
|
+
errors: string[];
|
|
67
|
+
warnings: string[];
|
|
68
|
+
version: string;
|
|
69
|
+
metadata: Record<string, unknown>;
|
|
70
|
+
outputs: UtilityRatesOutputs;
|
|
71
|
+
}
|
|
72
|
+
export interface SolarResourceMonthly {
|
|
73
|
+
jan: number;
|
|
74
|
+
feb: number;
|
|
75
|
+
mar: number;
|
|
76
|
+
apr: number;
|
|
77
|
+
may: number;
|
|
78
|
+
jun: number;
|
|
79
|
+
jul: number;
|
|
80
|
+
aug: number;
|
|
81
|
+
sep: number;
|
|
82
|
+
oct: number;
|
|
83
|
+
nov: number;
|
|
84
|
+
dec: number;
|
|
85
|
+
annual: number;
|
|
86
|
+
}
|
|
87
|
+
export interface SolarResourceOutputs {
|
|
88
|
+
avg_ghi: SolarResourceMonthly;
|
|
89
|
+
avg_dni: SolarResourceMonthly;
|
|
90
|
+
avg_lat_tilt: SolarResourceMonthly;
|
|
91
|
+
[key: string]: unknown;
|
|
92
|
+
}
|
|
93
|
+
export interface SolarResourceResult {
|
|
94
|
+
inputs: {
|
|
95
|
+
lat: string;
|
|
96
|
+
lon: string;
|
|
97
|
+
};
|
|
98
|
+
errors: string[];
|
|
99
|
+
warnings: string[];
|
|
100
|
+
version: string;
|
|
101
|
+
metadata: Record<string, unknown>;
|
|
102
|
+
outputs: SolarResourceOutputs;
|
|
103
|
+
}
|
|
104
|
+
/** Alternative fuel type codes used in the AFDC Stations API. */
|
|
105
|
+
export declare const FUEL_TYPES: Record<string, string>;
|
|
106
|
+
/** Station status codes. */
|
|
107
|
+
export declare const STATUS_CODES: Record<string, string>;
|
|
108
|
+
/**
|
|
109
|
+
* Search alternative fuel stations (EV chargers, CNG, biodiesel, hydrogen, etc.).
|
|
110
|
+
*
|
|
111
|
+
* Example:
|
|
112
|
+
* const result = await searchAltFuelStations({ state: "CA", fuel_type: "ELEC", limit: 20 });
|
|
113
|
+
*/
|
|
114
|
+
export declare function searchAltFuelStations(opts?: {
|
|
115
|
+
state?: string;
|
|
116
|
+
zip?: string;
|
|
117
|
+
fuel_type?: string;
|
|
118
|
+
limit?: number;
|
|
119
|
+
radius?: number;
|
|
120
|
+
status?: string;
|
|
121
|
+
city?: string;
|
|
122
|
+
ev_network?: string;
|
|
123
|
+
latitude?: number;
|
|
124
|
+
longitude?: number;
|
|
125
|
+
}): Promise<AltFuelStationsResult>;
|
|
126
|
+
/**
|
|
127
|
+
* Get electricity utility rates by latitude/longitude.
|
|
128
|
+
*
|
|
129
|
+
* Example:
|
|
130
|
+
* const rates = await getUtilityRates(40.7128, -74.006);
|
|
131
|
+
* console.log(`Residential: $${rates.outputs.residential}/kWh`);
|
|
132
|
+
*/
|
|
133
|
+
export declare function getUtilityRates(lat: number, lon: number): Promise<UtilityRatesResult>;
|
|
134
|
+
/**
|
|
135
|
+
* Get solar resource data (irradiance) by latitude/longitude.
|
|
136
|
+
* Returns GHI, DNI, and tilt-at-latitude monthly/annual averages.
|
|
137
|
+
*
|
|
138
|
+
* Example:
|
|
139
|
+
* const solar = await getSolarResource(34.0522, -118.2437);
|
|
140
|
+
* console.log(`Annual GHI: ${solar.outputs.avg_ghi.annual} kWh/m²/day`);
|
|
141
|
+
*/
|
|
142
|
+
export declare function getSolarResource(lat: number, lon: number): Promise<SolarResourceResult>;
|
|
143
|
+
/** Clear cached responses. */
|
|
144
|
+
export declare function clearCache(): void;
|
|
145
|
+
//# sourceMappingURL=nrel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nrel.d.ts","sourceRoot":"","sources":["../../src/sdk/nrel.ts"],"names":[],"mappings":"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"}
|
package/dist/sdk/nrel.js
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NREL SDK — typed API client for the National Renewable Energy Laboratory APIs.
|
|
3
|
+
*
|
|
4
|
+
* Standalone — no MCP server required. Usage:
|
|
5
|
+
*
|
|
6
|
+
* import { searchAltFuelStations, getSolarResource, getUtilityRates } from "us-gov-open-data/sdk/nrel";
|
|
7
|
+
*
|
|
8
|
+
* const stations = await searchAltFuelStations({ state: "CA", fuel_type: "ELEC", limit: 10 });
|
|
9
|
+
* console.log(stations.total_results, stations.fuel_stations);
|
|
10
|
+
*
|
|
11
|
+
* const solar = await getSolarResource(40.7128, -74.006);
|
|
12
|
+
* console.log(solar.outputs.avg_ghi);
|
|
13
|
+
*
|
|
14
|
+
* const rates = await getUtilityRates(40.7128, -74.006);
|
|
15
|
+
* console.log(rates.outputs.residential, rates.outputs.utility_name);
|
|
16
|
+
*
|
|
17
|
+
* Requires DATA_GOV_API_KEY env var. Get one at https://api.data.gov/signup/
|
|
18
|
+
* Docs: https://developer.nrel.gov/docs/
|
|
19
|
+
*/
|
|
20
|
+
import { createClient } from "../client.js";
|
|
21
|
+
// ─── Client ──────────────────────────────────────────────────────────
|
|
22
|
+
const api = createClient({
|
|
23
|
+
baseUrl: "https://developer.nrel.gov/api",
|
|
24
|
+
name: "nrel",
|
|
25
|
+
auth: { type: "query", key: "api_key", envVar: "DATA_GOV_API_KEY" },
|
|
26
|
+
rateLimit: { perSecond: 5, burst: 15 },
|
|
27
|
+
cacheTtlMs: 60 * 60 * 1000, // 1 hour
|
|
28
|
+
});
|
|
29
|
+
// ─── Reference Data ──────────────────────────────────────────────────
|
|
30
|
+
/** Alternative fuel type codes used in the AFDC Stations API. */
|
|
31
|
+
export const FUEL_TYPES = {
|
|
32
|
+
ELEC: "Electric",
|
|
33
|
+
E85: "Ethanol (E85)",
|
|
34
|
+
CNG: "Compressed Natural Gas",
|
|
35
|
+
LPG: "Propane (LPG)",
|
|
36
|
+
BD: "Biodiesel (B20 and above)",
|
|
37
|
+
HY: "Hydrogen",
|
|
38
|
+
LNG: "Liquefied Natural Gas",
|
|
39
|
+
RD: "Renewable Diesel",
|
|
40
|
+
};
|
|
41
|
+
/** Station status codes. */
|
|
42
|
+
export const STATUS_CODES = {
|
|
43
|
+
E: "Open (available)",
|
|
44
|
+
P: "Planned (not yet open)",
|
|
45
|
+
T: "Temporarily unavailable",
|
|
46
|
+
};
|
|
47
|
+
// ─── Public API ──────────────────────────────────────────────────────
|
|
48
|
+
/**
|
|
49
|
+
* Search alternative fuel stations (EV chargers, CNG, biodiesel, hydrogen, etc.).
|
|
50
|
+
*
|
|
51
|
+
* Example:
|
|
52
|
+
* const result = await searchAltFuelStations({ state: "CA", fuel_type: "ELEC", limit: 20 });
|
|
53
|
+
*/
|
|
54
|
+
export async function searchAltFuelStations(opts = {}) {
|
|
55
|
+
return api.get("/alt-fuel-stations/v1.json", {
|
|
56
|
+
state: opts.state,
|
|
57
|
+
zip: opts.zip,
|
|
58
|
+
fuel_type: opts.fuel_type,
|
|
59
|
+
limit: opts.limit,
|
|
60
|
+
radius: opts.radius,
|
|
61
|
+
status: opts.status,
|
|
62
|
+
city: opts.city,
|
|
63
|
+
ev_network: opts.ev_network,
|
|
64
|
+
latitude: opts.latitude,
|
|
65
|
+
longitude: opts.longitude,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get electricity utility rates by latitude/longitude.
|
|
70
|
+
*
|
|
71
|
+
* Example:
|
|
72
|
+
* const rates = await getUtilityRates(40.7128, -74.006);
|
|
73
|
+
* console.log(`Residential: $${rates.outputs.residential}/kWh`);
|
|
74
|
+
*/
|
|
75
|
+
export async function getUtilityRates(lat, lon) {
|
|
76
|
+
return api.get("/utility_rates/v3.json", { lat, lon });
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Get solar resource data (irradiance) by latitude/longitude.
|
|
80
|
+
* Returns GHI, DNI, and tilt-at-latitude monthly/annual averages.
|
|
81
|
+
*
|
|
82
|
+
* Example:
|
|
83
|
+
* const solar = await getSolarResource(34.0522, -118.2437);
|
|
84
|
+
* console.log(`Annual GHI: ${solar.outputs.avg_ghi.annual} kWh/m²/day`);
|
|
85
|
+
*/
|
|
86
|
+
export async function getSolarResource(lat, lon) {
|
|
87
|
+
return api.get("/solar/solar_resource/v1.json", { lat, lon });
|
|
88
|
+
}
|
|
89
|
+
/** Clear cached responses. */
|
|
90
|
+
export function clearCache() {
|
|
91
|
+
api.clearCache();
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=nrel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nrel.js","sourceRoot":"","sources":["../../src/sdk/nrel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,wEAAwE;AAExE,MAAM,GAAG,GAAG,YAAY,CAAC;IACvB,OAAO,EAAE,gCAAgC;IACzC,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,kBAAkB,EAAE;IACnE,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IACtC,UAAU,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,SAAS;CACtC,CAAC,CAAC;AA4EH,wEAAwE;AAExE,iEAAiE;AACjE,MAAM,CAAC,MAAM,UAAU,GAA2B;IAChD,IAAI,EAAE,UAAU;IAChB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,wBAAwB;IAC7B,GAAG,EAAE,eAAe;IACpB,EAAE,EAAE,2BAA2B;IAC/B,EAAE,EAAE,UAAU;IACd,GAAG,EAAE,uBAAuB;IAC5B,EAAE,EAAE,kBAAkB;CACvB,CAAC;AAEF,4BAA4B;AAC5B,MAAM,CAAC,MAAM,YAAY,GAA2B;IAClD,CAAC,EAAE,kBAAkB;IACrB,CAAC,EAAE,wBAAwB;IAC3B,CAAC,EAAE,yBAAyB;CAC7B,CAAC;AAEF,wEAAwE;AAExE;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAWxC,EAAE;IACJ,OAAO,GAAG,CAAC,GAAG,CAAwB,4BAA4B,EAAE;QAClE,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAW,EAAE,GAAW;IAC5D,OAAO,GAAG,CAAC,GAAG,CAAqB,wBAAwB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAW,EAAE,GAAW;IAC7D,OAAO,GAAG,CAAC,GAAG,CAAsB,+BAA+B,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AACrF,CAAC;AAED,8BAA8B;AAC9B,MAAM,UAAU,UAAU;IACxB,GAAG,CAAC,UAAU,EAAE,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Regulations.gov SDK — typed API client for the Regulations.gov API (v4).
|
|
3
|
+
*
|
|
4
|
+
* Standalone — no MCP server required. Usage:
|
|
5
|
+
*
|
|
6
|
+
* import { searchDocuments, searchComments, searchDockets } from "us-gov-open-data/sdk/regulations";
|
|
7
|
+
*
|
|
8
|
+
* const docs = await searchDocuments({ searchTerm: "water", agencyId: "EPA", pageSize: 10 });
|
|
9
|
+
* console.log(docs.data);
|
|
10
|
+
*
|
|
11
|
+
* const comments = await searchComments({ searchTerm: "climate", pageSize: 5 });
|
|
12
|
+
* console.log(comments.data);
|
|
13
|
+
*
|
|
14
|
+
* Requires DATA_GOV_API_KEY env var. Get one at https://api.data.gov/signup/
|
|
15
|
+
* Docs: https://open.gsa.gov/api/regulationsgov/
|
|
16
|
+
*/
|
|
17
|
+
export interface RegulationsDocument {
|
|
18
|
+
id: string;
|
|
19
|
+
type: string;
|
|
20
|
+
attributes: {
|
|
21
|
+
agencyId: string;
|
|
22
|
+
commentEndDate?: string;
|
|
23
|
+
commentStartDate?: string;
|
|
24
|
+
docketId: string;
|
|
25
|
+
documentType: string;
|
|
26
|
+
frDocNum?: string;
|
|
27
|
+
lastModifiedDate: string;
|
|
28
|
+
objectId: string;
|
|
29
|
+
postedDate: string;
|
|
30
|
+
subtype?: string;
|
|
31
|
+
title: string;
|
|
32
|
+
withdrawn: boolean;
|
|
33
|
+
[key: string]: unknown;
|
|
34
|
+
};
|
|
35
|
+
links?: {
|
|
36
|
+
self: string;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export interface RegulationsComment {
|
|
40
|
+
id: string;
|
|
41
|
+
type: string;
|
|
42
|
+
attributes: {
|
|
43
|
+
agencyId: string;
|
|
44
|
+
comment?: string;
|
|
45
|
+
docketId: string;
|
|
46
|
+
documentType: string;
|
|
47
|
+
lastModifiedDate: string;
|
|
48
|
+
objectId: string;
|
|
49
|
+
postedDate: string;
|
|
50
|
+
title: string;
|
|
51
|
+
withdrawn: boolean;
|
|
52
|
+
[key: string]: unknown;
|
|
53
|
+
};
|
|
54
|
+
links?: {
|
|
55
|
+
self: string;
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
export interface RegulationsDocket {
|
|
59
|
+
id: string;
|
|
60
|
+
type: string;
|
|
61
|
+
attributes: {
|
|
62
|
+
agencyId: string;
|
|
63
|
+
docketType: string;
|
|
64
|
+
lastModifiedDate: string;
|
|
65
|
+
objectId: string;
|
|
66
|
+
title: string;
|
|
67
|
+
[key: string]: unknown;
|
|
68
|
+
};
|
|
69
|
+
links?: {
|
|
70
|
+
self: string;
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
export interface RegulationsListResponse<T> {
|
|
74
|
+
data: T[];
|
|
75
|
+
meta?: {
|
|
76
|
+
hasNextPage: boolean;
|
|
77
|
+
hasPreviousPage: boolean;
|
|
78
|
+
numberOfElements: number;
|
|
79
|
+
pageNumber: number;
|
|
80
|
+
pageSize: number;
|
|
81
|
+
totalElements: number;
|
|
82
|
+
totalPages: number;
|
|
83
|
+
firstPage: boolean;
|
|
84
|
+
lastPage: boolean;
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
export interface RegulationsDetailResponse<T> {
|
|
88
|
+
data: T;
|
|
89
|
+
}
|
|
90
|
+
export declare const DOCUMENT_TYPES: Record<string, string>;
|
|
91
|
+
/**
|
|
92
|
+
* Search for regulatory documents (proposed rules, final rules, supporting materials).
|
|
93
|
+
*/
|
|
94
|
+
export declare function searchDocuments(opts?: {
|
|
95
|
+
searchTerm?: string;
|
|
96
|
+
agencyId?: string;
|
|
97
|
+
docketId?: string;
|
|
98
|
+
documentType?: string;
|
|
99
|
+
postedDate?: string;
|
|
100
|
+
postedDateGe?: string;
|
|
101
|
+
postedDateLe?: string;
|
|
102
|
+
sort?: string;
|
|
103
|
+
pageSize?: number;
|
|
104
|
+
pageNumber?: number;
|
|
105
|
+
}): Promise<RegulationsListResponse<RegulationsDocument>>;
|
|
106
|
+
/**
|
|
107
|
+
* Get detailed information for a single document by its document ID.
|
|
108
|
+
*/
|
|
109
|
+
export declare function getDocument(documentId: string): Promise<RegulationsDetailResponse<RegulationsDocument>>;
|
|
110
|
+
/**
|
|
111
|
+
* Search for public comments on regulatory documents.
|
|
112
|
+
*/
|
|
113
|
+
export declare function searchComments(opts?: {
|
|
114
|
+
searchTerm?: string;
|
|
115
|
+
agencyId?: string;
|
|
116
|
+
docketId?: string;
|
|
117
|
+
commentOnId?: string;
|
|
118
|
+
postedDate?: string;
|
|
119
|
+
postedDateGe?: string;
|
|
120
|
+
postedDateLe?: string;
|
|
121
|
+
sort?: string;
|
|
122
|
+
pageSize?: number;
|
|
123
|
+
pageNumber?: number;
|
|
124
|
+
}): Promise<RegulationsListResponse<RegulationsComment>>;
|
|
125
|
+
/**
|
|
126
|
+
* Get detailed information for a single comment.
|
|
127
|
+
*/
|
|
128
|
+
export declare function getComment(commentId: string): Promise<RegulationsDetailResponse<RegulationsComment>>;
|
|
129
|
+
/**
|
|
130
|
+
* Search for regulatory dockets.
|
|
131
|
+
*/
|
|
132
|
+
export declare function searchDockets(opts?: {
|
|
133
|
+
searchTerm?: string;
|
|
134
|
+
agencyId?: string;
|
|
135
|
+
docketType?: string;
|
|
136
|
+
sort?: string;
|
|
137
|
+
pageSize?: number;
|
|
138
|
+
pageNumber?: number;
|
|
139
|
+
}): Promise<RegulationsListResponse<RegulationsDocket>>;
|
|
140
|
+
/**
|
|
141
|
+
* Get detailed information for a single docket.
|
|
142
|
+
*/
|
|
143
|
+
export declare function getDocket(docketId: string): Promise<RegulationsDetailResponse<RegulationsDocket>>;
|
|
144
|
+
/** Clear cached responses. */
|
|
145
|
+
export declare function clearCache(): void;
|
|
146
|
+
//# sourceMappingURL=regulations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regulations.d.ts","sourceRoot":"","sources":["../../src/sdk/regulations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Regulations.gov SDK — typed API client for the Regulations.gov API (v4).
|
|
3
|
+
*
|
|
4
|
+
* Standalone — no MCP server required. Usage:
|
|
5
|
+
*
|
|
6
|
+
* import { searchDocuments, searchComments, searchDockets } from "us-gov-open-data/sdk/regulations";
|
|
7
|
+
*
|
|
8
|
+
* const docs = await searchDocuments({ searchTerm: "water", agencyId: "EPA", pageSize: 10 });
|
|
9
|
+
* console.log(docs.data);
|
|
10
|
+
*
|
|
11
|
+
* const comments = await searchComments({ searchTerm: "climate", pageSize: 5 });
|
|
12
|
+
* console.log(comments.data);
|
|
13
|
+
*
|
|
14
|
+
* Requires DATA_GOV_API_KEY env var. Get one at https://api.data.gov/signup/
|
|
15
|
+
* Docs: https://open.gsa.gov/api/regulationsgov/
|
|
16
|
+
*/
|
|
17
|
+
import { createClient } from "../client.js";
|
|
18
|
+
// ─── Client ──────────────────────────────────────────────────────────
|
|
19
|
+
const api = createClient({
|
|
20
|
+
baseUrl: "https://api.regulations.gov/v4",
|
|
21
|
+
name: "regulations",
|
|
22
|
+
auth: { type: "query", key: "api_key", envVar: "DATA_GOV_API_KEY" },
|
|
23
|
+
rateLimit: { perSecond: 3, burst: 10 },
|
|
24
|
+
cacheTtlMs: 30 * 60 * 1000, // 30 min
|
|
25
|
+
});
|
|
26
|
+
// ─── Reference Data ──────────────────────────────────────────────────
|
|
27
|
+
export const DOCUMENT_TYPES = {
|
|
28
|
+
"Proposed Rule": "Proposed Rule",
|
|
29
|
+
"Rule": "Final Rule",
|
|
30
|
+
"Supporting & Related Material": "Supporting & Related Material",
|
|
31
|
+
"Other": "Other",
|
|
32
|
+
};
|
|
33
|
+
// ─── Public API ──────────────────────────────────────────────────────
|
|
34
|
+
/**
|
|
35
|
+
* Search for regulatory documents (proposed rules, final rules, supporting materials).
|
|
36
|
+
*/
|
|
37
|
+
export async function searchDocuments(opts = {}) {
|
|
38
|
+
return api.get("/documents", {
|
|
39
|
+
"filter[searchTerm]": opts.searchTerm,
|
|
40
|
+
"filter[agencyId]": opts.agencyId,
|
|
41
|
+
"filter[docketId]": opts.docketId,
|
|
42
|
+
"filter[documentType]": opts.documentType,
|
|
43
|
+
"filter[postedDate]": opts.postedDate,
|
|
44
|
+
"filter[postedDate][ge]": opts.postedDateGe,
|
|
45
|
+
"filter[postedDate][le]": opts.postedDateLe,
|
|
46
|
+
sort: opts.sort,
|
|
47
|
+
"page[size]": opts.pageSize,
|
|
48
|
+
"page[number]": opts.pageNumber,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Get detailed information for a single document by its document ID.
|
|
53
|
+
*/
|
|
54
|
+
export async function getDocument(documentId) {
|
|
55
|
+
return api.get(`/documents/${encodeURIComponent(documentId)}`);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Search for public comments on regulatory documents.
|
|
59
|
+
*/
|
|
60
|
+
export async function searchComments(opts = {}) {
|
|
61
|
+
return api.get("/comments", {
|
|
62
|
+
"filter[searchTerm]": opts.searchTerm,
|
|
63
|
+
"filter[agencyId]": opts.agencyId,
|
|
64
|
+
"filter[docketId]": opts.docketId,
|
|
65
|
+
"filter[commentOnId]": opts.commentOnId,
|
|
66
|
+
"filter[postedDate]": opts.postedDate,
|
|
67
|
+
"filter[postedDate][ge]": opts.postedDateGe,
|
|
68
|
+
"filter[postedDate][le]": opts.postedDateLe,
|
|
69
|
+
sort: opts.sort,
|
|
70
|
+
"page[size]": opts.pageSize,
|
|
71
|
+
"page[number]": opts.pageNumber,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get detailed information for a single comment.
|
|
76
|
+
*/
|
|
77
|
+
export async function getComment(commentId) {
|
|
78
|
+
return api.get(`/comments/${encodeURIComponent(commentId)}`);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Search for regulatory dockets.
|
|
82
|
+
*/
|
|
83
|
+
export async function searchDockets(opts = {}) {
|
|
84
|
+
return api.get("/dockets", {
|
|
85
|
+
"filter[searchTerm]": opts.searchTerm,
|
|
86
|
+
"filter[agencyId]": opts.agencyId,
|
|
87
|
+
"filter[docketType]": opts.docketType,
|
|
88
|
+
sort: opts.sort,
|
|
89
|
+
"page[size]": opts.pageSize,
|
|
90
|
+
"page[number]": opts.pageNumber,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Get detailed information for a single docket.
|
|
95
|
+
*/
|
|
96
|
+
export async function getDocket(docketId) {
|
|
97
|
+
return api.get(`/dockets/${encodeURIComponent(docketId)}`);
|
|
98
|
+
}
|
|
99
|
+
/** Clear cached responses. */
|
|
100
|
+
export function clearCache() {
|
|
101
|
+
api.clearCache();
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=regulations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regulations.js","sourceRoot":"","sources":["../../src/sdk/regulations.ts"],"names":[],"mappings":"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"}
|