us-gov-open-data-mcp 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +211 -0
- package/dist/client.d.ts +54 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +388 -0
- package/dist/client.js.map +1 -0
- package/dist/instructions.d.ts +8 -0
- package/dist/instructions.d.ts.map +1 -0
- package/dist/instructions.js +549 -0
- package/dist/instructions.js.map +1 -0
- package/dist/modules/bea.d.ts +28 -0
- package/dist/modules/bea.d.ts.map +1 -0
- package/dist/modules/bea.js +158 -0
- package/dist/modules/bea.js.map +1 -0
- package/dist/modules/bls.d.ts +29 -0
- package/dist/modules/bls.d.ts.map +1 -0
- package/dist/modules/bls.js +244 -0
- package/dist/modules/bls.js.map +1 -0
- package/dist/modules/bts.d.ts +26 -0
- package/dist/modules/bts.d.ts.map +1 -0
- package/dist/modules/bts.js +112 -0
- package/dist/modules/bts.js.map +1 -0
- package/dist/modules/cdc.d.ts +26 -0
- package/dist/modules/cdc.d.ts.map +1 -0
- package/dist/modules/cdc.js +310 -0
- package/dist/modules/cdc.js.map +1 -0
- package/dist/modules/census.d.ts +23 -0
- package/dist/modules/census.d.ts.map +1 -0
- package/dist/modules/census.js +141 -0
- package/dist/modules/census.js.map +1 -0
- package/dist/modules/cfpb.d.ts +20 -0
- package/dist/modules/cfpb.d.ts.map +1 -0
- package/dist/modules/cfpb.js +135 -0
- package/dist/modules/cfpb.js.map +1 -0
- package/dist/modules/clinical-trials.d.ts +22 -0
- package/dist/modules/clinical-trials.d.ts.map +1 -0
- package/dist/modules/clinical-trials.js +171 -0
- package/dist/modules/clinical-trials.js.map +1 -0
- package/dist/modules/cms.d.ts +21 -0
- package/dist/modules/cms.d.ts.map +1 -0
- package/dist/modules/cms.js +135 -0
- package/dist/modules/cms.js.map +1 -0
- package/dist/modules/college-scorecard.d.ts +39 -0
- package/dist/modules/college-scorecard.d.ts.map +1 -0
- package/dist/modules/college-scorecard.js +192 -0
- package/dist/modules/college-scorecard.js.map +1 -0
- package/dist/modules/congress.d.ts +28 -0
- package/dist/modules/congress.d.ts.map +1 -0
- package/dist/modules/congress.js +883 -0
- package/dist/modules/congress.js.map +1 -0
- package/dist/modules/dol.d.ts +27 -0
- package/dist/modules/dol.d.ts.map +1 -0
- package/dist/modules/dol.js +209 -0
- package/dist/modules/dol.js.map +1 -0
- package/dist/modules/eia.d.ts +33 -0
- package/dist/modules/eia.d.ts.map +1 -0
- package/dist/modules/eia.js +227 -0
- package/dist/modules/eia.js.map +1 -0
- package/dist/modules/epa.d.ts +21 -0
- package/dist/modules/epa.d.ts.map +1 -0
- package/dist/modules/epa.js +91 -0
- package/dist/modules/epa.js.map +1 -0
- package/dist/modules/fbi.d.ts +28 -0
- package/dist/modules/fbi.d.ts.map +1 -0
- package/dist/modules/fbi.js +143 -0
- package/dist/modules/fbi.js.map +1 -0
- package/dist/modules/fda.d.ts +35 -0
- package/dist/modules/fda.d.ts.map +1 -0
- package/dist/modules/fda.js +262 -0
- package/dist/modules/fda.js.map +1 -0
- package/dist/modules/fdic.d.ts +21 -0
- package/dist/modules/fdic.d.ts.map +1 -0
- package/dist/modules/fdic.js +186 -0
- package/dist/modules/fdic.js.map +1 -0
- package/dist/modules/fec.d.ts +29 -0
- package/dist/modules/fec.d.ts.map +1 -0
- package/dist/modules/fec.js +282 -0
- package/dist/modules/fec.js.map +1 -0
- package/dist/modules/federal-register.d.ts +24 -0
- package/dist/modules/federal-register.d.ts.map +1 -0
- package/dist/modules/federal-register.js +184 -0
- package/dist/modules/federal-register.js.map +1 -0
- package/dist/modules/fema.d.ts +20 -0
- package/dist/modules/fema.d.ts.map +1 -0
- package/dist/modules/fema.js +156 -0
- package/dist/modules/fema.js.map +1 -0
- package/dist/modules/fred.d.ts +40 -0
- package/dist/modules/fred.d.ts.map +1 -0
- package/dist/modules/fred.js +143 -0
- package/dist/modules/fred.js.map +1 -0
- package/dist/modules/govinfo.d.ts +24 -0
- package/dist/modules/govinfo.d.ts.map +1 -0
- package/dist/modules/govinfo.js +147 -0
- package/dist/modules/govinfo.js.map +1 -0
- package/dist/modules/hud.d.ts +17 -0
- package/dist/modules/hud.d.ts.map +1 -0
- package/dist/modules/hud.js +170 -0
- package/dist/modules/hud.js.map +1 -0
- package/dist/modules/naep.d.ts +27 -0
- package/dist/modules/naep.d.ts.map +1 -0
- package/dist/modules/naep.js +210 -0
- package/dist/modules/naep.js.map +1 -0
- package/dist/modules/nhtsa.d.ts +13 -0
- package/dist/modules/nhtsa.d.ts.map +1 -0
- package/dist/modules/nhtsa.js +196 -0
- package/dist/modules/nhtsa.js.map +1 -0
- package/dist/modules/noaa.d.ts +41 -0
- package/dist/modules/noaa.d.ts.map +1 -0
- package/dist/modules/noaa.js +135 -0
- package/dist/modules/noaa.js.map +1 -0
- package/dist/modules/nrel.d.ts +25 -0
- package/dist/modules/nrel.d.ts.map +1 -0
- package/dist/modules/nrel.js +87 -0
- package/dist/modules/nrel.js.map +1 -0
- package/dist/modules/regulations.d.ts +24 -0
- package/dist/modules/regulations.d.ts.map +1 -0
- package/dist/modules/regulations.js +173 -0
- package/dist/modules/regulations.js.map +1 -0
- package/dist/modules/sec.d.ts +25 -0
- package/dist/modules/sec.d.ts.map +1 -0
- package/dist/modules/sec.js +192 -0
- package/dist/modules/sec.js.map +1 -0
- package/dist/modules/senate-lobbying.d.ts +21 -0
- package/dist/modules/senate-lobbying.d.ts.map +1 -0
- package/dist/modules/senate-lobbying.js +189 -0
- package/dist/modules/senate-lobbying.js.map +1 -0
- package/dist/modules/treasury.d.ts +23 -0
- package/dist/modules/treasury.d.ts.map +1 -0
- package/dist/modules/treasury.js +234 -0
- package/dist/modules/treasury.js.map +1 -0
- package/dist/modules/usaspending.d.ts +19 -0
- package/dist/modules/usaspending.d.ts.map +1 -0
- package/dist/modules/usaspending.js +204 -0
- package/dist/modules/usaspending.js.map +1 -0
- package/dist/modules/usda-fooddata.d.ts +24 -0
- package/dist/modules/usda-fooddata.d.ts.map +1 -0
- package/dist/modules/usda-fooddata.js +118 -0
- package/dist/modules/usda-fooddata.js.map +1 -0
- package/dist/modules/usda-nass.d.ts +46 -0
- package/dist/modules/usda-nass.d.ts.map +1 -0
- package/dist/modules/usda-nass.js +151 -0
- package/dist/modules/usda-nass.js.map +1 -0
- package/dist/modules/usgs.d.ts +21 -0
- package/dist/modules/usgs.d.ts.map +1 -0
- package/dist/modules/usgs.js +203 -0
- package/dist/modules/usgs.js.map +1 -0
- package/dist/modules/uspto.d.ts +13 -0
- package/dist/modules/uspto.d.ts.map +1 -0
- package/dist/modules/uspto.js +157 -0
- package/dist/modules/uspto.js.map +1 -0
- package/dist/modules/world-bank.d.ts +21 -0
- package/dist/modules/world-bank.d.ts.map +1 -0
- package/dist/modules/world-bank.js +130 -0
- package/dist/modules/world-bank.js.map +1 -0
- package/dist/prompts.d.ts +12 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +858 -0
- package/dist/prompts.js.map +1 -0
- package/dist/sdk/bea.d.ts +111 -0
- package/dist/sdk/bea.d.ts.map +1 -0
- package/dist/sdk/bea.js +242 -0
- package/dist/sdk/bea.js.map +1 -0
- package/dist/sdk/bls.d.ts +65 -0
- package/dist/sdk/bls.d.ts.map +1 -0
- package/dist/sdk/bls.js +203 -0
- package/dist/sdk/bls.js.map +1 -0
- package/dist/sdk/bts.d.ts +108 -0
- package/dist/sdk/bts.d.ts.map +1 -0
- package/dist/sdk/bts.js +121 -0
- package/dist/sdk/bts.js.map +1 -0
- package/dist/sdk/cdc.d.ts +105 -0
- package/dist/sdk/cdc.d.ts.map +1 -0
- package/dist/sdk/cdc.js +222 -0
- package/dist/sdk/cdc.js.map +1 -0
- package/dist/sdk/census.d.ts +47 -0
- package/dist/sdk/census.d.ts.map +1 -0
- package/dist/sdk/census.js +99 -0
- package/dist/sdk/census.js.map +1 -0
- package/dist/sdk/cfpb.d.ts +148 -0
- package/dist/sdk/cfpb.d.ts.map +1 -0
- package/dist/sdk/cfpb.js +153 -0
- package/dist/sdk/cfpb.js.map +1 -0
- package/dist/sdk/clinical-trials.d.ts +214 -0
- package/dist/sdk/clinical-trials.d.ts.map +1 -0
- package/dist/sdk/clinical-trials.js +134 -0
- package/dist/sdk/clinical-trials.js.map +1 -0
- package/dist/sdk/cms.d.ts +81 -0
- package/dist/sdk/cms.d.ts.map +1 -0
- package/dist/sdk/cms.js +227 -0
- package/dist/sdk/cms.js.map +1 -0
- package/dist/sdk/college-scorecard.d.ts +63 -0
- package/dist/sdk/college-scorecard.d.ts.map +1 -0
- package/dist/sdk/college-scorecard.js +131 -0
- package/dist/sdk/college-scorecard.js.map +1 -0
- package/dist/sdk/congress.d.ts +575 -0
- package/dist/sdk/congress.d.ts.map +1 -0
- package/dist/sdk/congress.js +659 -0
- package/dist/sdk/congress.js.map +1 -0
- package/dist/sdk/dol.d.ts +299 -0
- package/dist/sdk/dol.d.ts.map +1 -0
- package/dist/sdk/dol.js +252 -0
- package/dist/sdk/dol.js.map +1 -0
- package/dist/sdk/eia.d.ts +91 -0
- package/dist/sdk/eia.d.ts.map +1 -0
- package/dist/sdk/eia.js +156 -0
- package/dist/sdk/eia.js.map +1 -0
- package/dist/sdk/epa.d.ts +128 -0
- package/dist/sdk/epa.d.ts.map +1 -0
- package/dist/sdk/epa.js +120 -0
- package/dist/sdk/epa.js.map +1 -0
- package/dist/sdk/fbi.d.ts +48 -0
- package/dist/sdk/fbi.d.ts.map +1 -0
- package/dist/sdk/fbi.js +69 -0
- package/dist/sdk/fbi.js.map +1 -0
- package/dist/sdk/fda.d.ts +356 -0
- package/dist/sdk/fda.d.ts.map +1 -0
- package/dist/sdk/fda.js +162 -0
- package/dist/sdk/fda.js.map +1 -0
- package/dist/sdk/fdic.d.ts +227 -0
- package/dist/sdk/fdic.d.ts.map +1 -0
- package/dist/sdk/fdic.js +172 -0
- package/dist/sdk/fdic.js.map +1 -0
- package/dist/sdk/fec.d.ts +142 -0
- package/dist/sdk/fec.d.ts.map +1 -0
- package/dist/sdk/fec.js +92 -0
- package/dist/sdk/fec.js.map +1 -0
- package/dist/sdk/federal-register.d.ts +88 -0
- package/dist/sdk/federal-register.d.ts.map +1 -0
- package/dist/sdk/federal-register.js +100 -0
- package/dist/sdk/federal-register.js.map +1 -0
- package/dist/sdk/fema.d.ts +137 -0
- package/dist/sdk/fema.d.ts.map +1 -0
- package/dist/sdk/fema.js +197 -0
- package/dist/sdk/fema.js.map +1 -0
- package/dist/sdk/fred.d.ts +72 -0
- package/dist/sdk/fred.d.ts.map +1 -0
- package/dist/sdk/fred.js +59 -0
- package/dist/sdk/fred.js.map +1 -0
- package/dist/sdk/govinfo.d.ts +64 -0
- package/dist/sdk/govinfo.d.ts.map +1 -0
- package/dist/sdk/govinfo.js +187 -0
- package/dist/sdk/govinfo.js.map +1 -0
- package/dist/sdk/hud.d.ts +87 -0
- package/dist/sdk/hud.d.ts.map +1 -0
- package/dist/sdk/hud.js +91 -0
- package/dist/sdk/hud.js.map +1 -0
- package/dist/sdk/index.d.ts +51 -0
- package/dist/sdk/index.d.ts.map +1 -0
- package/dist/sdk/index.js +51 -0
- package/dist/sdk/index.js.map +1 -0
- package/dist/sdk/naep.d.ts +93 -0
- package/dist/sdk/naep.d.ts.map +1 -0
- package/dist/sdk/naep.js +163 -0
- package/dist/sdk/naep.js.map +1 -0
- package/dist/sdk/nhtsa.d.ts +169 -0
- package/dist/sdk/nhtsa.d.ts.map +1 -0
- package/dist/sdk/nhtsa.js +102 -0
- package/dist/sdk/nhtsa.js.map +1 -0
- package/dist/sdk/noaa.d.ts +72 -0
- package/dist/sdk/noaa.d.ts.map +1 -0
- package/dist/sdk/noaa.js +64 -0
- package/dist/sdk/noaa.js.map +1 -0
- package/dist/sdk/nrel.d.ts +145 -0
- package/dist/sdk/nrel.d.ts.map +1 -0
- package/dist/sdk/nrel.js +93 -0
- package/dist/sdk/nrel.js.map +1 -0
- package/dist/sdk/regulations.d.ts +146 -0
- package/dist/sdk/regulations.d.ts.map +1 -0
- package/dist/sdk/regulations.js +103 -0
- package/dist/sdk/regulations.js.map +1 -0
- package/dist/sdk/sec.d.ts +114 -0
- package/dist/sdk/sec.d.ts.map +1 -0
- package/dist/sdk/sec.js +151 -0
- package/dist/sdk/sec.js.map +1 -0
- package/dist/sdk/senate-lobbying.d.ts +147 -0
- package/dist/sdk/senate-lobbying.d.ts.map +1 -0
- package/dist/sdk/senate-lobbying.js +125 -0
- package/dist/sdk/senate-lobbying.js.map +1 -0
- package/dist/sdk/treasury.d.ts +59 -0
- package/dist/sdk/treasury.d.ts.map +1 -0
- package/dist/sdk/treasury.js +1397 -0
- package/dist/sdk/treasury.js.map +1 -0
- package/dist/sdk/usaspending.d.ts +126 -0
- package/dist/sdk/usaspending.d.ts.map +1 -0
- package/dist/sdk/usaspending.js +270 -0
- package/dist/sdk/usaspending.js.map +1 -0
- package/dist/sdk/usda-fooddata.d.ts +112 -0
- package/dist/sdk/usda-fooddata.d.ts.map +1 -0
- package/dist/sdk/usda-fooddata.js +80 -0
- package/dist/sdk/usda-fooddata.js.map +1 -0
- package/dist/sdk/usda-nass.d.ts +75 -0
- package/dist/sdk/usda-nass.d.ts.map +1 -0
- package/dist/sdk/usda-nass.js +83 -0
- package/dist/sdk/usda-nass.js.map +1 -0
- package/dist/sdk/usgs.d.ts +221 -0
- package/dist/sdk/usgs.d.ts.map +1 -0
- package/dist/sdk/usgs.js +182 -0
- package/dist/sdk/usgs.js.map +1 -0
- package/dist/sdk/uspto.d.ts +109 -0
- package/dist/sdk/uspto.d.ts.map +1 -0
- package/dist/sdk/uspto.js +286 -0
- package/dist/sdk/uspto.js.map +1 -0
- package/dist/sdk/world-bank.d.ts +78 -0
- package/dist/sdk/world-bank.d.ts.map +1 -0
- package/dist/sdk/world-bank.js +72 -0
- package/dist/sdk/world-bank.js.map +1 -0
- package/dist/server.d.ts +22 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +196 -0
- package/dist/server.js.map +1 -0
- package/package.json +113 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* USDA FoodData Central SDK — typed API client for the FDC API.
|
|
3
|
+
*
|
|
4
|
+
* Standalone — no MCP server required. Usage:
|
|
5
|
+
*
|
|
6
|
+
* import { searchFoods, getFood, listFoods } from "us-gov-open-data/sdk/usda-fooddata";
|
|
7
|
+
*
|
|
8
|
+
* const results = await searchFoods({ query: "cheddar cheese", pageSize: 5 });
|
|
9
|
+
* console.log(results.foods);
|
|
10
|
+
*
|
|
11
|
+
* const food = await getFood(167782);
|
|
12
|
+
* console.log(food.description, food.foodNutrients);
|
|
13
|
+
*
|
|
14
|
+
* Requires DATA_GOV_API_KEY env var. Get one at https://api.data.gov/signup/
|
|
15
|
+
* Docs: https://fdc.nal.usda.gov/api-guide
|
|
16
|
+
*/
|
|
17
|
+
import { createClient } from "../client.js";
|
|
18
|
+
// ─── Client ──────────────────────────────────────────────────────────
|
|
19
|
+
const api = createClient({
|
|
20
|
+
baseUrl: "https://api.nal.usda.gov/fdc/v1",
|
|
21
|
+
name: "usda-fooddata",
|
|
22
|
+
auth: { type: "query", key: "api_key", envVar: "DATA_GOV_API_KEY" },
|
|
23
|
+
rateLimit: { perSecond: 3, burst: 10 }, // 1000 req/hour
|
|
24
|
+
cacheTtlMs: 24 * 60 * 60 * 1000, // 24 hours — nutrition data is static
|
|
25
|
+
});
|
|
26
|
+
// ─── Reference Data ──────────────────────────────────────────────────
|
|
27
|
+
export const DATA_TYPES = {
|
|
28
|
+
Foundation: "Foundation Foods — minimally processed, nutrient-dense foods",
|
|
29
|
+
"SR Legacy": "Standard Reference Legacy — historical USDA reference data",
|
|
30
|
+
Survey: "FNDDS — Food and Nutrient Database for Dietary Studies",
|
|
31
|
+
Branded: "Branded Foods — from food manufacturers (largest dataset)",
|
|
32
|
+
Experimental: "Experimental Foods — research data",
|
|
33
|
+
};
|
|
34
|
+
// ─── Public API ──────────────────────────────────────────────────────
|
|
35
|
+
/**
|
|
36
|
+
* Search for foods by keyword.
|
|
37
|
+
*
|
|
38
|
+
* Example:
|
|
39
|
+
* const results = await searchFoods({ query: "chicken breast", dataType: ["Foundation", "SR Legacy"] });
|
|
40
|
+
*/
|
|
41
|
+
export async function searchFoods(opts) {
|
|
42
|
+
return api.get("/foods/search", {
|
|
43
|
+
query: opts.query,
|
|
44
|
+
dataType: opts.dataType,
|
|
45
|
+
pageSize: opts.pageSize,
|
|
46
|
+
pageNumber: opts.pageNumber,
|
|
47
|
+
sortBy: opts.sortBy,
|
|
48
|
+
sortOrder: opts.sortOrder,
|
|
49
|
+
brandOwner: opts.brandOwner,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Get detailed food information by FDC ID.
|
|
54
|
+
*
|
|
55
|
+
* Example:
|
|
56
|
+
* const food = await getFood(167782);
|
|
57
|
+
*/
|
|
58
|
+
export async function getFood(fdcId) {
|
|
59
|
+
return api.get(`/food/${fdcId}`);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Get a paged list of foods (abridged format).
|
|
63
|
+
*
|
|
64
|
+
* Example:
|
|
65
|
+
* const list = await listFoods({ dataType: ["Foundation"], pageSize: 25 });
|
|
66
|
+
*/
|
|
67
|
+
export async function listFoods(opts = {}) {
|
|
68
|
+
return api.get("/foods/list", {
|
|
69
|
+
dataType: opts.dataType,
|
|
70
|
+
pageSize: opts.pageSize,
|
|
71
|
+
pageNumber: opts.pageNumber,
|
|
72
|
+
sortBy: opts.sortBy,
|
|
73
|
+
sortOrder: opts.sortOrder,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
/** Clear cached responses. */
|
|
77
|
+
export function clearCache() {
|
|
78
|
+
api.clearCache();
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=usda-fooddata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usda-fooddata.js","sourceRoot":"","sources":["../../src/sdk/usda-fooddata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,wEAAwE;AAExE,MAAM,GAAG,GAAG,YAAY,CAAC;IACvB,OAAO,EAAE,iCAAiC;IAC1C,IAAI,EAAE,eAAe;IACrB,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,EAAE,gBAAgB;IACxD,UAAU,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,sCAAsC;CACxE,CAAC,CAAC;AA+DH,wEAAwE;AAExE,MAAM,CAAC,MAAM,UAAU,GAA2B;IAChD,UAAU,EAAE,8DAA8D;IAC1E,WAAW,EAAE,4DAA4D;IACzE,MAAM,EAAE,wDAAwD;IAChE,OAAO,EAAE,2DAA2D;IACpE,YAAY,EAAE,oCAAoC;CACnD,CAAC;AAEF,wEAAwE;AAExE;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAQjC;IACC,OAAO,GAAG,CAAC,GAAG,CAAmB,eAAe,EAAE;QAChD,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,KAAa;IACzC,OAAO,GAAG,CAAC,GAAG,CAAa,SAAS,KAAK,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAM5B,EAAE;IACJ,OAAO,GAAG,CAAC,GAAG,CAAiB,aAAa,EAAE;QAC5C,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC,CAAC;AACL,CAAC;AAED,8BAA8B;AAC9B,MAAM,UAAU,UAAU;IACxB,GAAG,CAAC,UAAU,EAAE,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* USDA NASS QuickStats SDK — agricultural production, crop prices, farm income.
|
|
3
|
+
*
|
|
4
|
+
* API docs: https://quickstats.nass.usda.gov/api
|
|
5
|
+
* Get key: https://quickstats.nass.usda.gov/api#param_define
|
|
6
|
+
* Rate limit: not documented, be conservative
|
|
7
|
+
* Max 50,000 records per request.
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* import { queryStats, getTopCommodities } from "us-gov-open-data-mcp/sdk/usda-nass";
|
|
11
|
+
* const corn = await queryStats({ commodity_desc: "CORN", year: 2024, state_alpha: "IA" });
|
|
12
|
+
*/
|
|
13
|
+
export interface NassRecord {
|
|
14
|
+
source_desc: string;
|
|
15
|
+
sector_desc: string;
|
|
16
|
+
group_desc: string;
|
|
17
|
+
commodity_desc: string;
|
|
18
|
+
class_desc: string;
|
|
19
|
+
prodn_practice_desc: string;
|
|
20
|
+
util_practice_desc: string;
|
|
21
|
+
statisticcat_desc: string;
|
|
22
|
+
unit_desc: string;
|
|
23
|
+
short_desc: string;
|
|
24
|
+
domain_desc: string;
|
|
25
|
+
domaincat_desc: string;
|
|
26
|
+
agg_level_desc: string;
|
|
27
|
+
state_alpha: string;
|
|
28
|
+
state_name: string;
|
|
29
|
+
county_name: string;
|
|
30
|
+
year: number;
|
|
31
|
+
freq_desc: string;
|
|
32
|
+
begin_code: string;
|
|
33
|
+
end_code: string;
|
|
34
|
+
reference_period_desc: string;
|
|
35
|
+
Value: string;
|
|
36
|
+
CV: string;
|
|
37
|
+
}
|
|
38
|
+
export interface NassQueryParams {
|
|
39
|
+
source_desc?: string;
|
|
40
|
+
sector_desc?: string;
|
|
41
|
+
commodity_desc?: string;
|
|
42
|
+
statisticcat_desc?: string;
|
|
43
|
+
unit_desc?: string;
|
|
44
|
+
domain_desc?: string;
|
|
45
|
+
state_alpha?: string;
|
|
46
|
+
year?: number | string;
|
|
47
|
+
freq_desc?: string;
|
|
48
|
+
agg_level_desc?: string;
|
|
49
|
+
format?: string;
|
|
50
|
+
}
|
|
51
|
+
/** Get record count for a query (check before fetching — max 50,000). */
|
|
52
|
+
export declare function getCount(params: NassQueryParams): Promise<number>;
|
|
53
|
+
/** Query agricultural statistics. Returns up to 50,000 records. */
|
|
54
|
+
export declare function queryStats(params: NassQueryParams): Promise<NassRecord[]>;
|
|
55
|
+
/** Get valid values for a specific parameter (for discovery). */
|
|
56
|
+
export declare function getParamValues(param: string, opts?: NassQueryParams): Promise<Record<string, string[]>>;
|
|
57
|
+
/** Convenience: get crop production data for a commodity + state + year. */
|
|
58
|
+
export declare function getCropProduction(commodity: string, opts?: {
|
|
59
|
+
state?: string;
|
|
60
|
+
year?: number;
|
|
61
|
+
category?: string;
|
|
62
|
+
}): Promise<NassRecord[]>;
|
|
63
|
+
/** Convenience: get livestock data. */
|
|
64
|
+
export declare function getLivestockData(commodity: string, opts?: {
|
|
65
|
+
state?: string;
|
|
66
|
+
year?: number;
|
|
67
|
+
category?: string;
|
|
68
|
+
}): Promise<NassRecord[]>;
|
|
69
|
+
/** Convenience: get price received by farmers. */
|
|
70
|
+
export declare function getPriceReceived(commodity: string, opts?: {
|
|
71
|
+
state?: string;
|
|
72
|
+
year?: number;
|
|
73
|
+
}): Promise<NassRecord[]>;
|
|
74
|
+
export declare function clearCache(): void;
|
|
75
|
+
//# sourceMappingURL=usda-nass.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usda-nass.d.ts","sourceRoot":"","sources":["../../src/sdk/usda-nass.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAcH,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,yEAAyE;AACzE,wBAAsB,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAMvE;AAED,mEAAmE;AACnE,wBAAsB,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAM/E;AAED,iEAAiE;AACjE,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAO7G;AAED,4EAA4E;AAC5E,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClD,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAUxB;AAED,uCAAuC;AACvC,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClD,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAUxB;AAED,kDAAkD;AAClD,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CAC/B,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CASxB;AAED,wBAAgB,UAAU,IAAI,IAAI,CAAsB"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* USDA NASS QuickStats SDK — agricultural production, crop prices, farm income.
|
|
3
|
+
*
|
|
4
|
+
* API docs: https://quickstats.nass.usda.gov/api
|
|
5
|
+
* Get key: https://quickstats.nass.usda.gov/api#param_define
|
|
6
|
+
* Rate limit: not documented, be conservative
|
|
7
|
+
* Max 50,000 records per request.
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* import { queryStats, getTopCommodities } from "us-gov-open-data-mcp/sdk/usda-nass";
|
|
11
|
+
* const corn = await queryStats({ commodity_desc: "CORN", year: 2024, state_alpha: "IA" });
|
|
12
|
+
*/
|
|
13
|
+
import { createClient } from "../client.js";
|
|
14
|
+
const api = createClient({
|
|
15
|
+
baseUrl: "https://quickstats.nass.usda.gov",
|
|
16
|
+
name: "usda-nass",
|
|
17
|
+
auth: { type: "query", key: "key", envVar: "USDA_NASS_API_KEY" },
|
|
18
|
+
rateLimit: { perSecond: 2, burst: 5 },
|
|
19
|
+
cacheTtlMs: 12 * 60 * 60 * 1000, // 12 hours — agricultural data updates infrequently
|
|
20
|
+
});
|
|
21
|
+
// ─── Public API ──────────────────────────────────────────────────────
|
|
22
|
+
/** Get record count for a query (check before fetching — max 50,000). */
|
|
23
|
+
export async function getCount(params) {
|
|
24
|
+
const data = await api.get("/api/get_counts", {
|
|
25
|
+
...params,
|
|
26
|
+
format: "json",
|
|
27
|
+
});
|
|
28
|
+
return data.count ?? 0;
|
|
29
|
+
}
|
|
30
|
+
/** Query agricultural statistics. Returns up to 50,000 records. */
|
|
31
|
+
export async function queryStats(params) {
|
|
32
|
+
const data = await api.get("/api/api_GET/", {
|
|
33
|
+
...params,
|
|
34
|
+
format: "json",
|
|
35
|
+
});
|
|
36
|
+
return data.data ?? [];
|
|
37
|
+
}
|
|
38
|
+
/** Get valid values for a specific parameter (for discovery). */
|
|
39
|
+
export async function getParamValues(param, opts) {
|
|
40
|
+
const data = await api.get(`/api/get_param_values/`, {
|
|
41
|
+
param,
|
|
42
|
+
...opts,
|
|
43
|
+
format: "json",
|
|
44
|
+
});
|
|
45
|
+
return data;
|
|
46
|
+
}
|
|
47
|
+
/** Convenience: get crop production data for a commodity + state + year. */
|
|
48
|
+
export async function getCropProduction(commodity, opts) {
|
|
49
|
+
return queryStats({
|
|
50
|
+
source_desc: "SURVEY",
|
|
51
|
+
sector_desc: "CROPS",
|
|
52
|
+
commodity_desc: commodity.toUpperCase(),
|
|
53
|
+
statisticcat_desc: opts?.category ?? "PRODUCTION",
|
|
54
|
+
state_alpha: opts?.state?.toUpperCase(),
|
|
55
|
+
year: opts?.year,
|
|
56
|
+
agg_level_desc: opts?.state ? "STATE" : "NATIONAL",
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/** Convenience: get livestock data. */
|
|
60
|
+
export async function getLivestockData(commodity, opts) {
|
|
61
|
+
return queryStats({
|
|
62
|
+
source_desc: "SURVEY",
|
|
63
|
+
sector_desc: "ANIMALS & PRODUCTS",
|
|
64
|
+
commodity_desc: commodity.toUpperCase(),
|
|
65
|
+
statisticcat_desc: opts?.category,
|
|
66
|
+
state_alpha: opts?.state?.toUpperCase(),
|
|
67
|
+
year: opts?.year,
|
|
68
|
+
agg_level_desc: opts?.state ? "STATE" : "NATIONAL",
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
/** Convenience: get price received by farmers. */
|
|
72
|
+
export async function getPriceReceived(commodity, opts) {
|
|
73
|
+
return queryStats({
|
|
74
|
+
source_desc: "SURVEY",
|
|
75
|
+
commodity_desc: commodity.toUpperCase(),
|
|
76
|
+
statisticcat_desc: "PRICE RECEIVED",
|
|
77
|
+
state_alpha: opts?.state?.toUpperCase(),
|
|
78
|
+
year: opts?.year,
|
|
79
|
+
freq_desc: "ANNUAL",
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
export function clearCache() { api.clearCache(); }
|
|
83
|
+
//# sourceMappingURL=usda-nass.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usda-nass.js","sourceRoot":"","sources":["../../src/sdk/usda-nass.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* USGS SDK — typed API client for earthquake data and water services.
|
|
3
|
+
*
|
|
4
|
+
* Standalone — no MCP server required. Usage:
|
|
5
|
+
*
|
|
6
|
+
* import { searchEarthquakes, getWaterData } from "us-gov-open-data/sdk/usgs";
|
|
7
|
+
*
|
|
8
|
+
* const quakes = await searchEarthquakes({ minmagnitude: 5, starttime: "2024-01-01" });
|
|
9
|
+
* const water = await getWaterData({ sites: "01646500", parameterCd: "00060" });
|
|
10
|
+
*
|
|
11
|
+
* No API key required.
|
|
12
|
+
* Docs:
|
|
13
|
+
* Earthquake: https://earthquake.usgs.gov/fdsnws/event/1/
|
|
14
|
+
* Water Services: https://waterservices.usgs.gov/
|
|
15
|
+
*/
|
|
16
|
+
export interface EarthquakeFeature {
|
|
17
|
+
type: "Feature";
|
|
18
|
+
properties: {
|
|
19
|
+
mag?: number;
|
|
20
|
+
place?: string;
|
|
21
|
+
time?: number;
|
|
22
|
+
updated?: number;
|
|
23
|
+
tz?: number;
|
|
24
|
+
url?: string;
|
|
25
|
+
detail?: string;
|
|
26
|
+
felt?: number;
|
|
27
|
+
cdi?: number;
|
|
28
|
+
mmi?: number;
|
|
29
|
+
alert?: string;
|
|
30
|
+
status?: string;
|
|
31
|
+
tsunami?: number;
|
|
32
|
+
sig?: number;
|
|
33
|
+
net?: string;
|
|
34
|
+
code?: string;
|
|
35
|
+
ids?: string;
|
|
36
|
+
sources?: string;
|
|
37
|
+
types?: string;
|
|
38
|
+
nst?: number;
|
|
39
|
+
dmin?: number;
|
|
40
|
+
rms?: number;
|
|
41
|
+
gap?: number;
|
|
42
|
+
magType?: string;
|
|
43
|
+
type?: string;
|
|
44
|
+
title?: string;
|
|
45
|
+
[key: string]: unknown;
|
|
46
|
+
};
|
|
47
|
+
geometry: {
|
|
48
|
+
type: "Point";
|
|
49
|
+
coordinates: [number, number, number];
|
|
50
|
+
};
|
|
51
|
+
id: string;
|
|
52
|
+
}
|
|
53
|
+
export interface EarthquakeResponse {
|
|
54
|
+
type: "FeatureCollection";
|
|
55
|
+
metadata: {
|
|
56
|
+
generated: number;
|
|
57
|
+
url: string;
|
|
58
|
+
title: string;
|
|
59
|
+
status: number;
|
|
60
|
+
api: string;
|
|
61
|
+
count: number;
|
|
62
|
+
};
|
|
63
|
+
features: EarthquakeFeature[];
|
|
64
|
+
}
|
|
65
|
+
export interface EarthquakeCount {
|
|
66
|
+
count: number;
|
|
67
|
+
maxAllowed: number;
|
|
68
|
+
}
|
|
69
|
+
export interface WaterValue {
|
|
70
|
+
value: string;
|
|
71
|
+
qualifiers: string[];
|
|
72
|
+
dateTime: string;
|
|
73
|
+
}
|
|
74
|
+
export interface WaterTimeSeries {
|
|
75
|
+
sourceInfo: {
|
|
76
|
+
siteName?: string;
|
|
77
|
+
siteCode?: Array<{
|
|
78
|
+
value: string;
|
|
79
|
+
network?: string;
|
|
80
|
+
agencyCode?: string;
|
|
81
|
+
}>;
|
|
82
|
+
geoLocation?: {
|
|
83
|
+
geogLocation?: {
|
|
84
|
+
latitude: number;
|
|
85
|
+
longitude: number;
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
[key: string]: unknown;
|
|
89
|
+
};
|
|
90
|
+
variable: {
|
|
91
|
+
variableCode?: Array<{
|
|
92
|
+
value: string;
|
|
93
|
+
variableID?: number;
|
|
94
|
+
}>;
|
|
95
|
+
variableName?: string;
|
|
96
|
+
unit?: {
|
|
97
|
+
unitCode?: string;
|
|
98
|
+
};
|
|
99
|
+
[key: string]: unknown;
|
|
100
|
+
};
|
|
101
|
+
values: Array<{
|
|
102
|
+
value: WaterValue[];
|
|
103
|
+
method?: Array<{
|
|
104
|
+
methodDescription?: string;
|
|
105
|
+
methodID?: number;
|
|
106
|
+
}>;
|
|
107
|
+
}>;
|
|
108
|
+
}
|
|
109
|
+
export interface WaterResponse {
|
|
110
|
+
name: string;
|
|
111
|
+
declaredType: string;
|
|
112
|
+
value: {
|
|
113
|
+
timeSeries: WaterTimeSeries[];
|
|
114
|
+
[key: string]: unknown;
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/** Common USGS water parameter codes. */
|
|
118
|
+
export declare const WATER_PARAMS: Record<string, string>;
|
|
119
|
+
/** Earthquake alert levels. */
|
|
120
|
+
export declare const ALERT_LEVELS: Record<string, string>;
|
|
121
|
+
/**
|
|
122
|
+
* Search for earthquakes using USGS FDSN Event Web Service.
|
|
123
|
+
*
|
|
124
|
+
* Example:
|
|
125
|
+
* const quakes = await searchEarthquakes({ minmagnitude: 5, starttime: "2024-01-01" });
|
|
126
|
+
* const nearby = await searchEarthquakes({ latitude: 37.77, longitude: -122.42, maxradiuskm: 100 });
|
|
127
|
+
*/
|
|
128
|
+
export declare function searchEarthquakes(opts: {
|
|
129
|
+
starttime?: string;
|
|
130
|
+
endtime?: string;
|
|
131
|
+
minmagnitude?: number;
|
|
132
|
+
maxmagnitude?: number;
|
|
133
|
+
mindepth?: number;
|
|
134
|
+
maxdepth?: number;
|
|
135
|
+
latitude?: number;
|
|
136
|
+
longitude?: number;
|
|
137
|
+
maxradiuskm?: number;
|
|
138
|
+
minlatitude?: number;
|
|
139
|
+
maxlatitude?: number;
|
|
140
|
+
minlongitude?: number;
|
|
141
|
+
maxlongitude?: number;
|
|
142
|
+
limit?: number;
|
|
143
|
+
orderby?: "time" | "time-asc" | "magnitude" | "magnitude-asc";
|
|
144
|
+
alertlevel?: "green" | "yellow" | "orange" | "red";
|
|
145
|
+
}): Promise<EarthquakeResponse>;
|
|
146
|
+
/**
|
|
147
|
+
* Count earthquakes matching the given criteria.
|
|
148
|
+
*
|
|
149
|
+
* Example:
|
|
150
|
+
* const count = await countEarthquakes({ minmagnitude: 4, starttime: "2024-01-01" });
|
|
151
|
+
*/
|
|
152
|
+
export declare function countEarthquakes(opts: {
|
|
153
|
+
starttime?: string;
|
|
154
|
+
endtime?: string;
|
|
155
|
+
minmagnitude?: number;
|
|
156
|
+
maxmagnitude?: number;
|
|
157
|
+
latitude?: number;
|
|
158
|
+
longitude?: number;
|
|
159
|
+
maxradiuskm?: number;
|
|
160
|
+
}): Promise<EarthquakeCount>;
|
|
161
|
+
/**
|
|
162
|
+
* Get the latest significant earthquakes (last 30 days, magnitude 4.5+).
|
|
163
|
+
*/
|
|
164
|
+
export declare function getSignificantEarthquakes(): Promise<EarthquakeResponse>;
|
|
165
|
+
/**
|
|
166
|
+
* Get USGS water data (streamflow, water level, temperature, etc.) from monitoring sites.
|
|
167
|
+
*
|
|
168
|
+
* Example:
|
|
169
|
+
* const data = await getWaterData({ sites: "01646500", parameterCd: "00060" });
|
|
170
|
+
* const data = await getWaterData({ stateCd: "CA", parameterCd: "00060", period: "P7D" });
|
|
171
|
+
*/
|
|
172
|
+
export declare function getWaterData(opts: {
|
|
173
|
+
sites?: string;
|
|
174
|
+
stateCd?: string;
|
|
175
|
+
countyCd?: string;
|
|
176
|
+
huc?: string;
|
|
177
|
+
parameterCd?: string;
|
|
178
|
+
period?: string;
|
|
179
|
+
startDT?: string;
|
|
180
|
+
endDT?: string;
|
|
181
|
+
siteType?: string;
|
|
182
|
+
siteStatus?: "all" | "active" | "inactive";
|
|
183
|
+
}): Promise<WaterResponse>;
|
|
184
|
+
/**
|
|
185
|
+
* Search for USGS water monitoring sites.
|
|
186
|
+
*
|
|
187
|
+
* Example:
|
|
188
|
+
* const sites = await searchWaterSites({ stateCd: "CA", siteType: "ST" });
|
|
189
|
+
*/
|
|
190
|
+
export declare function searchWaterSites(opts: {
|
|
191
|
+
stateCd?: string;
|
|
192
|
+
countyCd?: string;
|
|
193
|
+
huc?: string;
|
|
194
|
+
siteType?: string;
|
|
195
|
+
siteStatus?: "all" | "active" | "inactive";
|
|
196
|
+
hasDataTypeCd?: string;
|
|
197
|
+
}): Promise<unknown>;
|
|
198
|
+
/**
|
|
199
|
+
* Get USGS daily value water data (historical daily averages).
|
|
200
|
+
* Unlike instantaneous values (iv), these are aggregated daily means.
|
|
201
|
+
*
|
|
202
|
+
* Example:
|
|
203
|
+
* const data = await getDailyWaterData({ sites: '01646500', parameterCd: '00060', period: 'P30D' });
|
|
204
|
+
* const data = await getDailyWaterData({ stateCd: 'CA', parameterCd: '00065', startDT: '2024-01-01', endDT: '2024-12-31' });
|
|
205
|
+
*/
|
|
206
|
+
export declare function getDailyWaterData(opts: {
|
|
207
|
+
sites?: string;
|
|
208
|
+
stateCd?: string;
|
|
209
|
+
countyCd?: string;
|
|
210
|
+
huc?: string;
|
|
211
|
+
parameterCd?: string;
|
|
212
|
+
period?: string;
|
|
213
|
+
startDT?: string;
|
|
214
|
+
endDT?: string;
|
|
215
|
+
siteType?: string;
|
|
216
|
+
siteStatus?: "all" | "active" | "inactive";
|
|
217
|
+
statCd?: string;
|
|
218
|
+
}): Promise<WaterResponse>;
|
|
219
|
+
/** Clear all USGS caches. */
|
|
220
|
+
export declare function clearCache(): void;
|
|
221
|
+
//# sourceMappingURL=usgs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usgs.d.ts","sourceRoot":"","sources":["../../src/sdk/usgs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAsBH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE;QACV,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,QAAQ,EAAE;QACR,IAAI,EAAE,OAAO,CAAC;QACd,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;KACvC,CAAC;IACF,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE;QACV,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC3E,WAAW,CAAC,EAAE;YACZ,YAAY,CAAC,EAAE;gBAAE,QAAQ,EAAE,MAAM,CAAC;gBAAC,SAAS,EAAE,MAAM,CAAA;aAAE,CAAC;SACxD,CAAC;QACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,QAAQ,EAAE;QACR,YAAY,CAAC,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,IAAI,CAAC,EAAE;YAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,MAAM,EAAE,KAAK,CAAC;QACZ,KAAK,EAAE,UAAU,EAAE,CAAC;QACpB,MAAM,CAAC,EAAE,KAAK,CAAC;YAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACnE,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE;QACL,UAAU,EAAE,eAAe,EAAE,CAAC;QAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH;AAID,yCAAyC;AACzC,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAS/C,CAAC;AAEF,+BAA+B;AAC/B,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK/C,CAAC;AAIF;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,eAAe,CAAC;IAC9D,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;CACpD,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAqB9B;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,eAAe,CAAC,CAY3B;AAED;;GAEG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAI7E;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,UAAU,CAAC;CAC5C,GAAG,OAAO,CAAC,aAAa,CAAC,CAiBzB;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC,OAAO,CAAC,CAanB;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,aAAa,CAAC,CAiBzB;AAED,6BAA6B;AAC7B,wBAAgB,UAAU,IAAI,IAAI,CAGjC"}
|
package/dist/sdk/usgs.js
ADDED
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* USGS SDK — typed API client for earthquake data and water services.
|
|
3
|
+
*
|
|
4
|
+
* Standalone — no MCP server required. Usage:
|
|
5
|
+
*
|
|
6
|
+
* import { searchEarthquakes, getWaterData } from "us-gov-open-data/sdk/usgs";
|
|
7
|
+
*
|
|
8
|
+
* const quakes = await searchEarthquakes({ minmagnitude: 5, starttime: "2024-01-01" });
|
|
9
|
+
* const water = await getWaterData({ sites: "01646500", parameterCd: "00060" });
|
|
10
|
+
*
|
|
11
|
+
* No API key required.
|
|
12
|
+
* Docs:
|
|
13
|
+
* Earthquake: https://earthquake.usgs.gov/fdsnws/event/1/
|
|
14
|
+
* Water Services: https://waterservices.usgs.gov/
|
|
15
|
+
*/
|
|
16
|
+
import { createClient } from "../client.js";
|
|
17
|
+
// ─── Clients ─────────────────────────────────────────────────────────
|
|
18
|
+
const earthquakeApi = createClient({
|
|
19
|
+
baseUrl: "https://earthquake.usgs.gov",
|
|
20
|
+
name: "usgs-earthquake",
|
|
21
|
+
rateLimit: { perSecond: 5, burst: 10 },
|
|
22
|
+
cacheTtlMs: 5 * 60 * 1000, // 5 min — earthquake data updates frequently
|
|
23
|
+
});
|
|
24
|
+
const waterApi = createClient({
|
|
25
|
+
baseUrl: "https://waterservices.usgs.gov/nwis",
|
|
26
|
+
name: "usgs-water",
|
|
27
|
+
rateLimit: { perSecond: 5, burst: 10 },
|
|
28
|
+
cacheTtlMs: 15 * 60 * 1000, // 15 min
|
|
29
|
+
});
|
|
30
|
+
// ─── Reference Data ──────────────────────────────────────────────────
|
|
31
|
+
/** Common USGS water parameter codes. */
|
|
32
|
+
export const WATER_PARAMS = {
|
|
33
|
+
"00060": "Discharge (cubic feet per second)",
|
|
34
|
+
"00065": "Gage height (feet)",
|
|
35
|
+
"00010": "Temperature, water (°C)",
|
|
36
|
+
"00400": "pH",
|
|
37
|
+
"00300": "Dissolved oxygen (mg/L)",
|
|
38
|
+
"00095": "Specific conductance (µS/cm)",
|
|
39
|
+
"00045": "Precipitation (inches)",
|
|
40
|
+
"72019": "Depth to water level (feet below land surface)",
|
|
41
|
+
};
|
|
42
|
+
/** Earthquake alert levels. */
|
|
43
|
+
export const ALERT_LEVELS = {
|
|
44
|
+
green: "Limited impact — no damage expected",
|
|
45
|
+
yellow: "Regional impact — some damage possible",
|
|
46
|
+
orange: "National/international impact — significant damage likely",
|
|
47
|
+
red: "Massive impact — extensive damage and casualties expected",
|
|
48
|
+
};
|
|
49
|
+
// ─── Public API ──────────────────────────────────────────────────────
|
|
50
|
+
/**
|
|
51
|
+
* Search for earthquakes using USGS FDSN Event Web Service.
|
|
52
|
+
*
|
|
53
|
+
* Example:
|
|
54
|
+
* const quakes = await searchEarthquakes({ minmagnitude: 5, starttime: "2024-01-01" });
|
|
55
|
+
* const nearby = await searchEarthquakes({ latitude: 37.77, longitude: -122.42, maxradiuskm: 100 });
|
|
56
|
+
*/
|
|
57
|
+
export async function searchEarthquakes(opts) {
|
|
58
|
+
const params = {
|
|
59
|
+
format: "geojson",
|
|
60
|
+
starttime: opts.starttime,
|
|
61
|
+
endtime: opts.endtime,
|
|
62
|
+
minmagnitude: opts.minmagnitude,
|
|
63
|
+
maxmagnitude: opts.maxmagnitude,
|
|
64
|
+
mindepth: opts.mindepth,
|
|
65
|
+
maxdepth: opts.maxdepth,
|
|
66
|
+
latitude: opts.latitude,
|
|
67
|
+
longitude: opts.longitude,
|
|
68
|
+
maxradiuskm: opts.maxradiuskm,
|
|
69
|
+
minlatitude: opts.minlatitude,
|
|
70
|
+
maxlatitude: opts.maxlatitude,
|
|
71
|
+
minlongitude: opts.minlongitude,
|
|
72
|
+
maxlongitude: opts.maxlongitude,
|
|
73
|
+
limit: opts.limit ?? 20,
|
|
74
|
+
orderby: opts.orderby ?? "time",
|
|
75
|
+
alertlevel: opts.alertlevel,
|
|
76
|
+
};
|
|
77
|
+
return earthquakeApi.get("/fdsnws/event/1/query", params);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Count earthquakes matching the given criteria.
|
|
81
|
+
*
|
|
82
|
+
* Example:
|
|
83
|
+
* const count = await countEarthquakes({ minmagnitude: 4, starttime: "2024-01-01" });
|
|
84
|
+
*/
|
|
85
|
+
export async function countEarthquakes(opts) {
|
|
86
|
+
const params = {
|
|
87
|
+
format: "geojson",
|
|
88
|
+
starttime: opts.starttime,
|
|
89
|
+
endtime: opts.endtime,
|
|
90
|
+
minmagnitude: opts.minmagnitude,
|
|
91
|
+
maxmagnitude: opts.maxmagnitude,
|
|
92
|
+
latitude: opts.latitude,
|
|
93
|
+
longitude: opts.longitude,
|
|
94
|
+
maxradiuskm: opts.maxradiuskm,
|
|
95
|
+
};
|
|
96
|
+
return earthquakeApi.get("/fdsnws/event/1/count", params);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Get the latest significant earthquakes (last 30 days, magnitude 4.5+).
|
|
100
|
+
*/
|
|
101
|
+
export async function getSignificantEarthquakes() {
|
|
102
|
+
return earthquakeApi.get("/earthquakes/feed/v1.0/summary/significant_month.geojson");
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get USGS water data (streamflow, water level, temperature, etc.) from monitoring sites.
|
|
106
|
+
*
|
|
107
|
+
* Example:
|
|
108
|
+
* const data = await getWaterData({ sites: "01646500", parameterCd: "00060" });
|
|
109
|
+
* const data = await getWaterData({ stateCd: "CA", parameterCd: "00060", period: "P7D" });
|
|
110
|
+
*/
|
|
111
|
+
export async function getWaterData(opts) {
|
|
112
|
+
const params = {
|
|
113
|
+
format: "json",
|
|
114
|
+
sites: opts.sites,
|
|
115
|
+
stateCd: opts.stateCd,
|
|
116
|
+
countyCd: opts.countyCd,
|
|
117
|
+
huc: opts.huc,
|
|
118
|
+
parameterCd: opts.parameterCd ?? "00060",
|
|
119
|
+
period: opts.period ?? "P1D",
|
|
120
|
+
startDT: opts.startDT,
|
|
121
|
+
endDT: opts.endDT,
|
|
122
|
+
siteType: opts.siteType,
|
|
123
|
+
siteStatus: opts.siteStatus ?? "active",
|
|
124
|
+
};
|
|
125
|
+
// Remove period if explicit date range is given
|
|
126
|
+
if (opts.startDT || opts.endDT)
|
|
127
|
+
delete params.period;
|
|
128
|
+
return waterApi.get("/iv/", params);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Search for USGS water monitoring sites.
|
|
132
|
+
*
|
|
133
|
+
* Example:
|
|
134
|
+
* const sites = await searchWaterSites({ stateCd: "CA", siteType: "ST" });
|
|
135
|
+
*/
|
|
136
|
+
export async function searchWaterSites(opts) {
|
|
137
|
+
const params = {
|
|
138
|
+
format: "rdb",
|
|
139
|
+
stateCd: opts.stateCd,
|
|
140
|
+
countyCd: opts.countyCd,
|
|
141
|
+
huc: opts.huc,
|
|
142
|
+
siteType: opts.siteType ?? "ST",
|
|
143
|
+
siteStatus: opts.siteStatus ?? "active",
|
|
144
|
+
hasDataTypeCd: opts.hasDataTypeCd ?? "iv",
|
|
145
|
+
siteOutput: "expanded",
|
|
146
|
+
};
|
|
147
|
+
// RDB is tab-delimited but easier to parse than the alternatives
|
|
148
|
+
return waterApi.get("/site/", params);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Get USGS daily value water data (historical daily averages).
|
|
152
|
+
* Unlike instantaneous values (iv), these are aggregated daily means.
|
|
153
|
+
*
|
|
154
|
+
* Example:
|
|
155
|
+
* const data = await getDailyWaterData({ sites: '01646500', parameterCd: '00060', period: 'P30D' });
|
|
156
|
+
* const data = await getDailyWaterData({ stateCd: 'CA', parameterCd: '00065', startDT: '2024-01-01', endDT: '2024-12-31' });
|
|
157
|
+
*/
|
|
158
|
+
export async function getDailyWaterData(opts) {
|
|
159
|
+
const params = {
|
|
160
|
+
format: "json",
|
|
161
|
+
sites: opts.sites,
|
|
162
|
+
stateCd: opts.stateCd,
|
|
163
|
+
countyCd: opts.countyCd,
|
|
164
|
+
huc: opts.huc,
|
|
165
|
+
parameterCd: opts.parameterCd ?? "00060",
|
|
166
|
+
period: opts.period ?? "P30D",
|
|
167
|
+
startDT: opts.startDT,
|
|
168
|
+
endDT: opts.endDT,
|
|
169
|
+
siteType: opts.siteType,
|
|
170
|
+
siteStatus: opts.siteStatus ?? "active",
|
|
171
|
+
statCd: opts.statCd,
|
|
172
|
+
};
|
|
173
|
+
if (opts.startDT || opts.endDT)
|
|
174
|
+
delete params.period;
|
|
175
|
+
return waterApi.get("/dv/", params);
|
|
176
|
+
}
|
|
177
|
+
/** Clear all USGS caches. */
|
|
178
|
+
export function clearCache() {
|
|
179
|
+
earthquakeApi.clearCache();
|
|
180
|
+
waterApi.clearCache();
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=usgs.js.map
|