_ registry / mcp http-sse · checked 54m ago

epa-mcp-server

https://epa.caseyjhand.com

Registry code: a4d1e188c1abbc44

api record

Use these read-only tools for EPA facility compliance, toxic releases, Superfund sites, drinking water, and environmental-justice screening. Scope ECHO searches geographically with zip_code, state, or city (facility searches also accept latitude, longitude, and radius_miles), then use epa_search_facilities → epa_get_facility → epa_search_violations for compliance, epa_search_superfund for cleanup sites, and epa_search_water_systems with has_violation=true for drinking-water violations. TRI reporting lags about 18 months, while epa_get_ejscreen provides US-only EJScreen v2.2 (2022)…

endpoint
https://epa.caseyjhand.com/mcp
protocol
http-sse ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is epa-mcp-server live?
Yes — it answered the hub's last check (checked 54m ago). It answered 100% of checks over the last 30 days.
Is epa-mcp-server free to use?
Not measured yet.
What tools does epa-mcp-server have?
8 tools: epa_get_facility, epa_search_water_systems, epa_get_ejscreen, epa_search_facilities, epa_search_superfund, epa_search_violations, epa_get_tri_releases, epa_search_tri_releases.
Is epa-mcp-server safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
100%

90 days 100%· all time 100%

latency
402ms

last good check

priced tools
0

of 8 tools

_ answered our checks, 90 days 1 checks · signed record
  • unknown → live
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 8 tools
8 never probed 0 of 8 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • epa_get_facility unknown never probed

    Retrieve a full compliance profile for a single EPA-regulated facility by EPA Registry ID. Returns facility metadata, per-program compliance status, inspection history, formal enforcement actions, penalty totals, and TRI release summary. Use epa_search_facilities to discover Registry IDs. For area-level enforcement discovery use epa_search_violations instead.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "registry_id"
      ],
      "properties": {
        "registry_id": {
          "type": "string",
          "minLength": 1,
          "description": "EPA FRS Registry ID for the facility (obtained from epa_search_facilities)"
        }
      },
      "additionalProperties": false
    }
    arguments 15 lines
  • epa_search_water_systems unknown never probed

    Search drinking water systems (SDWIS) by state or ZIP code. Returns system name, PWSID, population served, primary water source, and activity status. With has_violation, returns only systems with an open violation — one SDWIS has not marked returned to compliance or closed out when the system was deactivated. At least one of state or zip_code is required.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "limit": {
          "type": "integer",
          "default": 50,
          "maximum": 200,
          "minimum": 1,
          "description": "Maximum number of systems to return (1–200)"
        },
        "state": {
          "type": "string",
          "description": "2-letter US state abbreviation (e.g. \"WA\", \"CA\")"
        },
        "pws_type": {
          "enum": [
            "community",
            "non-transient",
            "transient"
          ],
          "type": "string",
          "description": "Filter by public water system type: community=permanent residences, non-transient=regular non-residents (schools, businesses), transient=occasional users (campgrounds)"
        },
        "zip_code": {
          "type": "string",
          "description": "5-digit ZIP code of the water system's address of record — often its owner's or operator's office, which can be far from the area the system serves"
        },
        "has_violation": {
          "type": "boolean",
          "description": "When true, return only systems with an open SDWIS violation (not yet returned to compliance). Works with state, zip_code, or both."
        }
      },
      "additionalProperties": false
    }
    arguments 35 lines
  • epa_get_ejscreen unknown never probed

    Get EJScreen environmental-justice indicators for a point and surrounding buffer. Returns the 13 EJScreen environmental indicators (PM2.5, ozone, diesel particulate, NO2, lead paint, traffic proximity, Superfund/RMP/hazardous-waste/wastewater proximity, underground storage tanks, drinking-water non-compliance, and RSEI toxic air releases) and 6 demographic indicators (people of color, low income, limited English, less than high school, under 5, over 64), each with national and state percentiles plus EJ Index values, along with the Demographic Index and Supplemental Demographic Index. Data is EJScreen v2.2 (2022) served via the community-maintained EJAM API (api.ejanalysis.com, Public Environmental Data Partners), which rehosts EJScreen after EPA discontinued public access in 2025 — not a live EPA endpoint. Provide latitude, longitude, and a buffer distance (default 1 mile, max 15 miles). Points outside US coverage return a coverage note instead of indicators.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "latitude",
        "longitude"
      ],
      "properties": {
        "unit": {
          "enum": [
            "miles",
            "kilometers"
          ],
          "type": "string",
          "default": "miles",
          "description": "Unit for distance. Kilometers are converted to miles (× 0.621371) before the request."
        },
        "distance": {
          "type": "number",
          "default": 1,
          "description": "Buffer radius around the point, in the given unit (default 1). The miles-equivalent must be 15 or less.",
          "exclusiveMinimum": 0
        },
        "latitude": {
          "type": "number",
          "maximum": 90,
          "minimum": -90,
          "description": "Latitude in decimal degrees."
        },
        "longitude": {
          "type": "number",
          "maximum": 180,
          "minimum": -180,
          "description": "Longitude in decimal degrees."
        }
      },
      "additionalProperties": false
    }
    arguments 38 lines
  • epa_search_facilities unknown 54m ago

    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. 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.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "city": {
          "type": "string",
          "description": "City name. Pair with state for best results."
        },
        "limit": {
          "type": "integer",
          "default": 50,
          "maximum": 100,
          "minimum": 1,
          "description": "Maximum number of facilities to return (1–100)"
        },
        "state": {
          "type": "string",
          "description": "2-letter US state abbreviation (e.g. \"WA\", \"CA\")"
        },
        "latitude": {
          "type": "number",
          "maximum": 90,
          "minimum": -90,
          "description": "Latitude in decimal degrees. Pair with longitude and radius_miles for proximity search."
        },
        "programs": {
          "type": "array",
          "items": {
            "enum": [
              "CAA",
              "CWA",
              "RCRA",
              "TRI",
              "SDWA"
            ],
            "type": "string"
          },
          "description": "Restrict results to facilities registered in these environmental programs. CAA=air, CWA=water, RCRA=waste, TRI=toxic releases, SDWA=drinking water."
        },
        "zip_code": {
          "type": "string",
          "description": "5-digit ZIP code to search within"
        },
        "longitude": {
          "type": "number",
          "maximum": 180,
          "minimum": -180,
          "description": "Longitude in decimal degrees. Pair with latitude and radius_miles for proximity search."
        },
        "active_only": {
          "type": "boolean",
          "description": "When true, return only active facilities"
        },
        "radius_miles": {
          "type": "number",
          "maximum": 100,
          "description": "Search radius in miles around the given latitude/longitude (max 100). Requires latitude and longitude.",
          "exclusiveMinimum": 0
        },
        "has_violation": {
          "type": "boolean",
          "description": "When true, return only facilities with recent significant violations"
        }
      },
      "additionalProperties": false
    }
    arguments 66 lines
  • epa_search_superfund unknown 54m ago

    Search Superfund (CERCLA/SEMS) sites by location or NPL listing status. Returns site name, EPA site ID, NPL status (listed/not listed/proposed), cleanup status, coordinates, and county FIPS code. Accepts either state/city/ZIP or latitude+longitude+radius for proximity searches. Use for "are there Superfund sites near X" questions.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "city": {
          "type": "string",
          "description": "City name (partial match within state)"
        },
        "limit": {
          "type": "integer",
          "default": 50,
          "maximum": 200,
          "minimum": 1,
          "description": "Maximum number of sites to return (1–200)"
        },
        "state": {
          "type": "string",
          "description": "2-letter US state abbreviation to filter sites"
        },
        "latitude": {
          "type": "number",
          "description": "Latitude for proximity search (use with longitude and radius_miles)"
        },
        "zip_code": {
          "type": "string",
          "description": "5-digit ZIP code to filter sites"
        },
        "longitude": {
          "type": "number",
          "description": "Longitude for proximity search (use with latitude and radius_miles)"
        },
        "npl_status": {
          "enum": [
            "listed",
            "not-listed",
            "proposed",
            "all"
          ],
          "type": "string",
          "default": "all",
          "description": "Filter by NPL (National Priorities List) status: listed=final NPL, not-listed=not on NPL, proposed=proposed for listing, all=include all"
        },
        "radius_miles": {
          "type": "number",
          "maximum": 500,
          "minimum": 0.1,
          "description": "Search radius in miles from the given coordinates. Required when using latitude+longitude."
        }
      },
      "additionalProperties": false
    }
    arguments 51 lines
  • epa_search_violations unknown 54m ago

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

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "limit": {
          "type": "integer",
          "default": 50,
          "maximum": 100,
          "minimum": 1,
          "description": "Maximum number of cases to return (1–100)"
        },
        "state": {
          "type": "string",
          "description": "2-letter US state abbreviation to filter cases (e.g. \"TX\", \"CA\")"
        },
        "program": {
          "enum": [
            "CAA",
            "CWA",
            "RCRA",
            "SDWA",
            "CERCLA",
            "FIFRA",
            "TSCA"
          ],
          "type": "string",
          "description": "Filter by regulatory program: CAA=Clean Air Act, CWA=Clean Water Act, RCRA=hazardous waste, SDWA=drinking water, CERCLA=Superfund, FIFRA=pesticides, TSCA=toxic substances"
        },
        "zip_code": {
          "type": "string",
          "description": "5-digit ZIP code to filter cases near that area"
        },
        "case_type": {
          "enum": [
            "civil",
            "criminal",
            "all"
          ],
          "type": "string",
          "default": "all",
          "description": "Filter by case type: civil (regulatory violations), criminal (willful violations), or all"
        },
        "date_filed_end": {
          "type": "string",
          "description": "End date for case filing date range (ISO 8601: YYYY-MM-DD)"
        },
        "date_filed_start": {
          "type": "string",
          "description": "Start date for case filing date range (ISO 8601: YYYY-MM-DD)"
        }
      },
      "additionalProperties": false
    }
    arguments 53 lines
  • epa_get_tri_releases unknown never probed

    Query Toxic Release Inventory annual chemical release data for a specific facility. Returns per-chemical release records with chemical name, reporting year, routine on-site releases by medium (air, water, land, underground injection), and the one-time / non-routine release quantity. Quantities are in pounds; dioxin and dioxin-like compounds, which TRI has facilities report in grams, are converted and marked with reportedUnit. TRI data lags ~18 months — the most recent available year is typically 2 years prior to the current calendar year. facility_id is the 15-character TRI facility ID: take it from the facilityId field of epa_search_tri_releases, which also identifies top emitters across a region. A 12-digit EPA Registry ID is a different identifier and matches no TRI records.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "facility_id"
      ],
      "properties": {
        "year": {
          "type": "integer",
          "maximum": 2030,
          "minimum": 1987,
          "description": "Reporting year to retrieve. Defaults to all available years. TRI data is typically available through ~2 years prior to the current year."
        },
        "facility_id": {
          "type": "string",
          "minLength": 1,
          "description": "15-character TRI facility ID (e.g. \"9867WSNRWD1981S\") — the facilityId field returned by epa_search_tri_releases. A 12-digit EPA Registry ID matches no TRI records."
        },
        "chemical_name": {
          "type": "string",
          "description": "Optional filter to restrict results to a specific chemical (partial match, case-insensitive)"
        }
      },
      "additionalProperties": false
    }
    arguments 25 lines
  • epa_search_tri_releases unknown never probed

    Search Toxic Release Inventory data across facilities in a state or county for a given reporting year. Returns facility name and county, TRI facility ID, chemical name, and the one-time / non-routine release quantity; set include_release_breakdown to add routine on-site releases by medium (air, water, land, and underground-injection), at the cost of a slower call. Quantities are in pounds; dioxin and dioxin-like compounds, which TRI has facilities report in grams, are converted and marked with reportedUnit. Use to identify top polluters in an area or build an environmental exposure profile. Use epa_get_tri_releases for detailed release records for a single facility. TRI data lags ~18 months from the current calendar year.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "state"
      ],
      "properties": {
        "year": {
          "type": "integer",
          "maximum": 2030,
          "minimum": 1987,
          "description": "Reporting year. Defaults to all available years in the state. TRI data lags ~18 months."
        },
        "limit": {
          "type": "integer",
          "default": 50,
          "maximum": 200,
          "minimum": 1,
          "description": "Maximum number of release records to return (1–200)"
        },
        "state": {
          "type": "string",
          "maxLength": 2,
          "minLength": 2,
          "description": "2-letter US state abbreviation (required, e.g. \"WA\", \"TX\")"
        },
        "county": {
          "type": "string",
          "description": "County name to narrow results within the state, e.g. \"King\". Case-insensitive partial match on the bare name, so a short name can also match a longer one (LAKE matches LAKE OF THE WOODS; check countyName on each record); a trailing \"County\", \"Parish\", or \"Borough\" is dropped before matching."
        },
        "chemical_name": {
          "type": "string",
          "description": "Optional filter to restrict results to a specific chemical (partial match, case-insensitive)"
        },
        "include_release_breakdown": {
          "type": "boolean",
          "default": false,
          "description": "Add routine on-site releases by medium (air, water, land, underground injection) to each record. Costs one extra upstream request, which can add about 20 seconds when EPA has not cached it."
        }
      },
      "additionalProperties": false
    }
    arguments 42 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id a4d1e188c1abbc44.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/a4d1e188c1abbc44/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/a4d1e188c1abbc44/badge.svg)](https://brick.blue/agent/a4d1e188c1abbc44?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.

_ also on caseyjhand.com 107 entries

Served from the same domain, which is what was measured. Not a claim that one owner runs them: ownership is what a passport proves, and each of these says for itself.

99 more sit on this domain. All of them.