@cyanheads/epa-mcp-server 0.1.5 → 0.2.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.
- package/CLAUDE.md +2 -2
- package/Dockerfile +10 -6
- package/LICENSE +201 -0
- package/README.md +7 -7
- package/changelog/0.2.x/0.2.0.md +21 -0
- package/changelog/0.2.x/0.2.1.md +31 -0
- package/dist/config/server-config.d.ts +1 -1
- package/dist/config/server-config.d.ts.map +1 -1
- package/dist/config/server-config.js +5 -3
- package/dist/config/server-config.js.map +1 -1
- package/dist/index.js +23 -9
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-air-quality.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-air-quality.tool.js +37 -35
- package/dist/mcp-server/tools/definitions/get-air-quality.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-tri-releases.tool.d.ts +4 -0
- package/dist/mcp-server/tools/definitions/get-tri-releases.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-tri-releases.tool.js +26 -2
- package/dist/mcp-server/tools/definitions/get-tri-releases.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/index.d.ts +318 -27
- package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/index.js +11 -2
- package/dist/mcp-server/tools/definitions/index.js.map +1 -1
- package/dist/mcp-server/tools/definitions/search-facilities.tool.d.ts +10 -2
- package/dist/mcp-server/tools/definitions/search-facilities.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-facilities.tool.js +47 -8
- package/dist/mcp-server/tools/definitions/search-facilities.tool.js.map +1 -1
- package/dist/services/airnow/airnow-service.d.ts.map +1 -1
- package/dist/services/airnow/airnow-service.js +10 -4
- package/dist/services/airnow/airnow-service.js.map +1 -1
- package/dist/services/dmap/dmap-service.d.ts +10 -0
- package/dist/services/dmap/dmap-service.d.ts.map +1 -1
- package/dist/services/dmap/dmap-service.js +81 -5
- package/dist/services/dmap/dmap-service.js.map +1 -1
- package/dist/services/dmap/types.d.ts +36 -4
- package/dist/services/dmap/types.d.ts.map +1 -1
- package/dist/services/echo/echo-service.d.ts +3 -0
- package/dist/services/echo/echo-service.d.ts.map +1 -1
- package/dist/services/echo/echo-service.js +7 -0
- package/dist/services/echo/echo-service.js.map +1 -1
- package/package.json +5 -4
- package/server.json +7 -7
|
@@ -14,6 +14,10 @@ export declare const getTriReleasesTool: import("@cyanheads/mcp-ts-core").ToolDe
|
|
|
14
14
|
chemicalName: z.ZodString;
|
|
15
15
|
reportingYear: z.ZodNumber;
|
|
16
16
|
totalReleasesInLbs: z.ZodOptional<z.ZodNumber>;
|
|
17
|
+
releasesToAirInLbs: z.ZodOptional<z.ZodNumber>;
|
|
18
|
+
releasesToWaterInLbs: z.ZodOptional<z.ZodNumber>;
|
|
19
|
+
releasesToLandInLbs: z.ZodOptional<z.ZodNumber>;
|
|
20
|
+
releasesToUndergroundInjectionInLbs: z.ZodOptional<z.ZodNumber>;
|
|
17
21
|
}, z.core.$strip>>;
|
|
18
22
|
facilityId: z.ZodString;
|
|
19
23
|
message: z.ZodOptional<z.ZodString>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-tri-releases.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-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,kBAAkB
|
|
1
|
+
{"version":3,"file":"get-tri-releases.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-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,kBAAkB;;;;;;;;;;;;;;;;;;;;;;cAgJ7B,CAAC"}
|
|
@@ -36,7 +36,23 @@ export const getTriReleasesTool = tool('epa_get_tri_releases', {
|
|
|
36
36
|
totalReleasesInLbs: z
|
|
37
37
|
.number()
|
|
38
38
|
.optional()
|
|
39
|
-
.describe('
|
|
39
|
+
.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.'),
|
|
40
|
+
releasesToAirInLbs: z
|
|
41
|
+
.number()
|
|
42
|
+
.optional()
|
|
43
|
+
.describe('On-site routine air releases (fugitive + stack emissions) in pounds, summed across air release types for this submission.'),
|
|
44
|
+
releasesToWaterInLbs: z
|
|
45
|
+
.number()
|
|
46
|
+
.optional()
|
|
47
|
+
.describe('On-site routine releases to surface water in pounds, summed across all reported outfalls for this submission.'),
|
|
48
|
+
releasesToLandInLbs: z
|
|
49
|
+
.number()
|
|
50
|
+
.optional()
|
|
51
|
+
.describe('On-site routine land releases in pounds — landfills, land treatment, surface impoundment, and other on-site disposal, summed for this submission.'),
|
|
52
|
+
releasesToUndergroundInjectionInLbs: z
|
|
53
|
+
.number()
|
|
54
|
+
.optional()
|
|
55
|
+
.describe('On-site routine releases via underground injection wells in pounds, summed across injection well classes for this submission.'),
|
|
40
56
|
})
|
|
41
57
|
.describe('Per-chemical TRI release record for this facility and year'))
|
|
42
58
|
.describe('Per-chemical annual TRI release records for the queried facility'),
|
|
@@ -83,8 +99,16 @@ export const getTriReleasesTool = tool('epa_get_tri_releases', {
|
|
|
83
99
|
for (const r of result.releases) {
|
|
84
100
|
lines.push(`\n### ${r.chemicalName} (${r.reportingYear})`);
|
|
85
101
|
lines.push(`**Facility ID:** ${r.facilityId}`);
|
|
102
|
+
if (r.releasesToAirInLbs !== undefined)
|
|
103
|
+
lines.push(`**Air Releases:** ${r.releasesToAirInLbs.toLocaleString()} lbs`);
|
|
104
|
+
if (r.releasesToWaterInLbs !== undefined)
|
|
105
|
+
lines.push(`**Water Releases:** ${r.releasesToWaterInLbs.toLocaleString()} lbs`);
|
|
106
|
+
if (r.releasesToLandInLbs !== undefined)
|
|
107
|
+
lines.push(`**Land Releases:** ${r.releasesToLandInLbs.toLocaleString()} lbs`);
|
|
108
|
+
if (r.releasesToUndergroundInjectionInLbs !== undefined)
|
|
109
|
+
lines.push(`**Underground Injection:** ${r.releasesToUndergroundInjectionInLbs.toLocaleString()} lbs`);
|
|
86
110
|
if (r.totalReleasesInLbs !== undefined)
|
|
87
|
-
lines.push(`**Release
|
|
111
|
+
lines.push(`**One-Time / Non-Routine Release:** ${r.totalReleasesInLbs.toLocaleString()} lbs`);
|
|
88
112
|
}
|
|
89
113
|
return [{ type: 'text', text: lines.join('\n') }];
|
|
90
114
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-tri-releases.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-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,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,EAAE;IAC7D,KAAK,EAAE,wCAAwC;IAC/C,WAAW,EACT,obAAob;IACtb,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;IAE9E,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,WAAW,EAAE,CAAC;aACX,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CAAC,+EAA+E,CAAC;QAC5F,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,0IAA0I,CAC3I;QACH,aAAa,EAAE,CAAC;aACb,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,8FAA8F,CAC/F;KACJ,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,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,+
|
|
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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"}
|
|
@@ -10,10 +10,17 @@ export { searchSuperfundTool } from './search-superfund.tool.js';
|
|
|
10
10
|
export { searchTriReleasesTool } from './search-tri-releases.tool.js';
|
|
11
11
|
export { searchViolationsTool } from './search-violations.tool.js';
|
|
12
12
|
export { searchWaterSystemsTool } from './search-water-systems.tool.js';
|
|
13
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Tools backed only by keyless public APIs (ECHO, DMAP). Always registered —
|
|
15
|
+
* these require no API key.
|
|
16
|
+
*/
|
|
17
|
+
export declare const coreToolDefinitions: readonly [import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
14
18
|
zip_code: import("zod").ZodOptional<import("zod").ZodString>;
|
|
15
19
|
state: import("zod").ZodOptional<import("zod").ZodString>;
|
|
16
20
|
city: import("zod").ZodOptional<import("zod").ZodString>;
|
|
21
|
+
latitude: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
22
|
+
longitude: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
23
|
+
radius_miles: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
17
24
|
active_only: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
18
25
|
programs: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodEnum<{
|
|
19
26
|
CAA: "CAA";
|
|
@@ -53,8 +60,13 @@ export declare const allToolDefinitions: readonly [import("@cyanheads/mcp-ts-cor
|
|
|
53
60
|
}, import("zod/v4/core").$strip>, readonly [{
|
|
54
61
|
readonly reason: "no_geographic_filter";
|
|
55
62
|
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
56
|
-
readonly when: "No geographic filter (zip_code, state, or
|
|
57
|
-
readonly recovery: "Provide at least one of zip_code, state, or city to scope the search.";
|
|
63
|
+
readonly when: "No geographic filter (zip_code, state, city, or a latitude+longitude+radius_miles triple) was provided.";
|
|
64
|
+
readonly recovery: "Provide at least one of zip_code, state, or city, or a complete latitude + longitude + radius_miles triple, to scope the search.";
|
|
65
|
+
}, {
|
|
66
|
+
readonly reason: "incomplete_proximity";
|
|
67
|
+
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
68
|
+
readonly when: "A proximity search was started but latitude, longitude, and radius_miles were not all provided.";
|
|
69
|
+
readonly recovery: "Proximity search needs all three of latitude, longitude, and radius_miles. Provide the missing value, or use zip_code / state / city instead.";
|
|
58
70
|
}, {
|
|
59
71
|
readonly reason: "no_match";
|
|
60
72
|
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
@@ -154,43 +166,280 @@ export declare const allToolDefinitions: readonly [import("@cyanheads/mcp-ts-cor
|
|
|
154
166
|
readonly when: "Neither state nor zip_code was provided.";
|
|
155
167
|
readonly recovery: "Provide at least one of state or zip_code to scope the enforcement case search.";
|
|
156
168
|
}], undefined>, import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
169
|
+
facility_id: import("zod").ZodString;
|
|
170
|
+
year: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
171
|
+
chemical_name: import("zod").ZodOptional<import("zod").ZodString>;
|
|
172
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
173
|
+
releases: import("zod").ZodArray<import("zod").ZodObject<{
|
|
174
|
+
facilityId: import("zod").ZodString;
|
|
175
|
+
chemicalName: import("zod").ZodString;
|
|
176
|
+
reportingYear: import("zod").ZodNumber;
|
|
177
|
+
totalReleasesInLbs: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
178
|
+
releasesToAirInLbs: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
179
|
+
releasesToWaterInLbs: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
180
|
+
releasesToLandInLbs: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
181
|
+
releasesToUndergroundInjectionInLbs: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
182
|
+
}, import("zod/v4/core").$strip>>;
|
|
183
|
+
facilityId: import("zod").ZodString;
|
|
184
|
+
message: import("zod").ZodOptional<import("zod").ZodString>;
|
|
185
|
+
}, import("zod/v4/core").$strip>, readonly [{
|
|
186
|
+
readonly reason: "no_releases_found";
|
|
187
|
+
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
188
|
+
readonly when: "No TRI records found for the given facility ID and filters.";
|
|
189
|
+
readonly recovery: "Verify the facility ID via epa_search_facilities. TRI data lags 18 months — try an earlier year.";
|
|
190
|
+
}], undefined>, import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
191
|
+
state: import("zod").ZodString;
|
|
192
|
+
county: import("zod").ZodOptional<import("zod").ZodString>;
|
|
193
|
+
year: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
194
|
+
chemical_name: import("zod").ZodOptional<import("zod").ZodString>;
|
|
195
|
+
limit: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
196
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
197
|
+
releases: import("zod").ZodArray<import("zod").ZodObject<{
|
|
198
|
+
facilityId: import("zod").ZodString;
|
|
199
|
+
facilityName: import("zod").ZodOptional<import("zod").ZodString>;
|
|
200
|
+
chemicalName: import("zod").ZodString;
|
|
201
|
+
reportingYear: import("zod").ZodNumber;
|
|
202
|
+
totalReleasesInLbs: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
203
|
+
}, import("zod/v4/core").$strip>>;
|
|
204
|
+
state: import("zod").ZodString;
|
|
205
|
+
message: import("zod").ZodOptional<import("zod").ZodString>;
|
|
206
|
+
}, import("zod/v4/core").$strip>, readonly [{
|
|
207
|
+
readonly reason: "no_releases_found";
|
|
208
|
+
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
209
|
+
readonly when: "No TRI records found for the given state and filters.";
|
|
210
|
+
readonly recovery: "Verify the state abbreviation is valid. TRI data lags 18 months — try removing the year filter or using an earlier year.";
|
|
211
|
+
}], {
|
|
212
|
+
readonly truncated: import("zod").ZodBoolean;
|
|
213
|
+
readonly shown: import("zod").ZodNumber;
|
|
214
|
+
readonly cap: import("zod").ZodNumber;
|
|
215
|
+
}>, import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
216
|
+
state: import("zod").ZodOptional<import("zod").ZodString>;
|
|
217
|
+
city: import("zod").ZodOptional<import("zod").ZodString>;
|
|
157
218
|
zip_code: import("zod").ZodOptional<import("zod").ZodString>;
|
|
158
219
|
latitude: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
159
220
|
longitude: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
221
|
+
radius_miles: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
222
|
+
npl_status: import("zod").ZodDefault<import("zod").ZodEnum<{
|
|
223
|
+
all: "all";
|
|
224
|
+
listed: "listed";
|
|
225
|
+
"not-listed": "not-listed";
|
|
226
|
+
proposed: "proposed";
|
|
163
227
|
}>>;
|
|
164
|
-
|
|
165
|
-
distance_miles: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
228
|
+
limit: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
166
229
|
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
230
|
+
sites: import("zod").ZodArray<import("zod").ZodObject<{
|
|
231
|
+
siteId: import("zod").ZodString;
|
|
232
|
+
name: import("zod").ZodString;
|
|
233
|
+
street: import("zod").ZodOptional<import("zod").ZodString>;
|
|
234
|
+
city: import("zod").ZodOptional<import("zod").ZodString>;
|
|
235
|
+
state: import("zod").ZodOptional<import("zod").ZodString>;
|
|
236
|
+
zip: import("zod").ZodOptional<import("zod").ZodString>;
|
|
237
|
+
county: import("zod").ZodOptional<import("zod").ZodString>;
|
|
238
|
+
fipsCode: import("zod").ZodOptional<import("zod").ZodString>;
|
|
239
|
+
nplStatus: import("zod").ZodOptional<import("zod").ZodString>;
|
|
240
|
+
cleanupStatus: import("zod").ZodOptional<import("zod").ZodString>;
|
|
170
241
|
latitude: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
171
242
|
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
243
|
}, import("zod/v4/core").$strip>>;
|
|
182
|
-
|
|
244
|
+
totalCount: import("zod").ZodNumber;
|
|
183
245
|
message: import("zod").ZodOptional<import("zod").ZodString>;
|
|
184
246
|
}, import("zod/v4/core").$strip>, readonly [{
|
|
185
|
-
readonly reason: "
|
|
247
|
+
readonly reason: "no_location_filter";
|
|
186
248
|
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
187
|
-
readonly when: "
|
|
188
|
-
readonly recovery: "Provide
|
|
249
|
+
readonly when: "No location filter (state, city, zip_code, or latitude+longitude) was provided.";
|
|
250
|
+
readonly recovery: "Provide at least one location filter: state, city, zip_code, or latitude+longitude+radius_miles.";
|
|
189
251
|
}, {
|
|
190
|
-
readonly reason: "
|
|
252
|
+
readonly reason: "radius_required";
|
|
191
253
|
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
192
|
-
readonly when: "
|
|
193
|
-
readonly recovery: "Provide
|
|
254
|
+
readonly when: "Latitude and longitude were provided without radius_miles.";
|
|
255
|
+
readonly recovery: "Provide radius_miles together with latitude and longitude for a proximity search.";
|
|
256
|
+
}], undefined>, import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
257
|
+
state: import("zod").ZodOptional<import("zod").ZodString>;
|
|
258
|
+
zip_code: import("zod").ZodOptional<import("zod").ZodString>;
|
|
259
|
+
has_violation: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
260
|
+
pws_type: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
261
|
+
community: "community";
|
|
262
|
+
"non-transient": "non-transient";
|
|
263
|
+
transient: "transient";
|
|
264
|
+
}>>;
|
|
265
|
+
limit: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
266
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
267
|
+
systems: import("zod").ZodArray<import("zod").ZodObject<{
|
|
268
|
+
pwsid: import("zod").ZodString;
|
|
269
|
+
name: import("zod").ZodString;
|
|
270
|
+
state: import("zod").ZodOptional<import("zod").ZodString>;
|
|
271
|
+
city: import("zod").ZodOptional<import("zod").ZodString>;
|
|
272
|
+
zip: import("zod").ZodOptional<import("zod").ZodString>;
|
|
273
|
+
type: import("zod").ZodOptional<import("zod").ZodString>;
|
|
274
|
+
populationServed: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
275
|
+
primarySourceCode: import("zod").ZodOptional<import("zod").ZodString>;
|
|
276
|
+
hasViolation: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
277
|
+
isActive: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
278
|
+
}, import("zod/v4/core").$strip>>;
|
|
279
|
+
totalCount: import("zod").ZodNumber;
|
|
280
|
+
message: import("zod").ZodOptional<import("zod").ZodString>;
|
|
281
|
+
}, import("zod/v4/core").$strip>, readonly [{
|
|
282
|
+
readonly reason: "no_geographic_filter";
|
|
283
|
+
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
284
|
+
readonly when: "Neither state nor zip_code was provided.";
|
|
285
|
+
readonly recovery: "Provide at least one of state or zip_code to search drinking water systems.";
|
|
286
|
+
}], undefined>];
|
|
287
|
+
/**
|
|
288
|
+
* Full tool surface, adding epa_get_air_quality (requires AIRNOW_API_KEY).
|
|
289
|
+
* index.ts registers this set when the key is configured, falling back to
|
|
290
|
+
* coreToolDefinitions when it is absent.
|
|
291
|
+
*/
|
|
292
|
+
export declare const allToolDefinitions: readonly [import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
293
|
+
zip_code: import("zod").ZodOptional<import("zod").ZodString>;
|
|
294
|
+
state: import("zod").ZodOptional<import("zod").ZodString>;
|
|
295
|
+
city: import("zod").ZodOptional<import("zod").ZodString>;
|
|
296
|
+
latitude: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
297
|
+
longitude: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
298
|
+
radius_miles: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
299
|
+
active_only: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
300
|
+
programs: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodEnum<{
|
|
301
|
+
CAA: "CAA";
|
|
302
|
+
CWA: "CWA";
|
|
303
|
+
RCRA: "RCRA";
|
|
304
|
+
TRI: "TRI";
|
|
305
|
+
SDWA: "SDWA";
|
|
306
|
+
}>>>;
|
|
307
|
+
has_violation: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
308
|
+
limit: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
309
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
310
|
+
facilities: import("zod").ZodArray<import("zod").ZodObject<{
|
|
311
|
+
registryId: import("zod").ZodString;
|
|
312
|
+
name: import("zod").ZodString;
|
|
313
|
+
street: import("zod").ZodOptional<import("zod").ZodString>;
|
|
314
|
+
city: import("zod").ZodOptional<import("zod").ZodString>;
|
|
315
|
+
state: import("zod").ZodOptional<import("zod").ZodString>;
|
|
316
|
+
zip: import("zod").ZodOptional<import("zod").ZodString>;
|
|
317
|
+
county: import("zod").ZodOptional<import("zod").ZodString>;
|
|
318
|
+
fipsCode: import("zod").ZodOptional<import("zod").ZodString>;
|
|
319
|
+
latitude: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
320
|
+
longitude: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
321
|
+
complianceStatus: import("zod").ZodOptional<import("zod").ZodString>;
|
|
322
|
+
programs: import("zod").ZodObject<{
|
|
323
|
+
air: import("zod").ZodBoolean;
|
|
324
|
+
water: import("zod").ZodBoolean;
|
|
325
|
+
rcra: import("zod").ZodBoolean;
|
|
326
|
+
tri: import("zod").ZodBoolean;
|
|
327
|
+
sdwa: import("zod").ZodBoolean;
|
|
328
|
+
}, import("zod/v4/core").$strip>;
|
|
329
|
+
triReleasesTransfersInLbs: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
330
|
+
inspectionCount: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
331
|
+
totalPenaltiesInDollars: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
332
|
+
}, import("zod/v4/core").$strip>>;
|
|
333
|
+
totalCount: import("zod").ZodNumber;
|
|
334
|
+
message: import("zod").ZodOptional<import("zod").ZodString>;
|
|
335
|
+
}, import("zod/v4/core").$strip>, readonly [{
|
|
336
|
+
readonly reason: "no_geographic_filter";
|
|
337
|
+
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
338
|
+
readonly when: "No geographic filter (zip_code, state, city, or a latitude+longitude+radius_miles triple) was provided.";
|
|
339
|
+
readonly recovery: "Provide at least one of zip_code, state, or city, or a complete latitude + longitude + radius_miles triple, to scope the search.";
|
|
340
|
+
}, {
|
|
341
|
+
readonly reason: "incomplete_proximity";
|
|
342
|
+
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
343
|
+
readonly when: "A proximity search was started but latitude, longitude, and radius_miles were not all provided.";
|
|
344
|
+
readonly recovery: "Proximity search needs all three of latitude, longitude, and radius_miles. Provide the missing value, or use zip_code / state / city instead.";
|
|
345
|
+
}, {
|
|
346
|
+
readonly reason: "no_match";
|
|
347
|
+
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
348
|
+
readonly when: "No facilities matched the search criteria.";
|
|
349
|
+
readonly recovery: "Broaden the search by removing filters or expanding the geographic area.";
|
|
350
|
+
}], undefined>, import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
351
|
+
registry_id: import("zod").ZodString;
|
|
352
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
353
|
+
registryId: import("zod").ZodString;
|
|
354
|
+
name: import("zod").ZodString;
|
|
355
|
+
street: import("zod").ZodOptional<import("zod").ZodString>;
|
|
356
|
+
city: import("zod").ZodOptional<import("zod").ZodString>;
|
|
357
|
+
state: import("zod").ZodOptional<import("zod").ZodString>;
|
|
358
|
+
zip: import("zod").ZodOptional<import("zod").ZodString>;
|
|
359
|
+
county: import("zod").ZodOptional<import("zod").ZodString>;
|
|
360
|
+
fipsCode: import("zod").ZodOptional<import("zod").ZodString>;
|
|
361
|
+
latitude: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
362
|
+
longitude: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
363
|
+
complianceStatus: import("zod").ZodOptional<import("zod").ZodString>;
|
|
364
|
+
programs: import("zod").ZodObject<{
|
|
365
|
+
air: import("zod").ZodBoolean;
|
|
366
|
+
water: import("zod").ZodBoolean;
|
|
367
|
+
rcra: import("zod").ZodBoolean;
|
|
368
|
+
tri: import("zod").ZodBoolean;
|
|
369
|
+
sdwa: import("zod").ZodBoolean;
|
|
370
|
+
}, import("zod/v4/core").$strip>;
|
|
371
|
+
triReleasesTransfersInLbs: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
372
|
+
compliance: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
373
|
+
mediaStatusCode: import("zod").ZodOptional<import("zod").ZodString>;
|
|
374
|
+
mediaStatusDescription: import("zod").ZodOptional<import("zod").ZodString>;
|
|
375
|
+
quartersInViolation: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
376
|
+
}, import("zod/v4/core").$strip>>;
|
|
377
|
+
inspections: import("zod").ZodArray<import("zod").ZodObject<{
|
|
378
|
+
activityType: import("zod").ZodOptional<import("zod").ZodString>;
|
|
379
|
+
activityDate: import("zod").ZodOptional<import("zod").ZodString>;
|
|
380
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
381
|
+
}, import("zod/v4/core").$strip>>;
|
|
382
|
+
formalActions: import("zod").ZodArray<import("zod").ZodObject<{
|
|
383
|
+
caseId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
384
|
+
settlementDate: import("zod").ZodOptional<import("zod").ZodString>;
|
|
385
|
+
penaltyAssessedInDollars: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
386
|
+
actionType: import("zod").ZodOptional<import("zod").ZodString>;
|
|
387
|
+
}, import("zod/v4/core").$strip>>;
|
|
388
|
+
airCompliance: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
389
|
+
programId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
390
|
+
status: import("zod").ZodOptional<import("zod").ZodString>;
|
|
391
|
+
statusDate: import("zod").ZodOptional<import("zod").ZodString>;
|
|
392
|
+
}, import("zod/v4/core").$strip>>;
|
|
393
|
+
waterCompliance: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
394
|
+
programId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
395
|
+
status: import("zod").ZodOptional<import("zod").ZodString>;
|
|
396
|
+
permitId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
397
|
+
}, import("zod/v4/core").$strip>>;
|
|
398
|
+
}, import("zod/v4/core").$strip>, readonly [{
|
|
399
|
+
readonly reason: "facility_not_found";
|
|
400
|
+
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
401
|
+
readonly when: "ECHO returned no facility record for the given Registry ID.";
|
|
402
|
+
readonly recovery: "Verify the Registry ID using epa_search_facilities and retry with a valid ID.";
|
|
403
|
+
}], undefined>, import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
404
|
+
state: import("zod").ZodOptional<import("zod").ZodString>;
|
|
405
|
+
zip_code: import("zod").ZodOptional<import("zod").ZodString>;
|
|
406
|
+
program: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
407
|
+
CAA: "CAA";
|
|
408
|
+
CWA: "CWA";
|
|
409
|
+
RCRA: "RCRA";
|
|
410
|
+
SDWA: "SDWA";
|
|
411
|
+
CERCLA: "CERCLA";
|
|
412
|
+
FIFRA: "FIFRA";
|
|
413
|
+
TSCA: "TSCA";
|
|
414
|
+
}>>;
|
|
415
|
+
case_type: import("zod").ZodDefault<import("zod").ZodEnum<{
|
|
416
|
+
all: "all";
|
|
417
|
+
criminal: "criminal";
|
|
418
|
+
civil: "civil";
|
|
419
|
+
}>>;
|
|
420
|
+
date_filed_start: import("zod").ZodOptional<import("zod").ZodString>;
|
|
421
|
+
date_filed_end: import("zod").ZodOptional<import("zod").ZodString>;
|
|
422
|
+
limit: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
423
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
424
|
+
cases: import("zod").ZodArray<import("zod").ZodObject<{
|
|
425
|
+
caseId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
426
|
+
caseName: import("zod").ZodOptional<import("zod").ZodString>;
|
|
427
|
+
facilityName: import("zod").ZodOptional<import("zod").ZodString>;
|
|
428
|
+
registryId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
429
|
+
programsViolated: import("zod").ZodOptional<import("zod").ZodString>;
|
|
430
|
+
caseType: import("zod").ZodOptional<import("zod").ZodString>;
|
|
431
|
+
penaltyAssessedInDollars: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
432
|
+
settlementDate: import("zod").ZodOptional<import("zod").ZodString>;
|
|
433
|
+
filedDate: import("zod").ZodOptional<import("zod").ZodString>;
|
|
434
|
+
state: import("zod").ZodOptional<import("zod").ZodString>;
|
|
435
|
+
}, import("zod/v4/core").$strip>>;
|
|
436
|
+
totalCount: import("zod").ZodNumber;
|
|
437
|
+
message: import("zod").ZodOptional<import("zod").ZodString>;
|
|
438
|
+
}, import("zod/v4/core").$strip>, readonly [{
|
|
439
|
+
readonly reason: "no_geographic_filter";
|
|
440
|
+
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
441
|
+
readonly when: "Neither state nor zip_code was provided.";
|
|
442
|
+
readonly recovery: "Provide at least one of state or zip_code to scope the enforcement case search.";
|
|
194
443
|
}], undefined>, import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
195
444
|
facility_id: import("zod").ZodString;
|
|
196
445
|
year: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
@@ -201,6 +450,10 @@ export declare const allToolDefinitions: readonly [import("@cyanheads/mcp-ts-cor
|
|
|
201
450
|
chemicalName: import("zod").ZodString;
|
|
202
451
|
reportingYear: import("zod").ZodNumber;
|
|
203
452
|
totalReleasesInLbs: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
453
|
+
releasesToAirInLbs: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
454
|
+
releasesToWaterInLbs: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
455
|
+
releasesToLandInLbs: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
456
|
+
releasesToUndergroundInjectionInLbs: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
204
457
|
}, import("zod/v4/core").$strip>>;
|
|
205
458
|
facilityId: import("zod").ZodString;
|
|
206
459
|
message: import("zod").ZodOptional<import("zod").ZodString>;
|
|
@@ -305,5 +558,43 @@ export declare const allToolDefinitions: readonly [import("@cyanheads/mcp-ts-cor
|
|
|
305
558
|
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
306
559
|
readonly when: "Neither state nor zip_code was provided.";
|
|
307
560
|
readonly recovery: "Provide at least one of state or zip_code to search drinking water systems.";
|
|
561
|
+
}], undefined>, import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
562
|
+
zip_code: import("zod").ZodOptional<import("zod").ZodString>;
|
|
563
|
+
latitude: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
564
|
+
longitude: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
565
|
+
mode: import("zod").ZodDefault<import("zod").ZodEnum<{
|
|
566
|
+
current: "current";
|
|
567
|
+
forecast: "forecast";
|
|
568
|
+
}>>;
|
|
569
|
+
forecast_date: import("zod").ZodOptional<import("zod").ZodString>;
|
|
570
|
+
distance_miles: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
571
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
572
|
+
observations: import("zod").ZodArray<import("zod").ZodObject<{
|
|
573
|
+
reportingArea: import("zod").ZodOptional<import("zod").ZodString>;
|
|
574
|
+
stateCode: import("zod").ZodOptional<import("zod").ZodString>;
|
|
575
|
+
latitude: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
576
|
+
longitude: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
577
|
+
dateObserved: import("zod").ZodOptional<import("zod").ZodString>;
|
|
578
|
+
hourObserved: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
579
|
+
localTimeZone: import("zod").ZodOptional<import("zod").ZodString>;
|
|
580
|
+
readings: import("zod").ZodArray<import("zod").ZodObject<{
|
|
581
|
+
parameterName: import("zod").ZodString;
|
|
582
|
+
aqi: import("zod").ZodNumber;
|
|
583
|
+
categoryNumber: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
584
|
+
categoryName: import("zod").ZodOptional<import("zod").ZodString>;
|
|
585
|
+
}, import("zod/v4/core").$strip>>;
|
|
586
|
+
}, import("zod/v4/core").$strip>>;
|
|
587
|
+
mode: import("zod").ZodString;
|
|
588
|
+
message: import("zod").ZodOptional<import("zod").ZodString>;
|
|
589
|
+
}, import("zod/v4/core").$strip>, readonly [{
|
|
590
|
+
readonly reason: "no_location";
|
|
591
|
+
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
592
|
+
readonly when: "Neither zip_code nor latitude+longitude was provided.";
|
|
593
|
+
readonly recovery: "Provide either zip_code or both latitude and longitude to identify the location.";
|
|
594
|
+
}, {
|
|
595
|
+
readonly reason: "forecast_date_required";
|
|
596
|
+
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
597
|
+
readonly when: "Mode is \"forecast\" but forecast_date was not provided.";
|
|
598
|
+
readonly recovery: "Provide forecast_date as YYYY-MM-DD when using mode=\"forecast\".";
|
|
308
599
|
}], undefined>];
|
|
309
600
|
//# 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;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
|
|
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;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAQtB,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAAuD,CAAC"}
|
|
@@ -18,14 +18,23 @@ import { searchSuperfundTool } from './search-superfund.tool.js';
|
|
|
18
18
|
import { searchTriReleasesTool } from './search-tri-releases.tool.js';
|
|
19
19
|
import { searchViolationsTool } from './search-violations.tool.js';
|
|
20
20
|
import { searchWaterSystemsTool } from './search-water-systems.tool.js';
|
|
21
|
-
|
|
21
|
+
/**
|
|
22
|
+
* Tools backed only by keyless public APIs (ECHO, DMAP). Always registered —
|
|
23
|
+
* these require no API key.
|
|
24
|
+
*/
|
|
25
|
+
export const coreToolDefinitions = [
|
|
22
26
|
searchFacilitiesTool,
|
|
23
27
|
getFacilityTool,
|
|
24
28
|
searchViolationsTool,
|
|
25
|
-
getAirQualityTool,
|
|
26
29
|
getTriReleasesTool,
|
|
27
30
|
searchTriReleasesTool,
|
|
28
31
|
searchSuperfundTool,
|
|
29
32
|
searchWaterSystemsTool,
|
|
30
33
|
];
|
|
34
|
+
/**
|
|
35
|
+
* Full tool surface, adding epa_get_air_quality (requires AIRNOW_API_KEY).
|
|
36
|
+
* index.ts registers this set when the key is configured, falling back to
|
|
37
|
+
* coreToolDefinitions when it is absent.
|
|
38
|
+
*/
|
|
39
|
+
export const allToolDefinitions = [...coreToolDefinitions, getAirQualityTool];
|
|
31
40
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +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,
|
|
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;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,oBAAoB;IACpB,eAAe;IACf,oBAAoB;IACpB,kBAAkB;IAClB,qBAAqB;IACrB,mBAAmB;IACnB,sBAAsB;CACd,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAG,mBAAmB,EAAE,iBAAiB,CAAU,CAAC"}
|
|
@@ -8,6 +8,9 @@ export declare const searchFacilitiesTool: import("@cyanheads/mcp-ts-core").Tool
|
|
|
8
8
|
zip_code: z.ZodOptional<z.ZodString>;
|
|
9
9
|
state: z.ZodOptional<z.ZodString>;
|
|
10
10
|
city: z.ZodOptional<z.ZodString>;
|
|
11
|
+
latitude: z.ZodOptional<z.ZodNumber>;
|
|
12
|
+
longitude: z.ZodOptional<z.ZodNumber>;
|
|
13
|
+
radius_miles: z.ZodOptional<z.ZodNumber>;
|
|
11
14
|
active_only: z.ZodOptional<z.ZodBoolean>;
|
|
12
15
|
programs: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
13
16
|
CAA: "CAA";
|
|
@@ -47,8 +50,13 @@ export declare const searchFacilitiesTool: import("@cyanheads/mcp-ts-core").Tool
|
|
|
47
50
|
}, z.core.$strip>, readonly [{
|
|
48
51
|
readonly reason: "no_geographic_filter";
|
|
49
52
|
readonly code: JsonRpcErrorCode.ValidationError;
|
|
50
|
-
readonly when: "No geographic filter (zip_code, state, or
|
|
51
|
-
readonly recovery: "Provide at least one of zip_code, state, or city to scope the search.";
|
|
53
|
+
readonly when: "No geographic filter (zip_code, state, city, or a latitude+longitude+radius_miles triple) was provided.";
|
|
54
|
+
readonly recovery: "Provide at least one of zip_code, state, or city, or a complete latitude + longitude + radius_miles triple, to scope the search.";
|
|
55
|
+
}, {
|
|
56
|
+
readonly reason: "incomplete_proximity";
|
|
57
|
+
readonly code: JsonRpcErrorCode.ValidationError;
|
|
58
|
+
readonly when: "A proximity search was started but latitude, longitude, and radius_miles were not all provided.";
|
|
59
|
+
readonly recovery: "Proximity search needs all three of latitude, longitude, and radius_miles. Provide the missing value, or use zip_code / state / city instead.";
|
|
52
60
|
}, {
|
|
53
61
|
readonly reason: "no_match";
|
|
54
62
|
readonly code: JsonRpcErrorCode.NotFound;
|
|
@@ -1 +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
|
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA2P/B,CAAC"}
|