EPA Enforcement Intelligence MCP — ECHO Database avatar

EPA Enforcement Intelligence MCP — ECHO Database

Pricing

$3.00 / 1,000 result item returneds

Go to Apify Store
EPA Enforcement Intelligence MCP — ECHO Database

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

Andrew Avina

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

7 days ago

Last modified

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.

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:

ParameterTypeDescription
facility_namestringFacility or company name (partial match). Example: "Exxon", "DuPont"
statestring2-letter state abbreviation. Example: "TX", "CA"
naics_codestring6-digit NAICS code. Example: "325110" (Petrochemical Mfg)
has_violationsbooleanIf true, only return facilities with active violations
programstring"cwa" (Clean Water Act), "rcra" (Hazardous Waste), "all" (Combined)
limitintegerMax 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:

ParameterTypeDescription
registry_idstring12-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:

ParameterTypeDescription
statestring2-letter state abbreviation
citystringCity name (optional)
violation_typestring"cwa", "rcra", or "caa"
limitintegerMax 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:

FieldTypeDescription
facility_namestringRegistered facility name in EPA ECHO
registry_idstringEPA Facility Registry Service (FRS) ID
citystringFacility city
statestring2-letter state abbreviation
zipstringFacility ZIP code
naics_codestringPrimary NAICS industry code
sic_codesstringLegacy SIC codes (pipe-delimited)
cwa_violationsintegerNumber of Clean Water Act violations in last 3 years
caa_violationsintegerNumber of Clean Air Act formal enforcement actions
inspectionsintegerTotal EPA inspections on record
tri_reporterstring"Y" if facility files TRI reports
tri_releases_lbsfloatAnnual toxic releases in pounds (from TRI)
sourcestringAlways "epa.gov/echo"

On error, records include a _meta object:

{
"_meta": {
"error": "ECHO API timeout after 30s",
"fallback_tried": true
}
}

Input Parameters

ParameterTypeDefaultDescription
facility_namestring""Facility name to search
statestring""2-letter state filter
naics_codestring""NAICS code filter
has_violationsbooleanfalseActive violations only
programstring"all"EPA program (all/cwa/rcra)
limitinteger25Max results (1–100)
serveMcpbooleanfalseEnable 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 tools
  • POST http://<run-url>:4321/mcp/call — call a tool
  • GET http://<run-url>:4321/health — health check

Data Source

EPA Enforcement and Compliance History Online (ECHO)

The three ECHO REST endpoints used:

  1. echodata.epa.gov/echo/cwa_rest_services.get_facilities — Clean Water Act
  2. echodata.epa.gov/echo/rcra_rest_services.get_facilities — Hazardous Waste
  3. echodata.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:

NAICSIndustry
211120Crude Petroleum Extraction
221112Fossil Fuel Electric Power Generation
324110Petroleum Refineries
325110Petrochemical Manufacturing
325180Other Basic Inorganic Chemical Mfg
331110Iron & Steel Mills
332710Machine Shops
322110Pulp Mills
562211Hazardous Waste Treatment & Disposal
486110Pipeline 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.