@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.
Files changed (140) hide show
  1. package/LICENSE +21 -21
  2. package/README.ja.md +240 -231
  3. package/README.ko.md +240 -231
  4. package/README.md +725 -706
  5. package/dist/cbp-border.d.ts +51 -0
  6. package/dist/cbp-border.d.ts.map +1 -0
  7. package/dist/cbp-border.js +123 -0
  8. package/dist/cbp-border.js.map +1 -0
  9. package/dist/datagov-catalog.d.ts.map +1 -1
  10. package/dist/datagov-catalog.js +16 -2
  11. package/dist/datagov-catalog.js.map +1 -1
  12. package/dist/ecfr.d.ts +2 -2
  13. package/dist/ecfr.d.ts.map +1 -1
  14. package/dist/ecfr.js +24 -10
  15. package/dist/ecfr.js.map +1 -1
  16. package/dist/edgar.d.ts.map +1 -1
  17. package/dist/edgar.js +26 -6
  18. package/dist/edgar.js.map +1 -1
  19. package/dist/epa-envirofacts.d.ts.map +1 -1
  20. package/dist/epa-envirofacts.js +14 -1
  21. package/dist/epa-envirofacts.js.map +1 -1
  22. package/dist/errors.d.ts +10 -0
  23. package/dist/errors.d.ts.map +1 -1
  24. package/dist/errors.js +11 -0
  25. package/dist/errors.js.map +1 -1
  26. package/dist/far.d.ts.map +1 -1
  27. package/dist/far.js +3 -1
  28. package/dist/far.js.map +1 -1
  29. package/dist/federal-register.d.ts +2 -2
  30. package/dist/federal-register.d.ts.map +1 -1
  31. package/dist/federal-register.js +26 -10
  32. package/dist/federal-register.js.map +1 -1
  33. package/dist/feedback.d.ts +64 -0
  34. package/dist/feedback.d.ts.map +1 -0
  35. package/dist/feedback.js +131 -0
  36. package/dist/feedback.js.map +1 -0
  37. package/dist/fema.d.ts +36 -0
  38. package/dist/fema.d.ts.map +1 -1
  39. package/dist/fema.js +124 -0
  40. package/dist/fema.js.map +1 -1
  41. package/dist/gov-domains.d.ts +66 -0
  42. package/dist/gov-domains.d.ts.map +1 -0
  43. package/dist/gov-domains.js +211 -0
  44. package/dist/gov-domains.js.map +1 -0
  45. package/dist/nist-controls.d.ts +48 -0
  46. package/dist/nist-controls.d.ts.map +1 -0
  47. package/dist/nist-controls.js +174 -0
  48. package/dist/nist-controls.js.map +1 -0
  49. package/dist/nws-weather.d.ts +57 -0
  50. package/dist/nws-weather.d.ts.map +1 -0
  51. package/dist/nws-weather.js +131 -0
  52. package/dist/nws-weather.js.map +1 -0
  53. package/dist/openfda-drugsfda.d.ts +72 -0
  54. package/dist/openfda-drugsfda.d.ts.map +1 -0
  55. package/dist/openfda-drugsfda.js +230 -0
  56. package/dist/openfda-drugsfda.js.map +1 -0
  57. package/dist/openfda.d.ts.map +1 -1
  58. package/dist/openfda.js +31 -8
  59. package/dist/openfda.js.map +1 -1
  60. package/dist/server.d.ts.map +1 -1
  61. package/dist/server.js +374 -11
  62. package/dist/server.js.map +1 -1
  63. package/dist/treasury.d.ts +2 -0
  64. package/dist/treasury.d.ts.map +1 -1
  65. package/dist/treasury.js +7 -0
  66. package/dist/treasury.js.map +1 -1
  67. package/dist/usaspending.d.ts +32 -1
  68. package/dist/usaspending.d.ts.map +1 -1
  69. package/dist/usaspending.js +143 -16
  70. package/dist/usaspending.js.map +1 -1
  71. package/package.json +111 -111
  72. package/src/attachments.ts +652 -652
  73. package/src/bea.ts +372 -372
  74. package/src/bls.ts +1943 -1943
  75. package/src/cache.ts +73 -73
  76. package/src/cbp-border.ts +177 -0
  77. package/src/census-economic.ts +431 -431
  78. package/src/census.ts +735 -735
  79. package/src/ckan.ts +495 -495
  80. package/src/clinicaltrials.ts +923 -923
  81. package/src/cms-facility.ts +379 -379
  82. package/src/cms-hospital.ts +344 -344
  83. package/src/cms-supplier.ts +527 -527
  84. package/src/cms-utilization.ts +389 -389
  85. package/src/cms.ts +634 -634
  86. package/src/coerce.ts +47 -47
  87. package/src/courtlistener.ts +465 -465
  88. package/src/cpsc.ts +333 -333
  89. package/src/datagov-catalog.ts +312 -296
  90. package/src/datagov.ts +907 -907
  91. package/src/datagovKey.ts +68 -68
  92. package/src/datasource.ts +721 -721
  93. package/src/disclosure.ts +61 -61
  94. package/src/dol.ts +515 -515
  95. package/src/ecfr.ts +248 -231
  96. package/src/echo.ts +496 -496
  97. package/src/edgar.ts +3046 -3014
  98. package/src/epa-envirofacts.ts +358 -342
  99. package/src/errors.ts +324 -303
  100. package/src/fac.ts +529 -529
  101. package/src/far.ts +1009 -1007
  102. package/src/fdic.ts +2052 -2052
  103. package/src/federal-register.ts +725 -706
  104. package/src/feedback.ts +160 -0
  105. package/src/fema.ts +680 -541
  106. package/src/fpds.ts +620 -620
  107. package/src/fred.ts +464 -464
  108. package/src/gao.ts +744 -744
  109. package/src/gov-domains.ts +237 -0
  110. package/src/govinfo.ts +497 -497
  111. package/src/grants.ts +290 -290
  112. package/src/gsa-csv.ts +992 -992
  113. package/src/gsa-perdiem.ts +361 -361
  114. package/src/integrity.ts +928 -928
  115. package/src/keys.ts +268 -268
  116. package/src/lda.ts +385 -385
  117. package/src/meta.ts +292 -292
  118. package/src/nhtsa.ts +352 -352
  119. package/src/nih.ts +375 -375
  120. package/src/nist-controls.ts +219 -0
  121. package/src/nonprofit.ts +460 -460
  122. package/src/nppes.ts +834 -834
  123. package/src/nsf.ts +706 -706
  124. package/src/nvd.ts +1124 -1124
  125. package/src/nws-weather.ts +167 -0
  126. package/src/ofac.ts +1166 -1166
  127. package/src/openfda-device.ts +356 -356
  128. package/src/openfda-drugsfda.ts +313 -0
  129. package/src/openfda.ts +518 -495
  130. package/src/pricing.ts +1075 -1075
  131. package/src/sam-gov/client.ts +774 -774
  132. package/src/sam-gov/index.ts +32 -32
  133. package/src/sam-gov/types.ts +152 -152
  134. package/src/sba.ts +357 -357
  135. package/src/server.ts +6688 -6297
  136. package/src/snapshot.ts +223 -223
  137. package/src/socrata.ts +532 -532
  138. package/src/treasury.ts +582 -575
  139. package/src/usaspending.ts +2852 -2680
  140. package/src/usitc.ts +420 -420
package/src/datagovKey.ts CHANGED
@@ -1,68 +1,68 @@
1
- /**
2
- * datagovKey.ts — the SHARED api.data.gov KEY seam (ADR-0010 §2).
3
- *
4
- * These api.data.gov key helpers were originally module-private in `datagov.ts`
5
- * (ADR-0007, the FIRST keyed source). GovInfo (ADR-0010) is the SECOND consumer
6
- * of the identical DATA_GOV_API_KEY / DEMO_KEY / X-Api-Key discipline, which is
7
- * the trigger to promote the helper to a single audited home — the exact
8
- * `coerce.ts` precedent applied to a SECRET: a leak-discipline regression must now
9
- * fail BOTH consumers' key-never-leaks tests at once, not hide in one of two
10
- * drifting copies. `datagov.ts` AND `govinfo.ts` each import from here; NEITHER
11
- * imports the other.
12
- *
13
- * This extraction is BEHAVIOR BYTE-IDENTICAL to the prior inlined `datagov.ts`
14
- * code — these are pure functions that read `process.env` at CALL time, so moving
15
- * them changes nothing (datagov's key handling, `_meta`, tools/list snapshot, and
16
- * its key-never-leaks K-test all stay green; the K-test spies on the GLOBAL
17
- * `fetch`, which is unaffected by this move).
18
- *
19
- * ★ THE KEY-SECURITY DISCIPLINE (ADR-0007 §2 — the load-bearing rules):
20
- * 1. The key travels in `headers:{ "X-Api-Key": <key> }` ONLY — NEVER in the
21
- * URL/query (no `?api_key=`).
22
- * 2. `_meta.source`/`notes` are host + key-MODE only ("…(DEMO_KEY)" /
23
- * "…(DATA_GOV_API_KEY)") — never the URL, never the key value, never the
24
- * `X-Api-Key` header.
25
- * 3. Never commit the key — read from env only; the DEMO_KEY fallback is a
26
- * literal public constant (safe in source), the real key never is.
27
- */
28
-
29
- // ─── Key resolver (the load-bearing secret discipline) ────────────
30
- // The key is read from env; if unset/empty it falls back to the public literal
31
- // "DEMO_KEY". `keyHeader()` is the ONLY place the value is used — it is placed in
32
- // the `X-Api-Key` request header and NOWHERE else (never the URL, never the label,
33
- // never `_meta`, never a log).
34
- const DEMO_KEY = "DEMO_KEY";
35
-
36
- function resolvedKey(): string {
37
- const raw = process.env.DATA_GOV_API_KEY;
38
- const trimmed = typeof raw === "string" ? raw.trim() : "";
39
- return trimmed ? trimmed : DEMO_KEY;
40
- }
41
-
42
- /** The X-Api-Key header — the ONLY carrier of the secret. Never logged/echoed. */
43
- export function keyHeader(): Record<string, string> {
44
- return { "X-Api-Key": resolvedKey() };
45
- }
46
-
47
- /** true when no real DATA_GOV_API_KEY is configured (drives the disclosure note). */
48
- export function usingDemoKey(): boolean {
49
- const raw = process.env.DATA_GOV_API_KEY;
50
- return !(typeof raw === "string" && raw.trim());
51
- }
52
-
53
- /** Key-MODE label for `_meta.source` — the MODE, never the value. */
54
- export function keyModeLabel(): string {
55
- return usingDemoKey() ? "DEMO_KEY" : "DATA_GOV_API_KEY";
56
- }
57
-
58
- // The DEMO_KEY disclosure (m4-note: NO hardcoded verification date — "approximately
59
- // 10 requests/hour", not a pinned date).
60
- const DEMO_KEY_NOTE =
61
- "Using the shared api.data.gov DEMO_KEY — approximately 10 requests/hour, shared across all DEMO_KEY callers (limits reached quickly). Set DATA_GOV_API_KEY for production; free key at https://api.data.gov/signup/.";
62
- const CONFIGURED_KEY_NOTE =
63
- "Using a configured DATA_GOV_API_KEY (value never logged).";
64
-
65
- /** Push the key-mode disclosure note (DEMO_KEY ceiling OR configured-key). */
66
- export function pushKeyNote(notes: string[]): void {
67
- notes.push(usingDemoKey() ? DEMO_KEY_NOTE : CONFIGURED_KEY_NOTE);
68
- }
1
+ /**
2
+ * datagovKey.ts — the SHARED api.data.gov KEY seam (ADR-0010 §2).
3
+ *
4
+ * These api.data.gov key helpers were originally module-private in `datagov.ts`
5
+ * (ADR-0007, the FIRST keyed source). GovInfo (ADR-0010) is the SECOND consumer
6
+ * of the identical DATA_GOV_API_KEY / DEMO_KEY / X-Api-Key discipline, which is
7
+ * the trigger to promote the helper to a single audited home — the exact
8
+ * `coerce.ts` precedent applied to a SECRET: a leak-discipline regression must now
9
+ * fail BOTH consumers' key-never-leaks tests at once, not hide in one of two
10
+ * drifting copies. `datagov.ts` AND `govinfo.ts` each import from here; NEITHER
11
+ * imports the other.
12
+ *
13
+ * This extraction is BEHAVIOR BYTE-IDENTICAL to the prior inlined `datagov.ts`
14
+ * code — these are pure functions that read `process.env` at CALL time, so moving
15
+ * them changes nothing (datagov's key handling, `_meta`, tools/list snapshot, and
16
+ * its key-never-leaks K-test all stay green; the K-test spies on the GLOBAL
17
+ * `fetch`, which is unaffected by this move).
18
+ *
19
+ * ★ THE KEY-SECURITY DISCIPLINE (ADR-0007 §2 — the load-bearing rules):
20
+ * 1. The key travels in `headers:{ "X-Api-Key": <key> }` ONLY — NEVER in the
21
+ * URL/query (no `?api_key=`).
22
+ * 2. `_meta.source`/`notes` are host + key-MODE only ("…(DEMO_KEY)" /
23
+ * "…(DATA_GOV_API_KEY)") — never the URL, never the key value, never the
24
+ * `X-Api-Key` header.
25
+ * 3. Never commit the key — read from env only; the DEMO_KEY fallback is a
26
+ * literal public constant (safe in source), the real key never is.
27
+ */
28
+
29
+ // ─── Key resolver (the load-bearing secret discipline) ────────────
30
+ // The key is read from env; if unset/empty it falls back to the public literal
31
+ // "DEMO_KEY". `keyHeader()` is the ONLY place the value is used — it is placed in
32
+ // the `X-Api-Key` request header and NOWHERE else (never the URL, never the label,
33
+ // never `_meta`, never a log).
34
+ const DEMO_KEY = "DEMO_KEY";
35
+
36
+ function resolvedKey(): string {
37
+ const raw = process.env.DATA_GOV_API_KEY;
38
+ const trimmed = typeof raw === "string" ? raw.trim() : "";
39
+ return trimmed ? trimmed : DEMO_KEY;
40
+ }
41
+
42
+ /** The X-Api-Key header — the ONLY carrier of the secret. Never logged/echoed. */
43
+ export function keyHeader(): Record<string, string> {
44
+ return { "X-Api-Key": resolvedKey() };
45
+ }
46
+
47
+ /** true when no real DATA_GOV_API_KEY is configured (drives the disclosure note). */
48
+ export function usingDemoKey(): boolean {
49
+ const raw = process.env.DATA_GOV_API_KEY;
50
+ return !(typeof raw === "string" && raw.trim());
51
+ }
52
+
53
+ /** Key-MODE label for `_meta.source` — the MODE, never the value. */
54
+ export function keyModeLabel(): string {
55
+ return usingDemoKey() ? "DEMO_KEY" : "DATA_GOV_API_KEY";
56
+ }
57
+
58
+ // The DEMO_KEY disclosure (m4-note: NO hardcoded verification date — "approximately
59
+ // 10 requests/hour", not a pinned date).
60
+ const DEMO_KEY_NOTE =
61
+ "Using the shared api.data.gov DEMO_KEY — approximately 10 requests/hour, shared across all DEMO_KEY callers (limits reached quickly). Set DATA_GOV_API_KEY for production; free key at https://api.data.gov/signup/.";
62
+ const CONFIGURED_KEY_NOTE =
63
+ "Using a configured DATA_GOV_API_KEY (value never logged).";
64
+
65
+ /** Push the key-mode disclosure note (DEMO_KEY ceiling OR configured-key). */
66
+ export function pushKeyNote(notes: string[]): void {
67
+ notes.push(usingDemoKey() ? DEMO_KEY_NOTE : CONFIGURED_KEY_NOTE);
68
+ }