@cyanheads/epa-mcp-server 0.1.5 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +1 -1
- package/README.md +7 -7
- package/changelog/0.2.x/0.2.0.md +21 -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/index.d.ts +310 -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 +5 -0
- package/dist/services/airnow/airnow-service.js.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 +3 -3
- package/server.json +7 -7
package/CLAUDE.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** epa-mcp-server
|
|
4
|
-
**Version:** 0.
|
|
4
|
+
**Version:** 0.2.0
|
|
5
5
|
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.10.6`
|
|
6
6
|
**Engines:** Bun ≥1.3.0, Node ≥24.0.0
|
|
7
7
|
**MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
<div align="center">
|
|
9
9
|
|
|
10
|
-
[](./CHANGELOG.md) [](./LICENSE) [](https://github.com/users/cyanheads/packages/container/package/epa-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/epa-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/)
|
|
11
11
|
|
|
12
12
|
</div>
|
|
13
13
|
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
|
|
28
28
|
| Tool | Description |
|
|
29
29
|
|:---|:---|
|
|
30
|
-
| `epa_search_facilities` | Search EPA-regulated facilities by location, industry, or compliance status across all environmental programs (CAA, CWA, RCRA, TRI, SDWA). Returns facility name, EPA Registry ID, coordinates, county FIPS, per-program compliance flags, inspection counts, penalty totals, and TRI release totals. |
|
|
30
|
+
| `epa_search_facilities` | Search EPA-regulated facilities by location (ZIP, state, city, or latitude/longitude + radius proximity), industry, or compliance status across all environmental programs (CAA, CWA, RCRA, TRI, SDWA). Returns facility name, EPA Registry ID, coordinates, county FIPS, per-program compliance flags, inspection counts, penalty totals, and TRI release totals. |
|
|
31
31
|
| `epa_get_facility` | Retrieve a full compliance profile for a single EPA-regulated facility: compliance status per program, inspection dates, formal enforcement actions, penalty amounts, and TRI annual release totals. Aggregates multiple ECHO DFR endpoints in parallel. |
|
|
32
32
|
| `epa_search_violations` | Search EPA civil and criminal enforcement cases by state, regulatory program, or date range. Returns case identifier, facility name and Registry ID, programs involved, penalty assessed, settlement date, and case type. |
|
|
33
33
|
| `epa_get_air_quality` | Get AQI observations or forecasts for a location. Returns per-pollutant AQI values (PM2.5, ozone, CO, SO2, NO2), AQI category (Good through Hazardous), reporting area name, and observation timestamp. |
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
|
|
41
41
|
Search for EPA-regulated facilities with cross-program compliance data.
|
|
42
42
|
|
|
43
|
-
- Geographic filters: ZIP code, state, city (city requires state)
|
|
43
|
+
- Geographic filters: ZIP code, state, city (city requires state), or latitude + longitude + radius_miles for proximity search
|
|
44
44
|
- Program filter: narrow to CAA, CWA, RCRA, TRI, or SDWA registrants
|
|
45
45
|
- Compliance filter: `has_violation` flag to surface only non-compliant facilities
|
|
46
46
|
- Returns `RegistryID` (key for `epa_get_facility`), `FacFIPSCode` (county FIPS for Census chaining), and coordinates
|
|
@@ -156,7 +156,7 @@ Agent-friendly output:
|
|
|
156
156
|
|
|
157
157
|
## Getting started
|
|
158
158
|
|
|
159
|
-
Add the following to your MCP client configuration file. An AirNow API key is
|
|
159
|
+
Add the following to your MCP client configuration file. An AirNow API key is optional — set `AIRNOW_API_KEY` to enable `epa_get_air_quality` (register free at [docs.airnowapi.org](https://docs.airnowapi.org/account/request/)); without it the server starts with the other 7 tools. ECHO and DMAP tools work without authentication.
|
|
160
160
|
|
|
161
161
|
```json
|
|
162
162
|
{
|
|
@@ -204,7 +204,7 @@ MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 AIRNOW_API_KEY=... bun run start:http
|
|
|
204
204
|
### Prerequisites
|
|
205
205
|
|
|
206
206
|
- [Bun v1.3.0](https://bun.sh/) or higher (or Node.js v24+).
|
|
207
|
-
- An AirNow API key
|
|
207
|
+
- (Optional) An AirNow API key to enable `epa_get_air_quality` — register free at [docs.airnowapi.org/account/request](https://docs.airnowapi.org/account/request/). Without it the server runs the other 7 tools. ECHO and DMAP tools require no API key.
|
|
208
208
|
|
|
209
209
|
### Installation
|
|
210
210
|
|
|
@@ -230,7 +230,7 @@ bun install
|
|
|
230
230
|
|
|
231
231
|
```sh
|
|
232
232
|
cp .env.example .env
|
|
233
|
-
#
|
|
233
|
+
# optionally set AIRNOW_API_KEY to enable the air quality tool
|
|
234
234
|
```
|
|
235
235
|
|
|
236
236
|
## Configuration
|
|
@@ -239,7 +239,7 @@ All configuration is validated at startup via Zod schemas in `src/config/`. Key
|
|
|
239
239
|
|
|
240
240
|
| Variable | Description | Default |
|
|
241
241
|
|:---|:---|:---|
|
|
242
|
-
| `AIRNOW_API_KEY` | **
|
|
242
|
+
| `AIRNOW_API_KEY` | **Optional.** Enables `epa_get_air_quality` when set; the server runs the other 7 tools without it. Free registration at [docs.airnowapi.org](https://docs.airnowapi.org/account/request/). | — |
|
|
243
243
|
| `EPA_ECHO_BASE_URL` | ECHO API base URL | `https://echodata.epa.gov/echo` |
|
|
244
244
|
| `EPA_DMAP_BASE_URL` | Envirofacts DMAP API base URL | `https://data.epa.gov/dmapservice` |
|
|
245
245
|
| `EPA_AIRNOW_BASE_URL` | AirNow API base URL | `https://www.airnowapi.org/aq` |
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Optional AIRNOW_API_KEY (server runs the 7 keyless tools without it) and latitude/longitude/radius proximity search on epa_search_facilities"
|
|
3
|
+
breaking: false
|
|
4
|
+
security: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 0.2.0 — 2026-06-21
|
|
8
|
+
|
|
9
|
+
## Added
|
|
10
|
+
|
|
11
|
+
- **`epa_search_facilities` proximity search** — new `latitude`, `longitude`, and `radius_miles` inputs (radius capped at 100 mi), mapped to the ECHO `p_lat` / `p_long` / `p_radius_mi` parameters. A complete latitude+longitude+radius_miles triple is a valid geographic filter alongside `zip_code` / `state` / `city`. ([#14](https://github.com/cyanheads/epa-mcp-server/issues/14))
|
|
12
|
+
- **`incomplete_proximity` error** — supplying only one or two of the three proximity fields raises a `ValidationError` before the upstream call. `latitude` / `longitude` of `0` (equator / prime meridian) are valid and presence is tested with `!== undefined`, never a truthy check. ([#14](https://github.com/cyanheads/epa-mcp-server/issues/14))
|
|
13
|
+
|
|
14
|
+
## Changed
|
|
15
|
+
|
|
16
|
+
- **`AIRNOW_API_KEY` is now optional** — when unset (or empty / whitespace-only), the server starts without `epa_get_air_quality` and skips AirNow init, registering the 7 keyless ECHO/DMAP tools (`coreToolDefinitions`); set the key to enable the full 8-tool surface. `server.json` and `manifest.json` mark the variable optional, and server instructions drop the AirNow guidance when the tool is disabled. ([#13](https://github.com/cyanheads/epa-mcp-server/issues/13))
|
|
17
|
+
|
|
18
|
+
## Dependency bumps (dev)
|
|
19
|
+
|
|
20
|
+
- `@biomejs/biome` ^2.4.16 → ^2.5.0
|
|
21
|
+
- `vitest` ^4.1.8 → ^4.1.9
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { z } from '@cyanheads/mcp-ts-core';
|
|
6
6
|
declare const ServerConfigSchema: z.ZodObject<{
|
|
7
|
-
airNowApiKey: z.ZodString
|
|
7
|
+
airNowApiKey: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
|
|
8
8
|
echoBaseUrl: z.ZodDefault<z.ZodString>;
|
|
9
9
|
dmapBaseUrl: z.ZodDefault<z.ZodString>;
|
|
10
10
|
airNowBaseUrl: z.ZodDefault<z.ZodString>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-config.d.ts","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAG3C,QAAA,MAAM,kBAAkB;;;;;
|
|
1
|
+
{"version":3,"file":"server-config.d.ts","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAG3C,QAAA,MAAM,kBAAkB;;;;;iBA2BtB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAI9D,wBAAgB,eAAe,IAAI,YAAY,CAQ9C"}
|
|
@@ -5,10 +5,12 @@
|
|
|
5
5
|
import { z } from '@cyanheads/mcp-ts-core';
|
|
6
6
|
import { parseEnvConfig } from '@cyanheads/mcp-ts-core/config';
|
|
7
7
|
const ServerConfigSchema = z.object({
|
|
8
|
+
// Optional: an empty or whitespace-only value (e.g. an unfilled `${AIRNOW_API_KEY}`
|
|
9
|
+
// placeholder from a bundle/compose config) is treated as absent so the server still
|
|
10
|
+
// starts. When absent, index.ts skips registering epa_get_air_quality and AirNow init.
|
|
8
11
|
airNowApiKey: z
|
|
9
|
-
.string()
|
|
10
|
-
.
|
|
11
|
-
.describe('AirNow API key (free registration at docs.airnowapi.org)'),
|
|
12
|
+
.preprocess((v) => (typeof v === 'string' && v.trim() === '' ? undefined : v), z.string().min(1).optional())
|
|
13
|
+
.describe('AirNow API key (free registration at docs.airnowapi.org). Optional — when unset, epa_get_air_quality is not registered and the other tools run without it.'),
|
|
12
14
|
echoBaseUrl: z
|
|
13
15
|
.string()
|
|
14
16
|
.url()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-config.js","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,YAAY,EAAE,CAAC;SACZ,MAAM,EAAE
|
|
1
|
+
{"version":3,"file":"server-config.js","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,oFAAoF;IACpF,qFAAqF;IACrF,uFAAuF;IACvF,YAAY,EAAE,CAAC;SACZ,UAAU,CACT,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EACjE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAC7B;SACA,QAAQ,CACP,4JAA4J,CAC7J;IACH,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,EAAE;SACL,OAAO,CAAC,+BAA+B,CAAC;SACxC,QAAQ,CAAC,mBAAmB,CAAC;IAChC,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,EAAE;SACL,OAAO,CAAC,kCAAkC,CAAC;SAC3C,QAAQ,CAAC,mBAAmB,CAAC;IAChC,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,GAAG,EAAE;SACL,OAAO,CAAC,8BAA8B,CAAC;SACvC,QAAQ,CAAC,qBAAqB,CAAC;CACnC,CAAC,CAAC;AAIH,IAAI,OAAiC,CAAC;AAEtC,MAAM,UAAU,eAAe;IAC7B,OAAO,KAAK,cAAc,CAAC,kBAAkB,EAAE;QAC7C,YAAY,EAAE,gBAAgB;QAC9B,WAAW,EAAE,mBAAmB;QAChC,WAAW,EAAE,mBAAmB;QAChC,aAAa,EAAE,qBAAqB;KACrC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,27 +4,41 @@
|
|
|
4
4
|
* @module index
|
|
5
5
|
*/
|
|
6
6
|
import { createApp } from '@cyanheads/mcp-ts-core';
|
|
7
|
+
import { getServerConfig } from './config/server-config.js';
|
|
7
8
|
import { allResourceDefinitions } from './mcp-server/resources/definitions/index.js';
|
|
8
|
-
import { allToolDefinitions } from './mcp-server/tools/definitions/index.js';
|
|
9
|
+
import { allToolDefinitions, coreToolDefinitions } from './mcp-server/tools/definitions/index.js';
|
|
9
10
|
import { initAirNowService } from './services/airnow/airnow-service.js';
|
|
10
11
|
import { initDmapService } from './services/dmap/dmap-service.js';
|
|
11
12
|
import { initEchoService } from './services/echo/echo-service.js';
|
|
13
|
+
// AirNow is the only key-gated service. When AIRNOW_API_KEY is absent the server
|
|
14
|
+
// starts without epa_get_air_quality, leaving the 7 keyless tools available.
|
|
15
|
+
const airNowEnabled = getServerConfig().airNowApiKey !== undefined;
|
|
16
|
+
/** Server instructions, omitting AirNow guidance when the air quality tool is disabled. */
|
|
17
|
+
function buildInstructions() {
|
|
18
|
+
const lines = [
|
|
19
|
+
`EPA environmental data server covering facility compliance (ECHO), toxic releases (TRI), Superfund sites, drinking water systems (SDWIS)${airNowEnabled ? ', and real-time air quality (AirNow)' : ''}.`,
|
|
20
|
+
'- All tools are read-only. All APIs are US federal government public domain data.',
|
|
21
|
+
'- ECHO tools require at least one geographic filter (zip_code, state, or city) — unscoped searches time out. epa_search_facilities also accepts latitude + longitude + radius_miles for proximity search.',
|
|
22
|
+
'- TRI data lags ~18 months — most recent available year is typically 2 years prior to current.',
|
|
23
|
+
];
|
|
24
|
+
if (airNowEnabled) {
|
|
25
|
+
lines.push('- AirNow data is preliminary and not valid for regulatory, trend, or enforcement purposes.');
|
|
26
|
+
}
|
|
27
|
+
lines.push('- Typical workflows: epa_search_facilities → epa_get_facility → epa_search_violations (compliance audit); epa_search_superfund (proximity); epa_search_water_systems + has_violation=true (drinking water safety).');
|
|
28
|
+
return lines.join('\n');
|
|
29
|
+
}
|
|
12
30
|
await createApp({
|
|
13
31
|
name: 'epa-mcp-server',
|
|
14
32
|
title: 'epa-mcp-server',
|
|
15
|
-
tools: [...allToolDefinitions],
|
|
33
|
+
tools: [...(airNowEnabled ? allToolDefinitions : coreToolDefinitions)],
|
|
16
34
|
resources: [...allResourceDefinitions],
|
|
17
35
|
prompts: [],
|
|
18
|
-
instructions:
|
|
19
|
-
'- All tools are read-only. All APIs are US federal government public domain data.\n' +
|
|
20
|
-
'- ECHO tools require at least one geographic filter (zip_code, state, or city) — unscoped searches time out.\n' +
|
|
21
|
-
'- TRI data lags ~18 months — most recent available year is typically 2 years prior to current.\n' +
|
|
22
|
-
'- AirNow data is preliminary and not valid for regulatory, trend, or enforcement purposes.\n' +
|
|
23
|
-
'- Typical workflows: epa_search_facilities → epa_get_facility → epa_search_violations (compliance audit); epa_search_superfund (proximity); epa_search_water_systems + has_violation=true (drinking water safety).',
|
|
36
|
+
instructions: buildInstructions(),
|
|
24
37
|
setup(core) {
|
|
25
38
|
initEchoService(core.config, core.storage);
|
|
26
39
|
initDmapService(core.config, core.storage);
|
|
27
|
-
|
|
40
|
+
if (airNowEnabled)
|
|
41
|
+
initAirNowService(core.config, core.storage);
|
|
28
42
|
},
|
|
29
43
|
});
|
|
30
44
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,iFAAiF;AACjF,6EAA6E;AAC7E,MAAM,aAAa,GAAG,eAAe,EAAE,CAAC,YAAY,KAAK,SAAS,CAAC;AAEnE,2FAA2F;AAC3F,SAAS,iBAAiB;IACxB,MAAM,KAAK,GAAG;QACZ,2IAA2I,aAAa,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,EAAE,GAAG;QACzM,mFAAmF;QACnF,2MAA2M;QAC3M,gGAAgG;KACjG,CAAC;IACF,IAAI,aAAa,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CACR,4FAA4F,CAC7F,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,IAAI,CACR,oNAAoN,CACrN,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,SAAS,CAAC;IACd,IAAI,EAAE,gBAAgB;IACtB,KAAK,EAAE,gBAAgB;IACvB,KAAK,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IACtE,SAAS,EAAE,CAAC,GAAG,sBAAsB,CAAC;IACtC,OAAO,EAAE,EAAE;IACX,YAAY,EAAE,iBAAiB,EAAE;IACjC,KAAK,CAAC,IAAI;QACR,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3C,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,aAAa;YAAE,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAClE,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -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,276 @@ 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
|
+
}, import("zod/v4/core").$strip>>;
|
|
179
|
+
facilityId: import("zod").ZodString;
|
|
180
|
+
message: import("zod").ZodOptional<import("zod").ZodString>;
|
|
181
|
+
}, import("zod/v4/core").$strip>, readonly [{
|
|
182
|
+
readonly reason: "no_releases_found";
|
|
183
|
+
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
184
|
+
readonly when: "No TRI records found for the given facility ID and filters.";
|
|
185
|
+
readonly recovery: "Verify the facility ID via epa_search_facilities. TRI data lags 18 months — try an earlier year.";
|
|
186
|
+
}], undefined>, import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
187
|
+
state: import("zod").ZodString;
|
|
188
|
+
county: import("zod").ZodOptional<import("zod").ZodString>;
|
|
189
|
+
year: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
190
|
+
chemical_name: import("zod").ZodOptional<import("zod").ZodString>;
|
|
191
|
+
limit: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
192
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
193
|
+
releases: import("zod").ZodArray<import("zod").ZodObject<{
|
|
194
|
+
facilityId: import("zod").ZodString;
|
|
195
|
+
facilityName: import("zod").ZodOptional<import("zod").ZodString>;
|
|
196
|
+
chemicalName: import("zod").ZodString;
|
|
197
|
+
reportingYear: import("zod").ZodNumber;
|
|
198
|
+
totalReleasesInLbs: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
199
|
+
}, import("zod/v4/core").$strip>>;
|
|
200
|
+
state: import("zod").ZodString;
|
|
201
|
+
message: import("zod").ZodOptional<import("zod").ZodString>;
|
|
202
|
+
}, import("zod/v4/core").$strip>, readonly [{
|
|
203
|
+
readonly reason: "no_releases_found";
|
|
204
|
+
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
205
|
+
readonly when: "No TRI records found for the given state and filters.";
|
|
206
|
+
readonly recovery: "Verify the state abbreviation is valid. TRI data lags 18 months — try removing the year filter or using an earlier year.";
|
|
207
|
+
}], {
|
|
208
|
+
readonly truncated: import("zod").ZodBoolean;
|
|
209
|
+
readonly shown: import("zod").ZodNumber;
|
|
210
|
+
readonly cap: import("zod").ZodNumber;
|
|
211
|
+
}>, import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
212
|
+
state: import("zod").ZodOptional<import("zod").ZodString>;
|
|
213
|
+
city: import("zod").ZodOptional<import("zod").ZodString>;
|
|
157
214
|
zip_code: import("zod").ZodOptional<import("zod").ZodString>;
|
|
158
215
|
latitude: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
159
216
|
longitude: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
217
|
+
radius_miles: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
218
|
+
npl_status: import("zod").ZodDefault<import("zod").ZodEnum<{
|
|
219
|
+
all: "all";
|
|
220
|
+
listed: "listed";
|
|
221
|
+
"not-listed": "not-listed";
|
|
222
|
+
proposed: "proposed";
|
|
163
223
|
}>>;
|
|
164
|
-
|
|
165
|
-
distance_miles: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
224
|
+
limit: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
166
225
|
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
226
|
+
sites: import("zod").ZodArray<import("zod").ZodObject<{
|
|
227
|
+
siteId: import("zod").ZodString;
|
|
228
|
+
name: import("zod").ZodString;
|
|
229
|
+
street: import("zod").ZodOptional<import("zod").ZodString>;
|
|
230
|
+
city: import("zod").ZodOptional<import("zod").ZodString>;
|
|
231
|
+
state: import("zod").ZodOptional<import("zod").ZodString>;
|
|
232
|
+
zip: import("zod").ZodOptional<import("zod").ZodString>;
|
|
233
|
+
county: import("zod").ZodOptional<import("zod").ZodString>;
|
|
234
|
+
fipsCode: import("zod").ZodOptional<import("zod").ZodString>;
|
|
235
|
+
nplStatus: import("zod").ZodOptional<import("zod").ZodString>;
|
|
236
|
+
cleanupStatus: import("zod").ZodOptional<import("zod").ZodString>;
|
|
170
237
|
latitude: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
171
238
|
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
239
|
}, import("zod/v4/core").$strip>>;
|
|
182
|
-
|
|
240
|
+
totalCount: import("zod").ZodNumber;
|
|
183
241
|
message: import("zod").ZodOptional<import("zod").ZodString>;
|
|
184
242
|
}, import("zod/v4/core").$strip>, readonly [{
|
|
185
|
-
readonly reason: "
|
|
243
|
+
readonly reason: "no_location_filter";
|
|
186
244
|
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
187
|
-
readonly when: "
|
|
188
|
-
readonly recovery: "Provide
|
|
245
|
+
readonly when: "No location filter (state, city, zip_code, or latitude+longitude) was provided.";
|
|
246
|
+
readonly recovery: "Provide at least one location filter: state, city, zip_code, or latitude+longitude+radius_miles.";
|
|
189
247
|
}, {
|
|
190
|
-
readonly reason: "
|
|
248
|
+
readonly reason: "radius_required";
|
|
191
249
|
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
192
|
-
readonly when: "
|
|
193
|
-
readonly recovery: "Provide
|
|
250
|
+
readonly when: "Latitude and longitude were provided without radius_miles.";
|
|
251
|
+
readonly recovery: "Provide radius_miles together with latitude and longitude for a proximity search.";
|
|
252
|
+
}], undefined>, import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
253
|
+
state: import("zod").ZodOptional<import("zod").ZodString>;
|
|
254
|
+
zip_code: import("zod").ZodOptional<import("zod").ZodString>;
|
|
255
|
+
has_violation: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
256
|
+
pws_type: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
257
|
+
community: "community";
|
|
258
|
+
"non-transient": "non-transient";
|
|
259
|
+
transient: "transient";
|
|
260
|
+
}>>;
|
|
261
|
+
limit: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
262
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
263
|
+
systems: import("zod").ZodArray<import("zod").ZodObject<{
|
|
264
|
+
pwsid: import("zod").ZodString;
|
|
265
|
+
name: import("zod").ZodString;
|
|
266
|
+
state: import("zod").ZodOptional<import("zod").ZodString>;
|
|
267
|
+
city: import("zod").ZodOptional<import("zod").ZodString>;
|
|
268
|
+
zip: import("zod").ZodOptional<import("zod").ZodString>;
|
|
269
|
+
type: import("zod").ZodOptional<import("zod").ZodString>;
|
|
270
|
+
populationServed: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
271
|
+
primarySourceCode: import("zod").ZodOptional<import("zod").ZodString>;
|
|
272
|
+
hasViolation: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
273
|
+
isActive: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
274
|
+
}, import("zod/v4/core").$strip>>;
|
|
275
|
+
totalCount: import("zod").ZodNumber;
|
|
276
|
+
message: import("zod").ZodOptional<import("zod").ZodString>;
|
|
277
|
+
}, import("zod/v4/core").$strip>, readonly [{
|
|
278
|
+
readonly reason: "no_geographic_filter";
|
|
279
|
+
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
280
|
+
readonly when: "Neither state nor zip_code was provided.";
|
|
281
|
+
readonly recovery: "Provide at least one of state or zip_code to search drinking water systems.";
|
|
282
|
+
}], undefined>];
|
|
283
|
+
/**
|
|
284
|
+
* Full tool surface, adding epa_get_air_quality (requires AIRNOW_API_KEY).
|
|
285
|
+
* index.ts registers this set when the key is configured, falling back to
|
|
286
|
+
* coreToolDefinitions when it is absent.
|
|
287
|
+
*/
|
|
288
|
+
export declare const allToolDefinitions: readonly [import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
289
|
+
zip_code: import("zod").ZodOptional<import("zod").ZodString>;
|
|
290
|
+
state: import("zod").ZodOptional<import("zod").ZodString>;
|
|
291
|
+
city: import("zod").ZodOptional<import("zod").ZodString>;
|
|
292
|
+
latitude: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
293
|
+
longitude: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
294
|
+
radius_miles: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
295
|
+
active_only: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
296
|
+
programs: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodEnum<{
|
|
297
|
+
CAA: "CAA";
|
|
298
|
+
CWA: "CWA";
|
|
299
|
+
RCRA: "RCRA";
|
|
300
|
+
TRI: "TRI";
|
|
301
|
+
SDWA: "SDWA";
|
|
302
|
+
}>>>;
|
|
303
|
+
has_violation: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
304
|
+
limit: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
305
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
306
|
+
facilities: import("zod").ZodArray<import("zod").ZodObject<{
|
|
307
|
+
registryId: import("zod").ZodString;
|
|
308
|
+
name: import("zod").ZodString;
|
|
309
|
+
street: import("zod").ZodOptional<import("zod").ZodString>;
|
|
310
|
+
city: import("zod").ZodOptional<import("zod").ZodString>;
|
|
311
|
+
state: import("zod").ZodOptional<import("zod").ZodString>;
|
|
312
|
+
zip: import("zod").ZodOptional<import("zod").ZodString>;
|
|
313
|
+
county: import("zod").ZodOptional<import("zod").ZodString>;
|
|
314
|
+
fipsCode: import("zod").ZodOptional<import("zod").ZodString>;
|
|
315
|
+
latitude: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
316
|
+
longitude: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
317
|
+
complianceStatus: import("zod").ZodOptional<import("zod").ZodString>;
|
|
318
|
+
programs: import("zod").ZodObject<{
|
|
319
|
+
air: import("zod").ZodBoolean;
|
|
320
|
+
water: import("zod").ZodBoolean;
|
|
321
|
+
rcra: import("zod").ZodBoolean;
|
|
322
|
+
tri: import("zod").ZodBoolean;
|
|
323
|
+
sdwa: import("zod").ZodBoolean;
|
|
324
|
+
}, import("zod/v4/core").$strip>;
|
|
325
|
+
triReleasesTransfersInLbs: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
326
|
+
inspectionCount: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
327
|
+
totalPenaltiesInDollars: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
328
|
+
}, import("zod/v4/core").$strip>>;
|
|
329
|
+
totalCount: import("zod").ZodNumber;
|
|
330
|
+
message: import("zod").ZodOptional<import("zod").ZodString>;
|
|
331
|
+
}, import("zod/v4/core").$strip>, readonly [{
|
|
332
|
+
readonly reason: "no_geographic_filter";
|
|
333
|
+
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
334
|
+
readonly when: "No geographic filter (zip_code, state, city, or a latitude+longitude+radius_miles triple) was provided.";
|
|
335
|
+
readonly recovery: "Provide at least one of zip_code, state, or city, or a complete latitude + longitude + radius_miles triple, to scope the search.";
|
|
336
|
+
}, {
|
|
337
|
+
readonly reason: "incomplete_proximity";
|
|
338
|
+
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
339
|
+
readonly when: "A proximity search was started but latitude, longitude, and radius_miles were not all provided.";
|
|
340
|
+
readonly recovery: "Proximity search needs all three of latitude, longitude, and radius_miles. Provide the missing value, or use zip_code / state / city instead.";
|
|
341
|
+
}, {
|
|
342
|
+
readonly reason: "no_match";
|
|
343
|
+
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
344
|
+
readonly when: "No facilities matched the search criteria.";
|
|
345
|
+
readonly recovery: "Broaden the search by removing filters or expanding the geographic area.";
|
|
346
|
+
}], undefined>, import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
347
|
+
registry_id: import("zod").ZodString;
|
|
348
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
349
|
+
registryId: import("zod").ZodString;
|
|
350
|
+
name: import("zod").ZodString;
|
|
351
|
+
street: import("zod").ZodOptional<import("zod").ZodString>;
|
|
352
|
+
city: import("zod").ZodOptional<import("zod").ZodString>;
|
|
353
|
+
state: import("zod").ZodOptional<import("zod").ZodString>;
|
|
354
|
+
zip: import("zod").ZodOptional<import("zod").ZodString>;
|
|
355
|
+
county: import("zod").ZodOptional<import("zod").ZodString>;
|
|
356
|
+
fipsCode: import("zod").ZodOptional<import("zod").ZodString>;
|
|
357
|
+
latitude: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
358
|
+
longitude: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
359
|
+
complianceStatus: import("zod").ZodOptional<import("zod").ZodString>;
|
|
360
|
+
programs: import("zod").ZodObject<{
|
|
361
|
+
air: import("zod").ZodBoolean;
|
|
362
|
+
water: import("zod").ZodBoolean;
|
|
363
|
+
rcra: import("zod").ZodBoolean;
|
|
364
|
+
tri: import("zod").ZodBoolean;
|
|
365
|
+
sdwa: import("zod").ZodBoolean;
|
|
366
|
+
}, import("zod/v4/core").$strip>;
|
|
367
|
+
triReleasesTransfersInLbs: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
368
|
+
compliance: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
369
|
+
mediaStatusCode: import("zod").ZodOptional<import("zod").ZodString>;
|
|
370
|
+
mediaStatusDescription: import("zod").ZodOptional<import("zod").ZodString>;
|
|
371
|
+
quartersInViolation: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
372
|
+
}, import("zod/v4/core").$strip>>;
|
|
373
|
+
inspections: import("zod").ZodArray<import("zod").ZodObject<{
|
|
374
|
+
activityType: import("zod").ZodOptional<import("zod").ZodString>;
|
|
375
|
+
activityDate: import("zod").ZodOptional<import("zod").ZodString>;
|
|
376
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
377
|
+
}, import("zod/v4/core").$strip>>;
|
|
378
|
+
formalActions: import("zod").ZodArray<import("zod").ZodObject<{
|
|
379
|
+
caseId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
380
|
+
settlementDate: import("zod").ZodOptional<import("zod").ZodString>;
|
|
381
|
+
penaltyAssessedInDollars: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
382
|
+
actionType: import("zod").ZodOptional<import("zod").ZodString>;
|
|
383
|
+
}, import("zod/v4/core").$strip>>;
|
|
384
|
+
airCompliance: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
385
|
+
programId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
386
|
+
status: import("zod").ZodOptional<import("zod").ZodString>;
|
|
387
|
+
statusDate: import("zod").ZodOptional<import("zod").ZodString>;
|
|
388
|
+
}, import("zod/v4/core").$strip>>;
|
|
389
|
+
waterCompliance: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
390
|
+
programId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
391
|
+
status: import("zod").ZodOptional<import("zod").ZodString>;
|
|
392
|
+
permitId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
393
|
+
}, import("zod/v4/core").$strip>>;
|
|
394
|
+
}, import("zod/v4/core").$strip>, readonly [{
|
|
395
|
+
readonly reason: "facility_not_found";
|
|
396
|
+
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
397
|
+
readonly when: "ECHO returned no facility record for the given Registry ID.";
|
|
398
|
+
readonly recovery: "Verify the Registry ID using epa_search_facilities and retry with a valid ID.";
|
|
399
|
+
}], undefined>, import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
400
|
+
state: import("zod").ZodOptional<import("zod").ZodString>;
|
|
401
|
+
zip_code: import("zod").ZodOptional<import("zod").ZodString>;
|
|
402
|
+
program: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
403
|
+
CAA: "CAA";
|
|
404
|
+
CWA: "CWA";
|
|
405
|
+
RCRA: "RCRA";
|
|
406
|
+
SDWA: "SDWA";
|
|
407
|
+
CERCLA: "CERCLA";
|
|
408
|
+
FIFRA: "FIFRA";
|
|
409
|
+
TSCA: "TSCA";
|
|
410
|
+
}>>;
|
|
411
|
+
case_type: import("zod").ZodDefault<import("zod").ZodEnum<{
|
|
412
|
+
all: "all";
|
|
413
|
+
criminal: "criminal";
|
|
414
|
+
civil: "civil";
|
|
415
|
+
}>>;
|
|
416
|
+
date_filed_start: import("zod").ZodOptional<import("zod").ZodString>;
|
|
417
|
+
date_filed_end: import("zod").ZodOptional<import("zod").ZodString>;
|
|
418
|
+
limit: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
419
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
420
|
+
cases: import("zod").ZodArray<import("zod").ZodObject<{
|
|
421
|
+
caseId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
422
|
+
caseName: import("zod").ZodOptional<import("zod").ZodString>;
|
|
423
|
+
facilityName: import("zod").ZodOptional<import("zod").ZodString>;
|
|
424
|
+
registryId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
425
|
+
programsViolated: import("zod").ZodOptional<import("zod").ZodString>;
|
|
426
|
+
caseType: import("zod").ZodOptional<import("zod").ZodString>;
|
|
427
|
+
penaltyAssessedInDollars: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
428
|
+
settlementDate: import("zod").ZodOptional<import("zod").ZodString>;
|
|
429
|
+
filedDate: import("zod").ZodOptional<import("zod").ZodString>;
|
|
430
|
+
state: import("zod").ZodOptional<import("zod").ZodString>;
|
|
431
|
+
}, import("zod/v4/core").$strip>>;
|
|
432
|
+
totalCount: import("zod").ZodNumber;
|
|
433
|
+
message: import("zod").ZodOptional<import("zod").ZodString>;
|
|
434
|
+
}, import("zod/v4/core").$strip>, readonly [{
|
|
435
|
+
readonly reason: "no_geographic_filter";
|
|
436
|
+
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
437
|
+
readonly when: "Neither state nor zip_code was provided.";
|
|
438
|
+
readonly recovery: "Provide at least one of state or zip_code to scope the enforcement case search.";
|
|
194
439
|
}], undefined>, import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
195
440
|
facility_id: import("zod").ZodString;
|
|
196
441
|
year: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
@@ -305,5 +550,43 @@ export declare const allToolDefinitions: readonly [import("@cyanheads/mcp-ts-cor
|
|
|
305
550
|
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
306
551
|
readonly when: "Neither state nor zip_code was provided.";
|
|
307
552
|
readonly recovery: "Provide at least one of state or zip_code to search drinking water systems.";
|
|
553
|
+
}], undefined>, import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
554
|
+
zip_code: import("zod").ZodOptional<import("zod").ZodString>;
|
|
555
|
+
latitude: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
556
|
+
longitude: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
557
|
+
mode: import("zod").ZodDefault<import("zod").ZodEnum<{
|
|
558
|
+
current: "current";
|
|
559
|
+
forecast: "forecast";
|
|
560
|
+
}>>;
|
|
561
|
+
forecast_date: import("zod").ZodOptional<import("zod").ZodString>;
|
|
562
|
+
distance_miles: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
563
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
564
|
+
observations: import("zod").ZodArray<import("zod").ZodObject<{
|
|
565
|
+
reportingArea: import("zod").ZodOptional<import("zod").ZodString>;
|
|
566
|
+
stateCode: import("zod").ZodOptional<import("zod").ZodString>;
|
|
567
|
+
latitude: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
568
|
+
longitude: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
569
|
+
dateObserved: import("zod").ZodOptional<import("zod").ZodString>;
|
|
570
|
+
hourObserved: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
571
|
+
localTimeZone: import("zod").ZodOptional<import("zod").ZodString>;
|
|
572
|
+
readings: import("zod").ZodArray<import("zod").ZodObject<{
|
|
573
|
+
parameterName: import("zod").ZodString;
|
|
574
|
+
aqi: import("zod").ZodNumber;
|
|
575
|
+
categoryNumber: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
576
|
+
categoryName: import("zod").ZodOptional<import("zod").ZodString>;
|
|
577
|
+
}, import("zod/v4/core").$strip>>;
|
|
578
|
+
}, import("zod/v4/core").$strip>>;
|
|
579
|
+
mode: import("zod").ZodString;
|
|
580
|
+
message: import("zod").ZodOptional<import("zod").ZodString>;
|
|
581
|
+
}, import("zod/v4/core").$strip>, readonly [{
|
|
582
|
+
readonly reason: "no_location";
|
|
583
|
+
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
584
|
+
readonly when: "Neither zip_code nor latitude+longitude was provided.";
|
|
585
|
+
readonly recovery: "Provide either zip_code or both latitude and longitude to identify the location.";
|
|
586
|
+
}, {
|
|
587
|
+
readonly reason: "forecast_date_required";
|
|
588
|
+
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
589
|
+
readonly when: "Mode is \"forecast\" but forecast_date was not provided.";
|
|
590
|
+
readonly recovery: "Provide forecast_date as YYYY-MM-DD when using mode=\"forecast\".";
|
|
308
591
|
}], undefined>];
|
|
309
592
|
//# 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"}
|
|
@@ -7,12 +7,30 @@ import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
|
7
7
|
import { getEchoService } from '../../../services/echo/echo-service.js';
|
|
8
8
|
export const searchFacilitiesTool = tool('epa_search_facilities', {
|
|
9
9
|
title: 'Search EPA Facilities',
|
|
10
|
-
description: 'Search EPA-regulated facilities by location, industry program, or compliance status across all environmental programs (CAA, CWA, RCRA, TRI, SDWA). Returns facility name, EPA Registry ID, coordinates, county FIPS code, per-program registration flags, inspection counts, penalty totals, and TRI release totals. Registry IDs returned here feed epa_get_facility and epa_get_tri_releases. At least one geographic filter (zip_code, state, or
|
|
10
|
+
description: 'Search EPA-regulated facilities by location, industry program, or compliance status across all environmental programs (CAA, CWA, RCRA, TRI, SDWA). Returns facility name, EPA Registry ID, coordinates, county FIPS code, per-program registration flags, inspection counts, penalty totals, and TRI release totals. Registry IDs returned here feed epa_get_facility and epa_get_tri_releases. Supports proximity search via latitude + longitude + radius_miles. At least one geographic filter (zip_code, state, city, or a complete latitude+longitude+radius_miles triple) is required — unscoped searches time out.',
|
|
11
11
|
annotations: { readOnlyHint: true, openWorldHint: true, idempotentHint: true },
|
|
12
12
|
input: z.object({
|
|
13
13
|
zip_code: z.string().optional().describe('5-digit ZIP code to search within'),
|
|
14
14
|
state: z.string().optional().describe('2-letter US state abbreviation (e.g. "WA", "CA")'),
|
|
15
15
|
city: z.string().optional().describe('City name. Pair with state for best results.'),
|
|
16
|
+
latitude: z
|
|
17
|
+
.number()
|
|
18
|
+
.min(-90)
|
|
19
|
+
.max(90)
|
|
20
|
+
.optional()
|
|
21
|
+
.describe('Latitude in decimal degrees. Pair with longitude and radius_miles for proximity search.'),
|
|
22
|
+
longitude: z
|
|
23
|
+
.number()
|
|
24
|
+
.min(-180)
|
|
25
|
+
.max(180)
|
|
26
|
+
.optional()
|
|
27
|
+
.describe('Longitude in decimal degrees. Pair with latitude and radius_miles for proximity search.'),
|
|
28
|
+
radius_miles: z
|
|
29
|
+
.number()
|
|
30
|
+
.positive()
|
|
31
|
+
.max(100)
|
|
32
|
+
.optional()
|
|
33
|
+
.describe('Search radius in miles around the given latitude/longitude (max 100). Requires latitude and longitude.'),
|
|
16
34
|
active_only: z.boolean().optional().describe('When true, return only active facilities'),
|
|
17
35
|
programs: z
|
|
18
36
|
.array(z.enum(['CAA', 'CWA', 'RCRA', 'TRI', 'SDWA']))
|
|
@@ -86,8 +104,14 @@ export const searchFacilitiesTool = tool('epa_search_facilities', {
|
|
|
86
104
|
{
|
|
87
105
|
reason: 'no_geographic_filter',
|
|
88
106
|
code: JsonRpcErrorCode.ValidationError,
|
|
89
|
-
when: 'No geographic filter (zip_code, state, or
|
|
90
|
-
recovery: 'Provide at least one of zip_code, state, or city to scope the search.',
|
|
107
|
+
when: 'No geographic filter (zip_code, state, city, or a latitude+longitude+radius_miles triple) was provided.',
|
|
108
|
+
recovery: 'Provide at least one of zip_code, state, or city, or a complete latitude + longitude + radius_miles triple, to scope the search.',
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
reason: 'incomplete_proximity',
|
|
112
|
+
code: JsonRpcErrorCode.ValidationError,
|
|
113
|
+
when: 'A proximity search was started but latitude, longitude, and radius_miles were not all provided.',
|
|
114
|
+
recovery: 'Proximity search needs all three of latitude, longitude, and radius_miles. Provide the missing value, or use zip_code / state / city instead.',
|
|
91
115
|
},
|
|
92
116
|
{
|
|
93
117
|
reason: 'no_match',
|
|
@@ -97,9 +121,21 @@ export const searchFacilitiesTool = tool('epa_search_facilities', {
|
|
|
97
121
|
},
|
|
98
122
|
],
|
|
99
123
|
async handler(input, ctx) {
|
|
124
|
+
// Proximity search needs the full latitude/longitude/radius_miles triple.
|
|
125
|
+
// Coordinates of 0 (equator / prime meridian) are valid, so test presence
|
|
126
|
+
// with !== undefined, never a truthy check.
|
|
127
|
+
const { latitude, longitude, radius_miles: radiusMiles } = input;
|
|
128
|
+
const hasProximity = latitude !== undefined && longitude !== undefined && radiusMiles !== undefined;
|
|
129
|
+
const anyProximity = latitude !== undefined || longitude !== undefined || radiusMiles !== undefined;
|
|
130
|
+
if (anyProximity && !hasProximity) {
|
|
131
|
+
throw ctx.fail('incomplete_proximity', 'Proximity search needs all three of latitude, longitude, and radius_miles.', { ...ctx.recoveryFor('incomplete_proximity') });
|
|
132
|
+
}
|
|
100
133
|
// Enforce geographic scoping requirement
|
|
101
|
-
|
|
102
|
-
|
|
134
|
+
const zipCode = input.zip_code?.trim();
|
|
135
|
+
const state = input.state?.trim();
|
|
136
|
+
const city = input.city?.trim();
|
|
137
|
+
if (!zipCode && !state && !city && !hasProximity) {
|
|
138
|
+
throw ctx.fail('no_geographic_filter', 'At least one geographic filter (zip_code, state, city, or a latitude+longitude+radius_miles triple) is required.', {
|
|
103
139
|
...ctx.recoveryFor('no_geographic_filter'),
|
|
104
140
|
});
|
|
105
141
|
}
|
|
@@ -107,15 +143,16 @@ export const searchFacilitiesTool = tool('epa_search_facilities', {
|
|
|
107
143
|
zip: input.zip_code,
|
|
108
144
|
state: input.state,
|
|
109
145
|
city: input.city,
|
|
146
|
+
...(hasProximity && { latitude, longitude, radiusMiles }),
|
|
110
147
|
programs: input.programs,
|
|
111
148
|
});
|
|
112
|
-
const zipCode = input.zip_code?.trim();
|
|
113
|
-
const state = input.state?.trim();
|
|
114
|
-
const city = input.city?.trim();
|
|
115
149
|
const { facilities, totalCount } = await getEchoService().searchFacilities({
|
|
116
150
|
...(zipCode && { zipCode }),
|
|
117
151
|
...(state && { state }),
|
|
118
152
|
...(city && { city }),
|
|
153
|
+
...(latitude !== undefined && { latitude }),
|
|
154
|
+
...(longitude !== undefined && { longitude }),
|
|
155
|
+
...(radiusMiles !== undefined && { radiusMiles }),
|
|
119
156
|
...(input.active_only && { activeOnly: input.active_only }),
|
|
120
157
|
...(input.programs?.length && { programs: input.programs }),
|
|
121
158
|
...(input.has_violation && { hasViolation: input.has_violation }),
|
|
@@ -130,6 +167,8 @@ export const searchFacilitiesTool = tool('epa_search_facilities', {
|
|
|
130
167
|
parts.push(`state="${input.state}"`);
|
|
131
168
|
if (input.city)
|
|
132
169
|
parts.push(`city="${input.city}"`);
|
|
170
|
+
if (hasProximity)
|
|
171
|
+
parts.push(`within ${radiusMiles} mi of (${latitude}, ${longitude})`);
|
|
133
172
|
if (input.programs?.length)
|
|
134
173
|
parts.push(`programs=[${input.programs.join(', ')}]`);
|
|
135
174
|
if (input.has_violation)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-facilities.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-facilities.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,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,EAAE;IAChE,KAAK,EAAE,uBAAuB;IAC9B,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"search-facilities.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-facilities.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"airnow-service.d.ts","sourceRoot":"","sources":["../../../src/services/airnow/airnow-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGrE,OAAO,KAAK,EAAE,gBAAgB,EAAmB,MAAM,YAAY,CAAC;AAqCpE,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc;
|
|
1
|
+
{"version":3,"file":"airnow-service.d.ts","sourceRoot":"","sources":["../../../src/services/airnow/airnow-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGrE,OAAO,KAAK,EAAE,gBAAgB,EAAmB,MAAM,YAAY,CAAC;AAqCpE,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc;IAaxD,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,QAAQ;YAWF,cAAc;IAwC5B,2CAA2C;IACrC,eAAe,CACnB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,EACD,GAAG,EAAE,OAAO,GACX,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAS9B,0CAA0C;IACpC,kBAAkB,CACtB,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,EACD,GAAG,EAAE,OAAO,GACX,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAa9B,4CAA4C;IACtC,gBAAgB,CACpB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,EACD,GAAG,EAAE,OAAO,GACX,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAa9B,2CAA2C;IACrC,mBAAmB,CACvB,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,EACD,GAAG,EAAE,OAAO,GACX,OAAO,CAAC,gBAAgB,EAAE,CAAC;CAiB/B;AAMD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAElF;AAED,wBAAgB,gBAAgB,IAAI,aAAa,CAKhD"}
|
|
@@ -43,6 +43,11 @@ export class AirNowService {
|
|
|
43
43
|
apiKey;
|
|
44
44
|
constructor(_config, _storage) {
|
|
45
45
|
const serverConfig = getServerConfig();
|
|
46
|
+
// initAirNowService() is only wired up when the key is configured (see index.ts).
|
|
47
|
+
// Assert the invariant here so the type narrows and any misuse fails loudly.
|
|
48
|
+
if (!serverConfig.airNowApiKey) {
|
|
49
|
+
throw new Error('AirNowService requires AIRNOW_API_KEY — initAirNowService() must only run when the key is configured.');
|
|
50
|
+
}
|
|
46
51
|
this.baseUrl = serverConfig.airNowBaseUrl;
|
|
47
52
|
this.apiKey = serverConfig.airNowApiKey;
|
|
48
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"airnow-service.js","sourceRoot":"","sources":["../../../src/services/airnow/airnow-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"airnow-service.js","sourceRoot":"","sources":["../../../src/services/airnow/airnow-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"echo-service.d.ts","sourceRoot":"","sources":["../../../src/services/echo/echo-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGrE,OAAO,KAAK,EACV,OAAO,EACP,WAAW,EACX,kBAAkB,EASnB,MAAM,YAAY,CAAC;AA0CpB,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAGrB,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc;IAIxD,mCAAmC;IACnC,OAAO,CAAC,QAAQ;IAahB,uCAAuC;YAEzB,SAAS;IAkCvB;;;OAGG;IACG,gBAAgB,CACpB,MAAM,EAAE;QACN,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,EACD,GAAG,EAAE,OAAO,GACX,OAAO,CAAC;QAAE,UAAU,EAAE,WAAW,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"echo-service.d.ts","sourceRoot":"","sources":["../../../src/services/echo/echo-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGrE,OAAO,KAAK,EACV,OAAO,EACP,WAAW,EACX,kBAAkB,EASnB,MAAM,YAAY,CAAC;AA0CpB,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAGrB,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc;IAIxD,mCAAmC;IACnC,OAAO,CAAC,QAAQ;IAahB,uCAAuC;YAEzB,SAAS;IAkCvB;;;OAGG;IACG,gBAAgB,CACpB,MAAM,EAAE;QACN,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,EACD,GAAG,EAAE,OAAO,GACX,OAAO,CAAC;QAAE,UAAU,EAAE,WAAW,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IA0C7D;;;;;;;OAOG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAmJhF;;;;;;;;OAQG;IACG,gBAAgB,CACpB,MAAM,EAAE;QACN,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,EACD,GAAG,EAAE,OAAO,GACX,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CA8DrD;AAMD,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAEhF;AAED,wBAAgB,cAAc,IAAI,WAAW,CAK5C"}
|
|
@@ -105,6 +105,13 @@ export class EchoService {
|
|
|
105
105
|
qparams.p_state = params.state;
|
|
106
106
|
if (params.city)
|
|
107
107
|
qparams.p_city = params.city;
|
|
108
|
+
// Proximity search — latitude/longitude of 0 are valid, so guard with !== undefined.
|
|
109
|
+
if (params.latitude !== undefined)
|
|
110
|
+
qparams.p_lat = params.latitude;
|
|
111
|
+
if (params.longitude !== undefined)
|
|
112
|
+
qparams.p_long = params.longitude;
|
|
113
|
+
if (params.radiusMiles !== undefined)
|
|
114
|
+
qparams.p_radius_mi = params.radiusMiles;
|
|
108
115
|
if (params.activeOnly)
|
|
109
116
|
qparams.p_act = 'Y';
|
|
110
117
|
if (params.hasViolation)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"echo-service.js","sourceRoot":"","sources":["../../../src/services/echo/echo-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"echo-service.js","sourceRoot":"","sources":["../../../src/services/echo/echo-service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/epa-mcp-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Access EPA environmental data — facility compliance (ECHO), toxic releases (TRI), Superfund sites, drinking water systems, and real-time air quality (AirNow) via MCP. STDIO or Streamable HTTP.",
|
|
5
5
|
"mcpName": "io.github.cyanheads/epa-mcp-server",
|
|
6
6
|
"type": "module",
|
|
@@ -89,12 +89,12 @@
|
|
|
89
89
|
"zod": "^4.4.3"
|
|
90
90
|
},
|
|
91
91
|
"devDependencies": {
|
|
92
|
-
"@biomejs/biome": "^2.
|
|
92
|
+
"@biomejs/biome": "^2.5.0",
|
|
93
93
|
"@types/node": "^25.9.3",
|
|
94
94
|
"depcheck": "^1.4.7",
|
|
95
95
|
"ignore": "^7.0.5",
|
|
96
96
|
"tsc-alias": "^1.8.17",
|
|
97
97
|
"typescript": "^6.0.3",
|
|
98
|
-
"vitest": "^4.1.
|
|
98
|
+
"vitest": "^4.1.9"
|
|
99
99
|
}
|
|
100
100
|
}
|
package/server.json
CHANGED
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
"url": "https://github.com/cyanheads/epa-mcp-server",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "0.2.0",
|
|
10
10
|
"packages": [
|
|
11
11
|
{
|
|
12
12
|
"registryType": "npm",
|
|
13
13
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
14
14
|
"identifier": "@cyanheads/epa-mcp-server",
|
|
15
15
|
"runtimeHint": "node",
|
|
16
|
-
"version": "0.
|
|
16
|
+
"version": "0.2.0",
|
|
17
17
|
"packageArguments": [
|
|
18
18
|
{
|
|
19
19
|
"type": "positional",
|
|
@@ -27,9 +27,9 @@
|
|
|
27
27
|
"environmentVariables": [
|
|
28
28
|
{
|
|
29
29
|
"name": "AIRNOW_API_KEY",
|
|
30
|
-
"description": "AirNow API key for real-time and forecast air quality data. Free registration at docs.airnowapi.org.",
|
|
30
|
+
"description": "Optional AirNow API key for real-time and forecast air quality data. When unset, the epa_get_air_quality tool is not registered and the other tools run without it. Free registration at docs.airnowapi.org.",
|
|
31
31
|
"format": "string",
|
|
32
|
-
"isRequired":
|
|
32
|
+
"isRequired": false
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
"name": "MCP_LOG_LEVEL",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
49
49
|
"identifier": "@cyanheads/epa-mcp-server",
|
|
50
50
|
"runtimeHint": "node",
|
|
51
|
-
"version": "0.
|
|
51
|
+
"version": "0.2.0",
|
|
52
52
|
"packageArguments": [
|
|
53
53
|
{
|
|
54
54
|
"type": "positional",
|
|
@@ -62,9 +62,9 @@
|
|
|
62
62
|
"environmentVariables": [
|
|
63
63
|
{
|
|
64
64
|
"name": "AIRNOW_API_KEY",
|
|
65
|
-
"description": "AirNow API key for real-time and forecast air quality data. Free registration at docs.airnowapi.org.",
|
|
65
|
+
"description": "Optional AirNow API key for real-time and forecast air quality data. When unset, the epa_get_air_quality tool is not registered and the other tools run without it. Free registration at docs.airnowapi.org.",
|
|
66
66
|
"format": "string",
|
|
67
|
-
"isRequired":
|
|
67
|
+
"isRequired": false
|
|
68
68
|
},
|
|
69
69
|
{
|
|
70
70
|
"name": "MCP_HTTP_HOST",
|