Skip to main content
Glama

epa-contaminated-site-screener

Screen a property against EPA Superfund, RCRA, TRI, UST, LUST, and Brownfields records at ASTM E1527-21 distances for Phase I environmental due diligence.

Instructions

Phase I ESA & Environmental Due Diligence: EPA Database Search. Environmental due diligence by address: an environmental database report over EPA Superfund/NPL, RCRA CORRACTS/TSD/generators, TRI, UST, LUST, Brownfields, NPDES, AIR, TSCA and RMP, scored at ASTM E1527-21 search distances, plus on-site Superfund and AUL boundary checks. No API key. CHOOSE THIS for the ASTM E1527-21 Phase I records search at regulation distances around one or more properties. For a single combined verdict across twenty unrelated layers use site-due-diligence-bundle; for drinking-water quality use epa-drinking-water-quality-screener. Reads live from the official government source. Call describe-gov-data-tool (free) for a verified example input. COST AND SIDE EFFECTS: read-only with respect to the government source — it never writes to any external system — but each call starts a metered run on YOUR Apify account, billed $0.01 per result ($10 per 1,000). Lower on paid Apify plans, down to $3.00 per 1,000. Nothing is charged when a run fails. Store page: https://apify.com/malonestar/epa-contaminated-site-screener

Input Schema

NameRequiredDescriptionDefault
modeNo"assets" (default) runs a multi-database Phase I ESA-style regulatory-records screen on your addresses/coordinates — one billable row per nearby EPA-listed site (across Superfund, RCRA, TRI, UST, LUST and Brownfields). "inventory" instead dumps the raw list of EPA SEMS/Superfund sites for the states you pick — one billable row per site. Example: "assets".
assetsNoLocations to screen against EPA contaminated-site databases. Each item is EITHER {"address": "...", "label": "..."} (geocoded via the free Census geocoder) OR {"lat": <number>, "lon": <number>, "label": "...", "state": "<2-letter, OPTIONAL>"}. The "state" hint is no longer required with lat/lon — Superfund is now also screened spatially against the EPA FRS SEMS point layers, which need no state. Supplying "state" additionally pulls that state's full Envirofacts SEMS roster for wider non-NPL coverage. One dataset row (one billable check) is produced per site hit found within the radius; assets with no hits return a single "clear" row. If EVERY asset fails input validation the run FAILS and nothing is billed. Example: [{"lat":39.8037,"lon":-104.9986,"state":"CO","label":"Denver industrial parcel (lat/lon input)"},{"address":"5980 Lipan St, Denver, CO 80221","label":"Denver industrial parcel (address input)"}].
statesNo2-letter US state codes (e.g. ["CO", "NJ"]) whose EPA SEMS/Superfund site records to list. Required when Mode = inventory. Ignored in assets mode (state is derived automatically per-asset).
onlyNplNoInventory mode only: when true, keep only sites currently on (or part of) the National Priorities List — the actual Superfund program sites. When false, include all SEMS site statuses. Default false. Applied by default if omitted: false.
astmModeNoAssets mode only. Adds ONE extra "astm_summary" row after each asset's normal rows, scoring this actor's databases against the ASTM E1527-21 Sec. 8.2.1 standard search distances. The refined table splits RCRA into its three real ASTM line items — CORRACTS 1.0 mi, TSD 0.5 mi, LQG/SQG/VSQG generators 0.25 mi — resolved from EPA ECHO, alongside NPL 1.0 mi, SEMS-CERCLIS 0.5 mi, LUST 0.5 mi, UST 0.25 mi and Brownfields 0.5 mi (TRI has no ASTM search distance and is excluded). Results come as flat CSV-safe columns (astm_npl_flag, astm_rcra_corracts_flag, ...) plus a nested object, with an astm_refined_verdict. Automatically widens the underlying fetch to 1 mile; your normal per-hit rows still respect radiusMiles unchanged. Screening aid only — not a substitute for an ASTM E1527-21 Phase I ESA. Default false. Example: true. Applied by default if omitted: false.
programsNoWhich EPA program databases to include. The six defaults: SUPERFUND (NPL/SEMS), RCRA (hazardous-waste handlers, now classified into CORRACTS / TSD / generator), TRI (Toxics Release Inventory), UST (underground storage tanks), LUST (leaking USTs), BROWNFIELD (ACRES/FRS). Four additional opt-in programs come from the SAME EPA ECHO response at no extra upstream call: NPDES (Clean Water Act discharge permits), AIR (Clean Air Act permitted sources), TSCA (incl. PCB handlers), RMP (Risk Management Plan chemical-accident facilities). Leave EMPTY to screen the original six only — that keeps row counts and cost identical to previous versions. Ignored in inventory mode. Example: ["SUPERFUND","RCRA","TRI","UST","LUST","BROWNFIELD","NPDES","AIR","TSCA","RMP"].
maxResultsNoSafety cap on total dataset rows produced across the run: max site hits emitted (assets mode) or max SEMS site rows (inventory mode). Applied by default if omitted: 1000.
radiusMilesNoDistance from each asset within which EPA-listed sites are counted and reported across all selected programs. Accepts fractional miles (0.1-50) so you can screen at the ASTM E1527-21 standard search distances directly: 1.0 mi (NPL / RCRA CORRACTS), 0.5 mi (SEMS-CERCLIS, RCRA TSD, LUST, Brownfields), 0.25 mi (registered UST, RCRA generators). Default 1 mile covers the widest ASTM distance. Example: 1.
onlyWithCoordsNoInventory mode only: when true (default), drop SEMS records with no latitude/longitude. Coordinate coverage varies sharply by state — measured 2026-07: 3% of Texas SEMS records carry coordinates, 16% California, 48% Colorado, 60% New Jersey, 77% New York, while NPL-track records are ~96-100% geocoded everywhere. Set false to see the full raw roster including un-mappable rows. Example: true.
includeBoundariesNoAssets mode only. Runs two extra point-in-polygon queries per asset to answer "is this property ON a Superfund site?" (on_superfund_site, superfund_site_name, superfund_epa_url) and "is it inside a published EPA Superfund institutional-control / activity-and-use-limitation boundary?" (institutional_control_flag, institutional_control_description). These are true boundary intersections, not distance-to-centroid. Note EPA publishes ~2,114 NPL site polygons but only ~165 IC polygons nationally, so a false IC result means "not inside a published federal Superfund IC", NOT "no AUL exists". Adds no dataset rows and no billing. Default true. Example: true.
maxHitsPerProgramNoAssets mode only: cap on the number of nearest site hits reported per program per asset (keeps output and billing bounded near dense industrial areas). The nearest sites are kept. Default 50. Range 1-1000. Example: 10. Applied by default if omitted: 50.
strictDataCompletenessNoAssets mode only. Reserved for callers that must not accept partial coverage. Regardless of this setting, every row already carries programs_screened / programs_failed / data_complete, and an asset whose databases ALL failed is reported as result_type "error" — never as a "clear" result. If every database fails for every asset the run FAILS so nothing is billed. Default false. Applied by default if omitted: false.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.1.3
    • changedInput schema / properties / maxHitsPerProgram / description
      Previous value: -"Assets mode only: cap on the number of nearest site hits reported per program per asset (keeps output and billing bounded near dense industrial areas). The nearest sites are kept. Default 50. Range 1-1000. Example: 50."New value: +"Assets mode only: cap on the number of nearest site hits reported per program per asset (keeps output and billing bounded near dense industrial areas). The nearest sites are kept. Default 50. Range 1-1000. Example: 10. Applied by default if omitted: 50."
  2. First observedv1.0.2

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true; the description goes well beyond that. It reconciles the readOnlyHint=false by explaining the tool is read-only toward the government source but starts a metered run billed to the caller's Apify account ($0.01/result, $3-10 per 1,000), states nothing is charged when a run fails or when all inputs fail validation, and discloses the key data caveat that only ~165 IC polygons exist nationally so a false institutional-control result does not mean no AUL exists. This is exactly the extra context annotations cannot carry.

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 correctly: purpose, then routing rule, then alternatives, then cost/side effects last. It is long and dense with capitalized emphasis, but nearly every sentence carries decision-relevant information (cost math, failure-billing rule, boundary polygon caveat) rather than filler.

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 12-parameter, zero-required, metered tool with no output schema, the description covers the mode switch, billing and failure semantics, what a "clear" vs "error" row means, and the boundary-check limitations. An agent has everything needed to invoke it correctly and predict cost.

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 description coverage is 100% and the schema itself already documents modes, defaults, ranges and ASTM distances, so the baseline is 3. The description still adds parameter-relevant meaning the schema does not: the per-result billing model that governs how maxResults/maxHitsPerProgram should be set, and the ASTM E1527-21 distance framing that motivates radiusMiles values (1.0/0.5/0.25 mi).

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 (EPA regulatory-records screen by address) and enumerates the exact databases covered (Superfund/NPL, RCRA CORRACTS/TSD/generators, TRI, UST, LUST, Brownfields, NPDES, AIR, TSCA, RMP). It also names the sibling it is NOT (site-due-diligence-bundle for a combined verdict, epa-drinking-water-quality-screener for water quality), so an agent can route 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?

"CHOOSE THIS for the ASTM E1527-21 Phase I records search at regulation distances" gives an explicit selection rule, followed by concrete alternatives for two adjacent siblings. It also points to describe-gov-data-tool for a verified example input, covering the pre-call discovery step.

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