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,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NAEP (Nation's Report Card) SDK — typed API client for the NAEP Data Service API.
|
|
3
|
+
*
|
|
4
|
+
* API docs: https://www.nationsreportcard.gov/api_documentation.aspx
|
|
5
|
+
* No API key required. Returns JSON.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* import { getScores, getAchievementLevels, compareAcrossYears } from "us-gov-open-data-mcp/sdk/naep";
|
|
9
|
+
* const scores = await getScores({ subject: "reading", grade: 4, year: "2022" });
|
|
10
|
+
*/
|
|
11
|
+
export interface NaepResult {
|
|
12
|
+
year: string;
|
|
13
|
+
sample: string;
|
|
14
|
+
cohort: string;
|
|
15
|
+
jurisdiction: string;
|
|
16
|
+
stattype: string;
|
|
17
|
+
subject: string;
|
|
18
|
+
grade: string;
|
|
19
|
+
subscale: string;
|
|
20
|
+
variable: string;
|
|
21
|
+
varValue: string;
|
|
22
|
+
varValueLabel: string;
|
|
23
|
+
value: string;
|
|
24
|
+
se: string;
|
|
25
|
+
errorFlag: number;
|
|
26
|
+
[key: string]: unknown;
|
|
27
|
+
}
|
|
28
|
+
export interface NaepResponse {
|
|
29
|
+
status: number;
|
|
30
|
+
result: NaepResult[];
|
|
31
|
+
}
|
|
32
|
+
export interface NaepGapResult extends NaepResult {
|
|
33
|
+
focalValue: string;
|
|
34
|
+
targetValue: string;
|
|
35
|
+
gap: string;
|
|
36
|
+
significance: string;
|
|
37
|
+
}
|
|
38
|
+
/** Common subject + subscale codes */
|
|
39
|
+
export declare const SUBJECTS: Record<string, {
|
|
40
|
+
code: string;
|
|
41
|
+
subscale: string;
|
|
42
|
+
label: string;
|
|
43
|
+
}>;
|
|
44
|
+
/** Common variable codes */
|
|
45
|
+
export declare const VARIABLES: Record<string, string>;
|
|
46
|
+
/** Stat type codes */
|
|
47
|
+
export declare const STAT_TYPES: Record<string, string>;
|
|
48
|
+
/** State jurisdiction codes */
|
|
49
|
+
export declare const JURISDICTIONS: Record<string, string>;
|
|
50
|
+
/** Get NAEP scores (mean, percentiles, or achievement levels) by subject, grade, jurisdiction, and variable. */
|
|
51
|
+
export declare function getScores(opts: {
|
|
52
|
+
subject: string;
|
|
53
|
+
grade: number;
|
|
54
|
+
variable?: string;
|
|
55
|
+
jurisdiction?: string;
|
|
56
|
+
stattype?: string;
|
|
57
|
+
year?: string;
|
|
58
|
+
subscale?: string;
|
|
59
|
+
}): Promise<NaepResponse>;
|
|
60
|
+
/** Get achievement level percentages (Below Basic, Basic, Proficient, Advanced). */
|
|
61
|
+
export declare function getAchievementLevels(opts: {
|
|
62
|
+
subject: string;
|
|
63
|
+
grade: number;
|
|
64
|
+
variable?: string;
|
|
65
|
+
jurisdiction?: string;
|
|
66
|
+
year?: string;
|
|
67
|
+
}): Promise<NaepResponse>;
|
|
68
|
+
/** Compare scores across years (significance testing). */
|
|
69
|
+
export declare function compareAcrossYears(opts: {
|
|
70
|
+
subject: string;
|
|
71
|
+
grade: number;
|
|
72
|
+
years: string;
|
|
73
|
+
variable?: string;
|
|
74
|
+
jurisdiction?: string;
|
|
75
|
+
}): Promise<NaepResponse>;
|
|
76
|
+
/** Compare scores across jurisdictions (states/districts). */
|
|
77
|
+
export declare function compareAcrossJurisdictions(opts: {
|
|
78
|
+
subject: string;
|
|
79
|
+
grade: number;
|
|
80
|
+
jurisdictions: string;
|
|
81
|
+
variable?: string;
|
|
82
|
+
year?: string;
|
|
83
|
+
}): Promise<NaepResponse>;
|
|
84
|
+
/** Compare scores across demographic groups (race, gender, etc.). */
|
|
85
|
+
export declare function compareAcrossGroups(opts: {
|
|
86
|
+
subject: string;
|
|
87
|
+
grade: number;
|
|
88
|
+
variable: string;
|
|
89
|
+
jurisdiction?: string;
|
|
90
|
+
year?: string;
|
|
91
|
+
}): Promise<NaepResponse>;
|
|
92
|
+
export declare function clearCache(): void;
|
|
93
|
+
//# sourceMappingURL=naep.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"naep.d.ts","sourceRoot":"","sources":["../../src/sdk/naep.ts"],"names":[],"mappings":"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"}
|
package/dist/sdk/naep.js
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NAEP (Nation's Report Card) SDK — typed API client for the NAEP Data Service API.
|
|
3
|
+
*
|
|
4
|
+
* API docs: https://www.nationsreportcard.gov/api_documentation.aspx
|
|
5
|
+
* No API key required. Returns JSON.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* import { getScores, getAchievementLevels, compareAcrossYears } from "us-gov-open-data-mcp/sdk/naep";
|
|
9
|
+
* const scores = await getScores({ subject: "reading", grade: 4, year: "2022" });
|
|
10
|
+
*/
|
|
11
|
+
import { createClient } from "../client.js";
|
|
12
|
+
const api = createClient({
|
|
13
|
+
baseUrl: "https://www.nationsreportcard.gov",
|
|
14
|
+
name: "naep",
|
|
15
|
+
rateLimit: { perSecond: 3, burst: 6 },
|
|
16
|
+
cacheTtlMs: 24 * 60 * 60 * 1000, // 24 hours — NAEP data updates ~every 2 years
|
|
17
|
+
timeoutMs: 30_000,
|
|
18
|
+
});
|
|
19
|
+
// ─── Reference Data ──────────────────────────────────────────────────
|
|
20
|
+
/** Common subject + subscale codes */
|
|
21
|
+
export const SUBJECTS = {
|
|
22
|
+
reading: { code: "reading", subscale: "RRPCM", label: "Reading (composite)" },
|
|
23
|
+
math: { code: "mathematics", subscale: "MRPCM", label: "Mathematics (composite)" },
|
|
24
|
+
science: { code: "science", subscale: "SRPUV", label: "Science (overall)" },
|
|
25
|
+
writing: { code: "writing", subscale: "WRIRP", label: "Writing" },
|
|
26
|
+
civics: { code: "civics", subscale: "CIVRP", label: "Civics" },
|
|
27
|
+
history: { code: "history", subscale: "HRPCM", label: "U.S. History (composite)" },
|
|
28
|
+
geography: { code: "geography", subscale: "GRPCM", label: "Geography (composite)" },
|
|
29
|
+
};
|
|
30
|
+
/** Common variable codes */
|
|
31
|
+
export const VARIABLES = {
|
|
32
|
+
TOTAL: "All students",
|
|
33
|
+
GENDER: "Gender (Male/Female)",
|
|
34
|
+
SDRACE: "Race/ethnicity (trend reporting)",
|
|
35
|
+
SRACE10: "Race/ethnicity (2011 guidelines)",
|
|
36
|
+
SLUNCH3: "School lunch eligibility (poverty proxy)",
|
|
37
|
+
PARED: "Parental education level",
|
|
38
|
+
SCHTYPE: "School type (public/nonpublic)",
|
|
39
|
+
CHRTRPT: "Charter school status",
|
|
40
|
+
UTOL4: "School location (city/suburb/town/rural)",
|
|
41
|
+
CENSREG: "Census region",
|
|
42
|
+
IEP: "Disability status (IEP/504)",
|
|
43
|
+
LEP: "English language learner status",
|
|
44
|
+
};
|
|
45
|
+
/** Stat type codes */
|
|
46
|
+
export const STAT_TYPES = {
|
|
47
|
+
"MN:MN": "Average scale score (mean)",
|
|
48
|
+
"ALC:BB": "% Below Basic",
|
|
49
|
+
"ALC:AB": "% At or Above Basic",
|
|
50
|
+
"ALC:AP": "% At or Above Proficient",
|
|
51
|
+
"ALC:AD": "% At Advanced",
|
|
52
|
+
"ALD:BA": "% At Basic (discrete)",
|
|
53
|
+
"ALD:PR": "% At Proficient (discrete)",
|
|
54
|
+
"ALD:AD": "% At Advanced (discrete)",
|
|
55
|
+
"PC:P1": "10th percentile score",
|
|
56
|
+
"PC:P5": "50th percentile score",
|
|
57
|
+
"PC:P9": "90th percentile score",
|
|
58
|
+
};
|
|
59
|
+
/** State jurisdiction codes */
|
|
60
|
+
export const JURISDICTIONS = {
|
|
61
|
+
NP: "National public",
|
|
62
|
+
NT: "National total",
|
|
63
|
+
NR: "National private",
|
|
64
|
+
NL: "Large city",
|
|
65
|
+
AL: "Alabama", AK: "Alaska", AZ: "Arizona", AR: "Arkansas", CA: "California",
|
|
66
|
+
CO: "Colorado", CT: "Connecticut", DE: "Delaware", DC: "District of Columbia",
|
|
67
|
+
FL: "Florida", GA: "Georgia", HI: "Hawaii", ID: "Idaho", IL: "Illinois",
|
|
68
|
+
IN: "Indiana", IA: "Iowa", KS: "Kansas", KY: "Kentucky", LA: "Louisiana",
|
|
69
|
+
ME: "Maine", MD: "Maryland", MA: "Massachusetts", MI: "Michigan", MN: "Minnesota",
|
|
70
|
+
MS: "Mississippi", MO: "Missouri", MT: "Montana", NE: "Nebraska", NV: "Nevada",
|
|
71
|
+
NH: "New Hampshire", NJ: "New Jersey", NM: "New Mexico", NY: "New York",
|
|
72
|
+
NC: "North Carolina", ND: "North Dakota", OH: "Ohio", OK: "Oklahoma",
|
|
73
|
+
OR: "Oregon", PA: "Pennsylvania", RI: "Rhode Island", SC: "South Carolina",
|
|
74
|
+
SD: "South Dakota", TN: "Tennessee", TX: "Texas", UT: "Utah", VT: "Vermont",
|
|
75
|
+
VA: "Virginia", WA: "Washington", WV: "West Virginia", WI: "Wisconsin", WY: "Wyoming",
|
|
76
|
+
};
|
|
77
|
+
// ─── Helpers ─────────────────────────────────────────────────────────
|
|
78
|
+
function resolveSubject(subjectInput) {
|
|
79
|
+
const lower = subjectInput.toLowerCase().trim();
|
|
80
|
+
const entry = SUBJECTS[lower];
|
|
81
|
+
if (entry)
|
|
82
|
+
return { subject: entry.code, subscale: entry.subscale };
|
|
83
|
+
// Allow raw codes
|
|
84
|
+
return { subject: subjectInput, subscale: subjectInput.toUpperCase() };
|
|
85
|
+
}
|
|
86
|
+
// ─── Public API ──────────────────────────────────────────────────────
|
|
87
|
+
/** Get NAEP scores (mean, percentiles, or achievement levels) by subject, grade, jurisdiction, and variable. */
|
|
88
|
+
export async function getScores(opts) {
|
|
89
|
+
const resolved = resolveSubject(opts.subject);
|
|
90
|
+
const params = {
|
|
91
|
+
type: "data",
|
|
92
|
+
subject: resolved.subject,
|
|
93
|
+
grade: String(opts.grade),
|
|
94
|
+
subscale: opts.subscale || resolved.subscale,
|
|
95
|
+
variable: opts.variable || "TOTAL",
|
|
96
|
+
jurisdiction: opts.jurisdiction || "NP",
|
|
97
|
+
stattype: opts.stattype || "MN:MN",
|
|
98
|
+
Year: opts.year || "Current",
|
|
99
|
+
};
|
|
100
|
+
return api.get("/Dataservice/GetAdhocData.aspx", params);
|
|
101
|
+
}
|
|
102
|
+
/** Get achievement level percentages (Below Basic, Basic, Proficient, Advanced). */
|
|
103
|
+
export async function getAchievementLevels(opts) {
|
|
104
|
+
const resolved = resolveSubject(opts.subject);
|
|
105
|
+
const params = {
|
|
106
|
+
type: "data",
|
|
107
|
+
subject: resolved.subject,
|
|
108
|
+
grade: String(opts.grade),
|
|
109
|
+
subscale: resolved.subscale,
|
|
110
|
+
variable: opts.variable || "TOTAL",
|
|
111
|
+
jurisdiction: opts.jurisdiction || "NP",
|
|
112
|
+
stattype: "ALC:BB,ALC:AB,ALC:AP,ALC:AD",
|
|
113
|
+
Year: opts.year || "Current",
|
|
114
|
+
};
|
|
115
|
+
return api.get("/Dataservice/GetAdhocData.aspx", params);
|
|
116
|
+
}
|
|
117
|
+
/** Compare scores across years (significance testing). */
|
|
118
|
+
export async function compareAcrossYears(opts) {
|
|
119
|
+
const resolved = resolveSubject(opts.subject);
|
|
120
|
+
const params = {
|
|
121
|
+
type: "sigacrossyear",
|
|
122
|
+
subject: resolved.subject,
|
|
123
|
+
grade: String(opts.grade),
|
|
124
|
+
subscale: resolved.subscale,
|
|
125
|
+
variable: opts.variable || "TOTAL",
|
|
126
|
+
jurisdiction: opts.jurisdiction || "NP",
|
|
127
|
+
stattype: "MN:MN",
|
|
128
|
+
Year: opts.years,
|
|
129
|
+
};
|
|
130
|
+
return api.get("/Dataservice/GetAdhocData.aspx", params);
|
|
131
|
+
}
|
|
132
|
+
/** Compare scores across jurisdictions (states/districts). */
|
|
133
|
+
export async function compareAcrossJurisdictions(opts) {
|
|
134
|
+
const resolved = resolveSubject(opts.subject);
|
|
135
|
+
const params = {
|
|
136
|
+
type: "sigacrossjuris",
|
|
137
|
+
subject: resolved.subject,
|
|
138
|
+
grade: String(opts.grade),
|
|
139
|
+
subscale: resolved.subscale,
|
|
140
|
+
variable: opts.variable || "TOTAL",
|
|
141
|
+
jurisdiction: opts.jurisdictions,
|
|
142
|
+
stattype: "MN:MN",
|
|
143
|
+
Year: opts.year || "Current",
|
|
144
|
+
};
|
|
145
|
+
return api.get("/Dataservice/GetAdhocData.aspx", params);
|
|
146
|
+
}
|
|
147
|
+
/** Compare scores across demographic groups (race, gender, etc.). */
|
|
148
|
+
export async function compareAcrossGroups(opts) {
|
|
149
|
+
const resolved = resolveSubject(opts.subject);
|
|
150
|
+
const params = {
|
|
151
|
+
type: "sigacrossvalue",
|
|
152
|
+
subject: resolved.subject,
|
|
153
|
+
grade: String(opts.grade),
|
|
154
|
+
subscale: resolved.subscale,
|
|
155
|
+
variable: opts.variable,
|
|
156
|
+
jurisdiction: opts.jurisdiction || "NP",
|
|
157
|
+
stattype: "MN:MN",
|
|
158
|
+
Year: opts.year || "Current",
|
|
159
|
+
};
|
|
160
|
+
return api.get("/Dataservice/GetAdhocData.aspx", params);
|
|
161
|
+
}
|
|
162
|
+
export function clearCache() { api.clearCache(); }
|
|
163
|
+
//# sourceMappingURL=naep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"naep.js","sourceRoot":"","sources":["../../src/sdk/naep.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NHTSA SDK — typed API client for vehicle recalls, complaints, and VIN decoding.
|
|
3
|
+
*
|
|
4
|
+
* Standalone — no MCP server required. Usage:
|
|
5
|
+
*
|
|
6
|
+
* import { getRecalls, getComplaints, decodeVin } from "us-gov-open-data/sdk/nhtsa";
|
|
7
|
+
*
|
|
8
|
+
* No API key required.
|
|
9
|
+
* Docs: https://www.nhtsa.gov/nhtsa-datasets-and-apis
|
|
10
|
+
*/
|
|
11
|
+
export interface Recall {
|
|
12
|
+
Manufacturer?: string;
|
|
13
|
+
NHTSACampaignNumber?: string;
|
|
14
|
+
parkIt?: boolean;
|
|
15
|
+
parkOutSide?: boolean;
|
|
16
|
+
ReportReceivedDate?: string;
|
|
17
|
+
Component?: string;
|
|
18
|
+
Summary?: string;
|
|
19
|
+
Consequence?: string;
|
|
20
|
+
Remedy?: string;
|
|
21
|
+
Notes?: string;
|
|
22
|
+
ModelYear?: string;
|
|
23
|
+
Make?: string;
|
|
24
|
+
Model?: string;
|
|
25
|
+
NHTSAActionNumber?: string;
|
|
26
|
+
[key: string]: unknown;
|
|
27
|
+
}
|
|
28
|
+
export interface RecallResponse {
|
|
29
|
+
Count?: number;
|
|
30
|
+
Message?: string;
|
|
31
|
+
results?: Recall[];
|
|
32
|
+
}
|
|
33
|
+
export interface Complaint {
|
|
34
|
+
odiNumber?: number;
|
|
35
|
+
manufacturer?: string;
|
|
36
|
+
crash?: boolean;
|
|
37
|
+
fire?: boolean;
|
|
38
|
+
numberOfInjuries?: number;
|
|
39
|
+
numberOfDeaths?: number;
|
|
40
|
+
dateOfIncident?: string;
|
|
41
|
+
dateComplaintFiled?: string;
|
|
42
|
+
vin?: string;
|
|
43
|
+
components?: string;
|
|
44
|
+
summary?: string;
|
|
45
|
+
products?: Array<{
|
|
46
|
+
type?: string;
|
|
47
|
+
productYear?: string;
|
|
48
|
+
productMake?: string;
|
|
49
|
+
productModel?: string;
|
|
50
|
+
manufacturer?: string;
|
|
51
|
+
}>;
|
|
52
|
+
[key: string]: unknown;
|
|
53
|
+
}
|
|
54
|
+
export interface ComplaintResponse {
|
|
55
|
+
count?: number;
|
|
56
|
+
message?: string;
|
|
57
|
+
results?: Complaint[];
|
|
58
|
+
}
|
|
59
|
+
export interface VinResult {
|
|
60
|
+
Make?: string;
|
|
61
|
+
Model?: string;
|
|
62
|
+
ModelYear?: string;
|
|
63
|
+
Manufacturer?: string;
|
|
64
|
+
VehicleType?: string;
|
|
65
|
+
BodyClass?: string;
|
|
66
|
+
DriveType?: string;
|
|
67
|
+
FuelTypePrimary?: string;
|
|
68
|
+
EngineModel?: string;
|
|
69
|
+
EngineCylinders?: string;
|
|
70
|
+
DisplacementL?: string;
|
|
71
|
+
TransmissionStyle?: string;
|
|
72
|
+
PlantCity?: string;
|
|
73
|
+
PlantCountry?: string;
|
|
74
|
+
ErrorCode?: string;
|
|
75
|
+
ErrorText?: string;
|
|
76
|
+
[key: string]: unknown;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Search for vehicle recalls by make, model, and/or model year.
|
|
80
|
+
*/
|
|
81
|
+
export declare function getRecalls(opts: {
|
|
82
|
+
make: string;
|
|
83
|
+
model: string;
|
|
84
|
+
modelYear: number;
|
|
85
|
+
}): Promise<Recall[]>;
|
|
86
|
+
/**
|
|
87
|
+
* Search for vehicle complaints by make, model, and/or model year.
|
|
88
|
+
*/
|
|
89
|
+
export declare function getComplaints(opts: {
|
|
90
|
+
make: string;
|
|
91
|
+
model: string;
|
|
92
|
+
modelYear: number;
|
|
93
|
+
}): Promise<Complaint[]>;
|
|
94
|
+
/**
|
|
95
|
+
* Decode a VIN (Vehicle Identification Number) to get vehicle specifications.
|
|
96
|
+
*/
|
|
97
|
+
export declare function decodeVin(vin: string): Promise<VinResult>;
|
|
98
|
+
/**
|
|
99
|
+
* Get all vehicle makes from the vPIC database.
|
|
100
|
+
*/
|
|
101
|
+
export declare function getAllMakes(): Promise<Array<{
|
|
102
|
+
Make_ID: number;
|
|
103
|
+
Make_Name: string;
|
|
104
|
+
}>>;
|
|
105
|
+
/**
|
|
106
|
+
* Get models for a specific make and optional year.
|
|
107
|
+
*/
|
|
108
|
+
export declare function getModelsForMake(opts: {
|
|
109
|
+
make: string;
|
|
110
|
+
modelYear?: number;
|
|
111
|
+
}): Promise<Array<{
|
|
112
|
+
Make_ID: number;
|
|
113
|
+
Make_Name: string;
|
|
114
|
+
Model_ID: number;
|
|
115
|
+
Model_Name: string;
|
|
116
|
+
}>>;
|
|
117
|
+
export interface SafetyRatingVehicle {
|
|
118
|
+
VehicleId?: number;
|
|
119
|
+
VehicleDescription?: string;
|
|
120
|
+
ModelYear?: number;
|
|
121
|
+
Make?: string;
|
|
122
|
+
Model?: string;
|
|
123
|
+
[key: string]: unknown;
|
|
124
|
+
}
|
|
125
|
+
export interface SafetyRating {
|
|
126
|
+
VehicleId?: number;
|
|
127
|
+
VehicleDescription?: string;
|
|
128
|
+
OverallRating?: string;
|
|
129
|
+
OverallFrontCrashRating?: string;
|
|
130
|
+
FrontCrashDriversideRating?: string;
|
|
131
|
+
FrontCrashPassengersideRating?: string;
|
|
132
|
+
OverallSideCrashRating?: string;
|
|
133
|
+
SideCrashDriversideRating?: string;
|
|
134
|
+
SideCrashPassengersideRating?: string;
|
|
135
|
+
RolloverRating?: string;
|
|
136
|
+
RolloverPossibility?: number;
|
|
137
|
+
RolloverPossibility2?: number;
|
|
138
|
+
SidePoleCrashRating?: string;
|
|
139
|
+
NHTSAElectronicStabilityControl?: string;
|
|
140
|
+
NHTSAForwardCollisionWarning?: string;
|
|
141
|
+
NHTSALaneDepartureWarning?: string;
|
|
142
|
+
ComplaintsCount?: number;
|
|
143
|
+
RecallsCount?: number;
|
|
144
|
+
InvestigationCount?: number;
|
|
145
|
+
[key: string]: unknown;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Search for NHTSA 5-star safety ratings by make/model/year.
|
|
149
|
+
* Returns vehicle variants with VehicleId for detail lookup.
|
|
150
|
+
*
|
|
151
|
+
* Example:
|
|
152
|
+
* const vehicles = await getSafetyRatingVehicles({ make: 'honda', model: 'civic', modelYear: 2023 });
|
|
153
|
+
*/
|
|
154
|
+
export declare function getSafetyRatingVehicles(opts: {
|
|
155
|
+
make: string;
|
|
156
|
+
model: string;
|
|
157
|
+
modelYear: number;
|
|
158
|
+
}): Promise<SafetyRatingVehicle[]>;
|
|
159
|
+
/**
|
|
160
|
+
* Get detailed safety ratings for a specific vehicle by VehicleId.
|
|
161
|
+
* Returns crash test results, rollover rating, and safety tech.
|
|
162
|
+
*
|
|
163
|
+
* Example:
|
|
164
|
+
* const rating = await getSafetyRatingDetail(5531);
|
|
165
|
+
*/
|
|
166
|
+
export declare function getSafetyRatingDetail(vehicleId: number): Promise<SafetyRating | null>;
|
|
167
|
+
/** Clear both NHTSA caches. */
|
|
168
|
+
export declare function clearCache(): void;
|
|
169
|
+
//# sourceMappingURL=nhtsa.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nhtsa.d.ts","sourceRoot":"","sources":["../../src/sdk/nhtsa.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NHTSA SDK — typed API client for vehicle recalls, complaints, and VIN decoding.
|
|
3
|
+
*
|
|
4
|
+
* Standalone — no MCP server required. Usage:
|
|
5
|
+
*
|
|
6
|
+
* import { getRecalls, getComplaints, decodeVin } from "us-gov-open-data/sdk/nhtsa";
|
|
7
|
+
*
|
|
8
|
+
* No API key required.
|
|
9
|
+
* Docs: https://www.nhtsa.gov/nhtsa-datasets-and-apis
|
|
10
|
+
*/
|
|
11
|
+
import { createClient } from "../client.js";
|
|
12
|
+
// ─── Clients ─────────────────────────────────────────────────────────
|
|
13
|
+
const recallsApi = createClient({
|
|
14
|
+
baseUrl: "https://api.nhtsa.gov",
|
|
15
|
+
name: "nhtsa",
|
|
16
|
+
rateLimit: { perSecond: 5, burst: 10 },
|
|
17
|
+
cacheTtlMs: 60 * 60 * 1000, // 1 hour
|
|
18
|
+
});
|
|
19
|
+
const vpicApi = createClient({
|
|
20
|
+
baseUrl: "https://vpic.nhtsa.dot.gov/api",
|
|
21
|
+
name: "nhtsa-vpic",
|
|
22
|
+
rateLimit: { perSecond: 5, burst: 10 },
|
|
23
|
+
cacheTtlMs: 24 * 60 * 60 * 1000, // 24 hours — vehicle data is static
|
|
24
|
+
});
|
|
25
|
+
// ─── Public API ──────────────────────────────────────────────────────
|
|
26
|
+
/**
|
|
27
|
+
* Search for vehicle recalls by make, model, and/or model year.
|
|
28
|
+
*/
|
|
29
|
+
export async function getRecalls(opts) {
|
|
30
|
+
const res = (await recallsApi.get("/recalls/recallsByVehicle", {
|
|
31
|
+
make: opts.make,
|
|
32
|
+
model: opts.model,
|
|
33
|
+
modelYear: String(opts.modelYear),
|
|
34
|
+
}));
|
|
35
|
+
return res?.results ?? [];
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Search for vehicle complaints by make, model, and/or model year.
|
|
39
|
+
*/
|
|
40
|
+
export async function getComplaints(opts) {
|
|
41
|
+
const res = (await recallsApi.get("/complaints/complaintsByVehicle", {
|
|
42
|
+
make: opts.make,
|
|
43
|
+
model: opts.model,
|
|
44
|
+
modelYear: String(opts.modelYear),
|
|
45
|
+
}));
|
|
46
|
+
return res?.results ?? [];
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Decode a VIN (Vehicle Identification Number) to get vehicle specifications.
|
|
50
|
+
*/
|
|
51
|
+
export async function decodeVin(vin) {
|
|
52
|
+
const res = (await vpicApi.get(`/vehicles/DecodeVinValues/${encodeURIComponent(vin)}`, {
|
|
53
|
+
format: "json",
|
|
54
|
+
}));
|
|
55
|
+
const results = res?.Results ?? [];
|
|
56
|
+
return results[0] ?? {};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get all vehicle makes from the vPIC database.
|
|
60
|
+
*/
|
|
61
|
+
export async function getAllMakes() {
|
|
62
|
+
const res = (await vpicApi.get("/vehicles/GetAllMakes", { format: "json" }));
|
|
63
|
+
return res?.Results ?? [];
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Get models for a specific make and optional year.
|
|
67
|
+
*/
|
|
68
|
+
export async function getModelsForMake(opts) {
|
|
69
|
+
const path = opts.modelYear
|
|
70
|
+
? `/vehicles/GetModelsForMakeYear/make/${encodeURIComponent(opts.make)}/modelyear/${opts.modelYear}`
|
|
71
|
+
: `/vehicles/GetModelsForMake/${encodeURIComponent(opts.make)}`;
|
|
72
|
+
const res = (await vpicApi.get(path, { format: "json" }));
|
|
73
|
+
return res?.Results ?? [];
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Search for NHTSA 5-star safety ratings by make/model/year.
|
|
77
|
+
* Returns vehicle variants with VehicleId for detail lookup.
|
|
78
|
+
*
|
|
79
|
+
* Example:
|
|
80
|
+
* const vehicles = await getSafetyRatingVehicles({ make: 'honda', model: 'civic', modelYear: 2023 });
|
|
81
|
+
*/
|
|
82
|
+
export async function getSafetyRatingVehicles(opts) {
|
|
83
|
+
const res = (await recallsApi.get(`/SafetyRatings/modelyear/${opts.modelYear}/make/${encodeURIComponent(opts.make)}/model/${encodeURIComponent(opts.model)}`, { format: "json" }));
|
|
84
|
+
return res?.Results ?? [];
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get detailed safety ratings for a specific vehicle by VehicleId.
|
|
88
|
+
* Returns crash test results, rollover rating, and safety tech.
|
|
89
|
+
*
|
|
90
|
+
* Example:
|
|
91
|
+
* const rating = await getSafetyRatingDetail(5531);
|
|
92
|
+
*/
|
|
93
|
+
export async function getSafetyRatingDetail(vehicleId) {
|
|
94
|
+
const res = (await recallsApi.get(`/SafetyRatings/VehicleId/${vehicleId}`, { format: "json" }));
|
|
95
|
+
return res?.Results?.[0] ?? null;
|
|
96
|
+
}
|
|
97
|
+
/** Clear both NHTSA caches. */
|
|
98
|
+
export function clearCache() {
|
|
99
|
+
recallsApi.clearCache();
|
|
100
|
+
vpicApi.clearCache();
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=nhtsa.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nhtsa.js","sourceRoot":"","sources":["../../src/sdk/nhtsa.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
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
|
+
export interface NoaaDataset {
|
|
13
|
+
id: string;
|
|
14
|
+
name: string;
|
|
15
|
+
datacoverage: number;
|
|
16
|
+
mindate: string;
|
|
17
|
+
maxdate: string;
|
|
18
|
+
}
|
|
19
|
+
export interface NoaaStation {
|
|
20
|
+
id: string;
|
|
21
|
+
name: string;
|
|
22
|
+
datacoverage: number;
|
|
23
|
+
elevation: number;
|
|
24
|
+
elevationUnit: string;
|
|
25
|
+
latitude: number;
|
|
26
|
+
longitude: number;
|
|
27
|
+
mindate: string;
|
|
28
|
+
maxdate: string;
|
|
29
|
+
}
|
|
30
|
+
export interface NoaaDataPoint {
|
|
31
|
+
date: string;
|
|
32
|
+
datatype: string;
|
|
33
|
+
station: string;
|
|
34
|
+
value: number;
|
|
35
|
+
attributes: string;
|
|
36
|
+
}
|
|
37
|
+
/** List available datasets (GHCND, GSOM, GSOY, etc.) */
|
|
38
|
+
export declare function listDatasets(): Promise<NoaaDataset[]>;
|
|
39
|
+
/** Search for weather stations by location or dataset. */
|
|
40
|
+
export declare function searchStations(opts: {
|
|
41
|
+
datasetId?: string;
|
|
42
|
+
locationId?: string;
|
|
43
|
+
extent?: string;
|
|
44
|
+
limit?: number;
|
|
45
|
+
}): Promise<NoaaStation[]>;
|
|
46
|
+
/** Get climate observations. */
|
|
47
|
+
export declare function getClimateData(opts: {
|
|
48
|
+
datasetId: string;
|
|
49
|
+
startDate: string;
|
|
50
|
+
endDate: string;
|
|
51
|
+
stationId?: string;
|
|
52
|
+
locationId?: string;
|
|
53
|
+
datatypeId?: string;
|
|
54
|
+
limit?: number;
|
|
55
|
+
}): Promise<{
|
|
56
|
+
count: number;
|
|
57
|
+
data: NoaaDataPoint[];
|
|
58
|
+
}>;
|
|
59
|
+
/** Search locations (states, cities, countries, etc.) */
|
|
60
|
+
export declare function searchLocations(opts: {
|
|
61
|
+
categoryId?: string;
|
|
62
|
+
datasetId?: string;
|
|
63
|
+
limit?: number;
|
|
64
|
+
}): Promise<{
|
|
65
|
+
id: string;
|
|
66
|
+
name: string;
|
|
67
|
+
datacoverage: number;
|
|
68
|
+
mindate: string;
|
|
69
|
+
maxdate: string;
|
|
70
|
+
}[]>;
|
|
71
|
+
export declare function clearCache(): void;
|
|
72
|
+
//# sourceMappingURL=noaa.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noaa.d.ts","sourceRoot":"","sources":["../../src/sdk/noaa.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAcH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AASD,wDAAwD;AACxD,wBAAsB,YAAY,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAG3D;AAED,0DAA0D;AAC1D,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAQzB;AAED,gCAAgC;AAChC,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,aAAa,EAAE,CAAA;CAAE,CAAC,CAepD;AAED,yDAAyD;AACzD,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAQlG;AAED,wBAAgB,UAAU,IAAI,IAAI,CAAsB"}
|