@cyanheads/epa-mcp-server 0.3.3 → 0.4.1

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 (88) hide show
  1. package/AGENTS.md +5 -5
  2. package/CLAUDE.md +5 -5
  3. package/Dockerfile +3 -3
  4. package/README.md +58 -23
  5. package/changelog/0.4.x/0.4.0.md +35 -0
  6. package/changelog/0.4.x/0.4.1.md +34 -0
  7. package/dist/index.js +1 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/mcp-server/resources/definitions/facility.resource.d.ts +8 -1
  10. package/dist/mcp-server/resources/definitions/facility.resource.d.ts.map +1 -1
  11. package/dist/mcp-server/resources/definitions/facility.resource.js +13 -7
  12. package/dist/mcp-server/resources/definitions/facility.resource.js.map +1 -1
  13. package/dist/mcp-server/resources/definitions/index.d.ts +7 -1
  14. package/dist/mcp-server/resources/definitions/index.d.ts.map +1 -1
  15. package/dist/mcp-server/tools/definitions/get-air-quality.tool.d.ts +23 -9
  16. package/dist/mcp-server/tools/definitions/get-air-quality.tool.d.ts.map +1 -1
  17. package/dist/mcp-server/tools/definitions/get-air-quality.tool.js +165 -93
  18. package/dist/mcp-server/tools/definitions/get-air-quality.tool.js.map +1 -1
  19. package/dist/mcp-server/tools/definitions/get-facility.tool.d.ts +30 -2
  20. package/dist/mcp-server/tools/definitions/get-facility.tool.d.ts.map +1 -1
  21. package/dist/mcp-server/tools/definitions/get-facility.tool.js +211 -53
  22. package/dist/mcp-server/tools/definitions/get-facility.tool.js.map +1 -1
  23. package/dist/mcp-server/tools/definitions/get-tri-releases.tool.d.ts +5 -2
  24. package/dist/mcp-server/tools/definitions/get-tri-releases.tool.d.ts.map +1 -1
  25. package/dist/mcp-server/tools/definitions/get-tri-releases.tool.js +18 -15
  26. package/dist/mcp-server/tools/definitions/get-tri-releases.tool.js.map +1 -1
  27. package/dist/mcp-server/tools/definitions/index.d.ts +165 -32
  28. package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
  29. package/dist/mcp-server/tools/definitions/search-facilities.tool.d.ts.map +1 -1
  30. package/dist/mcp-server/tools/definitions/search-facilities.tool.js +39 -26
  31. package/dist/mcp-server/tools/definitions/search-facilities.tool.js.map +1 -1
  32. package/dist/mcp-server/tools/definitions/search-superfund.tool.d.ts +3 -1
  33. package/dist/mcp-server/tools/definitions/search-superfund.tool.d.ts.map +1 -1
  34. package/dist/mcp-server/tools/definitions/search-superfund.tool.js +13 -9
  35. package/dist/mcp-server/tools/definitions/search-superfund.tool.js.map +1 -1
  36. package/dist/mcp-server/tools/definitions/search-tri-releases.tool.d.ts +17 -3
  37. package/dist/mcp-server/tools/definitions/search-tri-releases.tool.d.ts.map +1 -1
  38. package/dist/mcp-server/tools/definitions/search-tri-releases.tool.js +64 -12
  39. package/dist/mcp-server/tools/definitions/search-tri-releases.tool.js.map +1 -1
  40. package/dist/mcp-server/tools/definitions/search-violations.tool.d.ts +20 -3
  41. package/dist/mcp-server/tools/definitions/search-violations.tool.d.ts.map +1 -1
  42. package/dist/mcp-server/tools/definitions/search-violations.tool.js +84 -15
  43. package/dist/mcp-server/tools/definitions/search-violations.tool.js.map +1 -1
  44. package/dist/mcp-server/tools/definitions/search-water-systems.tool.d.ts +3 -1
  45. package/dist/mcp-server/tools/definitions/search-water-systems.tool.d.ts.map +1 -1
  46. package/dist/mcp-server/tools/definitions/search-water-systems.tool.js +22 -7
  47. package/dist/mcp-server/tools/definitions/search-water-systems.tool.js.map +1 -1
  48. package/dist/mcp-server/tools/format-lbs.d.ts +14 -0
  49. package/dist/mcp-server/tools/format-lbs.d.ts.map +1 -0
  50. package/dist/mcp-server/tools/format-lbs.js +16 -0
  51. package/dist/mcp-server/tools/format-lbs.js.map +1 -0
  52. package/dist/mcp-server/tools/format-location.d.ts +18 -0
  53. package/dist/mcp-server/tools/format-location.d.ts.map +1 -0
  54. package/dist/mcp-server/tools/format-location.js +26 -0
  55. package/dist/mcp-server/tools/format-location.js.map +1 -0
  56. package/dist/mcp-server/tools/format-tri-release.d.ts +16 -0
  57. package/dist/mcp-server/tools/format-tri-release.d.ts.map +1 -0
  58. package/dist/mcp-server/tools/format-tri-release.js +23 -0
  59. package/dist/mcp-server/tools/format-tri-release.js.map +1 -0
  60. package/dist/services/airnow/airnow-service.d.ts +10 -29
  61. package/dist/services/airnow/airnow-service.d.ts.map +1 -1
  62. package/dist/services/airnow/airnow-service.js +156 -97
  63. package/dist/services/airnow/airnow-service.js.map +1 -1
  64. package/dist/services/airnow/types.d.ts +62 -23
  65. package/dist/services/airnow/types.d.ts.map +1 -1
  66. package/dist/services/airnow/types.js +2 -1
  67. package/dist/services/airnow/types.js.map +1 -1
  68. package/dist/services/call-budget.d.ts +22 -0
  69. package/dist/services/call-budget.d.ts.map +1 -0
  70. package/dist/services/call-budget.js +28 -0
  71. package/dist/services/call-budget.js.map +1 -0
  72. package/dist/services/dmap/dmap-service.d.ts +76 -7
  73. package/dist/services/dmap/dmap-service.d.ts.map +1 -1
  74. package/dist/services/dmap/dmap-service.js +461 -144
  75. package/dist/services/dmap/dmap-service.js.map +1 -1
  76. package/dist/services/dmap/types.d.ts +17 -4
  77. package/dist/services/dmap/types.d.ts.map +1 -1
  78. package/dist/services/echo/echo-service.d.ts +38 -11
  79. package/dist/services/echo/echo-service.d.ts.map +1 -1
  80. package/dist/services/echo/echo-service.js +417 -223
  81. package/dist/services/echo/echo-service.js.map +1 -1
  82. package/dist/services/echo/types.d.ts +167 -80
  83. package/dist/services/echo/types.d.ts.map +1 -1
  84. package/dist/services/ejscreen/ejscreen-service.d.ts.map +1 -1
  85. package/dist/services/ejscreen/ejscreen-service.js +9 -3
  86. package/dist/services/ejscreen/ejscreen-service.js.map +1 -1
  87. package/package.json +7 -7
  88. package/server.json +9 -3
@@ -45,5 +45,7 @@ export declare const searchSuperfundTool: import("@cyanheads/mcp-ts-core").ToolD
45
45
  readonly code: JsonRpcErrorCode.ValidationError;
46
46
  readonly when: "Latitude and longitude were provided without radius_miles.";
47
47
  readonly recovery: "Provide radius_miles together with latitude and longitude for a proximity search.";
48
- }], undefined>;
48
+ }], {
49
+ readonly notice: z.ZodOptional<z.ZodString>;
50
+ }>;
49
51
  //# sourceMappingURL=search-superfund.tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search-superfund.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-superfund.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAyK9B,CAAC"}
1
+ {"version":3,"file":"search-superfund.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-superfund.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAIjE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkL9B,CAAC"}
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import { tool, z } from '@cyanheads/mcp-ts-core';
6
6
  import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
7
+ import { formatLocationLines } from '../format-location.js';
7
8
  import { getDmapService } from '../../../services/dmap/dmap-service.js';
8
9
  export const searchSuperfundTool = tool('epa_search_superfund', {
9
10
  title: 'Search Superfund Sites',
@@ -11,7 +12,11 @@ export const searchSuperfundTool = tool('epa_search_superfund', {
11
12
  annotations: { readOnlyHint: true, openWorldHint: true, idempotentHint: true },
12
13
  input: z.object({
13
14
  state: z.string().optional().describe('2-letter US state abbreviation to filter sites'),
14
- city: z.string().optional().describe('City name (partial match within state)'),
15
+ city: z
16
+ .string()
17
+ .max(4094)
18
+ .optional()
19
+ .describe('City name (partial match within state, case-insensitive). Punctuation is matched as written ("St. Louis", "Coeur d\'Alene").'),
15
20
  zip_code: z.string().optional().describe('5-digit ZIP code to filter sites'),
16
21
  latitude: z
17
22
  .number()
@@ -69,6 +74,12 @@ export const searchSuperfundTool = tool('epa_search_superfund', {
69
74
  .optional()
70
75
  .describe('Recovery hint when no sites are found. Absent when sites are returned.'),
71
76
  }),
77
+ enrichment: {
78
+ notice: z
79
+ .string()
80
+ .optional()
81
+ .describe('Present when a punctuated city filter read its page limit before finding limit sites spelled as given, so more matching sites may exist.'),
82
+ },
72
83
  errors: [
73
84
  {
74
85
  reason: 'no_location_filter',
@@ -132,14 +143,7 @@ export const searchSuperfundTool = tool('epa_search_superfund', {
132
143
  for (const s of result.sites) {
133
144
  lines.push(`\n### ${s.name}`);
134
145
  lines.push(`**Site ID:** ${s.siteId}`);
135
- const location = [s.street, s.city, s.state, s.zip].filter(Boolean).join(', ');
136
- if (location)
137
- lines.push(`**Location:** ${location}`);
138
- if (s.county)
139
- lines.push(`**County:** ${s.county}${s.fipsCode ? ` (FIPS: ${s.fipsCode})` : ''}`);
140
- if (s.latitude !== undefined && s.longitude !== undefined) {
141
- lines.push(`**Coordinates:** ${s.latitude}, ${s.longitude}`);
142
- }
146
+ lines.push(...formatLocationLines(s));
143
147
  if (s.nplStatus)
144
148
  lines.push(`**NPL Status:** ${s.nplStatus}`);
145
149
  if (s.cleanupStatus)
@@ -1 +1 @@
1
- {"version":3,"file":"search-superfund.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-superfund.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search-superfund.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-superfund.tool.ts"],"names":[],"mappings":"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"}
@@ -4,19 +4,32 @@
4
4
  */
5
5
  import { z } from '@cyanheads/mcp-ts-core';
6
6
  import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
7
+ /**
8
+ * A county name as TRI stores it: trimmed, uppercase, and without a trailing County, Parish, or
9
+ * Borough ("KING", never "KING COUNTY"), so a suffixed input still matches. Linear in the name:
10
+ * the suffix match anchors on one whitespace character rather than a run of them.
11
+ */
12
+ export declare function bareCountyName(county: string): string;
7
13
  export declare const searchTriReleasesTool: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
8
14
  state: z.ZodString;
9
15
  county: z.ZodOptional<z.ZodString>;
10
16
  year: z.ZodOptional<z.ZodNumber>;
11
17
  chemical_name: z.ZodOptional<z.ZodString>;
12
18
  limit: z.ZodDefault<z.ZodNumber>;
19
+ include_release_breakdown: z.ZodDefault<z.ZodBoolean>;
13
20
  }, z.core.$strip>, z.ZodObject<{
14
21
  releases: z.ZodArray<z.ZodObject<{
15
22
  facilityId: z.ZodString;
16
23
  facilityName: z.ZodOptional<z.ZodString>;
24
+ countyName: z.ZodOptional<z.ZodString>;
17
25
  chemicalName: z.ZodString;
18
26
  reportingYear: z.ZodNumber;
27
+ reportedUnit: z.ZodOptional<z.ZodLiteral<"grams">>;
19
28
  totalReleasesInLbs: z.ZodOptional<z.ZodNumber>;
29
+ releasesToAirInLbs: z.ZodOptional<z.ZodNumber>;
30
+ releasesToWaterInLbs: z.ZodOptional<z.ZodNumber>;
31
+ releasesToLandInLbs: z.ZodOptional<z.ZodNumber>;
32
+ releasesToUndergroundInjectionInLbs: z.ZodOptional<z.ZodNumber>;
20
33
  }, z.core.$strip>>;
21
34
  state: z.ZodString;
22
35
  message: z.ZodOptional<z.ZodString>;
@@ -26,8 +39,9 @@ export declare const searchTriReleasesTool: import("@cyanheads/mcp-ts-core").Too
26
39
  readonly when: "No TRI records found for the given state and filters.";
27
40
  readonly recovery: "Verify the state abbreviation is valid. TRI data lags 18 months — try removing the year filter or using an earlier year.";
28
41
  }], {
29
- readonly truncated: z.ZodBoolean;
30
- readonly shown: z.ZodNumber;
31
- readonly cap: z.ZodNumber;
42
+ readonly truncated: z.ZodOptional<z.ZodBoolean>;
43
+ readonly shown: z.ZodOptional<z.ZodNumber>;
44
+ readonly cap: z.ZodOptional<z.ZodNumber>;
45
+ readonly notice: z.ZodOptional<z.ZodString>;
32
46
  }>;
33
47
  //# sourceMappingURL=search-tri-releases.tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search-tri-releases.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-tri-releases.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;EAyIhC,CAAC"}
1
+ {"version":3,"file":"search-tri-releases.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-tri-releases.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAIjE;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIrD;AAED,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuMhC,CAAC"}
@@ -4,10 +4,21 @@
4
4
  */
5
5
  import { tool, z } from '@cyanheads/mcp-ts-core';
6
6
  import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
7
+ import { formatTriReleaseLines } from '../format-tri-release.js';
7
8
  import { getDmapService } from '../../../services/dmap/dmap-service.js';
9
+ /**
10
+ * A county name as TRI stores it: trimmed, uppercase, and without a trailing County, Parish, or
11
+ * Borough ("KING", never "KING COUNTY"), so a suffixed input still matches. Linear in the name:
12
+ * the suffix match anchors on one whitespace character rather than a run of them.
13
+ */
14
+ export function bareCountyName(county) {
15
+ const name = county.trim();
16
+ const suffix = /\s(county|parish|borough)$/i.exec(name);
17
+ return (suffix ? name.slice(0, suffix.index).trimEnd() : name).toUpperCase();
18
+ }
8
19
  export const searchTriReleasesTool = tool('epa_search_tri_releases', {
9
20
  title: 'Search TRI Releases by Region',
10
- description: 'Search Toxic Release Inventory data across facilities in a state or county for a given reporting year. Returns facility name, TRI ID, chemical name, and release quantity. Use to identify top polluters in an area or build an environmental exposure profile. Use epa_get_tri_releases for detailed release records for a single facility. TRI data lags ~18 months from the current calendar year.',
21
+ description: 'Search Toxic Release Inventory data across facilities in a state or county, for one reporting year or, without year, every available year newest first. Returns facility name and county, TRI facility ID, chemical name, and the one-time / non-routine release quantity; set include_release_breakdown to add routine on-site releases by medium (air, water, land, and underground-injection), at the cost of a slower call. Quantities are in pounds; dioxin and dioxin-like compounds, which TRI has facilities report in grams, are converted and marked with reportedUnit. Use to identify top polluters in an area or build an environmental exposure profile. Use epa_get_tri_releases for detailed release records for a single facility. TRI data lags ~18 months from the current calendar year.',
11
22
  annotations: { readOnlyHint: true, openWorldHint: true, idempotentHint: true },
12
23
  input: z.object({
13
24
  state: z
@@ -17,19 +28,21 @@ export const searchTriReleasesTool = tool('epa_search_tri_releases', {
17
28
  .describe('2-letter US state abbreviation (required, e.g. "WA", "TX")'),
18
29
  county: z
19
30
  .string()
31
+ .max(4094)
20
32
  .optional()
21
- .describe('County name to narrow results within the state (partial match)'),
33
+ .describe('County name to narrow results within the state, e.g. "King". Case-insensitive partial match on the bare name, so a short name can also match a longer one (LAKE matches LAKE OF THE WOODS; check countyName on each record); a trailing "County", "Parish", or "Borough" is dropped before matching. Punctuation is matched as written ("Prince George\'s").'),
22
34
  year: z
23
35
  .number()
24
36
  .int()
25
37
  .min(1987)
26
38
  .max(2030)
27
39
  .optional()
28
- .describe('Reporting year. Defaults to all available years in the state. TRI data lags ~18 months.'),
40
+ .describe('Reporting year. Omit to search every available year in the state, newest reporting year first, so limit keeps the most recent filings. TRI data lags ~18 months.'),
29
41
  chemical_name: z
30
42
  .string()
43
+ .max(4094)
31
44
  .optional()
32
- .describe('Optional filter to restrict results to a specific chemical (partial match, case-insensitive)'),
45
+ .describe('Optional filter to restrict results to a specific chemical (partial match, case-insensitive). Commas, apostrophes, brackets, and Greek letters are matched as written, e.g. "4,4\'-Methylenedianiline".'),
33
46
  limit: z
34
47
  .number()
35
48
  .int()
@@ -37,6 +50,10 @@ export const searchTriReleasesTool = tool('epa_search_tri_releases', {
37
50
  .max(200)
38
51
  .default(50)
39
52
  .describe('Maximum number of release records to return (1–200)'),
53
+ include_release_breakdown: z
54
+ .boolean()
55
+ .default(false)
56
+ .describe('Add routine on-site releases by medium (air, water, land, underground injection) to each record. Costs one extra upstream request, which can add about 20 seconds when EPA has not cached it.'),
40
57
  }),
41
58
  output: z.object({
42
59
  releases: z
@@ -44,12 +61,36 @@ export const searchTriReleasesTool = tool('epa_search_tri_releases', {
44
61
  .object({
45
62
  facilityId: z.string().describe('TRI facility identifier'),
46
63
  facilityName: z.string().optional().describe('Facility name'),
64
+ countyName: z
65
+ .string()
66
+ .optional()
67
+ .describe('County as TRI records the facility\'s location (e.g. "KING", "CALCASIEU PARISH"). The county filter is a partial match, so a short name can also match a longer one (LAKE matches LAKE OF THE WOODS); check this field to keep only the county you meant.'),
47
68
  chemicalName: z.string().describe('Chemical name as reported to TRI'),
48
69
  reportingYear: z.number().describe('Year of the TRI submission'),
70
+ reportedUnit: z
71
+ .literal('grams')
72
+ .optional()
73
+ .describe('Present as "grams" when TRI had the facility report this chemical in grams (dioxin and dioxin-like compounds); its quantities here are converted to pounds (1 lb = 453.59237 g). Absent for chemicals reported in pounds.'),
49
74
  totalReleasesInLbs: z
50
75
  .number()
51
76
  .optional()
52
- .describe('One-time release quantity in pounds (from tri_reporting_form)'),
77
+ .describe('TRI one-time / non-routine release quantity in pounds (spills, accidents) — a distinct TRI category, NOT the sum of the per-medium routine releases below.'),
78
+ releasesToAirInLbs: z
79
+ .number()
80
+ .optional()
81
+ .describe('On-site routine air releases (fugitive + stack emissions) in pounds, summed across air release types for this submission. Only with include_release_breakdown.'),
82
+ releasesToWaterInLbs: z
83
+ .number()
84
+ .optional()
85
+ .describe('On-site routine releases to surface water in pounds, summed across all reported outfalls for this submission. Only with include_release_breakdown.'),
86
+ releasesToLandInLbs: z
87
+ .number()
88
+ .optional()
89
+ .describe('On-site routine land releases in pounds — landfills, land treatment, surface impoundment, and other on-site disposal, summed for this submission. Only with include_release_breakdown.'),
90
+ releasesToUndergroundInjectionInLbs: z
91
+ .number()
92
+ .optional()
93
+ .describe('On-site routine releases via underground injection wells in pounds, summed across injection well classes for this submission. Only with include_release_breakdown.'),
53
94
  })
54
95
  .describe('TRI release record for a facility-chemical-year combination'))
55
96
  .describe('TRI release records for facilities in the queried state and filters'),
@@ -62,9 +103,17 @@ export const searchTriReleasesTool = tool('epa_search_tri_releases', {
62
103
  enrichment: {
63
104
  truncated: z
64
105
  .boolean()
65
- .describe('True when the result list was capped at the limit — more records may exist.'),
66
- shown: z.number().describe('Number of release records returned.'),
67
- cap: z.number().describe('The limit that was applied.'),
106
+ .optional()
107
+ .describe('True when the result list was capped at the limit — more records may exist. Absent below the limit.'),
108
+ shown: z
109
+ .number()
110
+ .optional()
111
+ .describe('Number of release records returned. Present only when truncated.'),
112
+ cap: z.number().optional().describe('The limit that was applied. Present only when truncated.'),
113
+ notice: z
114
+ .string()
115
+ .optional()
116
+ .describe('Present when a punctuated county or chemical_name filter read its page limit before finding limit matches spelled as given, so more matching records may exist.'),
68
117
  },
69
118
  errors: [
70
119
  {
@@ -79,8 +128,9 @@ export const searchTriReleasesTool = tool('epa_search_tri_releases', {
79
128
  state: input.state,
80
129
  year: input.year,
81
130
  county: input.county,
131
+ includeReleaseBreakdown: input.include_release_breakdown,
82
132
  });
83
- const county = input.county?.trim();
133
+ const county = input.county === undefined ? undefined : bareCountyName(input.county);
84
134
  const chemicalName = input.chemical_name?.trim();
85
135
  const releases = await getDmapService().searchTriReleases({
86
136
  state: input.state.trim().toUpperCase(),
@@ -88,11 +138,12 @@ export const searchTriReleasesTool = tool('epa_search_tri_releases', {
88
138
  ...(input.year !== undefined && { year: input.year }),
89
139
  ...(chemicalName && { chemicalName }),
90
140
  limit: input.limit,
141
+ includeReleaseBreakdown: input.include_release_breakdown,
91
142
  }, ctx);
92
143
  ctx.log.info('epa_search_tri_releases completed', { count: releases.length });
93
144
  if (releases.length === 0) {
94
145
  const yearNote = input.year ? ` for year ${input.year}` : '';
95
- const countyNote = input.county ? ` in ${input.county} county` : '';
146
+ const countyNote = county ? ` in ${county} county` : '';
96
147
  const chemNote = input.chemical_name ? ` for chemical "${input.chemical_name}"` : '';
97
148
  return {
98
149
  releases: [],
@@ -114,8 +165,9 @@ export const searchTriReleasesTool = tool('epa_search_tri_releases', {
114
165
  for (const r of result.releases) {
115
166
  const facilityLabel = r.facilityName ? `${r.facilityName} (${r.facilityId})` : r.facilityId;
116
167
  lines.push(`\n### ${r.chemicalName} — ${facilityLabel} (${r.reportingYear})`);
117
- if (r.totalReleasesInLbs !== undefined)
118
- lines.push(`**Release Quantity:** ${r.totalReleasesInLbs.toLocaleString()} lbs`);
168
+ if (r.countyName)
169
+ lines.push(`**County:** ${r.countyName}`);
170
+ lines.push(...formatTriReleaseLines(r));
119
171
  }
120
172
  return [{ type: 'text', text: lines.join('\n') }];
121
173
  },
@@ -1 +1 @@
1
- {"version":3,"file":"search-tri-releases.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-tri-releases.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC,yBAAyB,EAAE;IACnE,KAAK,EAAE,+BAA+B;IACtC,WAAW,EACT,uYAAuY;IACzY,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;IAE9E,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CAAC,4DAA4D,CAAC;QACzE,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,gEAAgE,CAAC;QAC7E,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,IAAI,CAAC;aACT,GAAG,CAAC,IAAI,CAAC;aACT,QAAQ,EAAE;aACV,QAAQ,CACP,yFAAyF,CAC1F;QACH,aAAa,EAAE,CAAC;aACb,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,8FAA8F,CAC/F;QACH,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,GAAG,CAAC;aACR,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CAAC,qDAAqD,CAAC;KACnE,CAAC;IAEF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,QAAQ,EAAE,CAAC;aACR,KAAK,CACJ,CAAC;aACE,MAAM,CAAC;YACN,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;YAC1D,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;YAC7D,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;YACrE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;YAChE,kBAAkB,EAAE,CAAC;iBAClB,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,+DAA+D,CAAC;SAC7E,CAAC;aACD,QAAQ,CAAC,6DAA6D,CAAC,CAC3E;aACA,QAAQ,CAAC,qEAAqE,CAAC;QAClF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC3C,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,8EAA8E,CAAC;KAC5F,CAAC;IAEF,UAAU,EAAE;QACV,SAAS,EAAE,CAAC;aACT,OAAO,EAAE;aACT,QAAQ,CAAC,6EAA6E,CAAC;QAC1F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QACjE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;KACxD;IAED,MAAM,EAAE;QACN;YACE,MAAM,EAAE,mBAAmB;YAC3B,IAAI,EAAE,gBAAgB,CAAC,QAAQ;YAC/B,IAAI,EAAE,uDAAuD;YAC7D,QAAQ,EACN,0HAA0H;SAC7H;KACF;IAED,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;QACtB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,EAAE;YACtC,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;QACpC,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,MAAM,cAAc,EAAE,CAAC,iBAAiB,CACvD;YACE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;YACvC,GAAG,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC;YACzB,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;YACrD,GAAG,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,CAAC;YACrC,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,EACD,GAAG,CACJ,CAAC;QAEF,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,mCAAmC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAE9E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,kBAAkB,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACrF,OAAO;gBACL,QAAQ,EAAE,EAAE;gBACZ,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,OAAO,EAAE,4BAA4B,KAAK,CAAC,KAAK,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,yCAAyC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,uBAAuB;aAChL,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACnC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;QACjB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,qBAAqB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACrD,IAAI,MAAM,CAAC,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAExD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,aAAa,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;YAC5F,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,YAAY,MAAM,aAAa,KAAK,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC;YAC9E,IAAI,CAAC,CAAC,kBAAkB,KAAK,SAAS;gBACpC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QACrF,CAAC;QAED,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"search-tri-releases.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-tri-releases.tool.ts"],"names":[],"mappings":"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"}
@@ -21,8 +21,8 @@ export declare const searchViolationsTool: import("@cyanheads/mcp-ts-core").Tool
21
21
  civil: "civil";
22
22
  criminal: "criminal";
23
23
  }>>;
24
- date_filed_start: z.ZodOptional<z.ZodString>;
25
- date_filed_end: z.ZodOptional<z.ZodString>;
24
+ date_filed_start: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodString]>>;
25
+ date_filed_end: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodString]>>;
26
26
  limit: z.ZodDefault<z.ZodNumber>;
27
27
  }, z.core.$strip>, z.ZodObject<{
28
28
  cases: z.ZodArray<z.ZodObject<{
@@ -44,5 +44,22 @@ export declare const searchViolationsTool: import("@cyanheads/mcp-ts-core").Tool
44
44
  readonly code: JsonRpcErrorCode.ValidationError;
45
45
  readonly when: "Neither state nor zip_code was provided.";
46
46
  readonly recovery: "Provide at least one of state or zip_code to scope the enforcement case search.";
47
- }], undefined>;
47
+ }, {
48
+ readonly reason: "invalid_date";
49
+ readonly code: JsonRpcErrorCode.ValidationError;
50
+ readonly when: "date_filed_start or date_filed_end is not a real calendar date, such as 2024-02-30.";
51
+ readonly recovery: "Pass a real calendar date in YYYY-MM-DD form, such as 2024-02-29.";
52
+ }, {
53
+ readonly reason: "date_range_inverted";
54
+ readonly code: JsonRpcErrorCode.ValidationError;
55
+ readonly when: "date_filed_start is later than date_filed_end.";
56
+ readonly recovery: "Swap the two dates so date_filed_start is on or before date_filed_end.";
57
+ }, {
58
+ readonly reason: "criminal_date_filter";
59
+ readonly code: JsonRpcErrorCode.ValidationError;
60
+ readonly when: "case_type \"criminal\" was combined with a filing-date bound, which ECHO records for civil cases only.";
61
+ readonly recovery: "Drop date_filed_start and date_filed_end to search criminal cases, or set case_type to civil.";
62
+ }], {
63
+ readonly notice: z.ZodOptional<z.ZodString>;
64
+ }>;
48
65
  //# sourceMappingURL=search-violations.tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search-violations.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-violations.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAoL/B,CAAC"}
1
+ {"version":3,"file":"search-violations.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-violations.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAsBjE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyP/B,CAAC"}
@@ -5,32 +5,47 @@
5
5
  import { tool, z } from '@cyanheads/mcp-ts-core';
6
6
  import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
7
7
  import { getEchoService } from '../../../services/echo/echo-service.js';
8
+ /**
9
+ * A YYYY-MM-DD date, or a blank string for none; surrounding whitespace is trimmed. Calendar
10
+ * validity is checked in the handler.
11
+ */
12
+ const filingDate = z.union([
13
+ z.string().trim().length(0).describe('No bound'),
14
+ z
15
+ .string()
16
+ .trim()
17
+ .regex(/^\d{4}-\d{2}-\d{2}$/, 'Use the YYYY-MM-DD form, e.g. 2024-01-31.')
18
+ .describe('Date in YYYY-MM-DD form'),
19
+ ]);
20
+ /** True when a YYYY-MM-DD string names a real calendar day (rejects 2024-02-30). */
21
+ const isCalendarDate = (iso) => {
22
+ const parsed = new Date(`${iso}T00:00:00Z`);
23
+ return !Number.isNaN(parsed.getTime()) && parsed.toISOString().startsWith(iso);
24
+ };
8
25
  export const searchViolationsTool = tool('epa_search_violations', {
9
26
  title: 'Search EPA Enforcement Cases',
10
- description: "Search EPA civil and criminal enforcement cases by state, regulatory program, or date range. Returns case identifier, regulated facility name and Registry ID, programs involved, penalty assessed, settlement date, and case type. Designed for area-level violation discovery — for a single known facility's enforcement history use epa_get_facility instead. At least one of state or zip_code is required.",
27
+ description: "Search EPA civil and criminal enforcement cases by state, ZIP code, regulatory program, case type, or filing-date range. Returns case identifier, programs involved, penalty assessed, settlement and filing dates, and case type. Designed for area-level violation discovery — for a single known facility's enforcement history use epa_get_facility instead. At least one of state or zip_code is required.",
11
28
  annotations: { readOnlyHint: true, openWorldHint: true, idempotentHint: true },
12
29
  input: z.object({
13
30
  state: z
14
31
  .string()
15
32
  .optional()
16
33
  .describe('2-letter US state abbreviation to filter cases (e.g. "TX", "CA")'),
17
- zip_code: z.string().optional().describe('5-digit ZIP code to filter cases near that area'),
34
+ zip_code: z.string().optional().describe("5-digit ZIP code of the case's facility location"),
18
35
  program: z
19
36
  .enum(['CAA', 'CWA', 'RCRA', 'SDWA', 'CERCLA', 'FIFRA', 'TSCA'])
20
37
  .optional()
21
- .describe('Filter by regulatory program: CAA=Clean Air Act, CWA=Clean Water Act, RCRA=hazardous waste, SDWA=drinking water, CERCLA=Superfund, FIFRA=pesticides, TSCA=toxic substances'),
38
+ .describe("Filter by regulatory program: CAA=Clean Air Act, CWA=Clean Water Act, RCRA=hazardous waste, SDWA=drinking water, CERCLA=Superfund, FIFRA=pesticides, TSCA=toxic substances. Matches any law a case cites, so a returned case's programsViolated (its primary law) can differ."),
22
39
  case_type: z
23
40
  .enum(['civil', 'criminal', 'all'])
24
41
  .default('all')
25
- .describe('Filter by case type: civil (regulatory violations), criminal (willful violations), or all'),
26
- date_filed_start: z
27
- .string()
42
+ .describe('Filter by case type: civil (regulatory violations), criminal (willful violations), or all. A filing-date range covers civil cases only: with a date, all returns civil cases and criminal is rejected.'),
43
+ date_filed_start: filingDate
28
44
  .optional()
29
- .describe('Start date for case filing date range (ISO 8601: YYYY-MM-DD)'),
30
- date_filed_end: z
31
- .string()
45
+ .describe('Earliest filing date, inclusive (YYYY-MM-DD). Civil cases only. Omit, or pass "", for no lower bound.'),
46
+ date_filed_end: filingDate
32
47
  .optional()
33
- .describe('End date for case filing date range (ISO 8601: YYYY-MM-DD)'),
48
+ .describe('Latest filing date, inclusive (YYYY-MM-DD). Civil cases only. Omit, or pass "", for no upper bound.'),
34
49
  limit: z
35
50
  .number()
36
51
  .int()
@@ -63,13 +78,19 @@ export const searchViolationsTool = tool('epa_search_violations', {
63
78
  caseType: z
64
79
  .string()
65
80
  .optional()
66
- .describe('Case category (e.g. "Judicial", "Administrative")'),
81
+ .describe('Case category (e.g. "Judicial", "Administrative - Formal")'),
67
82
  penaltyAssessedInDollars: z
68
83
  .number()
69
84
  .optional()
70
85
  .describe('Federal penalty assessed in dollars (parsed from ECHO dollar string)'),
71
- settlementDate: z.string().optional().describe('Settlement or resolution date'),
72
- filedDate: z.string().optional().describe('Date the enforcement case was filed'),
86
+ settlementDate: z
87
+ .string()
88
+ .optional()
89
+ .describe('Settlement or resolution date (MM/DD/YYYY)'),
90
+ filedDate: z
91
+ .string()
92
+ .optional()
93
+ .describe('Date the enforcement case was filed (MM/DD/YYYY) — the date the filing-date range bounds'),
73
94
  state: z
74
95
  .string()
75
96
  .optional()
@@ -83,6 +104,12 @@ export const searchViolationsTool = tool('epa_search_violations', {
83
104
  .optional()
84
105
  .describe('Recovery hint when no cases are found — echoes filters and suggests broadening. Absent when cases are returned.'),
85
106
  }),
107
+ enrichment: {
108
+ notice: z
109
+ .string()
110
+ .optional()
111
+ .describe('Present when a filing-date range with case_type "all" left criminal cases out of the results.'),
112
+ },
86
113
  errors: [
87
114
  {
88
115
  reason: 'no_geographic_filter',
@@ -90,20 +117,55 @@ export const searchViolationsTool = tool('epa_search_violations', {
90
117
  when: 'Neither state nor zip_code was provided.',
91
118
  recovery: 'Provide at least one of state or zip_code to scope the enforcement case search.',
92
119
  },
120
+ {
121
+ reason: 'invalid_date',
122
+ code: JsonRpcErrorCode.ValidationError,
123
+ when: 'date_filed_start or date_filed_end is not a real calendar date, such as 2024-02-30.',
124
+ recovery: 'Pass a real calendar date in YYYY-MM-DD form, such as 2024-02-29.',
125
+ },
126
+ {
127
+ reason: 'date_range_inverted',
128
+ code: JsonRpcErrorCode.ValidationError,
129
+ when: 'date_filed_start is later than date_filed_end.',
130
+ recovery: 'Swap the two dates so date_filed_start is on or before date_filed_end.',
131
+ },
132
+ {
133
+ reason: 'criminal_date_filter',
134
+ code: JsonRpcErrorCode.ValidationError,
135
+ when: 'case_type "criminal" was combined with a filing-date bound, which ECHO records for civil cases only.',
136
+ recovery: 'Drop date_filed_start and date_filed_end to search criminal cases, or set case_type to civil.',
137
+ },
93
138
  ],
94
139
  async handler(input, ctx) {
95
140
  if (!input.state?.trim() && !input.zip_code?.trim()) {
96
141
  throw ctx.fail('no_geographic_filter', 'At least one of state or zip_code is required to search enforcement cases.');
97
142
  }
143
+ const dateFiledStart = input.date_filed_start || undefined;
144
+ const dateFiledEnd = input.date_filed_end || undefined;
145
+ for (const [field, value] of [
146
+ ['date_filed_start', dateFiledStart],
147
+ ['date_filed_end', dateFiledEnd],
148
+ ]) {
149
+ if (value !== undefined && !isCalendarDate(value)) {
150
+ throw ctx.fail('invalid_date', `${field} "${value}" is not a calendar date.`, { field });
151
+ }
152
+ }
153
+ if (dateFiledStart && dateFiledEnd && dateFiledStart > dateFiledEnd) {
154
+ throw ctx.fail('date_range_inverted', `date_filed_start ${dateFiledStart} is after date_filed_end ${dateFiledEnd}.`);
155
+ }
156
+ const dated = dateFiledStart !== undefined || dateFiledEnd !== undefined;
157
+ if (dated && input.case_type === 'criminal') {
158
+ throw ctx.fail('criminal_date_filter', 'ECHO records filing dates for civil cases only, so a filing-date range cannot select criminal cases.');
159
+ }
98
160
  ctx.log.info('epa_search_violations', {
99
161
  state: input.state,
100
162
  program: input.program,
101
163
  caseType: input.case_type,
164
+ dateFiledStart,
165
+ dateFiledEnd,
102
166
  });
103
167
  const state = input.state?.trim();
104
168
  const zipCode = input.zip_code?.trim();
105
- const dateFiledStart = input.date_filed_start?.trim();
106
- const dateFiledEnd = input.date_filed_end?.trim();
107
169
  const { cases, totalCount } = await getEchoService().searchViolations({
108
170
  ...(state && { state }),
109
171
  ...(zipCode && { zipCode }),
@@ -114,6 +176,9 @@ export const searchViolationsTool = tool('epa_search_violations', {
114
176
  limit: input.limit,
115
177
  }, ctx);
116
178
  ctx.log.info('epa_search_violations completed', { count: cases.length, totalCount });
179
+ if (dated && input.case_type === 'all') {
180
+ ctx.enrich.notice('Criminal cases are excluded: ECHO records filing dates for civil cases only, so a filing-date range returns civil cases. Search case_type "criminal" without dates for criminal cases.');
181
+ }
117
182
  if (cases.length === 0) {
118
183
  const parts = [];
119
184
  if (input.state)
@@ -124,6 +189,10 @@ export const searchViolationsTool = tool('epa_search_violations', {
124
189
  parts.push(`program="${input.program}"`);
125
190
  if (input.case_type && input.case_type !== 'all')
126
191
  parts.push(`case_type="${input.case_type}"`);
192
+ if (dateFiledStart)
193
+ parts.push(`date_filed_start="${dateFiledStart}"`);
194
+ if (dateFiledEnd)
195
+ parts.push(`date_filed_end="${dateFiledEnd}"`);
127
196
  return {
128
197
  cases: [],
129
198
  totalCount: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"search-violations.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-violations.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search-violations.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-violations.tool.ts"],"names":[],"mappings":"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"}
@@ -34,5 +34,7 @@ export declare const searchWaterSystemsTool: import("@cyanheads/mcp-ts-core").To
34
34
  readonly code: JsonRpcErrorCode.ValidationError;
35
35
  readonly when: "Neither state nor zip_code was provided.";
36
36
  readonly recovery: "Provide at least one of state or zip_code to search drinking water systems.";
37
- }], undefined>;
37
+ }], {
38
+ readonly notice: z.ZodOptional<z.ZodString>;
39
+ }>;
38
40
  //# sourceMappingURL=search-water-systems.tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search-water-systems.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-water-systems.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAuJjC,CAAC"}
1
+ {"version":3,"file":"search-water-systems.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-water-systems.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmLjC,CAAC"}