@cyanheads/epa-mcp-server 0.1.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/CLAUDE.md +405 -0
  2. package/Dockerfile +98 -0
  3. package/README.md +322 -0
  4. package/changelog/0.1.x/0.1.0.md +22 -0
  5. package/changelog/0.1.x/0.1.1.md +18 -0
  6. package/changelog/template.md +119 -0
  7. package/dist/config/server-config.d.ts +15 -0
  8. package/dist/config/server-config.d.ts.map +1 -0
  9. package/dist/config/server-config.js +38 -0
  10. package/dist/config/server-config.js.map +1 -0
  11. package/dist/index.d.ts +7 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +28 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/mcp-server/resources/definitions/facility.resource.d.ts +9 -0
  16. package/dist/mcp-server/resources/definitions/facility.resource.d.ts.map +1 -0
  17. package/dist/mcp-server/resources/definitions/facility.resource.js +24 -0
  18. package/dist/mcp-server/resources/definitions/facility.resource.js.map +1 -0
  19. package/dist/mcp-server/resources/definitions/index.d.ts +12 -0
  20. package/dist/mcp-server/resources/definitions/index.d.ts.map +1 -0
  21. package/dist/mcp-server/resources/definitions/index.js +10 -0
  22. package/dist/mcp-server/resources/definitions/index.js.map +1 -0
  23. package/dist/mcp-server/resources/definitions/superfund-site.resource.d.ts +9 -0
  24. package/dist/mcp-server/resources/definitions/superfund-site.resource.d.ts.map +1 -0
  25. package/dist/mcp-server/resources/definitions/superfund-site.resource.js +26 -0
  26. package/dist/mcp-server/resources/definitions/superfund-site.resource.js.map +1 -0
  27. package/dist/mcp-server/tools/definitions/get-air-quality.tool.d.ts +46 -0
  28. package/dist/mcp-server/tools/definitions/get-air-quality.tool.d.ts.map +1 -0
  29. package/dist/mcp-server/tools/definitions/get-air-quality.tool.js +193 -0
  30. package/dist/mcp-server/tools/definitions/get-air-quality.tool.js.map +1 -0
  31. package/dist/mcp-server/tools/definitions/get-facility.tool.d.ts +61 -0
  32. package/dist/mcp-server/tools/definitions/get-facility.tool.d.ts.map +1 -0
  33. package/dist/mcp-server/tools/definitions/get-facility.tool.js +193 -0
  34. package/dist/mcp-server/tools/definitions/get-facility.tool.js.map +1 -0
  35. package/dist/mcp-server/tools/definitions/get-tri-releases.tool.d.ts +26 -0
  36. package/dist/mcp-server/tools/definitions/get-tri-releases.tool.d.ts.map +1 -0
  37. package/dist/mcp-server/tools/definitions/get-tri-releases.tool.js +92 -0
  38. package/dist/mcp-server/tools/definitions/get-tri-releases.tool.js.map +1 -0
  39. package/dist/mcp-server/tools/definitions/index.d.ts +305 -0
  40. package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -0
  41. package/dist/mcp-server/tools/definitions/index.js +31 -0
  42. package/dist/mcp-server/tools/definitions/index.js.map +1 -0
  43. package/dist/mcp-server/tools/definitions/search-facilities.tool.d.ts +58 -0
  44. package/dist/mcp-server/tools/definitions/search-facilities.tool.d.ts.map +1 -0
  45. package/dist/mcp-server/tools/definitions/search-facilities.tool.js +182 -0
  46. package/dist/mcp-server/tools/definitions/search-facilities.tool.js.map +1 -0
  47. package/dist/mcp-server/tools/definitions/search-superfund.tool.d.ts +49 -0
  48. package/dist/mcp-server/tools/definitions/search-superfund.tool.d.ts.map +1 -0
  49. package/dist/mcp-server/tools/definitions/search-superfund.tool.js +155 -0
  50. package/dist/mcp-server/tools/definitions/search-superfund.tool.js.map +1 -0
  51. package/dist/mcp-server/tools/definitions/search-tri-releases.tool.d.ts +29 -0
  52. package/dist/mcp-server/tools/definitions/search-tri-releases.tool.d.ts.map +1 -0
  53. package/dist/mcp-server/tools/definitions/search-tri-releases.tool.js +113 -0
  54. package/dist/mcp-server/tools/definitions/search-tri-releases.tool.js.map +1 -0
  55. package/dist/mcp-server/tools/definitions/search-violations.tool.d.ts +48 -0
  56. package/dist/mcp-server/tools/definitions/search-violations.tool.d.ts.map +1 -0
  57. package/dist/mcp-server/tools/definitions/search-violations.tool.js +156 -0
  58. package/dist/mcp-server/tools/definitions/search-violations.tool.js.map +1 -0
  59. package/dist/mcp-server/tools/definitions/search-water-systems.tool.d.ts +38 -0
  60. package/dist/mcp-server/tools/definitions/search-water-systems.tool.d.ts.map +1 -0
  61. package/dist/mcp-server/tools/definitions/search-water-systems.tool.js +147 -0
  62. package/dist/mcp-server/tools/definitions/search-water-systems.tool.js.map +1 -0
  63. package/dist/services/airnow/airnow-service.d.ts +45 -0
  64. package/dist/services/airnow/airnow-service.d.ts.map +1 -0
  65. package/dist/services/airnow/airnow-service.js +160 -0
  66. package/dist/services/airnow/airnow-service.js.map +1 -0
  67. package/dist/services/airnow/types.d.ts +39 -0
  68. package/dist/services/airnow/types.d.ts.map +1 -0
  69. package/dist/services/airnow/types.js +6 -0
  70. package/dist/services/airnow/types.js.map +1 -0
  71. package/dist/services/dmap/dmap-service.d.ts +60 -0
  72. package/dist/services/dmap/dmap-service.d.ts.map +1 -0
  73. package/dist/services/dmap/dmap-service.js +320 -0
  74. package/dist/services/dmap/dmap-service.js.map +1 -0
  75. package/dist/services/dmap/types.d.ts +108 -0
  76. package/dist/services/dmap/types.d.ts.map +1 -0
  77. package/dist/services/dmap/types.js +6 -0
  78. package/dist/services/dmap/types.js.map +1 -0
  79. package/dist/services/echo/echo-service.d.ts +57 -0
  80. package/dist/services/echo/echo-service.d.ts.map +1 -0
  81. package/dist/services/echo/echo-service.js +295 -0
  82. package/dist/services/echo/echo-service.js.map +1 -0
  83. package/dist/services/echo/types.d.ts +198 -0
  84. package/dist/services/echo/types.d.ts.map +1 -0
  85. package/dist/services/echo/types.js +6 -0
  86. package/dist/services/echo/types.js.map +1 -0
  87. package/package.json +80 -0
  88. package/server.json +111 -0
@@ -0,0 +1,92 @@
1
+ /**
2
+ * @fileoverview Tool for querying TRI annual chemical release data for a specific facility.
3
+ * @module mcp-server/tools/definitions/get-tri-releases.tool
4
+ */
5
+ import { tool, z } from '@cyanheads/mcp-ts-core';
6
+ import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
7
+ import { getDmapService } from '../../../services/dmap/dmap-service.js';
8
+ export const getTriReleasesTool = tool('epa_get_tri_releases', {
9
+ title: 'Get TRI Chemical Releases for Facility',
10
+ description: 'Query Toxic Release Inventory annual chemical release data for a specific facility. Returns per-chemical release records with chemical name, total release quantity, and reporting year. TRI data lags ~18 months — the most recent available year is typically 2 years prior to the current calendar year. Obtain facility_id (TRI facility ID) from epa_search_facilities. Use epa_search_tri_releases to identify top emitters across a region.',
11
+ annotations: { readOnlyHint: true, openWorldHint: true, idempotentHint: true },
12
+ input: z.object({
13
+ facility_id: z
14
+ .string()
15
+ .min(1)
16
+ .describe('TRI facility ID (from the RegistryID field returned by epa_search_facilities)'),
17
+ year: z
18
+ .number()
19
+ .int()
20
+ .min(1987)
21
+ .max(2030)
22
+ .optional()
23
+ .describe('Reporting year to retrieve. Defaults to all available years. TRI data is typically available through ~2 years prior to the current year.'),
24
+ chemical_name: z
25
+ .string()
26
+ .optional()
27
+ .describe('Optional filter to restrict results to a specific chemical (partial match, case-insensitive)'),
28
+ }),
29
+ output: z.object({
30
+ releases: z
31
+ .array(z
32
+ .object({
33
+ facilityId: z.string().describe('TRI facility identifier'),
34
+ chemicalName: z.string().describe('Chemical name as reported to TRI'),
35
+ reportingYear: z.number().describe('Year of the TRI submission'),
36
+ totalReleasesInLbs: z
37
+ .number()
38
+ .optional()
39
+ .describe('One-time release quantity in pounds (from tri_reporting_form)'),
40
+ })
41
+ .describe('Per-chemical TRI release record for this facility and year'))
42
+ .describe('Per-chemical annual TRI release records for the queried facility'),
43
+ facilityId: z.string().describe('TRI facility ID queried'),
44
+ message: z
45
+ .string()
46
+ .optional()
47
+ .describe('Recovery hint when no releases are found — suggests alternative years or checking the facility ID. Absent when releases are returned.'),
48
+ }),
49
+ errors: [
50
+ {
51
+ reason: 'no_releases_found',
52
+ code: JsonRpcErrorCode.NotFound,
53
+ when: 'No TRI records found for the given facility ID and filters.',
54
+ recovery: 'Verify the facility ID via epa_search_facilities. TRI data lags 18 months — try an earlier year.',
55
+ },
56
+ ],
57
+ async handler(input, ctx) {
58
+ ctx.log.info('epa_get_tri_releases', { facilityId: input.facility_id, year: input.year });
59
+ const chemicalName = input.chemical_name?.trim();
60
+ const releases = await getDmapService().getTriReleases({
61
+ facilityId: input.facility_id.trim(),
62
+ ...(input.year !== undefined && { year: input.year }),
63
+ ...(chemicalName && { chemicalName }),
64
+ }, ctx);
65
+ ctx.log.info('epa_get_tri_releases completed', { count: releases.length });
66
+ if (releases.length === 0) {
67
+ const yearNote = input.year ? ` for year ${input.year}` : '';
68
+ const chemNote = input.chemical_name ? ` matching chemical "${input.chemical_name}"` : '';
69
+ return {
70
+ releases: [],
71
+ facilityId: input.facility_id,
72
+ message: `No TRI releases found for facility "${input.facility_id}"${yearNote}${chemNote}. TRI data lags ~18 months — try year ${new Date().getFullYear() - 2} or earlier. Verify the facility ID with epa_search_facilities.`,
73
+ };
74
+ }
75
+ return { releases, facilityId: input.facility_id };
76
+ },
77
+ format: (result) => {
78
+ const lines = [];
79
+ lines.push(`## TRI Chemical Releases — Facility ${result.facilityId}`);
80
+ lines.push(`**Records:** ${result.releases.length}`);
81
+ if (result.message)
82
+ lines.push(`\n> ${result.message}`);
83
+ for (const r of result.releases) {
84
+ lines.push(`\n### ${r.chemicalName} (${r.reportingYear})`);
85
+ lines.push(`**Facility ID:** ${r.facilityId}`);
86
+ if (r.totalReleasesInLbs !== undefined)
87
+ lines.push(`**Release Quantity:** ${r.totalReleasesInLbs.toLocaleString()} lbs`);
88
+ }
89
+ return [{ type: 'text', text: lines.join('\n') }];
90
+ },
91
+ });
92
+ //# sourceMappingURL=get-tri-releases.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-tri-releases.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-tri-releases.tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,305 @@
1
+ /**
2
+ * @fileoverview Barrel export for all EPA MCP server tool definitions.
3
+ * @module mcp-server/tools/definitions/index
4
+ */
5
+ export { getAirQualityTool } from './get-air-quality.tool.js';
6
+ export { getFacilityTool } from './get-facility.tool.js';
7
+ export { getTriReleasesTool } from './get-tri-releases.tool.js';
8
+ export { searchFacilitiesTool } from './search-facilities.tool.js';
9
+ export { searchSuperfundTool } from './search-superfund.tool.js';
10
+ export { searchTriReleasesTool } from './search-tri-releases.tool.js';
11
+ export { searchViolationsTool } from './search-violations.tool.js';
12
+ export { searchWaterSystemsTool } from './search-water-systems.tool.js';
13
+ export declare const allToolDefinitions: readonly [import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
14
+ zip_code: import("zod").ZodOptional<import("zod").ZodString>;
15
+ state: import("zod").ZodOptional<import("zod").ZodString>;
16
+ city: import("zod").ZodOptional<import("zod").ZodString>;
17
+ active_only: import("zod").ZodOptional<import("zod").ZodBoolean>;
18
+ programs: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodEnum<{
19
+ CAA: "CAA";
20
+ CWA: "CWA";
21
+ RCRA: "RCRA";
22
+ TRI: "TRI";
23
+ SDWA: "SDWA";
24
+ }>>>;
25
+ has_violation: import("zod").ZodOptional<import("zod").ZodBoolean>;
26
+ limit: import("zod").ZodDefault<import("zod").ZodNumber>;
27
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
28
+ facilities: import("zod").ZodArray<import("zod").ZodObject<{
29
+ registryId: import("zod").ZodString;
30
+ name: import("zod").ZodString;
31
+ street: import("zod").ZodOptional<import("zod").ZodString>;
32
+ city: import("zod").ZodOptional<import("zod").ZodString>;
33
+ state: import("zod").ZodOptional<import("zod").ZodString>;
34
+ zip: import("zod").ZodOptional<import("zod").ZodString>;
35
+ county: import("zod").ZodOptional<import("zod").ZodString>;
36
+ fipsCode: import("zod").ZodOptional<import("zod").ZodString>;
37
+ latitude: import("zod").ZodOptional<import("zod").ZodNumber>;
38
+ longitude: import("zod").ZodOptional<import("zod").ZodNumber>;
39
+ complianceStatus: import("zod").ZodOptional<import("zod").ZodString>;
40
+ programs: import("zod").ZodObject<{
41
+ air: import("zod").ZodBoolean;
42
+ water: import("zod").ZodBoolean;
43
+ rcra: import("zod").ZodBoolean;
44
+ tri: import("zod").ZodBoolean;
45
+ sdwa: import("zod").ZodBoolean;
46
+ }, import("zod/v4/core").$strip>;
47
+ triReleasesTransfersInLbs: import("zod").ZodOptional<import("zod").ZodNumber>;
48
+ inspectionCount: import("zod").ZodOptional<import("zod").ZodNumber>;
49
+ totalPenaltiesInDollars: import("zod").ZodOptional<import("zod").ZodNumber>;
50
+ }, import("zod/v4/core").$strip>>;
51
+ totalCount: import("zod").ZodNumber;
52
+ message: import("zod").ZodOptional<import("zod").ZodString>;
53
+ }, import("zod/v4/core").$strip>, readonly [{
54
+ readonly reason: "no_geographic_filter";
55
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.InvalidParams;
56
+ readonly when: "No geographic filter (zip_code, state, or city) was provided.";
57
+ readonly recovery: "Provide at least one of zip_code, state, or city to scope the search.";
58
+ }, {
59
+ readonly reason: "no_match";
60
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
61
+ readonly when: "No facilities matched the search criteria.";
62
+ readonly recovery: "Broaden the search by removing filters or expanding the geographic area.";
63
+ }]>, import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
64
+ registry_id: import("zod").ZodString;
65
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
66
+ registryId: import("zod").ZodString;
67
+ name: import("zod").ZodString;
68
+ street: import("zod").ZodOptional<import("zod").ZodString>;
69
+ city: import("zod").ZodOptional<import("zod").ZodString>;
70
+ state: import("zod").ZodOptional<import("zod").ZodString>;
71
+ zip: import("zod").ZodOptional<import("zod").ZodString>;
72
+ county: import("zod").ZodOptional<import("zod").ZodString>;
73
+ fipsCode: import("zod").ZodOptional<import("zod").ZodString>;
74
+ latitude: import("zod").ZodOptional<import("zod").ZodNumber>;
75
+ longitude: import("zod").ZodOptional<import("zod").ZodNumber>;
76
+ complianceStatus: import("zod").ZodOptional<import("zod").ZodString>;
77
+ programs: import("zod").ZodObject<{
78
+ air: import("zod").ZodBoolean;
79
+ water: import("zod").ZodBoolean;
80
+ rcra: import("zod").ZodBoolean;
81
+ tri: import("zod").ZodBoolean;
82
+ sdwa: import("zod").ZodBoolean;
83
+ }, import("zod/v4/core").$strip>;
84
+ triReleasesTransfersInLbs: import("zod").ZodOptional<import("zod").ZodNumber>;
85
+ compliance: import("zod").ZodOptional<import("zod").ZodObject<{
86
+ mediaStatusCode: import("zod").ZodOptional<import("zod").ZodString>;
87
+ mediaStatusDescription: import("zod").ZodOptional<import("zod").ZodString>;
88
+ quartersInViolation: import("zod").ZodOptional<import("zod").ZodNumber>;
89
+ }, import("zod/v4/core").$strip>>;
90
+ inspections: import("zod").ZodArray<import("zod").ZodObject<{
91
+ activityType: import("zod").ZodOptional<import("zod").ZodString>;
92
+ activityDate: import("zod").ZodOptional<import("zod").ZodString>;
93
+ description: import("zod").ZodOptional<import("zod").ZodString>;
94
+ }, import("zod/v4/core").$strip>>;
95
+ formalActions: import("zod").ZodArray<import("zod").ZodObject<{
96
+ caseId: import("zod").ZodOptional<import("zod").ZodString>;
97
+ settlementDate: import("zod").ZodOptional<import("zod").ZodString>;
98
+ penaltyAssessedInDollars: import("zod").ZodOptional<import("zod").ZodNumber>;
99
+ actionType: import("zod").ZodOptional<import("zod").ZodString>;
100
+ }, import("zod/v4/core").$strip>>;
101
+ airCompliance: import("zod").ZodOptional<import("zod").ZodObject<{
102
+ programId: import("zod").ZodOptional<import("zod").ZodString>;
103
+ status: import("zod").ZodOptional<import("zod").ZodString>;
104
+ statusDate: import("zod").ZodOptional<import("zod").ZodString>;
105
+ }, import("zod/v4/core").$strip>>;
106
+ waterCompliance: import("zod").ZodOptional<import("zod").ZodObject<{
107
+ programId: import("zod").ZodOptional<import("zod").ZodString>;
108
+ status: import("zod").ZodOptional<import("zod").ZodString>;
109
+ permitId: import("zod").ZodOptional<import("zod").ZodString>;
110
+ }, import("zod/v4/core").$strip>>;
111
+ }, import("zod/v4/core").$strip>, readonly [{
112
+ readonly reason: "facility_not_found";
113
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
114
+ readonly when: "ECHO returned no facility record for the given Registry ID.";
115
+ readonly recovery: "Verify the Registry ID using epa_search_facilities and retry with a valid ID.";
116
+ }]>, import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
117
+ state: import("zod").ZodOptional<import("zod").ZodString>;
118
+ zip_code: import("zod").ZodOptional<import("zod").ZodString>;
119
+ program: import("zod").ZodOptional<import("zod").ZodEnum<{
120
+ CAA: "CAA";
121
+ CWA: "CWA";
122
+ RCRA: "RCRA";
123
+ SDWA: "SDWA";
124
+ CERCLA: "CERCLA";
125
+ FIFRA: "FIFRA";
126
+ TSCA: "TSCA";
127
+ }>>;
128
+ case_type: import("zod").ZodDefault<import("zod").ZodEnum<{
129
+ all: "all";
130
+ criminal: "criminal";
131
+ civil: "civil";
132
+ }>>;
133
+ date_filed_start: import("zod").ZodOptional<import("zod").ZodString>;
134
+ date_filed_end: import("zod").ZodOptional<import("zod").ZodString>;
135
+ limit: import("zod").ZodDefault<import("zod").ZodNumber>;
136
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
137
+ cases: import("zod").ZodArray<import("zod").ZodObject<{
138
+ caseId: import("zod").ZodOptional<import("zod").ZodString>;
139
+ caseName: import("zod").ZodOptional<import("zod").ZodString>;
140
+ facilityName: import("zod").ZodOptional<import("zod").ZodString>;
141
+ registryId: import("zod").ZodOptional<import("zod").ZodString>;
142
+ programsViolated: import("zod").ZodOptional<import("zod").ZodString>;
143
+ caseType: import("zod").ZodOptional<import("zod").ZodString>;
144
+ penaltyAssessedInDollars: import("zod").ZodOptional<import("zod").ZodNumber>;
145
+ settlementDate: import("zod").ZodOptional<import("zod").ZodString>;
146
+ filedDate: import("zod").ZodOptional<import("zod").ZodString>;
147
+ state: import("zod").ZodOptional<import("zod").ZodString>;
148
+ }, import("zod/v4/core").$strip>>;
149
+ totalCount: import("zod").ZodNumber;
150
+ message: import("zod").ZodOptional<import("zod").ZodString>;
151
+ }, import("zod/v4/core").$strip>, readonly [{
152
+ readonly reason: "no_geographic_filter";
153
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.InvalidParams;
154
+ readonly when: "Neither state nor zip_code was provided.";
155
+ readonly recovery: "Provide at least one of state or zip_code to scope the enforcement case search.";
156
+ }]>, import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
157
+ zip_code: import("zod").ZodOptional<import("zod").ZodString>;
158
+ latitude: import("zod").ZodOptional<import("zod").ZodNumber>;
159
+ longitude: import("zod").ZodOptional<import("zod").ZodNumber>;
160
+ mode: import("zod").ZodDefault<import("zod").ZodEnum<{
161
+ current: "current";
162
+ forecast: "forecast";
163
+ }>>;
164
+ forecast_date: import("zod").ZodOptional<import("zod").ZodString>;
165
+ distance_miles: import("zod").ZodDefault<import("zod").ZodNumber>;
166
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
167
+ observations: import("zod").ZodArray<import("zod").ZodObject<{
168
+ reportingArea: import("zod").ZodOptional<import("zod").ZodString>;
169
+ stateCode: import("zod").ZodOptional<import("zod").ZodString>;
170
+ latitude: import("zod").ZodOptional<import("zod").ZodNumber>;
171
+ longitude: import("zod").ZodOptional<import("zod").ZodNumber>;
172
+ dateObserved: import("zod").ZodOptional<import("zod").ZodString>;
173
+ hourObserved: import("zod").ZodOptional<import("zod").ZodNumber>;
174
+ localTimeZone: import("zod").ZodOptional<import("zod").ZodString>;
175
+ readings: import("zod").ZodArray<import("zod").ZodObject<{
176
+ parameterName: import("zod").ZodString;
177
+ aqi: import("zod").ZodNumber;
178
+ categoryNumber: import("zod").ZodOptional<import("zod").ZodNumber>;
179
+ categoryName: import("zod").ZodOptional<import("zod").ZodString>;
180
+ }, import("zod/v4/core").$strip>>;
181
+ }, import("zod/v4/core").$strip>>;
182
+ mode: import("zod").ZodString;
183
+ message: import("zod").ZodOptional<import("zod").ZodString>;
184
+ }, import("zod/v4/core").$strip>, readonly [{
185
+ readonly reason: "no_location";
186
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.InvalidParams;
187
+ readonly when: "Neither zip_code nor latitude+longitude was provided.";
188
+ readonly recovery: "Provide either zip_code or both latitude and longitude to identify the location.";
189
+ }, {
190
+ readonly reason: "forecast_date_required";
191
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.InvalidParams;
192
+ readonly when: "Mode is \"forecast\" but forecast_date was not provided.";
193
+ readonly recovery: "Provide forecast_date as YYYY-MM-DD when using mode=\"forecast\".";
194
+ }]>, import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
195
+ facility_id: import("zod").ZodString;
196
+ year: import("zod").ZodOptional<import("zod").ZodNumber>;
197
+ chemical_name: import("zod").ZodOptional<import("zod").ZodString>;
198
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
199
+ releases: import("zod").ZodArray<import("zod").ZodObject<{
200
+ facilityId: import("zod").ZodString;
201
+ chemicalName: import("zod").ZodString;
202
+ reportingYear: import("zod").ZodNumber;
203
+ totalReleasesInLbs: import("zod").ZodOptional<import("zod").ZodNumber>;
204
+ }, import("zod/v4/core").$strip>>;
205
+ facilityId: import("zod").ZodString;
206
+ message: import("zod").ZodOptional<import("zod").ZodString>;
207
+ }, import("zod/v4/core").$strip>, readonly [{
208
+ readonly reason: "no_releases_found";
209
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
210
+ readonly when: "No TRI records found for the given facility ID and filters.";
211
+ readonly recovery: "Verify the facility ID via epa_search_facilities. TRI data lags 18 months — try an earlier year.";
212
+ }]>, import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
213
+ state: import("zod").ZodString;
214
+ county: import("zod").ZodOptional<import("zod").ZodString>;
215
+ year: import("zod").ZodOptional<import("zod").ZodNumber>;
216
+ chemical_name: import("zod").ZodOptional<import("zod").ZodString>;
217
+ limit: import("zod").ZodDefault<import("zod").ZodNumber>;
218
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
219
+ releases: import("zod").ZodArray<import("zod").ZodObject<{
220
+ facilityId: import("zod").ZodString;
221
+ facilityName: import("zod").ZodOptional<import("zod").ZodString>;
222
+ chemicalName: import("zod").ZodString;
223
+ reportingYear: import("zod").ZodNumber;
224
+ totalReleasesInLbs: import("zod").ZodOptional<import("zod").ZodNumber>;
225
+ }, import("zod/v4/core").$strip>>;
226
+ state: import("zod").ZodString;
227
+ message: import("zod").ZodOptional<import("zod").ZodString>;
228
+ }, import("zod/v4/core").$strip>, readonly [{
229
+ readonly reason: "no_releases_found";
230
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
231
+ readonly when: "No TRI records found for the given state and filters.";
232
+ readonly recovery: "Verify the state abbreviation is valid. TRI data lags 18 months — try removing the year filter or using an earlier year.";
233
+ }]>, import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
234
+ state: import("zod").ZodOptional<import("zod").ZodString>;
235
+ city: import("zod").ZodOptional<import("zod").ZodString>;
236
+ zip_code: import("zod").ZodOptional<import("zod").ZodString>;
237
+ latitude: import("zod").ZodOptional<import("zod").ZodNumber>;
238
+ longitude: import("zod").ZodOptional<import("zod").ZodNumber>;
239
+ radius_miles: import("zod").ZodOptional<import("zod").ZodNumber>;
240
+ npl_status: import("zod").ZodDefault<import("zod").ZodEnum<{
241
+ all: "all";
242
+ listed: "listed";
243
+ "not-listed": "not-listed";
244
+ proposed: "proposed";
245
+ }>>;
246
+ limit: import("zod").ZodDefault<import("zod").ZodNumber>;
247
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
248
+ sites: import("zod").ZodArray<import("zod").ZodObject<{
249
+ siteId: import("zod").ZodString;
250
+ name: import("zod").ZodString;
251
+ street: import("zod").ZodOptional<import("zod").ZodString>;
252
+ city: import("zod").ZodOptional<import("zod").ZodString>;
253
+ state: import("zod").ZodOptional<import("zod").ZodString>;
254
+ zip: import("zod").ZodOptional<import("zod").ZodString>;
255
+ county: import("zod").ZodOptional<import("zod").ZodString>;
256
+ fipsCode: import("zod").ZodOptional<import("zod").ZodString>;
257
+ nplStatus: import("zod").ZodOptional<import("zod").ZodString>;
258
+ cleanupStatus: import("zod").ZodOptional<import("zod").ZodString>;
259
+ latitude: import("zod").ZodOptional<import("zod").ZodNumber>;
260
+ longitude: import("zod").ZodOptional<import("zod").ZodNumber>;
261
+ }, import("zod/v4/core").$strip>>;
262
+ totalCount: import("zod").ZodNumber;
263
+ message: import("zod").ZodOptional<import("zod").ZodString>;
264
+ }, import("zod/v4/core").$strip>, readonly [{
265
+ readonly reason: "no_location_filter";
266
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.InvalidParams;
267
+ readonly when: "No location filter (state, city, zip_code, or latitude+longitude) was provided.";
268
+ readonly recovery: "Provide at least one location filter: state, city, zip_code, or latitude+longitude+radius_miles.";
269
+ }, {
270
+ readonly reason: "radius_required";
271
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.InvalidParams;
272
+ readonly when: "Latitude and longitude were provided without radius_miles.";
273
+ readonly recovery: "Provide radius_miles together with latitude and longitude for a proximity search.";
274
+ }]>, import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
275
+ state: import("zod").ZodOptional<import("zod").ZodString>;
276
+ zip_code: import("zod").ZodOptional<import("zod").ZodString>;
277
+ has_violation: import("zod").ZodOptional<import("zod").ZodBoolean>;
278
+ pws_type: import("zod").ZodOptional<import("zod").ZodEnum<{
279
+ community: "community";
280
+ "non-transient": "non-transient";
281
+ transient: "transient";
282
+ }>>;
283
+ limit: import("zod").ZodDefault<import("zod").ZodNumber>;
284
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
285
+ systems: import("zod").ZodArray<import("zod").ZodObject<{
286
+ pwsid: import("zod").ZodString;
287
+ name: import("zod").ZodString;
288
+ state: import("zod").ZodOptional<import("zod").ZodString>;
289
+ city: import("zod").ZodOptional<import("zod").ZodString>;
290
+ zip: import("zod").ZodOptional<import("zod").ZodString>;
291
+ type: import("zod").ZodOptional<import("zod").ZodString>;
292
+ populationServed: import("zod").ZodOptional<import("zod").ZodNumber>;
293
+ primarySourceCode: import("zod").ZodOptional<import("zod").ZodString>;
294
+ hasViolation: import("zod").ZodOptional<import("zod").ZodBoolean>;
295
+ isActive: import("zod").ZodOptional<import("zod").ZodBoolean>;
296
+ }, import("zod/v4/core").$strip>>;
297
+ totalCount: import("zod").ZodNumber;
298
+ message: import("zod").ZodOptional<import("zod").ZodString>;
299
+ }, import("zod/v4/core").$strip>, readonly [{
300
+ readonly reason: "no_geographic_filter";
301
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.InvalidParams;
302
+ readonly when: "Neither state nor zip_code was provided.";
303
+ readonly recovery: "Provide at least one of state or zip_code to search drinking water systems.";
304
+ }]>];
305
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAWxE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IASrB,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @fileoverview Barrel export for all EPA MCP server tool definitions.
3
+ * @module mcp-server/tools/definitions/index
4
+ */
5
+ export { getAirQualityTool } from './get-air-quality.tool.js';
6
+ export { getFacilityTool } from './get-facility.tool.js';
7
+ export { getTriReleasesTool } from './get-tri-releases.tool.js';
8
+ export { searchFacilitiesTool } from './search-facilities.tool.js';
9
+ export { searchSuperfundTool } from './search-superfund.tool.js';
10
+ export { searchTriReleasesTool } from './search-tri-releases.tool.js';
11
+ export { searchViolationsTool } from './search-violations.tool.js';
12
+ export { searchWaterSystemsTool } from './search-water-systems.tool.js';
13
+ import { getAirQualityTool } from './get-air-quality.tool.js';
14
+ import { getFacilityTool } from './get-facility.tool.js';
15
+ import { getTriReleasesTool } from './get-tri-releases.tool.js';
16
+ import { searchFacilitiesTool } from './search-facilities.tool.js';
17
+ import { searchSuperfundTool } from './search-superfund.tool.js';
18
+ import { searchTriReleasesTool } from './search-tri-releases.tool.js';
19
+ import { searchViolationsTool } from './search-violations.tool.js';
20
+ import { searchWaterSystemsTool } from './search-water-systems.tool.js';
21
+ export const allToolDefinitions = [
22
+ searchFacilitiesTool,
23
+ getFacilityTool,
24
+ searchViolationsTool,
25
+ getAirQualityTool,
26
+ getTriReleasesTool,
27
+ searchTriReleasesTool,
28
+ searchSuperfundTool,
29
+ searchWaterSystemsTool,
30
+ ];
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAExE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAExE,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,oBAAoB;IACpB,eAAe;IACf,oBAAoB;IACpB,iBAAiB;IACjB,kBAAkB;IAClB,qBAAqB;IACrB,mBAAmB;IACnB,sBAAsB;CACd,CAAC"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * @fileoverview Tool for searching EPA-regulated facilities by location, industry, or compliance status.
3
+ * @module mcp-server/tools/definitions/search-facilities.tool
4
+ */
5
+ import { z } from '@cyanheads/mcp-ts-core';
6
+ import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
7
+ export declare const searchFacilitiesTool: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
8
+ zip_code: z.ZodOptional<z.ZodString>;
9
+ state: z.ZodOptional<z.ZodString>;
10
+ city: z.ZodOptional<z.ZodString>;
11
+ active_only: z.ZodOptional<z.ZodBoolean>;
12
+ programs: z.ZodOptional<z.ZodArray<z.ZodEnum<{
13
+ CAA: "CAA";
14
+ CWA: "CWA";
15
+ RCRA: "RCRA";
16
+ TRI: "TRI";
17
+ SDWA: "SDWA";
18
+ }>>>;
19
+ has_violation: z.ZodOptional<z.ZodBoolean>;
20
+ limit: z.ZodDefault<z.ZodNumber>;
21
+ }, z.core.$strip>, z.ZodObject<{
22
+ facilities: z.ZodArray<z.ZodObject<{
23
+ registryId: z.ZodString;
24
+ name: z.ZodString;
25
+ street: z.ZodOptional<z.ZodString>;
26
+ city: z.ZodOptional<z.ZodString>;
27
+ state: z.ZodOptional<z.ZodString>;
28
+ zip: z.ZodOptional<z.ZodString>;
29
+ county: z.ZodOptional<z.ZodString>;
30
+ fipsCode: z.ZodOptional<z.ZodString>;
31
+ latitude: z.ZodOptional<z.ZodNumber>;
32
+ longitude: z.ZodOptional<z.ZodNumber>;
33
+ complianceStatus: z.ZodOptional<z.ZodString>;
34
+ programs: z.ZodObject<{
35
+ air: z.ZodBoolean;
36
+ water: z.ZodBoolean;
37
+ rcra: z.ZodBoolean;
38
+ tri: z.ZodBoolean;
39
+ sdwa: z.ZodBoolean;
40
+ }, z.core.$strip>;
41
+ triReleasesTransfersInLbs: z.ZodOptional<z.ZodNumber>;
42
+ inspectionCount: z.ZodOptional<z.ZodNumber>;
43
+ totalPenaltiesInDollars: z.ZodOptional<z.ZodNumber>;
44
+ }, z.core.$strip>>;
45
+ totalCount: z.ZodNumber;
46
+ message: z.ZodOptional<z.ZodString>;
47
+ }, z.core.$strip>, readonly [{
48
+ readonly reason: "no_geographic_filter";
49
+ readonly code: JsonRpcErrorCode.InvalidParams;
50
+ readonly when: "No geographic filter (zip_code, state, or city) was provided.";
51
+ readonly recovery: "Provide at least one of zip_code, state, or city to scope the search.";
52
+ }, {
53
+ readonly reason: "no_match";
54
+ readonly code: JsonRpcErrorCode.NotFound;
55
+ readonly when: "No facilities matched the search criteria.";
56
+ readonly recovery: "Broaden the search by removing filters or expanding the geographic area.";
57
+ }]>;
58
+ //# sourceMappingURL=search-facilities.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-facilities.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-facilities.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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuM/B,CAAC"}