@cliwant/mcp-sam-gov 1.4.0 → 1.6.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/LICENSE +21 -21
- package/README.ja.md +240 -231
- package/README.ko.md +240 -231
- package/README.md +725 -706
- package/dist/cbp-border.d.ts +51 -0
- package/dist/cbp-border.d.ts.map +1 -0
- package/dist/cbp-border.js +123 -0
- package/dist/cbp-border.js.map +1 -0
- package/dist/datagov-catalog.d.ts.map +1 -1
- package/dist/datagov-catalog.js +16 -2
- package/dist/datagov-catalog.js.map +1 -1
- package/dist/ecfr.d.ts +2 -2
- package/dist/ecfr.d.ts.map +1 -1
- package/dist/ecfr.js +24 -10
- package/dist/ecfr.js.map +1 -1
- package/dist/edgar.d.ts.map +1 -1
- package/dist/edgar.js +26 -6
- package/dist/edgar.js.map +1 -1
- package/dist/epa-envirofacts.d.ts.map +1 -1
- package/dist/epa-envirofacts.js +14 -1
- package/dist/epa-envirofacts.js.map +1 -1
- package/dist/errors.d.ts +10 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +11 -0
- package/dist/errors.js.map +1 -1
- package/dist/far.d.ts.map +1 -1
- package/dist/far.js +3 -1
- package/dist/far.js.map +1 -1
- package/dist/federal-register.d.ts +2 -2
- package/dist/federal-register.d.ts.map +1 -1
- package/dist/federal-register.js +26 -10
- package/dist/federal-register.js.map +1 -1
- package/dist/feedback.d.ts +64 -0
- package/dist/feedback.d.ts.map +1 -0
- package/dist/feedback.js +131 -0
- package/dist/feedback.js.map +1 -0
- package/dist/fema.d.ts +36 -0
- package/dist/fema.d.ts.map +1 -1
- package/dist/fema.js +124 -0
- package/dist/fema.js.map +1 -1
- package/dist/gov-domains.d.ts +66 -0
- package/dist/gov-domains.d.ts.map +1 -0
- package/dist/gov-domains.js +211 -0
- package/dist/gov-domains.js.map +1 -0
- package/dist/nist-controls.d.ts +48 -0
- package/dist/nist-controls.d.ts.map +1 -0
- package/dist/nist-controls.js +174 -0
- package/dist/nist-controls.js.map +1 -0
- package/dist/nws-weather.d.ts +57 -0
- package/dist/nws-weather.d.ts.map +1 -0
- package/dist/nws-weather.js +131 -0
- package/dist/nws-weather.js.map +1 -0
- package/dist/openfda-drugsfda.d.ts +72 -0
- package/dist/openfda-drugsfda.d.ts.map +1 -0
- package/dist/openfda-drugsfda.js +230 -0
- package/dist/openfda-drugsfda.js.map +1 -0
- package/dist/openfda.d.ts.map +1 -1
- package/dist/openfda.js +31 -8
- package/dist/openfda.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +374 -11
- package/dist/server.js.map +1 -1
- package/dist/treasury.d.ts +2 -0
- package/dist/treasury.d.ts.map +1 -1
- package/dist/treasury.js +7 -0
- package/dist/treasury.js.map +1 -1
- package/dist/usaspending.d.ts +32 -1
- package/dist/usaspending.d.ts.map +1 -1
- package/dist/usaspending.js +143 -16
- package/dist/usaspending.js.map +1 -1
- package/package.json +111 -111
- package/src/attachments.ts +652 -652
- package/src/bea.ts +372 -372
- package/src/bls.ts +1943 -1943
- package/src/cache.ts +73 -73
- package/src/cbp-border.ts +177 -0
- package/src/census-economic.ts +431 -431
- package/src/census.ts +735 -735
- package/src/ckan.ts +495 -495
- package/src/clinicaltrials.ts +923 -923
- package/src/cms-facility.ts +379 -379
- package/src/cms-hospital.ts +344 -344
- package/src/cms-supplier.ts +527 -527
- package/src/cms-utilization.ts +389 -389
- package/src/cms.ts +634 -634
- package/src/coerce.ts +47 -47
- package/src/courtlistener.ts +465 -465
- package/src/cpsc.ts +333 -333
- package/src/datagov-catalog.ts +312 -296
- package/src/datagov.ts +907 -907
- package/src/datagovKey.ts +68 -68
- package/src/datasource.ts +721 -721
- package/src/disclosure.ts +61 -61
- package/src/dol.ts +515 -515
- package/src/ecfr.ts +248 -231
- package/src/echo.ts +496 -496
- package/src/edgar.ts +3046 -3014
- package/src/epa-envirofacts.ts +358 -342
- package/src/errors.ts +324 -303
- package/src/fac.ts +529 -529
- package/src/far.ts +1009 -1007
- package/src/fdic.ts +2052 -2052
- package/src/federal-register.ts +725 -706
- package/src/feedback.ts +160 -0
- package/src/fema.ts +680 -541
- package/src/fpds.ts +620 -620
- package/src/fred.ts +464 -464
- package/src/gao.ts +744 -744
- package/src/gov-domains.ts +237 -0
- package/src/govinfo.ts +497 -497
- package/src/grants.ts +290 -290
- package/src/gsa-csv.ts +992 -992
- package/src/gsa-perdiem.ts +361 -361
- package/src/integrity.ts +928 -928
- package/src/keys.ts +268 -268
- package/src/lda.ts +385 -385
- package/src/meta.ts +292 -292
- package/src/nhtsa.ts +352 -352
- package/src/nih.ts +375 -375
- package/src/nist-controls.ts +219 -0
- package/src/nonprofit.ts +460 -460
- package/src/nppes.ts +834 -834
- package/src/nsf.ts +706 -706
- package/src/nvd.ts +1124 -1124
- package/src/nws-weather.ts +167 -0
- package/src/ofac.ts +1166 -1166
- package/src/openfda-device.ts +356 -356
- package/src/openfda-drugsfda.ts +313 -0
- package/src/openfda.ts +518 -495
- package/src/pricing.ts +1075 -1075
- package/src/sam-gov/client.ts +774 -774
- package/src/sam-gov/index.ts +32 -32
- package/src/sam-gov/types.ts +152 -152
- package/src/sba.ts +357 -357
- package/src/server.ts +6688 -6297
- package/src/snapshot.ts +223 -223
- package/src/socrata.ts +532 -532
- package/src/treasury.ts +582 -575
- package/src/usaspending.ts +2852 -2680
- package/src/usitc.ts +420 -420
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* cbp-border.ts — CBP Border Wait Times (bwt.cbp.gov, KEYLESS) — the FREIGHT /
|
|
3
|
+
* LOGISTICS lane. Live commercial-vehicle (and passenger) wait times at every US
|
|
4
|
+
* land border port (Canadian + Mexican): per-port lane delays, operational status,
|
|
5
|
+
* and open-lane counts. Answers "what's the current commercial-truck delay at port
|
|
6
|
+
* X" — real-time freight-crossing situational awareness for logistics/trade vendors.
|
|
7
|
+
*
|
|
8
|
+
* SOURCE: CBP's official Border Wait Times API (bwt.cbp.gov/api/bwtnew) — a .gov host,
|
|
9
|
+
* keyless, returns a JSON ARRAY of ports. This is REAL-TIME operational data: each
|
|
10
|
+
* lane carries its own `update_time` (surfaced verbatim) — freshness is disclosed and
|
|
11
|
+
* never implied to be live-to-the-second.
|
|
12
|
+
*
|
|
13
|
+
* HONESTY: fixed host + redirect:"error" (SSRF); a non-array body ⇒ driftError (never
|
|
14
|
+
* a fake empty); an outage/4xx/timeout THROWS. delay/lanes are upstream STRINGS →
|
|
15
|
+
* number|null (a real 0 stays 0; an empty/N/A value is null, NEVER a fabricated 0 — a
|
|
16
|
+
* closed lane's delay is UNKNOWN, not "0 minutes"). totalAvailable = the EXACT count
|
|
17
|
+
* of matched ports (client-side filter; the API returns the whole set).
|
|
18
|
+
*/
|
|
19
|
+
import { type MetaBundle } from "./meta.js";
|
|
20
|
+
export declare const CBP_HOST = "bwt.cbp.gov";
|
|
21
|
+
export type CbpLane = {
|
|
22
|
+
operationalStatus: string | null;
|
|
23
|
+
delayMinutes: number | null;
|
|
24
|
+
lanesOpen: number | null;
|
|
25
|
+
updateTime: string | null;
|
|
26
|
+
};
|
|
27
|
+
export type CbpPort = {
|
|
28
|
+
portNumber: string | null;
|
|
29
|
+
portName: string | null;
|
|
30
|
+
crossingName: string | null;
|
|
31
|
+
border: string | null;
|
|
32
|
+
portStatus: string | null;
|
|
33
|
+
asOf: string | null;
|
|
34
|
+
commercialVehicle: {
|
|
35
|
+
maxLanes: number | null;
|
|
36
|
+
standard: CbpLane;
|
|
37
|
+
fast: CbpLane;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* List CBP land-border-port commercial-vehicle (+ passenger) wait times, optionally
|
|
42
|
+
* filtered by border (Canadian/Mexican) and/or port name (substring). Client-side
|
|
43
|
+
* filter over the live feed; honest `_meta` (exact match total + real-time freshness).
|
|
44
|
+
*/
|
|
45
|
+
export declare function borderWaitTimes(args: {
|
|
46
|
+
border?: string;
|
|
47
|
+
portName?: string;
|
|
48
|
+
limit?: number;
|
|
49
|
+
offset?: number;
|
|
50
|
+
}): Promise<MetaBundle>;
|
|
51
|
+
//# sourceMappingURL=cbp-border.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cbp-border.d.ts","sourceRoot":"","sources":["../src/cbp-border.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,EAAY,KAAK,UAAU,EAAqB,MAAM,WAAW,CAAC;AAEzE,eAAO,MAAM,QAAQ,gBAAgB,CAAC;AA+BtC,MAAM,MAAM,OAAO,GAAG;IACpB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AACF,MAAM,MAAM,OAAO,GAAG;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,iBAAiB,EAAE;QAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC;CAClF,CAAC;AA2DF;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,UAAU,CAAC,CAsCtB"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* cbp-border.ts — CBP Border Wait Times (bwt.cbp.gov, KEYLESS) — the FREIGHT /
|
|
3
|
+
* LOGISTICS lane. Live commercial-vehicle (and passenger) wait times at every US
|
|
4
|
+
* land border port (Canadian + Mexican): per-port lane delays, operational status,
|
|
5
|
+
* and open-lane counts. Answers "what's the current commercial-truck delay at port
|
|
6
|
+
* X" — real-time freight-crossing situational awareness for logistics/trade vendors.
|
|
7
|
+
*
|
|
8
|
+
* SOURCE: CBP's official Border Wait Times API (bwt.cbp.gov/api/bwtnew) — a .gov host,
|
|
9
|
+
* keyless, returns a JSON ARRAY of ports. This is REAL-TIME operational data: each
|
|
10
|
+
* lane carries its own `update_time` (surfaced verbatim) — freshness is disclosed and
|
|
11
|
+
* never implied to be live-to-the-second.
|
|
12
|
+
*
|
|
13
|
+
* HONESTY: fixed host + redirect:"error" (SSRF); a non-array body ⇒ driftError (never
|
|
14
|
+
* a fake empty); an outage/4xx/timeout THROWS. delay/lanes are upstream STRINGS →
|
|
15
|
+
* number|null (a real 0 stays 0; an empty/N/A value is null, NEVER a fabricated 0 — a
|
|
16
|
+
* closed lane's delay is UNKNOWN, not "0 minutes"). totalAvailable = the EXACT count
|
|
17
|
+
* of matched ports (client-side filter; the API returns the whole set).
|
|
18
|
+
*/
|
|
19
|
+
import { getJson, driftError } from "./datasource.js";
|
|
20
|
+
import { memoize } from "./cache.js";
|
|
21
|
+
import { num } from "./coerce.js";
|
|
22
|
+
import { withMeta } from "./meta.js";
|
|
23
|
+
export const CBP_HOST = "bwt.cbp.gov";
|
|
24
|
+
const CBP_URL = "https://bwt.cbp.gov/api/bwtnew";
|
|
25
|
+
const CBP_LABEL = "cbp:border-wait-times";
|
|
26
|
+
const CBP_TIMEOUT_MS = 15_000;
|
|
27
|
+
// Real-time feed — a SHORT 60s cache (upstream politeness) while staying fresh; the
|
|
28
|
+
// per-lane update_time is the authoritative freshness signal, disclosed per port.
|
|
29
|
+
const CBP_CACHE_TTL_MS = 60_000;
|
|
30
|
+
const FRESHNESS_NOTE = "REAL-TIME operational data: each lane carries its own asOf/updateTime (surfaced verbatim) — this is a live border-wait snapshot, not a historical series. A closed port or lane reports operationalStatus accordingly; its delayMinutes is null (UNKNOWN), never a fabricated 0.";
|
|
31
|
+
const PROVENANCE_NOTE = "Source: CBP Border Wait Times API (bwt.cbp.gov), keyless. Covers all US land border ports on the Canadian and Mexican borders.";
|
|
32
|
+
/** Trim to a non-empty string or null (never ""). */
|
|
33
|
+
function s(v) {
|
|
34
|
+
if (typeof v !== "string")
|
|
35
|
+
return v == null ? null : String(v);
|
|
36
|
+
const t = v.trim();
|
|
37
|
+
return t.length > 0 ? t : null;
|
|
38
|
+
}
|
|
39
|
+
/** Map ONE lane object → curated lane (delay/lanes via `num`: 0 stays 0, ""→null). */
|
|
40
|
+
function mapLane(lane) {
|
|
41
|
+
const l = (lane ?? {});
|
|
42
|
+
return {
|
|
43
|
+
operationalStatus: s(l.operational_status),
|
|
44
|
+
delayMinutes: num(l.delay_minutes),
|
|
45
|
+
lanesOpen: num(l.lanes_open),
|
|
46
|
+
updateTime: s(l.update_time),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function mapPort(port) {
|
|
50
|
+
const cv = (port.commercial_vehicle_lanes ?? {});
|
|
51
|
+
const date = s(port.date);
|
|
52
|
+
const time = s(port.time);
|
|
53
|
+
return {
|
|
54
|
+
portNumber: s(port.port_number),
|
|
55
|
+
portName: s(port.port_name),
|
|
56
|
+
crossingName: s(port.crossing_name),
|
|
57
|
+
border: s(port.border),
|
|
58
|
+
portStatus: s(port.port_status),
|
|
59
|
+
asOf: date && time ? `${date} ${time}` : (date ?? time),
|
|
60
|
+
commercialVehicle: {
|
|
61
|
+
maxLanes: num(cv.maximum_lanes),
|
|
62
|
+
standard: mapLane(cv.standard_lanes),
|
|
63
|
+
fast: mapLane(cv.FAST_lanes),
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/** Fetch + parse the full port array, memoized 60s. A non-array body ⇒ driftError. */
|
|
68
|
+
async function loadPorts() {
|
|
69
|
+
return memoize("cbp:bwt", async () => {
|
|
70
|
+
const built = new URL(CBP_URL);
|
|
71
|
+
if (built.hostname !== CBP_HOST || built.protocol !== "https:") {
|
|
72
|
+
throw driftError(CBP_LABEL, `Constructed CBP URL host ${JSON.stringify(built.hostname)} is not ${CBP_HOST} over https — refusing to fetch (SSRF safety).`);
|
|
73
|
+
}
|
|
74
|
+
const body = await getJson(CBP_URL, { label: CBP_LABEL, redirect: "error", timeoutMs: CBP_TIMEOUT_MS });
|
|
75
|
+
if (!Array.isArray(body)) {
|
|
76
|
+
throw driftError(CBP_LABEL, "CBP Border Wait Times returned a non-array body — schema drift, never a fake-empty result.");
|
|
77
|
+
}
|
|
78
|
+
return body.map(mapPort);
|
|
79
|
+
}, CBP_CACHE_TTL_MS);
|
|
80
|
+
}
|
|
81
|
+
// ─── Tool: cbp_border_wait_times ──────────────────────────────────
|
|
82
|
+
/**
|
|
83
|
+
* List CBP land-border-port commercial-vehicle (+ passenger) wait times, optionally
|
|
84
|
+
* filtered by border (Canadian/Mexican) and/or port name (substring). Client-side
|
|
85
|
+
* filter over the live feed; honest `_meta` (exact match total + real-time freshness).
|
|
86
|
+
*/
|
|
87
|
+
export async function borderWaitTimes(args) {
|
|
88
|
+
const limit = args.limit ?? 100;
|
|
89
|
+
const offset = args.offset ?? 0;
|
|
90
|
+
const all = await loadPorts();
|
|
91
|
+
const filtersApplied = [];
|
|
92
|
+
const borderQ = args.border?.trim().toLowerCase();
|
|
93
|
+
const portQ = args.portName?.trim().toLowerCase();
|
|
94
|
+
if (args.border !== undefined)
|
|
95
|
+
filtersApplied.push("border");
|
|
96
|
+
if (args.portName !== undefined)
|
|
97
|
+
filtersApplied.push("portName");
|
|
98
|
+
const matched = all.filter((p) => {
|
|
99
|
+
if (borderQ && !(p.border ?? "").toLowerCase().includes(borderQ))
|
|
100
|
+
return false;
|
|
101
|
+
if (portQ && !(p.portName ?? "").toLowerCase().includes(portQ))
|
|
102
|
+
return false;
|
|
103
|
+
return true;
|
|
104
|
+
});
|
|
105
|
+
const totalAvailable = matched.length;
|
|
106
|
+
const page = matched.slice(offset, offset + limit);
|
|
107
|
+
const returned = page.length;
|
|
108
|
+
const hasMore = offset + returned < totalAvailable;
|
|
109
|
+
const nextOffset = hasMore ? offset + returned : null;
|
|
110
|
+
return withMeta({ ports: page }, {
|
|
111
|
+
source: "bwt.cbp.gov Border Wait Times (keyless)",
|
|
112
|
+
keylessMode: true,
|
|
113
|
+
returned,
|
|
114
|
+
totalAvailable,
|
|
115
|
+
truncated: hasMore,
|
|
116
|
+
filtersApplied,
|
|
117
|
+
filtersDropped: [],
|
|
118
|
+
fieldsUnavailable: [],
|
|
119
|
+
pagination: { offset, limit, hasMore, nextOffset },
|
|
120
|
+
notes: [PROVENANCE_NOTE, FRESHNESS_NOTE],
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=cbp-border.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cbp-border.js","sourceRoot":"","sources":["../src/cbp-border.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datagov-catalog.d.ts","sourceRoot":"","sources":["../src/datagov-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAKH,OAAO,EAAY,KAAK,UAAU,EAAqB,MAAM,WAAW,CAAC;AAOzE,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAelD,eAAO,MAAM,iBAAiB,QAA2C,CAAC;AAO1E,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,EAAE,mBAAmB,EAAE,CAAC;IACrC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AA2EF,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"datagov-catalog.d.ts","sourceRoot":"","sources":["../src/datagov-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAKH,OAAO,EAAY,KAAK,UAAU,EAAqB,MAAM,WAAW,CAAC;AAOzE,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAelD,eAAO,MAAM,iBAAiB,QAA2C,CAAC;AAO1E,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,EAAE,mBAAmB,EAAE,CAAC;IACrC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AA2EF,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,UAAU,CAAC,CAyHrB"}
|
package/dist/datagov-catalog.js
CHANGED
|
@@ -161,14 +161,19 @@ export async function searchDatasets(args) {
|
|
|
161
161
|
const params = new URLSearchParams();
|
|
162
162
|
const filtersApplied = [];
|
|
163
163
|
if (args.query !== undefined) {
|
|
164
|
-
|
|
164
|
+
// DRIFT FIX (dogfooding 2026-07-16): the data.gov v4 catalog renamed its
|
|
165
|
+
// free-text param `_q` → `q` (and `_size` → `size`). The old `_q` was SILENTLY
|
|
166
|
+
// IGNORED — every query returned the same default catalog page while
|
|
167
|
+
// filtersApplied still claimed "query", a confidently-wrong result. LIVE-VERIFIED:
|
|
168
|
+
// q=wildfire → wildfire datasets; _q=wildfire → the generic default list.
|
|
169
|
+
params.set("q", args.query);
|
|
165
170
|
filtersApplied.push("query");
|
|
166
171
|
}
|
|
167
172
|
if (args.organization !== undefined) {
|
|
168
173
|
params.set("organization", args.organization);
|
|
169
174
|
filtersApplied.push("organization");
|
|
170
175
|
}
|
|
171
|
-
params.set("
|
|
176
|
+
params.set("size", String(limit));
|
|
172
177
|
if (args.cursor !== undefined) {
|
|
173
178
|
params.set("after", args.cursor);
|
|
174
179
|
filtersApplied.push("cursor");
|
|
@@ -211,6 +216,15 @@ export async function searchDatasets(args) {
|
|
|
211
216
|
if (filtersApplied.length === 0) {
|
|
212
217
|
notes.push("No filters were applied — this is an unscoped scan of the WHOLE data.gov catalog. Add `query` and/or `organization` for a meaningful scoped result set.");
|
|
213
218
|
}
|
|
219
|
+
// Behavior-driven limit-honesty (dogfooding 2026-07-16): the v4 catalog currently
|
|
220
|
+
// returns an upstream-FIXED page (~20) and ignores the `size` argument. Fire ONLY
|
|
221
|
+
// when the API returned MORE than requested (returned > limit) — a DEFINITIVE
|
|
222
|
+
// "limit ignored" signal that can't be confused with a genuine small result set
|
|
223
|
+
// (returned < limit could just be few matches). Behavior-driven, so if the API
|
|
224
|
+
// begins honoring `size` again (returned ≤ limit) the note self-suppresses.
|
|
225
|
+
if (returned > limit) {
|
|
226
|
+
notes.push(`The requested limit (${limit}) was NOT honored — the data.gov v4 catalog returned MORE (${returned} rows): it currently serves an upstream-fixed page and ignores the size argument. Page through the full result set with _meta.nextCursor, not by raising limit.`);
|
|
227
|
+
}
|
|
214
228
|
return withMeta({ datasets }, {
|
|
215
229
|
source: DATAGOV_CATALOG_SOURCE(keyModeLabel()),
|
|
216
230
|
keylessMode: false, // genuinely keyed (api.data.gov X-Api-Key)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datagov-catalog.js","sourceRoot":"","sources":["../src/datagov-catalog.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"datagov-catalog.js","sourceRoot":"","sources":["../src/datagov-catalog.ts"],"names":[],"mappings":"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"}
|
package/dist/ecfr.d.ts
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
*
|
|
13
13
|
* Both keyless. Documented at https://www.ecfr.gov/developers/.
|
|
14
14
|
*/
|
|
15
|
-
export declare function listTitles(): Promise<{
|
|
15
|
+
export declare function listTitles(): Promise<import("./meta.js").MetaBundle<{
|
|
16
16
|
titles: {
|
|
17
17
|
number: number;
|
|
18
18
|
name: string;
|
|
@@ -21,7 +21,7 @@ export declare function listTitles(): Promise<{
|
|
|
21
21
|
upToDateAsOf: string | undefined;
|
|
22
22
|
reserved: boolean;
|
|
23
23
|
}[];
|
|
24
|
-
}
|
|
24
|
+
}>>;
|
|
25
25
|
export declare function search(args: {
|
|
26
26
|
query: string;
|
|
27
27
|
titleNumber?: number;
|
package/dist/ecfr.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ecfr.d.ts","sourceRoot":"","sources":["../src/ecfr.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA2BH,wBAAsB,UAAU;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"ecfr.d.ts","sourceRoot":"","sources":["../src/ecfr.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA2BH,wBAAsB,UAAU;;;;;;;;;IA0C/B;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;;;;;;;;;;;;;;;IA0IA"}
|
package/dist/ecfr.js
CHANGED
|
@@ -33,16 +33,30 @@ export async function listTitles() {
|
|
|
33
33
|
// 50 CFR titles change very infrequently. Cache aggressively (5 min).
|
|
34
34
|
return memoize("ecfr:titles", async () => {
|
|
35
35
|
const json = await fetchJson(`${ECFR}/versioner/v1/titles.json`);
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
36
|
+
const titles = (json.titles ?? []).map((t) => ({
|
|
37
|
+
number: t.number ?? 0,
|
|
38
|
+
name: t.name ?? "",
|
|
39
|
+
latestAmendedOn: t.latest_amended_on,
|
|
40
|
+
latestIssueDate: t.latest_issue_date,
|
|
41
|
+
upToDateAsOf: t.up_to_date_as_of,
|
|
42
|
+
reserved: !!t.reserved,
|
|
43
|
+
}));
|
|
44
|
+
// Carry the honesty envelope every other tool has (dogfooding 2026-07-15: this
|
|
45
|
+
// list tool previously returned a bare {titles} with no _meta). The titles
|
|
46
|
+
// endpoint returns the COMPLETE canonical CFR title set in one response — no
|
|
47
|
+
// pagination, no filter — so the count IS the total and complete derives true.
|
|
48
|
+
return withMeta({ titles }, {
|
|
49
|
+
source: "ecfr.gov/api (versioner/v1/titles)",
|
|
50
|
+
keylessMode: true,
|
|
51
|
+
returned: titles.length,
|
|
52
|
+
totalAvailable: titles.length,
|
|
53
|
+
truncated: false,
|
|
54
|
+
filtersApplied: [],
|
|
55
|
+
filtersDropped: [],
|
|
56
|
+
notes: [
|
|
57
|
+
"Complete canonical list of all CFR titles — the endpoint returns every title in a single response (no pagination or filtering).",
|
|
58
|
+
],
|
|
59
|
+
});
|
|
46
60
|
});
|
|
47
61
|
}
|
|
48
62
|
export async function search(args) {
|
package/dist/ecfr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ecfr.js","sourceRoot":"","sources":["../src/ecfr.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,IAAI,GAAG,0BAA0B,CAAC;AAExC,4EAA4E;AAC5E,6EAA6E;AAC7E,4EAA4E;AAC5E,mEAAmE;AACnE,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAEnC,KAAK,UAAU,SAAS,CAAI,GAAW;IACrC,MAAM,CAAC,GAAG,MAAM,cAAc,CAC5B,GAAG,EACH;QACE,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;QACvC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;KACpC,EACD,QAAQ,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CACvC,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAM,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,sEAAsE;IACtE,OAAO,OAAO,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAWvC,MAAM,IAAI,GAAG,MAAM,SAAS,CAAO,GAAG,IAAI,2BAA2B,CAAC,CAAC;QACvE,
|
|
1
|
+
{"version":3,"file":"ecfr.js","sourceRoot":"","sources":["../src/ecfr.ts"],"names":[],"mappings":"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"}
|
package/dist/edgar.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edgar.d.ts","sourceRoot":"","sources":["../src/edgar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAKH,OAAO,EAAY,KAAK,UAAU,EAAqB,MAAM,WAAW,CAAC;AA6GzE;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAGjD;AAOD;;;;GAIG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAU7C;AAUD,MAAM,MAAM,WAAW,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"edgar.d.ts","sourceRoot":"","sources":["../src/edgar.ts"],"names":[],"mappings":"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"}
|
package/dist/edgar.js
CHANGED
|
@@ -220,18 +220,32 @@ async function tickerMap() {
|
|
|
220
220
|
async function resolveCik(cikOrTicker) {
|
|
221
221
|
const raw = cikOrTicker.trim();
|
|
222
222
|
if (/^(cik)?\s*\d+$/i.test(raw)) {
|
|
223
|
-
return { cik: padCik(raw), ticker: null, title: null };
|
|
223
|
+
return { cik: padCik(raw), ticker: null, title: null, matchedBy: "cik" };
|
|
224
224
|
}
|
|
225
225
|
const map = await tickerMap();
|
|
226
226
|
const upper = raw.toUpperCase();
|
|
227
227
|
const exact = map.find((e) => e.ticker.toUpperCase() === upper);
|
|
228
228
|
if (exact)
|
|
229
|
-
return { cik: exact.cik, ticker: exact.ticker, title: exact.title };
|
|
229
|
+
return { cik: exact.cik, ticker: exact.ticker, title: exact.title, matchedBy: "ticker" };
|
|
230
230
|
const byName = map.find((e) => e.title.toUpperCase().includes(upper));
|
|
231
231
|
if (byName)
|
|
232
|
-
return { cik: byName.cik, ticker: byName.ticker, title: byName.title };
|
|
232
|
+
return { cik: byName.cik, ticker: byName.ticker, title: byName.title, matchedBy: "title" };
|
|
233
233
|
return null;
|
|
234
234
|
}
|
|
235
|
+
/**
|
|
236
|
+
* Disclosure note when resolveCik fell back to a case-insensitive TITLE SUBSTRING
|
|
237
|
+
* match (not an exact ticker/CIK). A substring silently resolves to the FIRST filer
|
|
238
|
+
* whose title contains the string — which can be the WRONG company (dogfooding
|
|
239
|
+
* 2026-07-16: "MICRO" → MICROSOFT, not Micron/AMD/Super Micro), and the data tools
|
|
240
|
+
* would then return that filer's financials as authoritative with no caveat. The
|
|
241
|
+
* data-returning tools (facts/filings/concept) MUST surface HOW the id resolved —
|
|
242
|
+
* exactly as edgar_lookup_cik already does. Returns null for exact ticker/CIK matches.
|
|
243
|
+
*/
|
|
244
|
+
function fuzzyResolveNote(resolved, input) {
|
|
245
|
+
if (resolved.matchedBy !== "title")
|
|
246
|
+
return null;
|
|
247
|
+
return `Resolved "${input}" to ${resolved.title ?? "this filer"} (CIK ${resolved.cik}) by a case-insensitive TITLE SUBSTRING match, NOT an exact ticker/CIK — a substring can silently match the WRONG company. VERIFY this is the intended filer (use edgar_lookup_cik to list all matches, or pass an exact ticker or 10-digit CIK).`;
|
|
248
|
+
}
|
|
235
249
|
// ─── meta helper ──────────────────────────────────────────────────
|
|
236
250
|
/**
|
|
237
251
|
* Build a partial `_meta` with the EDGAR source + the mandatory CIK↔UEI caveat
|
|
@@ -470,6 +484,7 @@ export async function companyFilings(args) {
|
|
|
470
484
|
return notFoundBundle(args.cikOrTicker, `Could not resolve "${args.cikOrTicker}" to a CIK (not a numeric CIK and no exact-ticker/title match in company_tickers.json).`);
|
|
471
485
|
}
|
|
472
486
|
const cik = resolved.cik;
|
|
487
|
+
const fuzzyNote = fuzzyResolveNote(resolved, args.cikOrTicker);
|
|
473
488
|
let subm;
|
|
474
489
|
try {
|
|
475
490
|
subm = await fetchSubmissions(cik);
|
|
@@ -640,7 +655,7 @@ export async function companyFilings(args) {
|
|
|
640
655
|
hasMore,
|
|
641
656
|
nextOffset,
|
|
642
657
|
},
|
|
643
|
-
notes,
|
|
658
|
+
notes: fuzzyNote ? [fuzzyNote, ...notes] : notes,
|
|
644
659
|
}));
|
|
645
660
|
}
|
|
646
661
|
// ─── Tool 3: edgar_company_facts ──────────────────────────────────
|
|
@@ -690,6 +705,7 @@ export async function companyFacts(args) {
|
|
|
690
705
|
return notFoundBundle(args.cikOrTicker, `Could not resolve "${args.cikOrTicker}" to a CIK (not a numeric CIK and no exact-ticker/title match in company_tickers.json).`);
|
|
691
706
|
}
|
|
692
707
|
const cik = resolved.cik;
|
|
708
|
+
const fuzzyNote = fuzzyResolveNote(resolved, args.cikOrTicker);
|
|
693
709
|
let doc;
|
|
694
710
|
try {
|
|
695
711
|
doc = await fetchFacts(cik);
|
|
@@ -784,7 +800,7 @@ export async function companyFacts(args) {
|
|
|
784
800
|
totalAvailable: concepts.length,
|
|
785
801
|
complete: true,
|
|
786
802
|
filtersApplied: latest ? ["concepts", "unit", "latest"] : ["concepts", "unit"],
|
|
787
|
-
notes,
|
|
803
|
+
notes: fuzzyNote ? [fuzzyNote, ...notes] : notes,
|
|
788
804
|
}));
|
|
789
805
|
}
|
|
790
806
|
/**
|
|
@@ -2205,6 +2221,7 @@ export async function companyConcept(args) {
|
|
|
2205
2221
|
return notFoundBundle(args.cikOrTicker, `Could not resolve "${args.cikOrTicker}" to a CIK (not a numeric CIK and no exact-ticker/title match in company_tickers.json).`);
|
|
2206
2222
|
}
|
|
2207
2223
|
const cik = resolved.cik;
|
|
2224
|
+
const fuzzyNote = fuzzyResolveNote(resolved, args.cikOrTicker);
|
|
2208
2225
|
const taxonomy = args.taxonomy ?? "us-gaap";
|
|
2209
2226
|
const concept = args.concept;
|
|
2210
2227
|
// S1/S2 — build (and re-validate) the path BEFORE any fetch. Throws invalid_input
|
|
@@ -2299,6 +2316,7 @@ export async function companyConcept(args) {
|
|
|
2299
2316
|
complete: true,
|
|
2300
2317
|
filtersApplied: ["concept", "taxonomy"],
|
|
2301
2318
|
notes: [
|
|
2319
|
+
...(fuzzyNote ? [fuzzyNote] : []),
|
|
2302
2320
|
`The companyconcept document for CIK ${cik} / ${taxonomy} / ${concept} has no reported data points (units{} is empty). This is an honest empty — NOT a value of 0 and NOT an outage.`,
|
|
2303
2321
|
],
|
|
2304
2322
|
}));
|
|
@@ -2367,7 +2385,9 @@ export async function companyConcept(args) {
|
|
|
2367
2385
|
filtersApplied.push("fy");
|
|
2368
2386
|
if (canonicalOnly)
|
|
2369
2387
|
filtersApplied.push("canonicalOnly");
|
|
2370
|
-
const notes =
|
|
2388
|
+
const notes = fuzzyNote
|
|
2389
|
+
? [fuzzyNote, AMENDMENT_DISCLOSURE_NOTE]
|
|
2390
|
+
: [AMENDMENT_DISCLOSURE_NOTE];
|
|
2371
2391
|
// Unit-filter disclosure (Q2-c) — NEVER hide the other units.
|
|
2372
2392
|
if (unitFilter !== null) {
|
|
2373
2393
|
if (unitKeys.includes(unitFilter)) {
|