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/cdc.js
ADDED
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CDC Open Data SDK — health statistics from data.cdc.gov (Socrata SODA API).
|
|
3
|
+
*
|
|
4
|
+
* API docs: https://dev.socrata.com/foundry/data.cdc.gov/
|
|
5
|
+
* No auth required (optional app token for higher rate limits).
|
|
6
|
+
* Rate limit: 1,000 req/hour without token, 20x with token.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* import { queryDataset, getLeadingCausesOfDeath } from "us-gov-open-data-mcp/sdk/cdc";
|
|
10
|
+
* const data = await getLeadingCausesOfDeath({ state: "New York", year: 2021 });
|
|
11
|
+
*/
|
|
12
|
+
import { createClient } from "../client.js";
|
|
13
|
+
const api = createClient({
|
|
14
|
+
baseUrl: "https://data.cdc.gov/resource",
|
|
15
|
+
name: "cdc",
|
|
16
|
+
rateLimit: { perSecond: 2, burst: 5 },
|
|
17
|
+
cacheTtlMs: 24 * 60 * 60 * 1000, // 24 hours — CDC data updates slowly
|
|
18
|
+
});
|
|
19
|
+
// ─── Dataset IDs ─────────────────────────────────────────────────────
|
|
20
|
+
export const DATASETS = {
|
|
21
|
+
leading_death: { id: "bi63-dtpu", name: "Leading Causes of Death", description: "U.S. leading causes of death by state and year (1999–present)" },
|
|
22
|
+
life_expectancy: { id: "w9j2-ggv5", name: "Life Expectancy", description: "Life expectancy at birth by race (All Races, Black, White) and sex (1900–2018)" },
|
|
23
|
+
mortality_rates: { id: "489q-934x", name: "Provisional Mortality Rates", description: "Quarterly age-adjusted death rates by cause, sex, and state (2020–present)" },
|
|
24
|
+
places_county: { id: "swc5-untb", name: "PLACES: County Health", description: "County-level health indicators: obesity, diabetes, smoking, depression, sleep, etc. (BRFSS-based)" },
|
|
25
|
+
places_city: { id: "dxpw-cm5u", name: "PLACES: City Health", description: "City-level health indicators: obesity, diabetes, smoking, depression, sleep, etc. (BRFSS-based)" },
|
|
26
|
+
covid_cases: { id: "pwn4-m3yp", name: "COVID-19 Cases & Deaths", description: "COVID-19 weekly cases and deaths by state (through early 2023)" },
|
|
27
|
+
covid_conditions: { id: "hk9y-quqm", name: "COVID-19 Conditions", description: "COVID-19 deaths by contributing condition, age group, and state" },
|
|
28
|
+
weekly_deaths: { id: "r8kw-7aab", name: "Weekly Death Surveillance", description: "Provisional weekly death counts by state: COVID-19, pneumonia, influenza, total deaths (updated weekly, 2020–present)" },
|
|
29
|
+
disability: { id: "s2qv-b27b", name: "Disability Prevalence", description: "Disability status and types by state: mobility, cognitive, hearing, vision, self-care (BRFSS)" },
|
|
30
|
+
weekly_deaths_by_cause: { id: "muzy-jte6", name: "Weekly Deaths by Cause", description: "Weekly deaths by state and cause: heart disease, cancer, diabetes, stroke, COVID, respiratory (2020–2023)" },
|
|
31
|
+
drug_overdose_state: { id: "xbxb-epbu", name: "Drug Poisoning Mortality by State", description: "Drug poisoning/overdose death rates by state, sex, race, and age (1999–2016)" },
|
|
32
|
+
nutrition_obesity: { id: "hn4x-zwk7", name: "Nutrition, Physical Activity & Obesity", description: "Adult obesity, physical inactivity, and fruit/vegetable consumption by state from BRFSS" },
|
|
33
|
+
death_rates_historical: { id: "6rkc-nb2q", name: "Historical Death Rates by Cause", description: "Age-adjusted death rates for major causes (heart disease, cancer, stroke, etc.) since 1900" },
|
|
34
|
+
birth_indicators: { id: "76vv-a7x8", name: "Quarterly Birth Indicators", description: "Provisional quarterly birth rates, teen births, preterm births, cesarean rates by race/ethnicity" },
|
|
35
|
+
};
|
|
36
|
+
// ─── Public API ──────────────────────────────────────────────────────
|
|
37
|
+
/** Generic Socrata SODA query against any CDC dataset. */
|
|
38
|
+
export async function queryDataset(datasetId, opts = {}) {
|
|
39
|
+
return api.get(`/${datasetId}.json`, {
|
|
40
|
+
"$where": opts.where,
|
|
41
|
+
"$select": opts.select,
|
|
42
|
+
"$group": opts.group,
|
|
43
|
+
"$order": opts.order,
|
|
44
|
+
"$limit": opts.limit ?? 1000,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/** Leading causes of death by state/year. */
|
|
48
|
+
export async function getLeadingCausesOfDeath(opts) {
|
|
49
|
+
const clauses = [];
|
|
50
|
+
if (opts?.state)
|
|
51
|
+
clauses.push(`state = '${opts.state}'`);
|
|
52
|
+
if (opts?.year)
|
|
53
|
+
clauses.push(`year = '${opts.year}'`);
|
|
54
|
+
return queryDataset(DATASETS.leading_death.id, {
|
|
55
|
+
where: clauses.length ? clauses.join(" AND ") : undefined,
|
|
56
|
+
order: "deaths DESC",
|
|
57
|
+
limit: opts?.limit ?? 200,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
/** Life expectancy at birth by race and sex (dataset w9j2-ggv5, 1900–2018). */
|
|
61
|
+
export async function getLifeExpectancy(opts) {
|
|
62
|
+
const clauses = [];
|
|
63
|
+
if (opts?.year)
|
|
64
|
+
clauses.push(`year = '${opts.year}'`);
|
|
65
|
+
if (opts?.race)
|
|
66
|
+
clauses.push(`race = '${opts.race}'`);
|
|
67
|
+
if (opts?.sex)
|
|
68
|
+
clauses.push(`sex = '${opts.sex}'`);
|
|
69
|
+
return queryDataset(DATASETS.life_expectancy.id, {
|
|
70
|
+
where: clauses.length ? clauses.join(" AND ") : undefined,
|
|
71
|
+
order: "year DESC",
|
|
72
|
+
limit: opts?.limit ?? 200,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/** Provisional mortality rates by cause, sex, and state (dataset 489q-934x, quarterly, 2020–present). */
|
|
76
|
+
export async function getMortalityRates(opts) {
|
|
77
|
+
const clauses = [];
|
|
78
|
+
if (opts?.quarter)
|
|
79
|
+
clauses.push(`year_and_quarter = '${opts.quarter}'`);
|
|
80
|
+
if (opts?.cause)
|
|
81
|
+
clauses.push(`cause_of_death = '${opts.cause}'`);
|
|
82
|
+
if (opts?.rateType)
|
|
83
|
+
clauses.push(`rate_type = '${opts.rateType}'`);
|
|
84
|
+
else
|
|
85
|
+
clauses.push(`rate_type = 'Age-adjusted'`);
|
|
86
|
+
clauses.push(`time_period = '12 months ending with quarter'`);
|
|
87
|
+
return queryDataset(DATASETS.mortality_rates.id, {
|
|
88
|
+
where: clauses.join(" AND "),
|
|
89
|
+
order: "year_and_quarter DESC",
|
|
90
|
+
limit: opts?.limit ?? 200,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
/** PLACES county-level health indicators (obesity, diabetes, smoking, depression, etc.). */
|
|
94
|
+
export async function getPlacesHealth(opts) {
|
|
95
|
+
const clauses = [];
|
|
96
|
+
if (opts?.state)
|
|
97
|
+
clauses.push(`stateabbr = '${opts.state.toUpperCase()}'`);
|
|
98
|
+
if (opts?.measure)
|
|
99
|
+
clauses.push(`measureid = '${opts.measure.toUpperCase()}'`);
|
|
100
|
+
return queryDataset(DATASETS.places_county.id, {
|
|
101
|
+
where: clauses.length ? clauses.join(" AND ") : undefined,
|
|
102
|
+
select: "stateabbr, statedesc, locationname, measureid, short_question_text, data_value, data_value_type, totalpopulation, category",
|
|
103
|
+
order: "data_value DESC",
|
|
104
|
+
limit: opts?.limit ?? 200,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
/** PLACES city-level health indicators (obesity, diabetes, smoking, depression, etc.). */
|
|
108
|
+
export async function getPlacesCityHealth(opts) {
|
|
109
|
+
const clauses = [];
|
|
110
|
+
if (opts?.state)
|
|
111
|
+
clauses.push(`stateabbr = '${opts.state.toUpperCase()}'`);
|
|
112
|
+
if (opts?.measure)
|
|
113
|
+
clauses.push(`${opts.measure.toLowerCase()}_crudeprev IS NOT NULL`);
|
|
114
|
+
if (opts?.city)
|
|
115
|
+
clauses.push(`upper(placename) LIKE '%${opts.city.toUpperCase()}%'`);
|
|
116
|
+
return queryDataset(DATASETS.places_city.id, {
|
|
117
|
+
where: clauses.length ? clauses.join(" AND ") : undefined,
|
|
118
|
+
order: "stateabbr, placename",
|
|
119
|
+
limit: opts?.limit ?? 200,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
/** COVID-19 weekly cases and deaths by state. */
|
|
123
|
+
export async function getCovidData(opts) {
|
|
124
|
+
const clauses = [];
|
|
125
|
+
if (opts?.state)
|
|
126
|
+
clauses.push(`state = '${opts.state.toUpperCase()}'`);
|
|
127
|
+
return queryDataset(DATASETS.covid_cases.id, {
|
|
128
|
+
where: clauses.length ? clauses.join(" AND ") : undefined,
|
|
129
|
+
order: "date_updated DESC",
|
|
130
|
+
limit: opts?.limit ?? 200,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
/** Weekly provisional death counts by state — COVID, pneumonia, influenza, total. Updated weekly. */
|
|
134
|
+
export async function getWeeklyDeaths(opts) {
|
|
135
|
+
const clauses = [];
|
|
136
|
+
clauses.push(`group = 'By Week'`);
|
|
137
|
+
if (opts?.state)
|
|
138
|
+
clauses.push(`state = '${opts.state}'`);
|
|
139
|
+
if (opts?.year)
|
|
140
|
+
clauses.push(`year = '${opts.year}'`);
|
|
141
|
+
return queryDataset(DATASETS.weekly_deaths.id, {
|
|
142
|
+
where: clauses.join(" AND "),
|
|
143
|
+
order: "end_date DESC",
|
|
144
|
+
limit: opts?.limit ?? 200,
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
/** Disability prevalence by state and type from BRFSS. */
|
|
148
|
+
export async function getDisabilityData(opts) {
|
|
149
|
+
const clauses = [];
|
|
150
|
+
clauses.push(`stratificationcategoryid1 = 'CAT1'`); // Overall (not by age/race subgroup)
|
|
151
|
+
if (opts?.state)
|
|
152
|
+
clauses.push(`locationabbr = '${opts.state.toUpperCase()}'`);
|
|
153
|
+
if (opts?.disabilityType)
|
|
154
|
+
clauses.push(`response = '${opts.disabilityType}'`);
|
|
155
|
+
return queryDataset(DATASETS.disability.id, {
|
|
156
|
+
where: clauses.join(" AND "),
|
|
157
|
+
select: "locationabbr, locationdesc, response, data_value, data_value_type, year, number, weightednumber",
|
|
158
|
+
order: "year DESC, locationabbr",
|
|
159
|
+
limit: opts?.limit ?? 200,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
export function clearCache() { api.clearCache(); }
|
|
163
|
+
// ─── Additional high-value SDK functions ─────────────────────────────
|
|
164
|
+
/** Drug overdose/poisoning mortality by state (1999–2016). */
|
|
165
|
+
export async function getDrugOverdoseData(opts) {
|
|
166
|
+
const clauses = [];
|
|
167
|
+
if (opts?.state)
|
|
168
|
+
clauses.push(`state = '${opts.state}'`);
|
|
169
|
+
if (opts?.year)
|
|
170
|
+
clauses.push(`year = '${opts.year}'`);
|
|
171
|
+
if (opts?.sex)
|
|
172
|
+
clauses.push(`sex = '${opts.sex}'`);
|
|
173
|
+
return queryDataset(DATASETS.drug_overdose_state.id, {
|
|
174
|
+
where: clauses.length ? clauses.join(" AND ") : undefined,
|
|
175
|
+
order: "year DESC",
|
|
176
|
+
limit: opts?.limit ?? 200,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
/** Nutrition, physical activity, and obesity by state from BRFSS. */
|
|
180
|
+
export async function getNutritionObesityData(opts) {
|
|
181
|
+
const clauses = [];
|
|
182
|
+
clauses.push(`data_value IS NOT NULL`);
|
|
183
|
+
if (opts?.state)
|
|
184
|
+
clauses.push(`locationabbr = '${opts.state.toUpperCase()}'`);
|
|
185
|
+
if (opts?.topic)
|
|
186
|
+
clauses.push(`class LIKE '%${opts.topic}%'`);
|
|
187
|
+
return queryDataset(DATASETS.nutrition_obesity.id, {
|
|
188
|
+
where: clauses.join(" AND "),
|
|
189
|
+
select: "yearstart, yearend, locationabbr, locationdesc, class, topic, question, data_value, data_value_unit, stratificationcategory1, stratification1",
|
|
190
|
+
order: "yearend DESC",
|
|
191
|
+
limit: opts?.limit ?? 200,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
/** Historical age-adjusted death rates for major causes since 1900. */
|
|
195
|
+
export async function getHistoricalDeathRates(opts) {
|
|
196
|
+
const clauses = [];
|
|
197
|
+
if (opts?.cause)
|
|
198
|
+
clauses.push(`leading_causes = '${opts.cause}'`);
|
|
199
|
+
if (opts?.startYear)
|
|
200
|
+
clauses.push(`year >= '${opts.startYear}'`);
|
|
201
|
+
if (opts?.endYear)
|
|
202
|
+
clauses.push(`year <= '${opts.endYear}'`);
|
|
203
|
+
return queryDataset(DATASETS.death_rates_historical.id, {
|
|
204
|
+
where: clauses.length ? clauses.join(" AND ") : undefined,
|
|
205
|
+
order: "year DESC",
|
|
206
|
+
limit: opts?.limit ?? 200,
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
/** Quarterly provisional birth indicators (birth rates, teen births, preterm, cesarean). */
|
|
210
|
+
export async function getBirthIndicators(opts) {
|
|
211
|
+
const clauses = [];
|
|
212
|
+
if (opts?.topic)
|
|
213
|
+
clauses.push(`topic_subgroup LIKE '%${opts.topic}%'`);
|
|
214
|
+
if (opts?.raceEthnicity)
|
|
215
|
+
clauses.push(`race_ethnicity = '${opts.raceEthnicity}'`);
|
|
216
|
+
return queryDataset(DATASETS.birth_indicators.id, {
|
|
217
|
+
where: clauses.length ? clauses.join(" AND ") : undefined,
|
|
218
|
+
order: "year_and_quarter DESC",
|
|
219
|
+
limit: opts?.limit ?? 200,
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=cdc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cdc.js","sourceRoot":"","sources":["../../src/sdk/cdc.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Census SDK — typed API client for the U.S. Census Bureau Data API.
|
|
3
|
+
*
|
|
4
|
+
* Standalone — no MCP server required. Usage:
|
|
5
|
+
*
|
|
6
|
+
* import { queryCensus, searchVariables } from "us-gov-open-data/sdk/census";
|
|
7
|
+
*
|
|
8
|
+
* const data = await queryCensus("2023/acs/acs1", "NAME,B01001_001E", "state:*");
|
|
9
|
+
* console.log(data.headers, data.rows);
|
|
10
|
+
*
|
|
11
|
+
* Requires CENSUS_API_KEY env var. Get one at https://api.census.gov/data/key_signup.html
|
|
12
|
+
*/
|
|
13
|
+
/** Transformed Census query result: first row becomes headers, rest becomes rows. */
|
|
14
|
+
export interface CensusQueryResult {
|
|
15
|
+
headers: string[];
|
|
16
|
+
rows: string[][];
|
|
17
|
+
}
|
|
18
|
+
export interface CensusVariable {
|
|
19
|
+
label?: string;
|
|
20
|
+
concept?: string;
|
|
21
|
+
predicateType?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface CensusVariableMatch {
|
|
24
|
+
id: string;
|
|
25
|
+
label: string;
|
|
26
|
+
concept: string;
|
|
27
|
+
}
|
|
28
|
+
export interface CensusDataset {
|
|
29
|
+
path: string;
|
|
30
|
+
name: string;
|
|
31
|
+
description: string;
|
|
32
|
+
}
|
|
33
|
+
export declare const commonVariables: Record<string, string>;
|
|
34
|
+
export declare const datasets: CensusDataset[];
|
|
35
|
+
/**
|
|
36
|
+
* Query the Census Bureau Data API.
|
|
37
|
+
* The raw API returns a 2D string array; this transforms it into { headers, rows }.
|
|
38
|
+
*/
|
|
39
|
+
export declare function queryCensus(dataset: string, variables: string, forGeo: string, inGeo?: string, extra?: Record<string, string>): Promise<CensusQueryResult>;
|
|
40
|
+
/**
|
|
41
|
+
* Search for Census variable names/codes by keyword within a dataset.
|
|
42
|
+
* Fetches the dataset's variables.json and filters locally.
|
|
43
|
+
*/
|
|
44
|
+
export declare function searchVariables(dataset: string, keyword: string, maxResults?: number): Promise<CensusVariableMatch[]>;
|
|
45
|
+
/** Clear cached responses. */
|
|
46
|
+
export declare function clearCache(): void;
|
|
47
|
+
//# sourceMappingURL=census.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"census.d.ts","sourceRoot":"","sources":["../../src/sdk/census.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAgBH,qFAAqF;AACrF,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAID,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAqBlD,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,aAAa,EASnC,CAAC;AAIF;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,CAAC,iBAAiB,CAAC,CAW5B;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,UAAU,SAAK,GACd,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAmBhC;AAED,8BAA8B;AAC9B,wBAAgB,UAAU,IAAI,IAAI,CAEjC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Census SDK — typed API client for the U.S. Census Bureau Data API.
|
|
3
|
+
*
|
|
4
|
+
* Standalone — no MCP server required. Usage:
|
|
5
|
+
*
|
|
6
|
+
* import { queryCensus, searchVariables } from "us-gov-open-data/sdk/census";
|
|
7
|
+
*
|
|
8
|
+
* const data = await queryCensus("2023/acs/acs1", "NAME,B01001_001E", "state:*");
|
|
9
|
+
* console.log(data.headers, data.rows);
|
|
10
|
+
*
|
|
11
|
+
* Requires CENSUS_API_KEY env var. Get one at https://api.census.gov/data/key_signup.html
|
|
12
|
+
*/
|
|
13
|
+
import { createClient } from "../client.js";
|
|
14
|
+
// ─── Client ──────────────────────────────────────────────────────────
|
|
15
|
+
const api = createClient({
|
|
16
|
+
baseUrl: "https://api.census.gov/data",
|
|
17
|
+
name: "census",
|
|
18
|
+
auth: { type: "query", key: "key", envVar: "CENSUS_API_KEY" },
|
|
19
|
+
rateLimit: { perSecond: 3, burst: 10 },
|
|
20
|
+
cacheTtlMs: 60 * 60 * 1000, // 1 hour — Census data updates annually
|
|
21
|
+
});
|
|
22
|
+
// ─── Reference Data ──────────────────────────────────────────────────
|
|
23
|
+
export const commonVariables = {
|
|
24
|
+
NAME: "Geographic area name",
|
|
25
|
+
B01001_001E: "Total population",
|
|
26
|
+
B01002_001E: "Median age",
|
|
27
|
+
B02001_002E: "White alone population",
|
|
28
|
+
B02001_003E: "Black/African American alone",
|
|
29
|
+
B03003_003E: "Hispanic/Latino population",
|
|
30
|
+
B19013_001E: "Median household income",
|
|
31
|
+
B19001_001E: "Household income distribution (total)",
|
|
32
|
+
B19301_001E: "Per capita income",
|
|
33
|
+
B25077_001E: "Median home value (owner-occupied)",
|
|
34
|
+
B25064_001E: "Median gross rent",
|
|
35
|
+
B25003_001E: "Housing tenure (total occupied)",
|
|
36
|
+
B25003_002E: "Owner-occupied housing units",
|
|
37
|
+
B25003_003E: "Renter-occupied housing units",
|
|
38
|
+
B17001_002E: "Population below poverty level",
|
|
39
|
+
B15003_022E: "Bachelor's degree",
|
|
40
|
+
B15003_023E: "Master's degree",
|
|
41
|
+
B15003_025E: "Doctorate degree",
|
|
42
|
+
B23025_002E: "In labor force",
|
|
43
|
+
B23025_005E: "Unemployed",
|
|
44
|
+
};
|
|
45
|
+
export const datasets = [
|
|
46
|
+
{ path: "2023/acs/acs1", name: "ACS 1-Year (2023)", description: "American Community Survey 1-year estimates — larger areas only" },
|
|
47
|
+
{ path: "2023/acs/acs5", name: "ACS 5-Year (2023)", description: "American Community Survey 5-year estimates — all geographies" },
|
|
48
|
+
{ path: "2022/acs/acs1", name: "ACS 1-Year (2022)", description: "ACS 1-year 2022" },
|
|
49
|
+
{ path: "2020/dec/pl", name: "Decennial 2020 PL", description: "2020 Census redistricting data" },
|
|
50
|
+
{ path: "2020/dec/dhc", name: "Decennial 2020 DHC", description: "2020 Census demographic and housing characteristics" },
|
|
51
|
+
{ path: "2010/dec/sf1", name: "Decennial 2010 SF1", description: "2010 Census Summary File 1" },
|
|
52
|
+
{ path: "2023/pep/population", name: "Population Estimates (2023)", description: "Annual population estimates" },
|
|
53
|
+
{ path: "2017/ecnbasic", name: "Economic Census (2017)", description: "Economic Census basic data" },
|
|
54
|
+
];
|
|
55
|
+
// ─── Public API ──────────────────────────────────────────────────────
|
|
56
|
+
/**
|
|
57
|
+
* Query the Census Bureau Data API.
|
|
58
|
+
* The raw API returns a 2D string array; this transforms it into { headers, rows }.
|
|
59
|
+
*/
|
|
60
|
+
export async function queryCensus(dataset, variables, forGeo, inGeo, extra) {
|
|
61
|
+
const norm = dataset.startsWith("/") ? dataset : `/${dataset}`;
|
|
62
|
+
const params = { get: variables, for: forGeo };
|
|
63
|
+
if (inGeo)
|
|
64
|
+
params.in = inGeo;
|
|
65
|
+
if (extra)
|
|
66
|
+
Object.assign(params, extra);
|
|
67
|
+
const raw = await api.get(norm, params);
|
|
68
|
+
if (!Array.isArray(raw) || raw.length === 0) {
|
|
69
|
+
throw new Error("census: empty response — no data returned");
|
|
70
|
+
}
|
|
71
|
+
return { headers: raw[0], rows: raw.slice(1) };
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Search for Census variable names/codes by keyword within a dataset.
|
|
75
|
+
* Fetches the dataset's variables.json and filters locally.
|
|
76
|
+
*/
|
|
77
|
+
export async function searchVariables(dataset, keyword, maxResults = 20) {
|
|
78
|
+
const norm = dataset.startsWith("/") ? dataset : `/${dataset}`;
|
|
79
|
+
const data = await api.get(`${norm}/variables.json`);
|
|
80
|
+
const kw = keyword.toLowerCase();
|
|
81
|
+
const matches = [];
|
|
82
|
+
for (const [id, info] of Object.entries(data.variables)) {
|
|
83
|
+
const label = info.label || "";
|
|
84
|
+
const concept = info.concept || "";
|
|
85
|
+
if (label.toLowerCase().includes(kw) ||
|
|
86
|
+
concept.toLowerCase().includes(kw) ||
|
|
87
|
+
id.toLowerCase().includes(kw)) {
|
|
88
|
+
matches.push({ id, label, concept });
|
|
89
|
+
if (matches.length >= maxResults)
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return matches;
|
|
94
|
+
}
|
|
95
|
+
/** Clear cached responses. */
|
|
96
|
+
export function clearCache() {
|
|
97
|
+
api.clearCache();
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=census.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"census.js","sourceRoot":"","sources":["../../src/sdk/census.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CFPB SDK — typed API client for the Consumer Financial Protection Bureau
|
|
3
|
+
* Consumer Complaint Database.
|
|
4
|
+
*
|
|
5
|
+
* Standalone — no MCP server required. Usage:
|
|
6
|
+
*
|
|
7
|
+
* import { searchComplaints, getCompanyComplaints, getComplaintTrends } from "us-gov-open-data/sdk/cfpb";
|
|
8
|
+
*
|
|
9
|
+
* const data = await searchComplaints({ product: "Mortgage", state: "CA" });
|
|
10
|
+
* console.log(data);
|
|
11
|
+
*
|
|
12
|
+
* No API key required.
|
|
13
|
+
* Docs: https://cfpb.github.io/api/ccdb/
|
|
14
|
+
* Database: https://www.consumerfinance.gov/data-research/consumer-complaints/
|
|
15
|
+
*/
|
|
16
|
+
export interface Complaint {
|
|
17
|
+
complaint_id?: number;
|
|
18
|
+
date_received?: string;
|
|
19
|
+
product?: string;
|
|
20
|
+
sub_product?: string;
|
|
21
|
+
issue?: string;
|
|
22
|
+
sub_issue?: string;
|
|
23
|
+
company?: string;
|
|
24
|
+
state?: string;
|
|
25
|
+
zip_code?: string;
|
|
26
|
+
company_response?: string;
|
|
27
|
+
company_public_response?: string;
|
|
28
|
+
consumer_consent_provided?: string;
|
|
29
|
+
consumer_disputed?: string;
|
|
30
|
+
consumer_complaint_narrative?: string;
|
|
31
|
+
timely?: string;
|
|
32
|
+
date_sent_to_company?: string;
|
|
33
|
+
submitted_via?: string;
|
|
34
|
+
tags?: string;
|
|
35
|
+
has_narrative?: boolean;
|
|
36
|
+
[key: string]: unknown;
|
|
37
|
+
}
|
|
38
|
+
export interface ComplaintSearchResult {
|
|
39
|
+
hits: {
|
|
40
|
+
total: number | {
|
|
41
|
+
value: number;
|
|
42
|
+
relation: string;
|
|
43
|
+
};
|
|
44
|
+
hits: Array<{
|
|
45
|
+
_source: Complaint;
|
|
46
|
+
[key: string]: unknown;
|
|
47
|
+
}>;
|
|
48
|
+
};
|
|
49
|
+
_meta?: {
|
|
50
|
+
total_record_count?: number;
|
|
51
|
+
last_updated?: string;
|
|
52
|
+
last_indexed?: string;
|
|
53
|
+
license?: string;
|
|
54
|
+
[key: string]: unknown;
|
|
55
|
+
};
|
|
56
|
+
[key: string]: unknown;
|
|
57
|
+
}
|
|
58
|
+
export interface AggregationBucket {
|
|
59
|
+
key: string;
|
|
60
|
+
doc_count: number;
|
|
61
|
+
[key: string]: unknown;
|
|
62
|
+
}
|
|
63
|
+
export interface SuggestResult {
|
|
64
|
+
suggest: Array<{
|
|
65
|
+
text: string;
|
|
66
|
+
options: Array<{
|
|
67
|
+
text: string;
|
|
68
|
+
[key: string]: unknown;
|
|
69
|
+
}>;
|
|
70
|
+
[key: string]: unknown;
|
|
71
|
+
}>;
|
|
72
|
+
[key: string]: unknown;
|
|
73
|
+
}
|
|
74
|
+
/** Financial product categories tracked by CFPB. */
|
|
75
|
+
export declare const PRODUCTS: Record<string, string>;
|
|
76
|
+
/** Fields available for aggregation. */
|
|
77
|
+
export declare const AGG_FIELDS: Record<string, string>;
|
|
78
|
+
/**
|
|
79
|
+
* Search consumer complaints with filters.
|
|
80
|
+
*
|
|
81
|
+
* Example:
|
|
82
|
+
* const data = await searchComplaints({ product: "Mortgage", state: "CA", size: 25 });
|
|
83
|
+
* const recent = await searchComplaints({ company: "Wells Fargo", sort: "created_date_desc" });
|
|
84
|
+
*/
|
|
85
|
+
export declare function searchComplaints(opts: {
|
|
86
|
+
search_term?: string;
|
|
87
|
+
product?: string;
|
|
88
|
+
company?: string;
|
|
89
|
+
state?: string;
|
|
90
|
+
issue?: string;
|
|
91
|
+
date_received_min?: string;
|
|
92
|
+
date_received_max?: string;
|
|
93
|
+
company_response?: string;
|
|
94
|
+
consumer_disputed?: string;
|
|
95
|
+
has_narrative?: boolean;
|
|
96
|
+
tags?: string;
|
|
97
|
+
size?: number;
|
|
98
|
+
frm?: number;
|
|
99
|
+
sort?: string;
|
|
100
|
+
field?: string;
|
|
101
|
+
no_aggs?: boolean;
|
|
102
|
+
}): Promise<ComplaintSearchResult>;
|
|
103
|
+
/**
|
|
104
|
+
* Get complaint aggregations/counts grouped by a field.
|
|
105
|
+
* Uses the search endpoint with size=0 to return only aggregations.
|
|
106
|
+
*
|
|
107
|
+
* Example:
|
|
108
|
+
* const byProduct = await getComplaintAggregations({ field: "product" });
|
|
109
|
+
* const byCompany = await getComplaintAggregations({ field: "company", state: "TX", size: 20 });
|
|
110
|
+
*/
|
|
111
|
+
export declare function getComplaintAggregations(opts: {
|
|
112
|
+
field: string;
|
|
113
|
+
search_term?: string;
|
|
114
|
+
product?: string;
|
|
115
|
+
company?: string;
|
|
116
|
+
state?: string;
|
|
117
|
+
issue?: string;
|
|
118
|
+
date_received_min?: string;
|
|
119
|
+
date_received_max?: string;
|
|
120
|
+
tags?: string;
|
|
121
|
+
size?: number;
|
|
122
|
+
}): Promise<ComplaintSearchResult>;
|
|
123
|
+
/**
|
|
124
|
+
* Get complaint trends over time.
|
|
125
|
+
* Returns complaint data with date-based aggregations for trend analysis.
|
|
126
|
+
*
|
|
127
|
+
* Example:
|
|
128
|
+
* const trends = await getComplaintTrends({ product: "Mortgage", date_received_min: "2020-01-01" });
|
|
129
|
+
*/
|
|
130
|
+
export declare function getComplaintTrends(opts: {
|
|
131
|
+
product?: string;
|
|
132
|
+
company?: string;
|
|
133
|
+
state?: string;
|
|
134
|
+
issue?: string;
|
|
135
|
+
date_received_min?: string;
|
|
136
|
+
date_received_max?: string;
|
|
137
|
+
trend_interval?: string;
|
|
138
|
+
}): Promise<ComplaintSearchResult>;
|
|
139
|
+
/**
|
|
140
|
+
* Get company name suggestions/autocomplete.
|
|
141
|
+
*
|
|
142
|
+
* Example:
|
|
143
|
+
* const suggestions = await suggestCompany("wells");
|
|
144
|
+
*/
|
|
145
|
+
export declare function suggestCompany(text: string, size?: number): Promise<SuggestResult>;
|
|
146
|
+
/** Clear cached responses. */
|
|
147
|
+
export declare function clearCache(): void;
|
|
148
|
+
//# sourceMappingURL=cfpb.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cfpb.d.ts","sourceRoot":"","sources":["../../src/sdk/cfpb.ts"],"names":[],"mappings":"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"}
|