API access
Your AI client reaches EPA Regulated Facilities through one ParcelOps MCP endpoint, so there is no separate key to hold for it and no per-source client to write. Reaching it takes no credentials of your own.
Where it came from
Freshness and coverage
What this source cannot tell you
- ⚠ Anything outside United States. A request past that edge comes back empty rather than approximated.
- ⚠ Which years it spans, because the covered period is not declared.
- ⚠ Anything EPA Enforcement and Compliance History Online does not publish. ParcelOps returns this source as it stands and never fills a blank field from a different one.
- ⚠ A proximity result is a screening lead, not proof of contamination, liability, or regulatory status for a parcel.
Methods (6)
A method is one call your agent can make against this source.
searchFacilities
readSearch all-media EPA facilities and return a short-lived results token.
Records returnedfacility-searchHow to get more resultsnoneFreshnessScheduled (source-level)Input schema
{ "type": "object", "properties": { "state": { "type": "string", "pattern": "^[A-Za-z]{2}$" }, "county": { "type": "string", "maxLength": 120 }, "countyFips": { "type": "string", "pattern": "^\\d{1,5}$" }, "naics": { "type": "string", "pattern": "^\\d{2,6}$" }, "sic": { "type": "string", "pattern": "^\\d{2,4}$" }, "bbox": { "type": "object", "properties": { "c1lat": { "type": "number", "minimum": -90, "maximum": 90 }, "c1lon": { "type": "number", "minimum": -180, "maximum": 180 }, "c2lat": { "type": "number", "minimum": -90, "maximum": 90 }, "c2lon": { "type": "number", "minimum": -180, "maximum": 180 } }, "required": [ "c1lat", "c1lon", "c2lat", "c2lon" ], "additionalProperties": false }, "latitude": { "type": "number", "minimum": -90, "maximum": 90 }, "longitude": { "type": "number", "minimum": -180, "maximum": 180 }, "radiusMiles": { "type": "number", "exclusiveMinimum": 0, "exclusiveMaximum": 100, "description": "Search radius in MILES around latitude/longitude. Required with latitude and longitude; ECHO rejects 0 or 100+." }, "activeOnly": { "type": "boolean" } }, "required": [], "additionalProperties": false }Output schema
{ "type": "object", "properties": { "source": { "type": "string" }, "resultsToken": { "type": "string", "minLength": 1 }, "summary": { "type": "object", "additionalProperties": true } }, "required": [ "source", "summary" ], "additionalProperties": true }Proximity: latitude + longitude + radiusMiles together (miles, under 100).
searchAirFacilities
readSearch Clean Air Act facilities and return a short-lived results token.
Records returnedfacility-searchHow to get more resultsnoneFreshnessScheduled (source-level)Input schema
{ "type": "object", "properties": { "state": { "type": "string", "pattern": "^[A-Za-z]{2}$" }, "countyFips": { "type": "string", "pattern": "^\\d{1,5}$" }, "naics": { "type": "string", "pattern": "^\\d{2,6}$" }, "sic": { "type": "string", "pattern": "^\\d{2,4}$" }, "bbox": { "type": "object", "properties": { "c1lat": { "type": "number", "minimum": -90, "maximum": 90 }, "c1lon": { "type": "number", "minimum": -180, "maximum": 180 }, "c2lat": { "type": "number", "minimum": -90, "maximum": 90 }, "c2lon": { "type": "number", "minimum": -180, "maximum": 180 } }, "required": [ "c1lat", "c1lon", "c2lat", "c2lon" ], "additionalProperties": false }, "latitude": { "type": "number", "minimum": -90, "maximum": 90 }, "longitude": { "type": "number", "minimum": -180, "maximum": 180 }, "radiusMiles": { "type": "number", "exclusiveMinimum": 0, "exclusiveMaximum": 100, "description": "Search radius in MILES around latitude/longitude. Required with latitude and longitude; ECHO rejects 0 or 100+." }, "activeOnly": { "type": "boolean" } }, "required": [], "additionalProperties": false }Output schema
{ "type": "object", "properties": { "source": { "type": "string" }, "resultsToken": { "type": "string", "minLength": 1 }, "summary": { "type": "object", "additionalProperties": true } }, "required": [ "source", "summary" ], "additionalProperties": true }countyFips only (county name rejected); proximity = lat+lon+radiusMiles.
searchWaterFacilities
readSearch Clean Water Act facilities and return a short-lived results token.
Records returnedfacility-searchHow to get more resultsnoneFreshnessScheduled (source-level)Input schema
{ "type": "object", "properties": { "state": { "type": "string", "pattern": "^[A-Za-z]{2}$" }, "county": { "type": "string", "maxLength": 120 }, "countyFips": { "type": "string", "pattern": "^\\d{1,5}$" }, "naics": { "type": "string", "pattern": "^\\d{2,6}$" }, "sic": { "type": "string", "pattern": "^\\d{2,4}$" }, "bbox": { "type": "object", "properties": { "c1lat": { "type": "number", "minimum": -90, "maximum": 90 }, "c1lon": { "type": "number", "minimum": -180, "maximum": 180 }, "c2lat": { "type": "number", "minimum": -90, "maximum": 90 }, "c2lon": { "type": "number", "minimum": -180, "maximum": 180 } }, "required": [ "c1lat", "c1lon", "c2lat", "c2lon" ], "additionalProperties": false }, "latitude": { "type": "number", "minimum": -90, "maximum": 90 }, "longitude": { "type": "number", "minimum": -180, "maximum": 180 }, "radiusMiles": { "type": "number", "exclusiveMinimum": 0, "exclusiveMaximum": 100, "description": "Search radius in MILES around latitude/longitude. Required with latitude and longitude; ECHO rejects 0 or 100+." }, "activeOnly": { "type": "boolean" } }, "required": [], "additionalProperties": false }Output schema
{ "type": "object", "properties": { "source": { "type": "string" }, "resultsToken": { "type": "string", "minLength": 1 }, "summary": { "type": "object", "additionalProperties": true } }, "required": [ "source", "summary" ], "additionalProperties": true }Proximity: latitude + longitude + radiusMiles together (miles, under 100).
getFacilityRows
readRead curated EPA facility rows for a search results token.
What you must provideresultsTokenRecords returnedregulated-facilityHow to get more resultspage (pageField: pageno, limitField: limit)FreshnessScheduled (source-level)Input schema
{ "type": "object", "properties": { "resultsToken": { "type": "string", "minLength": 1, "maxLength": 512 }, "pageno": { "type": "integer", "minimum": 1, "maximum": 10000 }, "limit": { "type": "integer", "minimum": 1, "maximum": 250 } }, "required": [ "resultsToken" ], "additionalProperties": false }Output schema
{ "type": "object", "properties": { "source": { "type": "string" }, "service": { "type": "string" }, "resultsToken": { "type": "string", "minLength": 1 }, "page": { "type": "integer", "minimum": 1 }, "totalRows": { "type": [ "integer", "null" ], "minimum": 0 }, "returned": { "type": "integer", "minimum": 0 }, "facilities": { "type": "array", "items": { "type": "object", "additionalProperties": true } }, "truncatedTo": { "type": "integer", "minimum": 1 }, "note": { "type": "string" } }, "required": [ "source", "service", "resultsToken", "page", "totalRows", "returned", "facilities" ], "additionalProperties": true }Pass the preceding search's resultsToken verbatim; it names its own service.
getDetailedFacilityReport
readGet a curated EPA detailed facility report by Registry ID.
What you must provideregistryIdRecords returnedregulated-facility-reportHow to get more resultsnoneFreshnessScheduled (source-level)Input schema
{ "type": "object", "properties": { "registryId": { "type": "string", "minLength": 1, "maxLength": 80 } }, "required": [ "registryId" ], "additionalProperties": false }Output schema
{ "type": "object", "properties": { "source": { "type": "string" }, "registryId": { "type": "string" }, "fullReportUrl": { "type": "string" }, "facility": { "type": "object", "additionalProperties": true }, "dataExtractDates": { "type": "object", "additionalProperties": true }, "complianceByStatute": { "type": "array", "items": { "type": "object", "additionalProperties": true } }, "caveats": { "type": "array", "items": { "type": "string" } }, "note": { "type": "string" } }, "required": [ "source", "registryId", "fullReportUrl", "facility", "dataExtractDates", "complianceByStatute", "caveats", "note" ], "additionalProperties": true }Compliance, enforcement, permits, releases; `note` names the excluded sections.
getServiceInfo
readReturn EPA program coverage, workflow, and freshness notes.
Records returnedservice-metadataHow to get more resultsnoneFreshnessScheduled (source-level)Input schema
{ "type": "object", "properties": {}, "required": [], "additionalProperties": false }Output schema
{ "type": "object", "properties": { "service": { "type": "string" }, "baseUrl": { "type": "string" }, "auth": { "const": "none" }, "coverage": { "type": "string" }, "methods": { "type": "object", "additionalProperties": { "type": "string" } }, "notes": { "type": "array", "items": { "type": "string" } } }, "required": [ "service", "baseUrl", "auth", "coverage", "methods", "notes" ], "additionalProperties": true }
Where this source is used
- Land research
Parcel records, ground conditions, and what reaches the property line, for raw and rural land.
- Data center siting
Power, water, transport, airspace, and hazard screening for a site before anyone signs anything.
- Commercial real estate
Parcel and assessment records, building programs, and the entity on the other side of the deal.
- Residential real estate
The parcel record, the housing programs that touch an address, and the conditions a buyer asks about.
- Real estate law
Federal rule text, rulemaking dockets, party records, and the property facts a filing has to state.
- Realtors and brokerages
The facts behind a listing, the programs a buyer may qualify for, and your own files in the same place.
- Has a spill been reported near this address?
- What environmental records exist for this site?
