Skip to main content
Glama

Facility Compliance — EPA ECHO: Facility Profiles, Violations & Enforcement

Server Details

EPA facility compliance: 3.2M regulated facilities, unified compliance profiles. No key.

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2024-11-05
URL

TDQS

A4.4/5.0

Scored across 6 tools

Disambiguation4/5

The tools have mostly distinct purposes: facility lookup by ID, facility search, violation listing, program listing, and county/state summaries. The main potential overlap is between search_facilities and list_facilities_with_violations, but the descriptions explicitly clarify when to use each.

Naming Consistency5/5

All tool names use consistent snake_case with clear verb_noun patterns such as get_facility, list_programs, and search_facilities. The convention is predictable throughout the set.

Tool Count5/5

Six tools is well-scoped for an EPA facility compliance screening server. Each tool covers a distinct part of the workflow without excessive surface area.

Completeness4/5

The set covers facility lookup, search, violation screening, program context, and county/state summaries, which are the core workflows. Minor gaps include no offset paging and no obvious direct way to list all facilities in an area without a name fragment or violation filter.

Available Tools

6 tools
get_county_compliance_summaryA
Read-only
Inspect

Summarize EPA-regulated facilities in one US county: how many facilities (and how many active), how many have been inspected, formal enforcement actions and total penalties, how many facilities are currently in violation or significant violation, plus the worst facilities in the county (significant violations first). County is the facility's physical county from EPA/FRS coordinates, with official Census county names. A county summary is a screening view of an area, not a verdict on a specific property.

NameRequiredDescriptionDefault
stateYesTwo-letter state code, e.g. IL
countyYesCounty name, e.g. Cook

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish this is a non-destructive, closed-world read. The description adds genuinely extra context: county is derived from EPA/FRS coordinates using official Census county names, and the output is framed as screening-level rather than property-level. It does not discuss result limits or ranking depth for 'worst facilities,' which is the only notable omission.

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?

A single dense paragraph with the verb and scope front-loaded, followed by the enumerated metrics and then the interpretive caveat. No filler sentences and nothing repeated from the schema or annotations.

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

Completeness5/5

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

With no output schema, the description takes on the burden of describing return contents and does so exhaustively, including sort order ('significant violations first') and the interpretive framing of county-level data. An agent has everything needed to call it and interpret the response.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description nonetheless adds meaning beyond the schema by explaining that county refers to the facility's physical county derived from EPA/FRS coordinates and uses official Census naming conventions, which matters for name matching. The 'state' parameter is only covered by the schema.

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?

States a specific verb and resource ('Summarize EPA-regulated facilities in one US county') and enumerates the exact metrics produced: facility counts, active counts, inspections, enforcement actions, penalties, violation counts, and worst facilities. The county scope clearly distinguishes it from get_state_compliance_summary and from per-facility tools like get_facility.

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

Usage Guidelines4/5

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

The closing sentence establishes the intended use case — 'a screening view of an area, not a verdict on a specific property' — which implicitly routes property-level questions to get_facility. It stops short of explicitly naming the alternative sibling tools or stating prerequisites, so it is clear context without full exclusive guidance.

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

get_facilityA
Read-only
Inspect

Look up one US regulated facility by its EPA Facility Registry Service (FRS) Registry ID. Returns ONE unified profile across all EPA programs the facility belongs to — Clean Air Act (CAA), Clean Water Act/NPDES (CWA), Safe Drinking Water Act (SDWA), hazardous waste (RCRA), Toxics Release Inventory (TRI), and Greenhouse Gas (GHG) — with address and county, current compliance status, inspection and enforcement history, penalties, and per-program detail. Data is EPA ECHO. This is screening data, not a Phase I Environmental Site Assessment.

NameRequiredDescriptionDefault
registry_idYesFRS Registry ID, e.g. 110000123456

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint=false and openWorldHint=false, so safety is covered; the description adds real value beyond that by disclosing the data source (EPA ECHO), the breadth of the returned profile (address, county, compliance status, inspections, enforcement, penalties, per-program detail), and a reliability disclaimer. It does not address response size or latency for a record that spans six programs, which is the only notable gap.

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

Conciseness4/5

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

Front-loaded with the action and key, then scope, then contents, then a caveat — a logical order with no filler. The enumeration of six EPA programs is long but earns its place by telling the agent what the response actually covers; minor tightening is possible.

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

Completeness5/5

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

With no output schema, the description carries the burden of describing returns and does so thoroughly (profile fields, compliance, inspection/enforcement history, penalties, per-program detail, source system). Combined with the data-quality caveat, an agent has everything needed to call it and interpret the result.

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 coverage is 100% and the single parameter already documents itself with an example ('FRS Registry ID, e.g. 110000123456'). The description only reinforces that the ID must be an FRS Registry ID, adding no format, validation, or lookup guidance beyond the schema, so 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?

States a specific verb and resource ('Look up one US regulated facility') plus the exact identifier type (FRS Registry ID). It is clearly distinguishable from siblings like search_facilities and list_facilities_with_violations because it is a single-record retrieval keyed on an ID rather than a search or list.

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

Usage Guidelines4/5

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

The description implies the prerequisite (you need a Registry ID) and gives a meaningful scope caveat ('screening data, not a Phase I Environmental Site Assessment'), which tells the agent what this data is and isn't fit for. It stops short of explicitly routing to alternatives such as 'if you lack an ID, use search_facilities'.

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

get_state_compliance_summaryA
Read-only
Inspect

Summarize EPA-regulated facilities for a whole US state or territory: facility and county counts, inspections, formal enforcement actions, total penalties, facilities currently in violation or significant violation, and the counties with the most facilities in violation. Data is EPA ECHO (latest monthly ECHO Exporter snapshot; states report to EPA on their own schedules, so very recent enforcement can lag). Use get_county_compliance_summary instead for one county, and list_facilities_with_violations for the facility-level worst-first list.

NameRequiredDescriptionDefault
stateYesTwo-letter state code, e.g. IL

TDQS

A4.7/5.0
Behavior4/5

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

Adds real context beyond the readOnly/destructive annotations: the data source (EPA ECHO Exporter monthly snapshot) and an important freshness caveat that state reporting schedules cause recent enforcement to lag. What's missing is any note on return shape or size limits, though the lack of pagination parameters makes that a minor gap.

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?

Front-loaded with the verb and scope, then the output contents, then the data-freshness caveat, then the disambiguation sentence. Every sentence carries distinct information with no repetition of schema or annotation fields.

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

Completeness5/5

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

For a single-parameter aggregate tool with no output schema, the description fully covers what the call returns and its data provenance/lag characteristics. An agent has everything needed to decide to call it and to interpret the results.

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

Parameters4/5

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

Schema coverage is 100%, so the state code format is already documented; the description nonetheless adds that the parameter selects a "whole US state or territory," clarifying granularity versus the county-level sibling. That scope distinction is the meaningful extra the schema cannot convey.

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 ("Summarize") plus a precisely scoped resource ("EPA-regulated facilities for a whole US state or territory"), followed by an enumeration of exactly what is aggregated: facility/county counts, inspections, formal enforcement actions, penalties, violation counts, and top violating counties. This is clearly separable from the sibling county-level and facility-level tools.

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?

Explicitly routes the agent to alternatives with conditions: "Use get_county_compliance_summary instead for one county, and list_facilities_with_violations for the facility-level worst-first list." Both the granularity boundary and the alternative tool names are stated, leaving nothing to inference.

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

list_facilities_with_violationsA
Read-only
Inspect

List facilities whose current EPA compliance status is a violation (Violation Identified, Significant Violation, or Violation), worst first: significant violations first, then most quarters in noncompliance, then largest penalties. Filter by state, by county (requires state), or by program (CAA, CWA, SDWA, RCRA, TRI, GHG). Useful for screening an area or a program for current environmental compliance problems. Each result shows the facility's name, city, state, ZIP and county, its EPA programs, compliance status, quarters in noncompliance, inspection and formal-action counts, and total penalties. Returns at most limit results (default 50, max 500) with no offset paging.

NameRequiredDescriptionDefault
limitNoMax results (default 50, max 500)
stateNoTwo-letter state code, e.g. IL
countyNoCounty name, e.g. Cook (requires state)
programNoProgram code: CAA, CWA, SDWA, RCRA, TRI, or GHG

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the read-only annotations, the description discloses the exact ranking logic (significant first, then quarters in noncompliance, then penalties), the full result field set, and a hard behavioral constraint — no offset paging, max 500, default 50. These are the details an agent needs to interpret and bound the call.

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

Conciseness4/5

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

Three dense sentences, front-loaded with the compliance-status scope and sort order, followed by filters and return shape. Mild redundancy in repeating the limit default/max already in the schema, but no wasted framing.

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

Completeness5/5

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

No output schema exists, yet the description itemizes returned fields, sorting, and paging limits, and covers all filter dimensions. An agent has everything needed to call and interpret this tool correctly.

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 coverage is 100%, so all four parameters are already documented, including the county-requires-state dependency and the program code list. The description restates those facts (including default/max limit) rather than adding syntax or format guidance, so it lands at the baseline for a fully documented schema.

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?

States a specific verb+resource (list facilities) with an explicit scope: current EPA compliance status in the violation set, with the accepted status strings enumerated. It also specifies the sort order, letting an agent distinguish it from siblings like search_facilities or get_county_compliance_summary without opening a schema.

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

Usage Guidelines4/5

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

"Useful for screening an area or a program for current environmental compliance problems" gives a clear usage context, and the filter combinations (state / county requires state / program) tell the agent how to narrow. It stops short of naming alternatives such as search_facilities or the state/county summary siblings, so it is clear but not fully comparative.

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

list_programsA
Read-only
Inspect

List the EPA programs unified in this dataset (Clean Air Act, Clean Water Act/NPDES, Safe Drinking Water Act, RCRA hazardous waste, Toxics Release Inventory, Greenhouse Gas Reporting) with what each covers, how many facilities belong to each, and how many of those facilities are currently in violation. Facility and violation counts reflect the current monthly ECHO Exporter snapshot — see the API status for the exact data vintage.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already establish the read-only, closed-world safety profile, so the description's job is to add context, which it does: it discloses the three categories of returned data (coverage description, facility counts, in-violation counts) and the temporal caveat that counts reflect the current monthly ECHO Exporter snapshot with vintage in API status. That vintage note is genuinely useful context not present in any structured field.

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

Conciseness4/5

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

Two sentences, both load-bearing: the first defines the payload, the second qualifies data freshness. The parenthetical program enumeration is long but it is the substance of the tool's value rather than filler. Slightly dense, but front-loaded and free of repetition.

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 no output schema and no parameters, the description carries the burden of describing returns, and it does so at a field-group level (coverage, facility count, violation count). It stops short of stating the exact field names or whether program identifiers returned here are the same ones accepted elsewhere, which would have made it fully self-sufficient.

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

Parameters4/5

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

The tool takes zero parameters, so there is no parameter semantics to explain and the baseline of 4 applies. The description correctly spends no words on argument behavior.

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?

States a specific verb and resource ('List the EPA programs unified in this dataset') and then enumerates the six programs by name, so an agent knows exactly what comes back. This is clearly distinguishable from the sibling tools, which all operate on facilities or compliance summaries rather than the program catalog itself.

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

Usage Guidelines3/5

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

Usage is implied — this is evidently the discovery/catalog call that precedes facility-level queries — but the description never says so explicitly, nor does it name a sibling like search_facilities as the follow-on step. Nothing is stated about when this tool is inappropriate or redundant.

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

search_facilitiesA
Read-only
Inspect

Search EPA-regulated facilities by name fragment, and optionally narrow by city, state (two-letter code), ZIP code prefix, county name (requires state; official county name, case-insensitive), program (CAA, CWA, SDWA, RCRA, TRI, GHG), current compliance status, or active facilities only. Results are ordered by enforcement significance (formal actions, then penalties), and each result shows the facility's programs, compliance status, inspection count, formal action count, and total penalties. Use list_facilities_with_violations instead for a worst-first list of only the facilities currently in violation, and get_facility with a result's Registry ID for one facility's full unified profile.

NameRequiredDescriptionDefault
zipNoZIP code or prefix, e.g. '606'
cityNoCity name, e.g. 'Chicago'
limitNoMax results (default 50, max 500)
queryNoName fragment to match, e.g. 'Steel'
stateNoTwo-letter state code, e.g. IL
countyNoCounty name, e.g. 'Cook' (requires state)
statusNoCurrent compliance status, e.g. 'Significant Violation'
programNoProgram code: CAA, CWA, SDWA, RCRA, TRI, or GHG
active_onlyNoOnly active facilities

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare a read-only, closed-world, non-destructive read, so the safety profile is covered. The description adds genuinely new behavior: results are ordered by enforcement significance (formal actions, then penalties), and it enumerates what each result row contains. It stops short of describing pagination/limit interplay beyond what the schema states.

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

Conciseness4/5

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

Three sentences, front-loaded with the core search then filters, ordering, and finally the sibling routing. The first sentence is long and list-heavy but every clause carries filter or behavior information, so little is wasted.

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 no output schema, the description compensates by listing the fields returned per result (programs, compliance status, inspection count, formal actions, total penalties) and the sort order. Enough to call correctly and interpret results, though it says nothing about empty-result behavior or how the 50-default/500-max limit affects a broad query.

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%, so the schema already documents all nine parameters including the county-requires-state constraint and program codes. The description mostly restates those same filters (state as two-letter code, ZIP prefix, program codes) rather than adding format or matching semantics such as partial vs exact matches on city/county.

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?

States a specific verb and resource ("Search EPA-regulated facilities") plus the primary matching mode (name fragment) and the full set of optional narrowers. It also names the two siblings it is not — list_facilities_with_violations and get_facility — so an agent can discriminate it without opening any 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?

Explicitly routes the agent: use list_facilities_with_violations for a worst-first in-violation list, and get_facility with a result's Registry ID for a single facility's full profile. It also states a real precondition (county requires state) and that facilities can be narrowed to active only.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updates
    • First observedget_county_compliance_summary
    • First observedget_facility
    • First observedget_state_compliance_summary
    • First observedlist_facilities_with_violations
    • First observedlist_programs
    • First observedsearch_facilities

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Access EPA environmental data — facility compliance (ECHO), toxic releases (TRI), Superfund sites, drinking water systems, environmental justice screening (EJScreen), and real-time air quality (AirNow) via MCP.
    471 npm
    2
    Apache 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables querying EPA drinking-water records — public water-system inventories, historical SDWA violations, enforcement actions, Lead and Copper Rule summaries, and UCMR 5 contaminant measurements — without an API key. Also supports optional read-only SQL analysis over staged dataset partitions via DuckDB canvases.
    559 npm
    1
    Apache 2.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources