EPA Enforcement Intelligence MCP — ECHO Database
Pricing
$3.00 / 1,000 result item returneds
EPA Enforcement Intelligence MCP — ECHO Database
Search 500,000+ EPA-regulated facility records for environmental violations, inspections, toxic releases, and compliance status — directly from your AI assistant.
Pricing
$3.00 / 1,000 result item returneds
Rating
0.0
(0)
Developer
Andrew Avina
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
7 days ago
Last modified
Categories
Share
EPA Enforcement Intelligence MCP
Search 500,000+ EPA-regulated facility records for environmental violations, inspections, toxic releases, and compliance status — directly from your AI assistant.
Overview
This Apify Actor exposes EPA Enforcement and Compliance History Online (ECHO) data through a Model Context Protocol (MCP) server, making it trivially easy to integrate real-time environmental compliance data into Claude, GPT-4, Cursor, or any MCP-compatible AI workflow.
The actor wraps three EPA ECHO REST endpoints (Clean Water Act, Hazardous Waste, and Combined multi-program) and normalizes their output into a consistent schema covering:
- Clean Water Act (CWA) discharge violations
- Hazardous waste compliance (RCRA — Resource Conservation and Recovery Act)
- Clean Air Act (CAA) formal enforcement actions
- Toxic Release Inventory (TRI) reporter status and annual release amounts
- EPA inspection counts and active violation flags
No API key is required. All data is sourced from EPA's public ECHO system, which is updated daily.
Use Cases
Environmental Due Diligence (M&A)
Screen acquisition targets for environmental liability before closing. Search by company name + state, check CWA violation counts and TRI releases, and flag facilities with active enforcement actions — all in a single AI conversation.
EHS Compliance Teams
Monitor competitors or supply chain partners for emerging enforcement patterns. Use NAICS code filtering to identify industry-wide trends.
Real Estate & Lending
Screen commercial real estate or loan collateral for environmental risk using facility name and address inputs.
Legal & Consulting
Quickly surface EPA enforcement history for litigation support, regulatory consulting, or CERCLA/Superfund preliminary assessments.
Regulatory Journalists
Identify the worst violators in a state or industry in seconds. TRI release data (pounds of toxic chemicals released per year) is particularly useful for investigative reporting.
MCP Tools
search_facilities
Search EPA ECHO facilities by name, state, NAICS code, and violation status.
Arguments:
| Parameter | Type | Description |
|---|---|---|
facility_name | string | Facility or company name (partial match). Example: "Exxon", "DuPont" |
state | string | 2-letter state abbreviation. Example: "TX", "CA" |
naics_code | string | 6-digit NAICS code. Example: "325110" (Petrochemical Mfg) |
has_violations | boolean | If true, only return facilities with active violations |
program | string | "cwa" (Clean Water Act), "rcra" (Hazardous Waste), "all" (Combined) |
limit | integer | Max results (default 25, max 100) |
Example query:
{"name": "search_facilities","arguments": {"facility_name": "Exxon","state": "TX","has_violations": true,"program": "cwa","limit": 10}}
Example response record:
{"facility_name": "ExxonMobil Baytown Complex","registry_id": "110000493620","city": "Baytown","state": "TX","zip": "77522","naics_code": "324110","cwa_violations": 3,"caa_violations": 0,"inspections": 12,"tri_reporter": "Y","tri_releases_lbs": 247000.0,"source": "epa.gov/echo"}
get_facility_compliance
Get detailed compliance history for a specific facility using its EPA Registry ID.
Arguments:
| Parameter | Type | Description |
|---|---|---|
registry_id | string | 12-digit EPA Registry ID (from search_facilities results) |
Example query:
{"name": "get_facility_compliance","arguments": {"registry_id": "110000493620"}}
search_violations
Find all facilities with active violations in a specific state or city. Returns facilities ranked by violation severity.
Arguments:
| Parameter | Type | Description |
|---|---|---|
state | string | 2-letter state abbreviation |
city | string | City name (optional) |
violation_type | string | "cwa", "rcra", or "caa" |
limit | integer | Max results (default 25, max 100) |
Example query:
{"name": "search_violations","arguments": {"state": "WV","violation_type": "cwa","limit": 20}}
Output Schema
Every record pushed to the Apify dataset has these fields:
| Field | Type | Description |
|---|---|---|
facility_name | string | Registered facility name in EPA ECHO |
registry_id | string | EPA Facility Registry Service (FRS) ID |
city | string | Facility city |
state | string | 2-letter state abbreviation |
zip | string | Facility ZIP code |
naics_code | string | Primary NAICS industry code |
sic_codes | string | Legacy SIC codes (pipe-delimited) |
cwa_violations | integer | Number of Clean Water Act violations in last 3 years |
caa_violations | integer | Number of Clean Air Act formal enforcement actions |
inspections | integer | Total EPA inspections on record |
tri_reporter | string | "Y" if facility files TRI reports |
tri_releases_lbs | float | Annual toxic releases in pounds (from TRI) |
source | string | Always "epa.gov/echo" |
On error, records include a _meta object:
{"_meta": {"error": "ECHO API timeout after 30s","fallback_tried": true}}
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
facility_name | string | "" | Facility name to search |
state | string | "" | 2-letter state filter |
naics_code | string | "" | NAICS code filter |
has_violations | boolean | false | Active violations only |
program | string | "all" | EPA program (all/cwa/rcra) |
limit | integer | 25 | Max results (1–100) |
serveMcp | boolean | false | Enable MCP server mode |
Modes of Operation
Batch Mode (default)
Run the actor with input parameters. It fetches facilities from EPA ECHO, normalizes the results, and pushes them to the Apify dataset. The actor exits when complete.
Best for: One-time data collection, scheduled monitoring, integration with Apify datasets.
MCP Server Mode (serveMcp: true)
The actor starts an HTTP server on port 4321 and runs indefinitely. AI clients connect to it using the MCP protocol.
Best for: Real-time AI assistant integration (Claude Desktop, Cursor, Continue.dev, etc.).
MCP endpoint URLs (when running):
GET http://<run-url>:4321/mcp/tools— list available toolsPOST http://<run-url>:4321/mcp/call— call a toolGET http://<run-url>:4321/health— health check
Data Source
EPA Enforcement and Compliance History Online (ECHO)
- URL: https://echo.epa.gov
- API docs: https://echo.epa.gov/tools/web-services
- Update frequency: Daily
- Auth required: None
- Coverage: All EPA-regulated facilities in the United States
- Programs: CWA (NPDES), RCRA, CAA, TRI, SDWA, and more
The three ECHO REST endpoints used:
echodata.epa.gov/echo/cwa_rest_services.get_facilities— Clean Water Actechodata.epa.gov/echo/rcra_rest_services.get_facilities— Hazardous Wasteechodata.epa.gov/echo/combined_data.get_facilities— All programs
Regulatory Programs Explained
Clean Water Act (CWA)
Governs discharge of pollutants into navigable waters. NPDES (National Pollutant Discharge Elimination System) permits are required for industrial discharges. Violations are tracked as Significant Non-Compliance (SNC) events.
Key ECHO field: DrCWVio — number of SNC quarters in the past 3 years.
Resource Conservation and Recovery Act (RCRA)
Governs generation, treatment, storage, and disposal of hazardous waste. Violations can result from improper labeling, storage beyond 90-day limits, missing manifests, or unauthorized disposal.
Key ECHO field: DrRCRAVio — RCRA violations in past 3 years.
Clean Air Act (CAA)
Governs air emissions from stationary and mobile sources. Formal enforcement actions include compliance orders, administrative penalties, and judicial referrals.
Key ECHO field: DrCAAAcc — CAA formal actions.
Toxic Release Inventory (TRI)
Facilities above certain thresholds must annually report releases of ~650 listed chemicals. TRI data is widely used by communities, investors, and researchers.
Key ECHO field: TRIReleasesLbs — total pounds released per year.
Example AI Prompts
Once connected via MCP, you can ask your AI assistant:
- "Search EPA ECHO for Chevron facilities in California with Clean Water Act violations"
- "Show me all hazardous waste violators in West Virginia"
- "What are the TRI releases for ExxonMobil's Baytown complex?"
- "Find petrochemical facilities (NAICS 325110) in Texas with active violations"
- "Get the full compliance history for EPA registry ID 110000493620"
NAICS Codes for Environmental Screening
Common high-risk industries to filter:
| NAICS | Industry |
|---|---|
| 211120 | Crude Petroleum Extraction |
| 221112 | Fossil Fuel Electric Power Generation |
| 324110 | Petroleum Refineries |
| 325110 | Petrochemical Manufacturing |
| 325180 | Other Basic Inorganic Chemical Mfg |
| 331110 | Iron & Steel Mills |
| 332710 | Machine Shops |
| 322110 | Pulp Mills |
| 562211 | Hazardous Waste Treatment & Disposal |
| 486110 | Pipeline Transportation of Crude Oil |
Error Handling
The actor never crashes. On any API failure, results include a _meta object:
{"_meta": {"error": "description", "fallback_tried": True}}
Common errors and their causes:
"ECHO API timeout after 30s"— EPA servers are temporarily slow; retry the query"API returned HTTP 429"— Rate limited; wait 60 seconds and retry"No results found"— Valid response but no facilities match your criteria"No facility found for registry_id=X"— The registry ID does not exist in ECHO
Technical Details
- Language: Python 3.11
- Runtime: Apify Actor SDK v2
- HTTP client: httpx (async, with 30s timeout)
- MCP server: Pure asyncio TCP server (no external frameworks)
- Port: 4321 (MCP server mode)
- Memory footprint: ~64 MB typical
License
Data is sourced from EPA ECHO, which is a US federal government public database. Data is in the public domain (17 U.S.C. § 105). Actor code is proprietary.
Support
Built and maintained as part of the SECC (Sovereign Executive Command Center) intelligence platform. For issues, feature requests, or data quality questions, open an issue in the Apify store or contact the actor author.