Skip to main content
Glama

Search EPA Enforcement Cases

epa_echo_search_violations
Read-onlyIdempotent

ECHO: Search EPA civil and criminal enforcement cases by state, ZIP code, regulatory program, case type, or filing-date range. Returns case identifier, programs involved, penalty assessed, settlement and filing dates, and case type. Designed for area-level violation discovery — for a single known facility's enforcement history use epa_echo_get_facility instead. At least one of state or zip_code is required.

Input Schema

NameRequiredDescriptionDefault
limitNoMaximum number of cases to return (1–100)
stateNo2-letter US state abbreviation to filter cases (e.g. "TX", "CA")
programNoFilter by regulatory program: CAA=Clean Air Act, CWA=Clean Water Act, RCRA=hazardous waste, SDWA=drinking water, CERCLA=Superfund, FIFRA=pesticides, TSCA=toxic substances. Matches any law a case cites, so a returned case's programsViolated (its primary law) can differ.
zip_codeNo5-digit ZIP code of the case's facility location
case_typeNoFilter by case type: civil (regulatory violations), criminal (willful violations), or all. A filing-date range covers civil cases only: with a date, all returns civil cases and criminal is rejected.all
date_filed_endNoLatest filing date, inclusive (YYYY-MM-DD). Civil cases only. Omit, or pass "", for no upper bound.
date_filed_startNoEarliest filing date, inclusive (YYYY-MM-DD). Civil cases only. Omit, or pass "", for no lower bound.

Output Schema

NameRequiredDescriptionDefault
casesNoMatching enforcement cases
errorNoPresent when the call failed. Absent on success.
noticeNoPresent when a filing-date range with case_type "all" left criminal cases out of the results.
messageNoRecovery hint when no cases are found — echoes filters and suggests broadening. Absent when cases are returned.
totalCountNoTotal cases matched before the limit was applied

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/openWorld, so the safety profile is covered; the description adds the non-obvious constraint that state or zip_code is mandatory — information the schema does not encode (required: 0). It does not disclose the civil-only limitation of date filters, but that caveat is carried in the schema's parameter descriptions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences: purpose and filters first, return contents second, routing and constraint last. No filler and the most decision-relevant information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and 100% parameter coverage, the description covers purpose, routing, and the mandatory-filter rule. Minor gaps: no statement about result ordering or pagination behavior when limit caps the result set.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the parameters are documented in detail in the schema (enum meanings, date format, the program-matching nuance). The description only restates the filter axes and the one-of requirement, adding little meaning beyond the schema; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource ("Search EPA civil and criminal enforcement cases") with explicit filter dimensions and a clear distinction from epa_echo_get_facility, which handles single-facility lookups. An agent can tell what this returns (case identifier, programs, penalty, dates, case type) without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the use case positively ("area-level violation discovery") and names the alternative tool with the condition that selects it (single known facility → epa_echo_get_facility). It also states the minimal invocation requirement: at least one of state or zip_code.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.