Ohio EPA logo

Ohio EPA

Live

Ohio EPA environmental compliance. ~16.1K spills + releases (since May 2017), ~217 DERR brownfield TBA grants, ~3.1K active NPDES individual permits, 5 OEPA district polygons. Spec drift: scoping flagged third-party AGOL noise — agency-native server is the authoritative source.

What is Ohio EPA?

Ohio EPA environmental compliance connector. Probed 2026-05-02. Spec drift: scoping doc warned that AGOL search via owner `portaladmin11` returned 262 hits but 'many were third-party — filter strictly to authoritative Ohio EPA-published'. Probe found the agency native server at `geo.epa.ohio.gov/arcgis/rest/services/` with 19 thematic folders. All 4 layers used here are agency-native (NOT third-party AGOL mirrors). Layers: EmergResponse/Spills2_Public/1 'Spill Sites and Products' (~16,157 — broad spills+products view; layer 0 is sites-only, narrower; handler uses layer 1 since it links spill product details), Derr/TBA_Sites_Public/0 (~217 — DERR Targeted Brownfield Assessment grant sites — Division of Environmental Response & Revitalization), SurfaceWater/NPDES/0 'Individual Permits' (~3,148 active — Industrial=1,032, Public=2,116; permit_status always 'ACTIVE'; district distinct: NEDO=1,124, NWDO=711, SEDO=516, SWDO=495, CDO=294, OUTS=8), geopol/Boundaries_WM/2 'OEPA Districts WM' (5 polygons — CDO/NEDO/NWDO/SEDO/SWDO with one ESW outlier in spills data). upstream quirks (probed): Spills2_Public layer 1 `county` column is **Title Case with TRAILING WHITESPACE** ('Tuscarawas ', 'Belmont ') — handler uses LIKE 'X%' to handle. `reportedproduct` similarly space-padded to ~75 chars (handler trims output). `oepadist` has 7 distinct values: SEDO=1928, CDO=2310, NEDO=4499, SWDO=3019, NWDO=3680, ESW =5, NULL=716 (some with trailing whitespace, some literal 'NULL' string — handler normalizes). NPDES `county` is Title Case 'Belmont' (NO trailing whitespace — different from Spills). All 3 native MapServers use **lowercase** `objectid` as OID — different from most ArcGIS REST services. Brownfields layer has **NO county column** — county filter only on Spills + NPDES; Brownfields uses bbox/near for spatial scoping. getEPADistrict implemented as point-in-polygon query against geopol/Boundaries_WM/2. maxRecordCount: spills=2000, brownfields=2000, npdes=4000, districts=1000.

Available Tools

  • searchSpillsAndReleases
    Ohio EPA spills + releases (~16K, since May 2017). Filter county/product/district/yearFrom/yearTo/cityTown.
  • searchBrownfields
    DERR Targeted Brownfield Assessment grants (~217). NO county column — bbox/near only. Filter project/applicant/fiscalYear.
  • searchNPDESPermits
    Active individual NPDES permits (~3.1K). Filter county/facility/permitType (Industrial/Public)/district.
  • getEPADistrict
    Point-in-polygon: which OEPA district contains a lat/lon? Returns districtCode + districtName + polygon.
  • getServiceInfo
    Schema + record counts for any of the 4 services.

Requirements

  • ENABLE_ENVIRONMENTAL_APIS
    Set ENABLE_ENVIRONMENTAL_APIS=true to allow connector toggles.

Quick Setup Guide

Follow these steps to connect your AI agents to this connector

Set ENABLE_ENVIRONMENTAL_APIS=true for your deployment.

Open /mcp and turn on Ohio EPA with the environmental switch.

Call the oh-epa MCP tool — start with method=searchSpillsAndReleases or method=searchBrownfields.

Connect to Your AI Assistant

Choose your AI assistant below for specific setup instructions

Follow these steps to connect Ohio EPA to Claude:

Step 1: Open Claude Settings

Launch Claude → Click the profile button (bottom left) → Navigate to Settings

Step 2: Access Connectors

Scroll down to the Connectors tab → Navigate to the bottom → Click “Add Custom Connector”

Step 3: Name Your Connector

Enter any name you'd like for this connector

Step 4: Get the Connector URL

Log in to PatchOps → Navigate to the /mcp page → Copy the connector URL you want to use

Step 5: Add the Connector

Paste the URL in the “Remote MCP Server URL” text box → Click Add

Step 6: Start Using

Your connector is now ready to use in Claude

Follow these steps to connect Ohio EPA to ChatGPT:

Step 1: Enable Developer Mode

Go to Settings → Connectors → Advanced → Enable Developer mode

Step 2: Create New Connector

Go back to Connectors page → Click “Create” (top right)

Step 3: Name Your Connector

Enter any name you'd like for this connector (descriptions are optional)

Step 4: Get the Connector URL

Log in to PatchOps → Navigate to the /mcp page → Copy the connector URL you want to use

Step 5: Add the URL

Paste the URL in the “MCP Server URL” text box

Step 6: Set Authentication

Click the authentication dropdown → Select “No authentication” (PatchOps handles authentication internally)

Step 7: Create the Connector

Click “I understand and want to continue” checkbox → Press Create

Step 8: Using the Connector

Start a new chat → Click the + button (left of text box) → Open dropdown → Hover over three dots labeled “More” → Select your connector

Instructions for connecting Ohio EPA to GitHub Copilot:

Coming Soon

Detailed setup instructions for GitHub Copilot will be added here.

For other MCP-compatible platforms:

Step 1: Get the Connector URL

Log in to PatchOps → Navigate to the /mcp page → Copy the connector URL you want to use

Step 2: Add to Configuration

Add this configuration to your MCP settings file. Replace the URL with your specific connector URL from the /mcp page:

"Ohio EPA-MCP": {
  "url": "https://patchops.ai/api/mcp/...",
  "type": "http"
}

Example Configuration

Here’s an example using PatchOps MCP:

"PatchOps-MCP": {
  "url": "https://patchops.ai/api/mcp/...",
  "type": "http"
}