EPA — U.S. Environmental Protection Agency · Capability
U.S. EPA Enforcement and Compliance History Online (ECHO) - Clean Air Act — Facilities
Facilities. 14 operations. Lead operation: Clean Air Act Download Data Service. Self-contained Naftiko capability covering one EPA business surface.
What You Can Do
GET
Getairrestservicesgetdownload
— Clean Air Act Download Data Service
/v1/air_rest_services.get_download
POST
Postairrestservicesgetdownload
— Clean Air Act Download Data Service
/v1/air_rest_services.get_download
GET
Getairrestservicesgetfacilities
— Clean Air Act Facility Search
/v1/air_rest_services.get_facilities
POST
Postairrestservicesgetfacilities
— Clean Air Act Facility Search
/v1/air_rest_services.get_facilities
GET
Getairrestservicesgetfacilityinfo
— Clean Air Act Facility Enhanced Search
/v1/air_rest_services.get_facility_info
POST
Postairrestservicesgetfacilityinfo
— Clean Air Act Facility Enhanced Search
/v1/air_rest_services.get_facility_info
GET
Getairrestservicesgetgeojson
— Clean Air Act GeoJSON Service
/v1/air_rest_services.get_geojson
POST
Postairrestservicesgetgeojson
— Clean Air Act GeoJSON Service
/v1/air_rest_services.get_geojson
GET
Getairrestservicesgetinfoclusters
— Clean Air Act Info Clusters Service
/v1/air_rest_services.get_info_clusters
POST
Postairrestservicesgetinfoclusters
— Clean Air Act Info Clusters Service
/v1/air_rest_services.get_info_clusters
GET
Getairrestservicesgetmap
— Clean Air Act Map Service
/v1/air_rest_services.get_map
POST
Postairrestservicesgetmap
— Clean Air Act Map Service
/v1/air_rest_services.get_map
GET
Getairrestservicesgetqid
— Clean Air Act Search by Query ID
/v1/air_rest_services.get_qid
POST
Postairrestservicesgetqid
— Clean Air Act Search by Query ID
/v1/air_rest_services.get_qid
MCP Tools
clean-air-act-download-data-service
Clean Air Act Download Data Service
read-only
idempotent
clean-air-act-download-data-service-2
Clean Air Act Download Data Service
clean-air-act-facility-search
Clean Air Act Facility Search
read-only
idempotent
clean-air-act-facility-search-2
Clean Air Act Facility Search
read-only
clean-air-act-facility-enhanced-search
Clean Air Act Facility Enhanced Search
read-only
idempotent
clean-air-act-facility-enhanced-search-2
Clean Air Act Facility Enhanced Search
read-only
clean-air-act-geojson-service
Clean Air Act GeoJSON Service
read-only
idempotent
clean-air-act-geojson-service-2
Clean Air Act GeoJSON Service
clean-air-act-info-clusters-service
Clean Air Act Info Clusters Service
read-only
idempotent
clean-air-act-info-clusters-service-2
Clean Air Act Info Clusters Service
clean-air-act-map-service
Clean Air Act Map Service
read-only
idempotent
clean-air-act-map-service-2
Clean Air Act Map Service
clean-air-act-search-query-id
Clean Air Act Search by Query ID
read-only
idempotent
clean-air-act-search-query-id-2
Clean Air Act Search by Query ID
read-only
Capability Spec
naftiko: 1.0.0-alpha2
info:
label: U.S. EPA Enforcement and Compliance History Online (ECHO) - Clean Air Act — Facilities
description: 'Facilities. 14 operations. Lead operation: Clean Air Act Download Data Service. Self-contained Naftiko capability covering one EPA business surface.'
tags:
- EPA
- Facilities
created: '2026-05-29'
modified: '2026-05-29'
binds:
- namespace: env
keys: {}
capability:
consumes:
- type: http
namespace: echo-air-facilities
baseUri: https://echodata.epa.gov/echo
description: U.S. EPA Enforcement and Compliance History Online (ECHO) - Clean Air Act — Facilities business capability. Self-contained, no shared references.
resources:
- name: air-rest-services-get-download
path: /air_rest_services.get_download
operations:
- name: getairrestservicesgetdownload
method: GET
description: Clean Air Act Download Data Service
inputParameters:
- name: output
in: query
type: string
required: false
description: "Output Format Flag. Enter one of the following keywords:\n- CSV = Facility results formatted as comma delimited file download (default).\n- GEOJSOND = Facility results formatted as GeoJSON feature coll"
- name: qid
in: query
type: string
required: true
description: Query ID Selector. Enter the QueryID number from a previously run query.
- name: qcolumns
in: query
type: string
required: false
description: Used to customize service output. A list of comma-separated column IDs of output objects that will be returned in the service query object or download. Use the metadata service endpoint for a comple
- name: p_pretty_print
in: query
type: number
required: false
description: Optional flag to request GeoJSON formatted results to be pretty printed. Only provide a numeric value when the output needs to be human readable as pretty printing has a performance cost.
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: air-rest-services-get-download
path: /air_rest_services.get_download
operations:
- name: postairrestservicesgetdownload
method: POST
description: Clean Air Act Download Data Service
inputParameters:
- name: output
in: formData
type: string
required: false
description: "Output Format Flag. Enter one of the following keywords:\n- CSV = Facility results formatted as comma delimited file download (default).\n- GEOJSOND = Facility results formatted as GeoJSON feature coll"
- name: qid
in: formData
type: string
required: true
description: Query ID Selector. Enter the QueryID number from a previously run query.
- name: qcolumns
in: formData
type: string
required: false
description: Used to customize service output. A list of comma-separated column IDs of output objects that will be returned in the service query object or download. Use the metadata service endpoint for a comple
- name: p_pretty_print
in: formData
type: number
required: false
description: Optional flag to request GeoJSON formatted results to be pretty printed. Only provide a numeric value when the output needs to be human readable as pretty printing has a performance cost.
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: air-rest-services-get-facilities
path: /air_rest_services.get_facilities
operations:
- name: getairrestservicesgetfacilities
method: GET
description: Clean Air Act Facility Search
inputParameters:
- name: output
in: query
type: string
required: false
description: "Output Format Flag. Enter one of the following keywords:\n- JSON = Data model formatted as Javascript Object Notation (default).\n- JSONP = Data model formatted as Javascript Object Notation with Paddi"
- name: p_fn
in: query
type: string
required: false
description: Facility Name Filter. Enter one or more case-insensitive facility names to filter results. Provide multiple values as a comma-delimited list. See p_fntype for additional modifiers.
- name: p_sa
in: query
type: string
required: false
description: Facility street address. Enter a complete or partial street address.
- name: p_sa1
in: query
type: string
required: false
description: Facility street address. Enter a complete or partial street address. Note that p_sa1 is culmulative with p_sa.
- name: p_ct
in: query
type: string
required: false
description: Facility City Filter. Enter a single case-insensitive city name to filter results.
- name: p_co
in: query
type: string
required: false
description: Facility County Filter. Provide a single county name in combination with a state value provided via p_st.
- name: p_fips
in: query
type: string
required: false
description: FIPS Code Filter. Enter a single 5-character Federal Information Processing Standards (FIPS) state + county value to restrict results. E.g. to limit results to Kenosha County, Wisconsin, use 55059.
- name: p_st
in: query
type: string
required: false
description: Facility State and State-Equivalent Filter. Provide one or more USPS postal abbreviations for states and state-equivalents to filter results. Provide multiple values as a comma-delimited list.
- name: p_zip
in: query
type: string
required: false
description: 5-Digit ZIP Code Filter. Provide one or more 5-digit postal zip codes to filter results. May contain multiple comma-separated values.
- name: p_lcon
in: query
type: string
required: false
description: Air Program Local Control Region Code Filter. Enter one or more local control region codes to filter results. Provide multiple codes as a comma-delimited list. Codes where they exist are specific b
- name: p_frs
in: query
type: string
required: false
description: Facility Registry Service ID Filter. Enter a single 12-digit FRS identifier to filter results.
- name: p_reg
in: query
type: string
required: false
description: EPA Region Filter. Provide a single value of 01 thru 10 to restrict results to a single EPA region.
- name: p_sic
in: query
type: string
required: false
description: Standard Industrial Classification (SIC) Code Filter. Enter a single 4-digit SIC Code to filter results. If more complex filtering is required, use p_sic2 and p_sic4.
- name: p_ncs
in: query
type: string
required: false
description: 'North American Industry Classification System Filter. Enter two to six digits to filter results to facilities having matching NAICS codes. Digits less than six will match to all codes beginning with '
- name: p_qnc
in: query
type: number
required: false
description: Number of quarters in non-compliance limiter. Enter an integer value between 1 and 4 to limit results.
- name: p_pen
in: query
type: string
required: false
description: "Last Penality Date Qualifier Filter. Enter one of the following: \n- NEVER = No Penalties\n- ANY = Any Penalty\n- LEXX = Less than or equal to XX months. Provide a number in place of XX, e.g. \"LE5\" f"
- name: p_opst
in: query
type: string
required: false
description: Operating status filter. Enter one or more operating status codes to limit results. Provide multiple codes as a comma-delimited list.
- name: p_c1lat
in: query
type: number
required: false
description: In decimal degrees. Latitude of 1st corner of box that bounds the resulting facilities. The latitude and longitude of both corners of the bounding box must be provided.
- name: p_c1lon
in: query
type: number
required: false
description: In decimal degrees. Longitude of 1st corner of box that bounds the resulting facilities. The latitude and longitude of both corners of the bounding box must be provided.
- name: p_c2lat
in: query
type: number
required: false
description: In decimal degrees. Latitude of 2nd corner of box that bounds the resulting facilities. The latitude and longitude of both corners of the bounding box must be provided.
- name: p_c2lon
in: query
type: number
required: false
description: In decimal degrees. Longitude of 2nd corner of box that bounds the resulting facilities. The latitude and longitude of both corners of the bounding box must be provided.
- name: p_usmex
in: query
type: string
required: false
description: US-Mexico Border Flag. Enter Y/N to restrict searches to facilities located within 100KM of the border.
- name: p_sic2
in: query
type: string
required: false
description: Standard Industrial Classification (SIC) Code Filter Alternate 2. Enter a wild-card search against SIC codes. A final wild-card is always present allowing "22" to match all SIC codes beginning with 2
- name: p_sic4
in: query
type: string
required: false
description: Standard Industrial Classification (SIC) Code Filter Alternate 3. Enter the first 2, 3 or 4 SIC code digits to filter results to facilities having those code prefixes. As this alternative does not u
- name: p_fa
in: query
type: string
required: false
description: Federal Agency. 1 character or 5-character values; may contain multiple comma-separated values. ALL will retrieve all facilities where the federal agency code is not null. Use the Federal Agencies lo
- name: p_act
in: query
type: string
required: false
description: Active Permits/Facilities Flag. Provide Y or N to filter results to facilities with active permits.
- name: p_maj
in: query
type: string
required: false
description: Major Facility Flag. Enter Y to restrict results to Major facilities only.
- name: p_mact
in: query
type: string
required: false
description: CAA Maximum Achievable Control Technology (MACT) Subpart codes (alpha ID between 1 and 7 characters) applicable to the facility.
- name: p_nsps
in: query
type: string
required: false
description: 'Air Programl New Source Performance Standards (NSPS) Subpart Code Search. One or more valid Air Program NSPS Program codes cand be passed. '
- name: p_nspsm
in: query
type: string
required: false
description: 'Air Programl New Source Performance Standards Minors (NSPSM) Subpart Code Search. One or more valid Air Program NSPSM Subpart codes can be passed. '
- name: p_prog
in: query
type: string
required: false
description: Air Program Code Filter. Enter one or more Air program codes to filter results. Provide multiple values as a comma-delimited list.
- name: p_fea
in: query
type: string
required: false
description: "Formal Enforcement Actions [within / not within] specified date range indicator. The date range is determined by parameters p_fead1 and p_fead2 or by parameter p_feay.\n- W = within date range\n- N = no"
- name: p_feay
in: query
type: number
required: false
description: Years (1 to 5) Range. This value is used to create a date range for Formal Enforcement Actions (FEA). Used along with p_fea (which indicates whether to look within or outside of the date range) to fi
- name: p_feaa
in: query
type: string
required: false
description: "Agency associated with Formal Enforcement Actions:\n- E = EPA\n- S = State\n- A = All"
- name: p_iea
in: query
type: string
required: false
description: "Informal Enforcement Actions [within / not within] specified date range. The date range is determined by parameters p_iead1 and p_iead2 or by parameter p_ieay.\n- W = within date range\n- N = not withi"
- name: p_ieay
in: query
type: number
required: false
description: 'Years (1 to 5) Range. This value is used to create a date range for Informal Enforcement Actions (IEA). Used along with p_iea (which indicates whether to look within or outside of the date range) to '
- name: p_ieaa
in: query
type: string
required: false
description: "Agency associated with Informal Enforcement Actions. If left blank, both agencies are included.\n- E = EPA\n- S = State"
- name: p_qiv
in: query
type: string
required: false
description: "Quarters in Noncompliance Limiter. Enter a coded value to limit results to facilities with given quarter of noncompliance.\n- Z = Zero quarters in noncompliance.\n- GEXX = Replacing XX with a numeric v"
- name: p_naa
in: query
type: string
required: false
description: Non-Attainment Area Flag. Enter a Y or N to filter for or against facilities flagged as non-attainment areas.
- name: p_impw
in: query
type: string
required: false
description: Discharging into Impaired Waters Flag. Enter Y to limit results to facilities with discharge to waterbodies listed as impaired in the ATTAINS database.
- name: p_trep
in: query
type: string
required: false
description: "Current Toxics Release Inventory (TRI) Reporter Limiter. Enter one of the following codes to limit results.\n- CURR = Current TRI reporter.\n- NONCURR = Has reported to TRI in the past but not for the "
- name: p_tri_cat
in: query
type: string
required: false
description: Toxic Release Inventory Released To Air Chemical Identifier Category Filter. Enter the chemical identifier category code to limit results. Note when filtering by TRI chemical identifier categories on
- name: p_tri_amt
in: query
type: string
required: false
description: Toxic Release Inventory Release Amount Filter. Enter a value in pounds to limit results to facilities releasing this amount or greateer of TRI releases. Valid values are 0, GT0, GT1000, GT5000, GT10
- name: p_tri_any_amt
in: query
type: number
required: false
description: Toxic Release Inventory Release Of Any Kind Above Value Filter. Enter a value to limit results to facilities releasing this amount or more of TRI releases. Note when filtering by TRI releases one ma
- name: p_tri_pol
in: query
type: string
required: false
description: Toxic Release Inventory Chemical Identifier Filter. Enter one or more chemical identifier codes to limit results. Note when filtering by specific TRI chemical identifiers one may not also filter by c
- name: p_ghg_cat
in: query
type: string
required: false
description: Green House Gas (GHG) Gas Code Category. Must be used with either a formatted (p_ghg_amt) or custom (p_ghg_any_amt) release amount.
- name: p_ghg_amt
in: query
type: string
required: false
description: Green House Gas (GHG) CO2 Equivalent Formatted Release Amount. First 2 characters must contain GT (greater than) followed by a number.
- name: p_ghg_any_amt
in: query
type: number
required: false
description: Green House Gas (GHG) C02 Equivalent Custom Amount. The C02E value reported for the provided category, will be greater or equal to the amount provided.
- name: p_ghg_yr
in: query
type: string
required: false
description: Green House Gas (GHG) Reporting Year. (2010 through 2015)
- name: p_nei_pol
in: query
type: string
required: false
description: National Emissions Inventory (NEI) Pollutant Identifier. When a pollutant identifer is entered a corresponding formatted amount or custom amount must be entered.
- name: p_nei_amt
in: query
type: string
required: false
description: National Emissions Inventory (NEI) Formatted Pollutant Amount. A formatted value where the 1st two characters must start with GT or LT followed by a number. Identifies facilities that have a NEI Pol
- name: p_nei_any_amt
in: query
type: number
required: false
description: National Emissions Inventory (NEI) Custom Pollutant Amount. Only a number can be entered. Identifies facilities with where the NEI Pollutant Emission Amount is greater than the number entered.
- name: p_nei_yr
in: query
type: string
required: false
description: 'National Emissions Inventory (NEI) year: 2014 or 2011'
- name: p_nei_cat
in: query
type: string
required: false
description: National Emissions Inventory (NEI) Pollutant Category. When a pollutant category is entered, a corresponding formatted pollutant amount or custom amount must be entered.
- name: p_pm
in: query
type: string
required: false
description: "Percent Minority Population Limiter. Enter a value to restrict results to facilities with a given percentage of minority population within 3-mile radius.\n- NONE = 0%\n- GT5 = greater than 5%\n- GT10 = "
- name: p_pd
in: query
type: string
required: false
description: "Population Density Limiter (per sq mile). Enter a value to limit results to facilities located in area of a given population density.\n- NONE = 0 population density per square mile\n- GT100 = More than "
- name: p_ico
in: query
type: string
required: false
description: Indian Country Flag. Enter a "Y" or "N" to restrict searches to facilities inside or outside Indian Country.
- name: p_huc
in: query
type: string
required: false
description: 2-, 4-, 6-, or 8-character watershed code. May contain multiple comma-separated values.
- name: p_wbd
in: query
type: string
required: false
description: 2-, 4-, 6-, 8-, 10-, or 12-character watershed (WBD from the USGS Watershed Boundary Dataset). May contain multiple comma-separated values. Uses the FRS Best Pick Coordinate to obtain the WBD12 Huc v
- name: p_pid
in: query
type: string
required: false
description: Nine-digit permit IDs. May contain up to 2000 comma-separated values.
- name: p_med
in: query
type: string
required: false
description: "Filter Results by Media.\n- M = RMP (Risk Management Plan)\n- R = RCRA (Hazardous Waste)\n- S = SDWA (Public Drinking Water Systems)\n- W = Water\n- ALL = Water and RCRA and SDWA"
- name: p_ysl
in: query
type: string
required: false
description: "Last Facility Inspection [within / not within] Specified Date Range Indicator. The date range is determined by parameters p_idt1 and p_idt2 or by parameter p_ysly.\n- W = within date range\n- N = not wi"
- name: p_ysly
in: query
type: number
required: false
description: Number of years (1 to 5) since last facility inspection. A value of 1 means that it has been inspected within the year.
- name: p_ysla
in: query
type: string
required: false
description: "Facility Last Inspection Code Filter. If left blank, both agencies are included. Enter a value to limit results:\n- E = EPA\n- S = State"
- name: p_stsl
in: query
type: string
required: false
description: "Last Stack Test [within / not within] Specified Date Range Indicator.\n- W = within date range\n- N = not within date range"
- name: p_stsly
in: query
type: number
required: false
description: Number of years (1 to 5) since date of last stack test. A value of 1 means it has been inspected within the year.
- name: p_stsla
in: query
type: string
required: false
description: "Stack Last Test Code Filter. Enter a value to limit results:\n- A = All\n- E = EPA\n- S = State"
- name: p_stres
in: query
type: string
required: false
description: Air Stack Test Status Description Filter. Enter one or more test status descriptions to filter results. Enter multiple values as a comma-delimited list.
- name: p_sttyp
in: query
type: string
required: false
description: Air Conductor Type Code Filter. Enter one or more conductor type codes to filter results. Provide multiple values as a comma-delimited list.
- name: p_qs
in: query
type: string
required: false
description: Quick Search. Allows entry for city, state, and/or zip code.
- name: p_sfs
in: query
type: string
required: false
description: Single Facility Search Filter. Provide a facility name or program system identifier to limit results. For the all data search, the FRS registry identifier is also searched.
- name: p_tribeid
in: query
type: number
required: false
description: Numeric code for tribe (or list of tribes).
- name: p_tribename
in: query
type: string
required: false
description: Tribe Name Filter. Enter a single tribe name to filter results.
- name: p_tribedist
in: query
type: number
required: false
description: Proximity to tribal land limiter. Enter an amount of mile between 0 and 25 to filter results. This parameter is only evaluated if p_tribeid is populated.
- name: p_owop
in: query
type: string
required: false
description: "Owner/Operator code filter. Enter one or more codes to limit results.\n- CNG\n- COR\n- CTG\n- DIS\n- FDF\n- MWD\n- MXO\n- NON\n- POF\n- SDT\n- STF\n- TRB"
- name: p_agoo
in: query
type: string
required: false
description: Indicates whether to AND or OR the Owner/Operator parameter (p_owop) and the federal agency code (p_fa) parameters.
- name: p_idt1
in: query
type: string
required: false
description: Beginning of date range of most recent facility inspection.
- name: p_idt2
in: query
type: string
required: false
description: End of date range of most recent facility inspection.
- name: p_stdt1
in: query
type: string
required: false
description: Beginning of date range of most recent stack test.
- name: p_stdt2
in: query
type: string
required: false
description: End of date range of most recent stack test.
- name: p_pityp
in: query
type: string
required: false
description: "Inspection Type:\n- CAC = Corrective Action Inspection\n- CAV = Compliance Assistance Visit\n- CDI = Case Development Inspection\n- CEI = Inspection Inspection\n- CSE = Compliance Schedule Evaluation\n- FCI"
- name: p_cifdi
in: query
type: string
required: false
description: Compliance issuess found during inspection.
- name: p_pfead1
in: query
type: string
required: false
description: Formal Enforcement Action Date Range Start. Enter a date in MM/DD/YYYY format to set the start of the range for filtering by recent Formal Enforcement Action (FEA) taken against the facility within t
- name: p_pfead2
in: query
type: string
required: false
description: 'Formal Enforcement Action Date Range End. Enter a date in MM/DD/YYYY format to set the end of the date range for filtering by recent Formal Enforcement Action (FEA) taken against the facility within '
- name: p_pfeat
in: query
type: string
required: false
description: 'Formal Enforcement Action (FEA) Code Filter. Enter one or more three-letter FEA codes to restrict results to facilities with these attributes. Use p_fead1 and p_fead2 parameters to further restrict '
- name: p_psncq
in: query
type: string
required: false
description: "Quarters in Significant Noncompliance Limiter. Enter a coded value to limit results to facilities with given quarter of significant noncompliance.\n- Z = Zero quarters in significant noncompliance.\n- "
- name: p_pctrack
in: query
type: string
required: false
description: "Compliance Tracking Limiter. Provide a keyword to indicate the extent to which data is being entered and effluent exceedances are being identified.\n- Off\n- Partial\n- On"
- name: p_swpa
in: query
type: string
required: false
description: Source water protection area
- name: p_des
in: query
type: string
required: false
description: Universe Designation Limiter. Enter one or more universe designation codes. Provide multiple values as a comma-delimited list. Use code "TSDF" to return the full enforcement TSDF universe and "Oper
- name: p_fntype
in: query
type: string
required: false
description: "Controls type of text search performed on facility name with parameter p_fn.\n- EXACT = Find facilities having the exact provided name(s).\n- BEGINS = Find facilities with names starting with the provid"
- name: p_hpvmth
in: query
type: string
required: false
description: Months in high priority violation status out of the previous three years limiter. Provide a number of months in the past three years. Results will limited to facilities in high priority violation st
- name: p_recvio
in: query
type: string
required: false
description: "Recent Violation Status Filter. Enter one or more recent violation codes to limit results. Provide multiple values as a comma-delimited list.\n- NO VIOL = Selects facilities with no recent violations"
- name: p_pollvio
in: query
type: string
required: false
description: Air Pollutant Code For A Recent Violation Filter. Provide one or more pollutant codes to select facilities with one or more of the entered pollutant codes for a recent
# --- truncated at 32 KB (205 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/capabilities/echo-air-facilities.yaml