@cyanheads/federal-regulations-mcp-server 0.2.5 → 0.3.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 (36) hide show
  1. package/AGENTS.md +1 -1
  2. package/CLAUDE.md +1 -1
  3. package/README.md +17 -13
  4. package/changelog/0.3.x/0.3.0.md +27 -0
  5. package/dist/mcp-server/resources/definitions/document.resource.js +1 -1
  6. package/dist/mcp-server/resources/definitions/document.resource.js.map +1 -1
  7. package/dist/mcp-server/tools/definitions/date-input.d.ts +14 -0
  8. package/dist/mcp-server/tools/definitions/date-input.d.ts.map +1 -0
  9. package/dist/mcp-server/tools/definitions/date-input.js +27 -0
  10. package/dist/mcp-server/tools/definitions/date-input.js.map +1 -0
  11. package/dist/mcp-server/tools/definitions/format-utils.d.ts +11 -0
  12. package/dist/mcp-server/tools/definitions/format-utils.d.ts.map +1 -1
  13. package/dist/mcp-server/tools/definitions/format-utils.js +12 -0
  14. package/dist/mcp-server/tools/definitions/format-utils.js.map +1 -1
  15. package/dist/mcp-server/tools/definitions/get-document.tool.d.ts +23 -4
  16. package/dist/mcp-server/tools/definitions/get-document.tool.d.ts.map +1 -1
  17. package/dist/mcp-server/tools/definitions/get-document.tool.js +88 -11
  18. package/dist/mcp-server/tools/definitions/get-document.tool.js.map +1 -1
  19. package/dist/mcp-server/tools/definitions/index.d.ts +134 -84
  20. package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
  21. package/dist/mcp-server/tools/definitions/list-open-comments.tool.d.ts +26 -6
  22. package/dist/mcp-server/tools/definitions/list-open-comments.tool.d.ts.map +1 -1
  23. package/dist/mcp-server/tools/definitions/list-open-comments.tool.js +107 -56
  24. package/dist/mcp-server/tools/definitions/list-open-comments.tool.js.map +1 -1
  25. package/dist/mcp-server/tools/definitions/search-rules.tool.d.ts +18 -3
  26. package/dist/mcp-server/tools/definitions/search-rules.tool.d.ts.map +1 -1
  27. package/dist/mcp-server/tools/definitions/search-rules.tool.js +38 -26
  28. package/dist/mcp-server/tools/definitions/search-rules.tool.js.map +1 -1
  29. package/dist/services/federal-register/federal-register-service.d.ts +16 -6
  30. package/dist/services/federal-register/federal-register-service.d.ts.map +1 -1
  31. package/dist/services/federal-register/federal-register-service.js +231 -33
  32. package/dist/services/federal-register/federal-register-service.js.map +1 -1
  33. package/dist/services/federal-register/types.d.ts +38 -8
  34. package/dist/services/federal-register/types.d.ts.map +1 -1
  35. package/package.json +1 -1
  36. package/server.json +3 -3
@@ -3,63 +3,61 @@
3
3
  * @module mcp-server/tools/definitions/index
4
4
  */
5
5
  export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
6
- docket_id: import("zod").ZodString;
7
- document_types: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodEnum<{
8
- Notice: "Notice";
9
- Other: "Other";
10
- "Proposed Rule": "Proposed Rule";
11
- Rule: "Rule";
12
- "Supporting & Related Material": "Supporting & Related Material";
13
- }>>>;
14
- per_page: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodNumber>>;
15
- page: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodNumber>>;
6
+ document_number: import("zod").ZodString;
7
+ include_full_text: import("zod").ZodOptional<import("zod").ZodBoolean>;
8
+ offset: import("zod").ZodOptional<import("zod").ZodNumber>;
9
+ max_chars: import("zod").ZodOptional<import("zod").ZodNumber>;
16
10
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
17
- docketId: import("zod").ZodString;
11
+ documentNumber: import("zod").ZodString;
18
12
  title: import("zod").ZodString;
19
- docketType: import("zod").ZodNullable<import("zod").ZodString>;
20
- agencyId: import("zod").ZodNullable<import("zod").ZodString>;
21
- rin: import("zod").ZodNullable<import("zod").ZodString>;
13
+ type: import("zod").ZodString;
22
14
  abstract: import("zod").ZodNullable<import("zod").ZodString>;
23
- modifyDate: import("zod").ZodNullable<import("zod").ZodString>;
24
- objectId: import("zod").ZodNullable<import("zod").ZodString>;
25
- documentCount: import("zod").ZodNumber;
26
- documents: import("zod").ZodArray<import("zod").ZodObject<{
27
- documentId: import("zod").ZodString;
28
- objectId: import("zod").ZodString;
15
+ action: import("zod").ZodNullable<import("zod").ZodString>;
16
+ dates: import("zod").ZodNullable<import("zod").ZodString>;
17
+ publicationDate: import("zod").ZodString;
18
+ effectiveOn: import("zod").ZodNullable<import("zod").ZodString>;
19
+ commentsCloseOn: import("zod").ZodNullable<import("zod").ZodString>;
20
+ agencies: import("zod").ZodArray<import("zod").ZodObject<{
21
+ name: import("zod").ZodString;
22
+ slug: import("zod").ZodNullable<import("zod").ZodString>;
23
+ }, import("zod/v4/core").$strip>>;
24
+ regulationIdNumbers: import("zod").ZodArray<import("zod").ZodString>;
25
+ cfrReferences: import("zod").ZodArray<import("zod").ZodObject<{
26
+ title: import("zod").ZodNumber;
27
+ part: import("zod").ZodString;
28
+ }, import("zod/v4/core").$strip>>;
29
+ docketId: import("zod").ZodNullable<import("zod").ZodString>;
30
+ regulationsGovDocumentId: import("zod").ZodNullable<import("zod").ZodString>;
31
+ commentCount: import("zod").ZodNullable<import("zod").ZodNumber>;
32
+ supportingDocuments: import("zod").ZodArray<import("zod").ZodObject<{
29
33
  title: import("zod").ZodString;
30
- documentType: import("zod").ZodString;
31
- postedDate: import("zod").ZodString;
32
- frDocNum: import("zod").ZodNullable<import("zod").ZodString>;
33
- commentEndDate: import("zod").ZodNullable<import("zod").ZodString>;
34
- withdrawn: import("zod").ZodBoolean;
34
+ documentId: import("zod").ZodString;
35
35
  }, import("zod/v4/core").$strip>>;
36
+ bodyHtmlUrl: import("zod").ZodString;
37
+ rawTextUrl: import("zod").ZodString;
38
+ htmlUrl: import("zod").ZodString;
39
+ fullText: import("zod").ZodOptional<import("zod").ZodString>;
40
+ fullTextOffset: import("zod").ZodOptional<import("zod").ZodNumber>;
41
+ fullTextLength: import("zod").ZodOptional<import("zod").ZodNumber>;
42
+ fullTextNextOffset: import("zod").ZodOptional<import("zod").ZodNumber>;
36
43
  }, import("zod/v4/core").$strip>, readonly [{
37
- readonly reason: "auth_required";
38
- readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.Unauthorized;
39
- readonly when: "REGULATIONS_GOV_API_KEY is not configured, or Regulations.gov rejected the key that is.";
40
- readonly recovery: "Set the REGULATIONS_GOV_API_KEY env var to a working key (free at https://api.data.gov/signup/). The Federal Register and eCFR tools work without it.";
44
+ readonly reason: "full_text_disabled";
45
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
46
+ readonly when: "offset or max_chars was passed together with include_full_text: false.";
47
+ readonly recovery: "Drop include_full_text: false to read the body window, or drop offset and max_chars to skip the body.";
41
48
  }, {
42
49
  readonly reason: "not_found";
43
50
  readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
44
- readonly when: "No docket exists with that ID.";
45
- readonly recovery: "Verify the docket ID from a Federal Register document's docketId; format is like \"EPA-HQ-OAR-2025-0194\".";
46
- readonly thrownBy: "service";
47
- }, {
48
- readonly reason: "rate_limited";
49
- readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.RateLimited;
50
- readonly when: "Regulations.gov returned 429 (1,000 requests/hour per key).";
51
- readonly retryable: true;
52
- readonly recovery: "Wait and retry — the per-key hourly limit was hit.";
51
+ readonly when: "No Federal Register document exists with that number.";
52
+ readonly recovery: "Verify the number via regulations_search_rules; FR numbers look like \"2025-14555\".";
53
53
  readonly thrownBy: "service";
54
54
  }, {
55
55
  readonly reason: "upstream_unavailable";
56
56
  readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ServiceUnavailable;
57
- readonly when: "Regulations.gov returned a 5xx, timed out, or could not be reached at all.";
58
- readonly recovery: "Retry after a brief wait.";
57
+ readonly when: "Federal Register returned a 5xx, timed out, served an HTML error page, or failed to serve the body URL it published (include_full_text only).";
58
+ readonly recovery: "Retry after a brief wait; the Federal Register API may be momentarily down.";
59
59
  readonly thrownBy: "service";
60
60
  }], {
61
- readonly truncated: import("zod").ZodOptional<import("zod").ZodBoolean>;
62
- readonly shown: import("zod").ZodOptional<import("zod").ZodNumber>;
63
61
  readonly notice: import("zod").ZodOptional<import("zod").ZodString>;
64
62
  }> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
65
63
  query: import("zod").ZodOptional<import("zod").ZodString>;
@@ -72,6 +70,11 @@ export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolD
72
70
  agencies: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
73
71
  published_after: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodLiteral<"">, import("zod").ZodString]>>;
74
72
  published_before: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodLiteral<"">, import("zod").ZodString]>>;
73
+ order: import("zod").ZodOptional<import("zod").ZodEnum<{
74
+ newest: "newest";
75
+ oldest: "oldest";
76
+ relevance: "relevance";
77
+ }>>;
75
78
  per_page: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodNumber>>;
76
79
  page: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodNumber>>;
77
80
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
@@ -81,7 +84,10 @@ export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolD
81
84
  type: import("zod").ZodString;
82
85
  abstract: import("zod").ZodNullable<import("zod").ZodString>;
83
86
  publicationDate: import("zod").ZodString;
84
- agencies: import("zod").ZodArray<import("zod").ZodString>;
87
+ agencies: import("zod").ZodArray<import("zod").ZodObject<{
88
+ name: import("zod").ZodString;
89
+ slug: import("zod").ZodNullable<import("zod").ZodString>;
90
+ }, import("zod/v4/core").$strip>>;
85
91
  docketIds: import("zod").ZodArray<import("zod").ZodString>;
86
92
  regulationIdNumbers: import("zod").ZodArray<import("zod").ZodString>;
87
93
  cfrReferences: import("zod").ZodArray<import("zod").ZodObject<{
@@ -97,52 +103,19 @@ export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolD
97
103
  readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ServiceUnavailable;
98
104
  readonly when: "Federal Register returned a 5xx, timed out, or served an HTML error page.";
99
105
  readonly recovery: "Retry after a brief wait; the Federal Register API may be momentarily down.";
106
+ }, {
107
+ readonly reason: "invalid_filter";
108
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
109
+ readonly when: "The Federal Register rejected a filter value — most often an agency name or acronym passed where a slug belongs.";
110
+ readonly recovery: "Correct the parameter the message names: agencies takes Federal Register slugs in lowercase kebab-case (e.g. \"environmental-protection-agency\"; read one off agencies[].slug in a result), and dates must be real YYYY-MM-DD days.";
111
+ readonly severity: "notice";
112
+ readonly thrownBy: "service";
100
113
  }], {
101
114
  readonly totalCount: import("zod").ZodNumber;
102
115
  readonly truncated: import("zod").ZodOptional<import("zod").ZodBoolean>;
103
116
  readonly shown: import("zod").ZodOptional<import("zod").ZodNumber>;
104
117
  readonly notice: import("zod").ZodOptional<import("zod").ZodString>;
105
118
  }> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
106
- document_number: import("zod").ZodString;
107
- include_full_text: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>;
108
- }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
109
- documentNumber: import("zod").ZodString;
110
- title: import("zod").ZodString;
111
- type: import("zod").ZodString;
112
- abstract: import("zod").ZodNullable<import("zod").ZodString>;
113
- action: import("zod").ZodNullable<import("zod").ZodString>;
114
- dates: import("zod").ZodNullable<import("zod").ZodString>;
115
- publicationDate: import("zod").ZodString;
116
- effectiveOn: import("zod").ZodNullable<import("zod").ZodString>;
117
- commentsCloseOn: import("zod").ZodNullable<import("zod").ZodString>;
118
- agencies: import("zod").ZodArray<import("zod").ZodString>;
119
- regulationIdNumbers: import("zod").ZodArray<import("zod").ZodString>;
120
- cfrReferences: import("zod").ZodArray<import("zod").ZodObject<{
121
- title: import("zod").ZodNumber;
122
- part: import("zod").ZodString;
123
- }, import("zod/v4/core").$strip>>;
124
- docketId: import("zod").ZodNullable<import("zod").ZodString>;
125
- regulationsGovDocumentId: import("zod").ZodNullable<import("zod").ZodString>;
126
- commentCount: import("zod").ZodNullable<import("zod").ZodNumber>;
127
- supportingDocuments: import("zod").ZodArray<import("zod").ZodObject<{
128
- title: import("zod").ZodString;
129
- documentId: import("zod").ZodString;
130
- }, import("zod/v4/core").$strip>>;
131
- bodyHtmlUrl: import("zod").ZodString;
132
- rawTextUrl: import("zod").ZodString;
133
- htmlUrl: import("zod").ZodString;
134
- fullText: import("zod").ZodOptional<import("zod").ZodString>;
135
- }, import("zod/v4/core").$strip>, readonly [{
136
- readonly reason: "not_found";
137
- readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
138
- readonly when: "No Federal Register document exists with that number.";
139
- readonly recovery: "Verify the number via regulations_search_rules; FR numbers look like \"2025-14555\".";
140
- }, {
141
- readonly reason: "upstream_unavailable";
142
- readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ServiceUnavailable;
143
- readonly when: "Federal Register returned a 5xx, timed out, served an HTML error page, or failed to serve the body URL it published (include_full_text only).";
144
- readonly recovery: "Retry after a brief wait; the Federal Register API may be momentarily down.";
145
- }], undefined> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
146
119
  mode: import("zod").ZodEnum<{
147
120
  search: "search";
148
121
  structure: "structure";
@@ -271,6 +244,65 @@ export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolD
271
244
  readonly recovery: "Retry after a brief wait; the eCFR API may be momentarily unavailable.";
272
245
  readonly thrownBy: "service";
273
246
  }], undefined> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
247
+ docket_id: import("zod").ZodString;
248
+ document_types: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodEnum<{
249
+ Notice: "Notice";
250
+ Other: "Other";
251
+ "Proposed Rule": "Proposed Rule";
252
+ Rule: "Rule";
253
+ "Supporting & Related Material": "Supporting & Related Material";
254
+ }>>>;
255
+ per_page: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodNumber>>;
256
+ page: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodNumber>>;
257
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
258
+ docketId: import("zod").ZodString;
259
+ title: import("zod").ZodString;
260
+ docketType: import("zod").ZodNullable<import("zod").ZodString>;
261
+ agencyId: import("zod").ZodNullable<import("zod").ZodString>;
262
+ rin: import("zod").ZodNullable<import("zod").ZodString>;
263
+ abstract: import("zod").ZodNullable<import("zod").ZodString>;
264
+ modifyDate: import("zod").ZodNullable<import("zod").ZodString>;
265
+ objectId: import("zod").ZodNullable<import("zod").ZodString>;
266
+ documentCount: import("zod").ZodNumber;
267
+ documents: import("zod").ZodArray<import("zod").ZodObject<{
268
+ documentId: import("zod").ZodString;
269
+ objectId: import("zod").ZodString;
270
+ title: import("zod").ZodString;
271
+ documentType: import("zod").ZodString;
272
+ postedDate: import("zod").ZodString;
273
+ frDocNum: import("zod").ZodNullable<import("zod").ZodString>;
274
+ commentEndDate: import("zod").ZodNullable<import("zod").ZodString>;
275
+ withdrawn: import("zod").ZodBoolean;
276
+ }, import("zod/v4/core").$strip>>;
277
+ }, import("zod/v4/core").$strip>, readonly [{
278
+ readonly reason: "auth_required";
279
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.Unauthorized;
280
+ readonly when: "REGULATIONS_GOV_API_KEY is not configured, or Regulations.gov rejected the key that is.";
281
+ readonly recovery: "Set the REGULATIONS_GOV_API_KEY env var to a working key (free at https://api.data.gov/signup/). The Federal Register and eCFR tools work without it.";
282
+ }, {
283
+ readonly reason: "not_found";
284
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
285
+ readonly when: "No docket exists with that ID.";
286
+ readonly recovery: "Verify the docket ID from a Federal Register document's docketId; format is like \"EPA-HQ-OAR-2025-0194\".";
287
+ readonly thrownBy: "service";
288
+ }, {
289
+ readonly reason: "rate_limited";
290
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.RateLimited;
291
+ readonly when: "Regulations.gov returned 429 (1,000 requests/hour per key).";
292
+ readonly retryable: true;
293
+ readonly recovery: "Wait and retry — the per-key hourly limit was hit.";
294
+ readonly thrownBy: "service";
295
+ }, {
296
+ readonly reason: "upstream_unavailable";
297
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ServiceUnavailable;
298
+ readonly when: "Regulations.gov returned a 5xx, timed out, or could not be reached at all.";
299
+ readonly recovery: "Retry after a brief wait.";
300
+ readonly thrownBy: "service";
301
+ }], {
302
+ readonly truncated: import("zod").ZodOptional<import("zod").ZodBoolean>;
303
+ readonly shown: import("zod").ZodOptional<import("zod").ZodNumber>;
304
+ readonly notice: import("zod").ZodOptional<import("zod").ZodString>;
305
+ }> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
274
306
  docket_id: import("zod").ZodOptional<import("zod").ZodString>;
275
307
  document_object_id: import("zod").ZodOptional<import("zod").ZodString>;
276
308
  fr_document_number: import("zod").ZodOptional<import("zod").ZodString>;
@@ -352,6 +384,11 @@ export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolD
352
384
  readonly notice: import("zod").ZodOptional<import("zod").ZodString>;
353
385
  }> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
354
386
  query: import("zod").ZodOptional<import("zod").ZodString>;
387
+ type: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodEnum<{
388
+ NOTICE: "NOTICE";
389
+ PRORULE: "PRORULE";
390
+ RULE: "RULE";
391
+ }>>>;
355
392
  agencies: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
356
393
  closing_before: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodLiteral<"">, import("zod").ZodString]>>;
357
394
  per_page: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodNumber>>;
@@ -363,7 +400,10 @@ export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolD
363
400
  documentNumber: import("zod").ZodString;
364
401
  title: import("zod").ZodString;
365
402
  type: import("zod").ZodString;
366
- agencies: import("zod").ZodArray<import("zod").ZodString>;
403
+ agencies: import("zod").ZodArray<import("zod").ZodObject<{
404
+ name: import("zod").ZodString;
405
+ slug: import("zod").ZodNullable<import("zod").ZodString>;
406
+ }, import("zod/v4/core").$strip>>;
367
407
  publicationDate: import("zod").ZodString;
368
408
  commentsCloseOn: import("zod").ZodString;
369
409
  daysRemaining: import("zod").ZodNumber;
@@ -375,10 +415,20 @@ export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolD
375
415
  readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ServiceUnavailable;
376
416
  readonly when: "Federal Register returned a 5xx, timed out, or served an HTML error page.";
377
417
  readonly recovery: "Retry after a brief wait; the Federal Register API may be momentarily down.";
418
+ }, {
419
+ readonly reason: "invalid_filter";
420
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
421
+ readonly when: "The Federal Register rejected a filter value — most often an agency name or acronym passed where a slug belongs.";
422
+ readonly recovery: "Correct the parameter the message names: agencies takes Federal Register slugs in lowercase kebab-case (e.g. \"environmental-protection-agency\"; read one off agencies[].slug in a result), and closing_before must be a real YYYY-MM-DD day.";
423
+ readonly severity: "notice";
424
+ readonly thrownBy: "service";
378
425
  }], {
379
426
  readonly totalCount: import("zod").ZodNumber;
427
+ readonly totalPages: import("zod").ZodNumber;
428
+ readonly nextPage: import("zod").ZodOptional<import("zod").ZodNumber>;
380
429
  readonly truncated: import("zod").ZodOptional<import("zod").ZodBoolean>;
381
430
  readonly shown: import("zod").ZodOptional<import("zod").ZodNumber>;
431
+ readonly cap: import("zod").ZodOptional<import("zod").ZodNumber>;
382
432
  readonly notice: import("zod").ZodOptional<import("zod").ZodString>;
383
433
  }>)[];
384
434
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAQ9B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAQ9B,CAAC"}
@@ -1,15 +1,22 @@
1
1
  /**
2
- * @fileoverview regulations_list_open_comments — rules currently open for public
3
- * comment, filterable by agency and topic. "What can I still weigh in on?" Runs on
4
- * the Federal Register's open-comment window (keyless); the comment count is read
5
- * from each FR document's own embedded Regulations.gov info when a key is present.
6
- * Degrades gracefully — fully functional without the key.
2
+ * @fileoverview regulations_list_open_comments — documents currently open for
3
+ * public comment (proposed rules and comment-requesting final rules by default,
4
+ * notices on request), filterable by agency and topic. "What can I still weigh in
5
+ * on?" Runs on the Federal Register's open-comment window (keyless), fetched
6
+ * whole, sorted by closing date, and paged locally; the comment count is read
7
+ * from each FR document's own embedded Regulations.gov info when a key is
8
+ * present. Degrades gracefully — fully functional without the key.
7
9
  * @module mcp-server/tools/definitions/list-open-comments.tool
8
10
  */
9
11
  import { z } from '@cyanheads/mcp-ts-core';
10
12
  import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
11
13
  export declare const listOpenCommentsTool: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
12
14
  query: z.ZodOptional<z.ZodString>;
15
+ type: z.ZodOptional<z.ZodArray<z.ZodEnum<{
16
+ NOTICE: "NOTICE";
17
+ PRORULE: "PRORULE";
18
+ RULE: "RULE";
19
+ }>>>;
13
20
  agencies: z.ZodOptional<z.ZodArray<z.ZodString>>;
14
21
  closing_before: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"">, z.ZodString]>>;
15
22
  per_page: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
@@ -21,7 +28,10 @@ export declare const listOpenCommentsTool: import("@cyanheads/mcp-ts-core").Tool
21
28
  documentNumber: z.ZodString;
22
29
  title: z.ZodString;
23
30
  type: z.ZodString;
24
- agencies: z.ZodArray<z.ZodString>;
31
+ agencies: z.ZodArray<z.ZodObject<{
32
+ name: z.ZodString;
33
+ slug: z.ZodNullable<z.ZodString>;
34
+ }, z.core.$strip>>;
25
35
  publicationDate: z.ZodString;
26
36
  commentsCloseOn: z.ZodString;
27
37
  daysRemaining: z.ZodNumber;
@@ -33,10 +43,20 @@ export declare const listOpenCommentsTool: import("@cyanheads/mcp-ts-core").Tool
33
43
  readonly code: JsonRpcErrorCode.ServiceUnavailable;
34
44
  readonly when: "Federal Register returned a 5xx, timed out, or served an HTML error page.";
35
45
  readonly recovery: "Retry after a brief wait; the Federal Register API may be momentarily down.";
46
+ }, {
47
+ readonly reason: "invalid_filter";
48
+ readonly code: JsonRpcErrorCode.ValidationError;
49
+ readonly when: "The Federal Register rejected a filter value — most often an agency name or acronym passed where a slug belongs.";
50
+ readonly recovery: "Correct the parameter the message names: agencies takes Federal Register slugs in lowercase kebab-case (e.g. \"environmental-protection-agency\"; read one off agencies[].slug in a result), and closing_before must be a real YYYY-MM-DD day.";
51
+ readonly severity: "notice";
52
+ readonly thrownBy: "service";
36
53
  }], {
37
54
  readonly totalCount: z.ZodNumber;
55
+ readonly totalPages: z.ZodNumber;
56
+ readonly nextPage: z.ZodOptional<z.ZodNumber>;
38
57
  readonly truncated: z.ZodOptional<z.ZodBoolean>;
39
58
  readonly shown: z.ZodOptional<z.ZodNumber>;
59
+ readonly cap: z.ZodOptional<z.ZodNumber>;
40
60
  readonly notice: z.ZodOptional<z.ZodString>;
41
61
  }>;
42
62
  //# sourceMappingURL=list-open-comments.tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-open-comments.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/list-open-comments.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAgBjE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsL/B,CAAC"}
1
+ {"version":3,"file":"list-open-comments.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/list-open-comments.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAsBjE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+O/B,CAAC"}