gov-data-mcp
This server exposes 114 US government open-data tools as an MCP server, with 12 dedicated high-traffic tools plus search/describe/run access to the full catalog.
Environmental due diligence: 20-layer site scorecards, EPA contamination/Phase I ESA screens, RCRA/TRI/UST/LUST/Brownfields, drinking-water violations, lead and PFAS.
Airspace & drones: batch FAA LAANC and no-fly verdicts, special use airspace, stadium TFRs, national-defense TFRs.
Energy & grid siting: transmission line/substation/power plant proximity, serving utility and ISO/RTO, interconnection queues across 7 ISOs, solar/wind/BESS siting.
Banking & lending health: FDIC/NCUA rollups, peer cohorts, CRE concentration, deposit outflow, enforcement trackers, HMDA, SBA loan data.
Flood, fire & geohazards: FEMA NRI risk profiles, NFIP/levee/landslide/seismic/wildfire screens.
Wetlands & water law: NWI wetlands proximity, NHD surface-water Section 404/WOTUS screens, impaired waters, aquifer and water-rights tools.
Real estate & parcels: owner-of-record lookups from assessor rolls (Cook County, Philadelphia, NYC), deed transfers, HUD, distressed-property signals.
Licensing & workforce: verify 19 professional boards across 9 states, OIG exclusions, NPI cross-walks, roster screening.
Discovery & catalog: search all 114 tools by keyword/agency/topic, inspect full input schemas, and run any tool dynamically.
Reliability: every result carries a run ID and Apify console URL, failed runs are never presented as clean results, and upstream failures fail loudly rather than producing false negatives.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@gov-data-mcpCheck environmental risk at 1200 Broadway, Denver"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
gov-data-mcp
120 US government open-data tools, as one MCP server.
EPA, FEMA, USGS, NOAA, FAA, USACE, FDIC, HUD, NRCS, HRSA, CMS, county assessor rolls and state licensing boards — all reachable as agent-callable tools, all reading directly from official government APIs and bulk files. No scraping, no HTML parsing, no rate-limit roulette.
mcp-name: io.github.malonestar/gov-data-mcp
npx gov-data-mcpInstall
You need a free Apify API token from console.apify.com/settings/integrations. Apify's free tier includes monthly platform credit that covers evaluating every tool here.
Claude Desktop / Claude Code / Cursor
{
"mcpServers": {
"gov-data": {
"command": "npx",
"args": ["-y", "gov-data-mcp"],
"env": { "APIFY_TOKEN": "apify_api_..." }
}
}
}Claude Desktop reads claude_desktop_config.json; Claude Code reads .mcp.json in your project; Cursor reads .cursor/mcp.json. The block is identical in all three.
Related MCP server: mcp-brasil
What you get
12 dedicated tools for the highest-traffic questions, callable directly:
Tool | Answers |
| 20-layer go / caution / no-go verdict for one coordinate |
| Phase I ESA database search at ASTM E1527-21 distances |
| Part 107 LAANC and airspace verdicts, batched |
| Nearest transmission line, substation, serving utility, ISO/RTO |
| Generator interconnection queues across 7 ISOs |
| Bank and credit-union health with real peer cohorts |
| County and census-tract natural-hazard risk |
| NWI wetlands within a radius, with decode columns |
| Clean Water Act §404 surface-water screen |
| SDWA violations, lead, PFAS occurrence |
| Assessor-roll owner of record for an address |
| 19 professional licensing boards across 9 states + OIG exclusions |
Plus three tools that reach the other 108:
search-gov-data-tools— find a tool by keyword, agency or topicdescribe-gov-data-tool— full input schema for any tool in the catalogrun-gov-data-tool— run any tool in the catalog
The catalog is bundled, so discovery costs nothing. Ask your agent "what government data tools do you have for flood risk?" and it will search all 120.
Example prompts
Screen 1200 Broadway, Denver CO for environmental risk under ASTM E1527-21 and tell me which findings fall inside the standard's search distance.
I'm siting a 40 MW solar project at 41.88, -93.10. Check grid proximity, prime farmland, wetlands, critical habitat and the interconnection queue, then tell me what would kill the project.
Can I fly a Part 107 mission at these six coordinates, and which ones need a DroneZone authorization rather than LAANC?
Which Texas banks show the 2006 CRE-concentration guidance flagged on both prongs?
How it works
Each tool is a published Apify Actor that this server invokes through the Apify API. The server starts the run, waits for a terminal state, and returns the rows.
Billing is to your own Apify account at each actor's published pay-per-result rate, listed on its Store page. Free-tier credit covers evaluation. A run that fails bills nothing beyond a fractional actor-start charge.
Every result carries the run_id and a console.apify.com URL, so any claim an agent makes from this server can be traced back to the exact run that produced it.
No Apify account? Agents can pay per run with x402
Every tool in this catalog is eligible for Apify's agentic payments: an agent with a funded Coinbase Agentic Wallet (USDC on Base, $1 minimum) buys a prepaid Apify token over the x402 protocol and uses it as APIFY_TOKEN — no account, no billing setup, no API key. The ready-made skill is apify.it/x402-awal:
npx -y awal auth login <email> # one-time wallet auth
npx awal x402 pay 'https://agi.apify.com/protocols/x402/prepaid-tokens?amount=5¤cy=usd' --max-amount 5000000 --json
# → returns a bearer token; export it as APIFY_TOKEN and start this server as usualThe prepaid balance is an absolute spending cap and expires after 14 days. Every tool here charges only per result — none pass platform usage through, none require full permissions, and none run in Standby mode, which are the three things that make an Actor ineligible. Prices are in the catalog (usdPer1000Results on every search hit), so an agent can see the cost before spending.
On honest answers
These actors are built around one rule: a failure must never be presentable as "nothing was found." That distinction matters most in exactly the cases people use this for — telling a buyer a property is clear of contamination, telling a pilot an airspace is uncontrolled, telling a lender a borrower is unlicensed.
So this server:
reports
run_statuson every call, and never attaches arowskey to a run that did not succeeddistinguishes "the run SUCCEEDED and the source genuinely matched nothing" from "the run failed" in the response text, explicitly
retries transient Apify 429/5xx, then fails loudly saying the platform failed and no conclusion should be drawn about the government source
treats an unknown tool name as a catalog miss, never as an empty result
The underlying actors carry the same discipline: per-source status on every row, null meaning not checked rather than checked and negative, live drift assertions that fail the run when an upstream silently truncates, and pagination guards on sources that answer HTTP 200 with a partial payload. Each actor's Store page documents the specific traps it defends against.
Coverage
120 tools, every one reading an official US government API or bulk file. The MCP server exposes 15 of them directly — twelve named tools plus search-gov-data-tools, describe-gov-data-tool and run-gov-data-tool, which reach the rest — because agents choose badly when handed more than about twenty tools.
Each entry links to its full input/output schema, pricing and worked examples.
Contamination & environmental due diligence (18)
epa-airtoxscreen-cancer-risk-screener · epa-contaminated-site-screener · epa-drinking-water-quality-screener · epa-ghgrp-emitter-screener · epa-impaired-waters-303d-screener · epa-nonattainment-air-permit-screener · epa-rcra-corrective-action-cleanup-monitor · epa-rcra-hazwaste-generator-rollup · epa-repowering-brownfield-to-solar-site-finder · epa-sole-source-aquifer-screener · epa-tri-facility-release-rollup · epa-tsca-cdr-chemical-site-screener · erns-nrc-release-incident-screener · fuds-defense-site-screener · historic-land-use-sic-contaminant-screener · site-due-diligence-bundle · state-tank-spill-registry-screener · usgs-historical-topo-records-review
Flood, fire, quake & ground hazard (13)
calfire-fhsz-screener · cbrs-coastal-barrier-screener · fema-nri-county-risk-profile · fema-repetitive-loss-flood-market-screener · karst-sinkhole-risk-screener · nfip-flood-loss-risk-screener · noaa-slr-inundation-threshold-screener · noaa-storm-events-peril-climatology · usace-levee-flood-risk-screener · usgs-bedrock-geology-lithology-screener · usgs-landslide-proximity-screener · usgs-seismic-design-screener · wildfire-asset-exposure-screener
Habitat, wetlands, protected & historic land (9)
blm-sage-grouse-siting-screener · fws-critical-habitat-screener · fws-wetlands-proximity-screener · nhd-surface-water-404-screener · noaa-efh-consultation-screener · nrhp-historic-place-screener · padus-protected-lands-screener · tribal-land-jurisdiction-screener · wild-scenic-river-proximity-screener
Energy siting, grid & pipelines (14)
blm-mining-claims · blm-solar-siting-area-screener · boem-offshore-wind-lease-tracker · cdfi-nmtc-lowincome-energy-bonus-screener · eia-v2-site-energy-economics · energy-corridor-368-screener · hifld-grid-proximity-screener · interconnection-queue-tracker · ira-energy-community-bonus-screener · nrel-pvwatts-solar-resource-scorer · ntad-gas-pipeline-proximity-screener · oil-gas-well-permits · orphaned-well-proximity-screener · uswtdb-turbine-proximity-screener
Farmland, soil & water (5)
ssurgo-soil-suitability-screener · usda-cdl-farmland-siting-screener · usgs-groundwater-depth-screener · usgs-nwis-streamflow-monitor · water-rights-availability-screener
Banking, lending & credit (8)
bank-enforcement-tracker · fdic-branch-network-churn-rollup · fdic-ncua-health-rollup · fdic-sod-deposit-market-share-rollup · fdic-structure-change-delta-monitor · fhlbank-membership-delta-monitor · hmda-fair-lending-disparity-rollup · sba-loan-portfolio-explorer
Securities, audit, pensions & sanctions (10)
adcvd-trade-remedy-tracker · consolidated-screening-list-delta · fec-campaign-finance-delta · pbgc-pension-failure-monitor · pcaob-auditor-engagement-monitor · reg-a-plus-lifecycle-monitor · reg-cf-lifecycle-monitor · ria-registration-delta-monitor · short-interest-ftd-monitor · uflpa-entity-list-monitor
Licensing, exclusion & workforce screening (10)
city-business-license-leads · gleif-ownership-graph · hrsa-clinician-workforce-monitor · hrsa-shortage-designation-monitor · kyb-company-verifier · license-verifier · liquor-license-new-openings-tracker · medicaid-exclusion-screener · realtor-license-roster-delta · sos-registry-monitor
Real estate, parcels, deeds & leads (9)
absentee-owner-lead-list-builder · acris-deed-transfer-intel · childcare-provider-leads · distressed-property-signal-stacker · hud-affordable-housing-explorer · hud-qct-lihtc-boost-screener · hud-section8-contract-expiration-monitor · nyc-landlord-registry-lead-list · parcel-owner-lookup
Infrastructure, transport & airspace (10)
bts-airline-ontime-delay-climatology · bts-db1b-fare-route-market-analytics · dod-mirta-military-installation-siting-screener · faa-drone-airspace-checker · fhwa-nbi-bridge-risk-monitor · gsa-site-scanning-auditor · national-tunnel-inventory-risk-monitor · nhtsa-vpic-vin-decoder · nid-dam-risk-monitor · ntad-fra-rail-crossing-risk-screener
Health, clinical & drug supply (7)
cdc-nndss-outbreak-monitor · clinical-trials-meta-search · cms-open-payments · cms-part-d-prescriber-delta · drug-shortage-delta-monitor · nadac-price-movers · usmin-mine-feature-proximity-screener
Patents, IP & company data (4)
npm-package-health-scorer · ptab-trial-tracker · sbom-vulnerability-rollup · uspto-patent-lapse-fto-monitor
Labor & enforcement (3)
dol-enforcement-rollup · osha-ita-injury-illness-establishment-monitor · warn-layoff-aggregator
Development
npm install
npm test # offline suite, no network
node tools/mutate.cjs # re-injects known defects, asserts the suite catches them
npm run catalog -- <apify-token> # regenerate src/catalog.json from the live APILicense
MIT
Available Tools
15 toolsdescribe-gov-data-toolARead-onlyIdempotent
Return the full input schema and documentation for any one of the 120 tools in the catalog. Call this before run-gov-data-tool so the input is correctly shaped. FREE: reads a catalog bundled with this server — no network call, no run, nothing charged.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | Yes | The tool name, e.g. "noaa-slr-inundation-threshold-screener". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive and openWorldHint=false, so the safety profile is covered. The description adds genuinely new behavioral context — that it reads a catalog bundled with the server, makes no network call, and incurs no charge — which materially affects an agent's willingness to call it speculatively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with what it returns, then the ordering instruction, then the cost disclosure. No filler, and the most decision-relevant facts come first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description states exactly what comes back (full input schema and documentation), and the no-cost/no-network disclosure removes the main hesitation about calling it. Nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single 'tool' parameter is already documented with an example. The description adds the constraint that the value must be one of the 120 tools in this server's catalog, which meaningfully narrows valid inputs beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Return) and resource (the full input schema and documentation) with an exact scope: any one of the 120 tools in the catalog. An agent can immediately tell this apart from run-gov-data-tool, which actually executes a tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to 'Call this before run-gov-data-tool so the input is correctly shaped,' which gives clear ordering context relative to the sibling. It stops short of naming when this tool is unnecessary (e.g., when the schema is already known), so it is clear but not fully exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
epa-contaminated-site-screenerA
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. 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
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | "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". | |
| assets | No | Locations 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)"}]. | |
| states | No | 2-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). | |
| onlyNpl | No | Inventory 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. | |
| astmMode | No | Assets 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. | |
| programs | No | Which 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"]. | |
| maxResults | No | Safety 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. | |
| radiusMiles | No | Distance 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. | |
| onlyWithCoords | No | Inventory 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. | |
| includeBoundaries | No | Assets 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. | |
| maxHitsPerProgram | No | 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. | |
| strictDataCompleteness | No | Assets 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses that the tool is read-only against the government source but starts a metered Apify run billed $0.01/result ($10/1,000, down to $3.00/1,000 on paid plans), that nothing is charged on failure, that no API key is needed, and that it reads live from the official source. This resolves the readOnlyHint=false signal by explaining the run-creation side effect, and adds cost/failure semantics annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and the CHOOSE-this/alternatives routing before cost details, which is well-structured. It is lengthy and somewhat repetitive (ASTM search distances appear in both the opening and later sections), but for a 12-parameter tool the length is largely earned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully carries the burden: it explains billing, failure semantics (assets failing validation fail the run and bill nothing), the extra astm_summary and boundary-intersection rows, and the IC-polygon caveat. An agent has everything needed to call it correctly and interpret the result shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter in depth (modes, programs, ASTM distances, billing caps). The top-level description restates the thematic content (ASTM distances, database list, boundary checks) but adds little parameter syntax or format detail beyond what the schema provides. Baseline 3 is appropriate when the schema carries the burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (an EPA multi-database environmental due-diligence screen by address) and enumerates the exact databases covered (Superfund/NPL, RCRA CORRACTS/TSD/generators, TRI, UST, LUST, Brownfields, NPDES, AIR, TSCA, RMP) at ASTM E1527-21 distances. It explicitly distinguishes itself from siblings by naming site-due-diligence-bundle and epa-drinking-water-quality-screener, so an agent can route correctly 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit "CHOOSE THIS for the ASTM E1527-21 Phase I records search" trigger plus named alternatives for adjacent tasks (combined-verdict bundle, drinking-water quality). It also disambiguates internal modes (assets vs inventory) via parameter docs, leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
epa-drinking-water-quality-screenerA
EPA Drinking Water Quality Screener - Violations, Lead & PFAS. Screen any US coordinate for the public water system serving it: SDWA health-based violations, Lead & Copper Rule 90th-percentile results and UCMR5 PFAS detections - the evidence base behind the LCRI (Nov 1, 2027) and PFAS NPDWR (Apr 26, 2027) deadlines. Never clears a source that did not answer. CHOOSE THIS for public water-system quality: SDWA violations, lead 90th-percentile results and PFAS occurrence. It is NOT a property contamination screen — for soil and groundwater records at a site use epa-contaminated-site-screener. Reads live from the official government source. 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.012 per Drinking water screening result ($12 per 1,000). Lower on paid Apify plans, down to $3.60 per 1,000. Nothing is charged when a run fails. Store page: https://apify.com/malonestar/epa-drinking-water-quality-screener
| Name | Required | Description | Default |
|---|---|---|---|
| assets | No | Sites to screen, each {"lat": <number>, "lon": <number>, "label": "<your name for the site>"}. Each location is matched against EPA's mapped community water system service areas to identify the serving public water system. A location with no mapped service area returns an explicit NO_SERVICE_AREA row (likely a private well), never a false clear. Example: [{"lat":43.0125,"lon":-83.6875,"label":"Flint MI - lead action level exceedance"},{"lat":40.9793,"lon":-74.1165,"label":"Ridgewood NJ - PFAS detections"},{"lat":39.7392,"lon":-104.9903,"label":"Denver CO - control"}]. | |
| pwsids | No | Optional. Screen specific public water systems by 9-character EPA PWSID (for example ["MI0002310"]) without a coordinate lookup. Combined with any locations supplied above. Example: []. | |
| maxAssets | No | Safety cap on how many locations are screened in one run. Locations beyond the cap are reported in the log and not billed. Example: 250. | |
| includeLead | No | Fetch Lead and Copper Rule 90th-percentile tap results and join them to their monitoring periods, so the reported value is dated rather than undated. Example: true. | |
| includePfas | No | Screen the system against EPA's UCMR5 occurrence dataset (1.9 million results, 29 PFAS analytes plus lithium). Turn off for a faster run when PFAS is out of scope. Example: true. | |
| simulateOutage | No | Diagnostic seam for verifying failure behaviour. Forces one or all EPA sources to fail so you can confirm the actor reports the source as unavailable and never publishes a false clear. Leave as none for normal use. Example: "none". | |
| violationYears | No | How many years back counts as a recent health-based violation for the screening flags. The full violation history is still summarised regardless. Set 0 to disable the window. Example: 10. | |
| refreshPfasCache | No | Re-download and re-index the UCMR5 occurrence file even if the cached index already matches EPA's current published vintage. Normally unnecessary: the cache is keyed to the file's Last-Modified header and rebuilds itself whenever EPA republishes. Example: false. | |
| runBudgetSeconds | No | Total time budget for all upstream requests including retries. Requests stop rather than retry past this budget, so a long EPA outage fails loudly instead of hanging. Example: 900. | |
| includeViolations | No | Fetch the system's full Safe Drinking Water Act violation history from EPA SDWIS and roll it up (health-based, monitoring/reporting, treatment technique, Lead & Copper Rule, public-notification tier). Example: true. | |
| includeEnforcement | No | Fetch the system's SDWIS formal enforcement action history and report the count and most recent action. Example: true. | |
| maxViolationDetails | No | How many individual health-based violation records to include in the health_based_violation_details array on each row, newest first. Counts are never truncated. Example: 25. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it explains that it is read-only against the government source but each call starts a metered, billable run on the caller's Apify account ($0.012/result, $3.60–$12 per 1,000, nothing charged on failure), and that it "never clears a source that did not answer." The readOnlyHint=false is thereby reconciled rather than contradicted (the write is run creation, not external mutation), and non-idempotency is implied by per-call metering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with scope, then routing guidance, then cost/side effects, which is the right order. It is on the long side and the pricing breakdown plus store URL are somewhat promotional, but each block still earns its place for a paid, metered tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter tool with no output schema, the description covers the key semantic behaviors (NO_SERVICE_AREA row for unmapped locations, dated lead results, health_based_violation_details) and the cost model. Return-shape detail is partial but sufficient; nothing an agent needs to invoke correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema itself is exceptionally rich (examples, semantics, and rationale for each of the 12 params). The description adds no parameter-level detail, so this sits at the baseline 3 — the schema carries the full burden and does so adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource (screen any US coordinate for the public water system serving it) and enumerates the data domains: SDWA violations, Lead & Copper Rule 90th-percentile results, UCMR5 PFAS detections. It explicitly distinguishes itself from the sibling epa-contaminated-site-screener, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"CHOOSE THIS for public water-system quality" plus an explicit exclusion: "It is NOT a property contamination screen — for soil and groundwater records at a site use epa-contaminated-site-screener." This is the when/when-not/alternative pattern done cleanly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
faa-drone-airspace-checkerA
FAA Drone Airspace Checker - Batch LAANC & No-Fly Verdicts. Batch lat/lon to FAA UAS airspace verdicts at $0.02 per check: LAANC ceilings AND whether LAANC is actually offered, charted Class B/C/D/E surface areas, prohibited areas, national-defense TFR areas, special use airspace, NSUFR, stadium TFRs. Never reads clear when a layer did not answer. Reads live from the official government source. 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.02 per result ($20 per 1,000). Lower on paid Apify plans, down to $6.00 per 1,000. Nothing is charged when a run fails. Store page: https://apify.com/malonestar/faa-drone-airspace-checker
| Name | Required | Description | Default |
|---|---|---|---|
| layers | No | Which FAA airspace layers to check each point against. Defaults to all eight. laanc_grid = UAS Facility Map LAANC ceilings; class_airspace = charted Class A/B/C/D/E airspace (ALWAYS queried - it is the check that distinguishes uncontrolled airspace from controlled airspace that has no LAANC grid, so excluding it would force every verdict to INCONCLUSIVE); prohibited_areas = P-areas like P-56; national_defense_tfr = national defense airspace TFR areas; special_use_airspace = Restricted/MOA/Alert/Warning/Danger areas; part_time_nsufr = part-time national security UAS flight restrictions; stadiums = stadium game-day TFR proximity (3 NM); recreational_flyer_sites = FAA-listed fixed flying sites. Example: ["laanc_grid","class_airspace","prohibited_areas","national_defense_tfr","special_use_airspace","part_time_nsufr","stadiums","recreational_flyer_sites"]. | |
| points | Yes | Locations to check, in WGS84 decimal degrees. Each item is either an object like {"lat": 39.86, "lon": -104.67, "label": "Site A"} (label optional; latitude/longitude aliases accepted) or a "lat,lon" string like "39.86,-104.67". One result row is produced per point, and one Result event is charged per row. Example: [{"lat":39.86,"lon":-104.67,"label":"Denver Intl (KDEN) - Class B, LAANC ceiling 0 ft"},{"lat":40.8296,"lon":-73.9262,"label":"Yankee Stadium NYC - LAANC 300 ft + stadium TFR"},{"lat":42.1708,"lon":-72.6375,"label":"Westover ARB (KCEF) - Class D, LAANC NOT offered"},{"lat":38.9072,"lon":-101.05,"label":"Rural western Kansas - MOA overhead, floor 500 ft AGL"},{"lat":47.2,"lon":-108.6,"label":"Rura…(truncated). | |
| maxPoints | No | Safety cap on the number of points checked (and billed) in one run. Points beyond the cap are skipped with a warning. Applied by default if omitted: 500. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and idempotentHint=false, and the description explains exactly why: each call starts a metered Apify run billed $0.02/result, with nothing charged on failure, while remaining read-only toward the government source. It also discloses the 'never reads clear when a layer did not answer' verdict behavior — rich context beyond the structured hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and layer list, with cost/side-effect disclosure in a clearly labeled block. Dense and mostly earned, though the trailing store-page URL and repeated billing figures add minor bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still conveys what each point yields (LAANC ceiling, whether LAANC is offered, prohibited/SUA/TFR status), the one-row-per-point billing model, and the safety cap. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so layers, points, and maxPoints are already fully documented in the schema, including the enum title mapping and the class_airspace caveat. The description adds no syntax or format detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — batch lat/lon converted to FAA UAS airspace verdicts — and enumerates the exact layers (LAANC ceilings, Class B/C/D/E, prohibited areas, TFRs, NSUFR, stadium TFRs). An agent knows precisely what this tool produces without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives strong in-tool guidance (defaults to all eight layers, why class_airspace cannot be excluded, cost per result) but never states when to choose this tool over its siblings like epa-contaminated-site-screener or other run-gov-data-tool entrants. Usage is implied by the domain rather than routed explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fdic-ncua-health-rollupA
Bank & Credit-Union Financial Health API — FDIC/NCUA QoQ. Bank financial-stress screen on keyless FDIC data: capital ratios, CRE concentration (2006 guidance two-prong test), deposit runoff, ROA/ROE/NIM and asset quality per institution, with quarter-over-quarter deltas, peer-percentile scoring and health flags (deposit outflow, low ROA, rising NPL). Reads live from the official government source. 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.008 per result ($8 per 1,000). Lower on paid Apify plans, down to $2.40 per 1,000. Nothing is charged when a run fails. Store page: https://apify.com/malonestar/fdic-ncua-health-rollup
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Every mode returns the SAME full field set — capital ratios, uninsured deposits, unrealized losses, CRE concentration, credit quality and quarter-over-quarter deltas. Mode changes the ordering only. snapshot = largest institutions first. delta = biggest quarter-over-quarter deposit move first (the headline run-risk signal). score = highest peer asset percentile first. stress = most health flags first, the triage view. Example: "stress". Applied by default if omitted: "snapshot". | |
| state | No | US state to scope the cohort, e.g. CA, TX, NY. Strongly recommended: it focuses the run and makes peer percentiles state-level. Empty = the entire country (slower; national peer scoring). Example: "TX". | |
| benchmark | No | Adds asset-weighted benchmark ratios and this bank's distance from them, in percentage points: benchmark_uninsured_deposit_ratio, benchmark_cre_to_tier1_pct, benchmark_unrealized_loss_to_equity_pct plus uninsured_vs_benchmark_pts, cre_vs_benchmark_pts, unrealized_vs_benchmark_pts. 'national' compares against all ~4,350 FDIC-insured banks; 'state' against the banks in your state. Costs exactly ONE extra request thanks to server-side aggregation — not a second full download. 'none' skips it. Example: "national". | |
| creGrowth | No | The 2006 interagency CRE guidance is TWO tests: construction >= 100% of capital, OR (CRE >= 300% of capital AND CRE grew >= 50% over 36 months). Leaving this on fetches the quarter from 12 quarters ago — one extra request — and fills cre_growth_36m_pct, cre_total_loans_36m_ago, cre_baseline_date and cre_guidance_prong, plus the cre_guidance_both_prongs flag. Turn it off to skip that request; the level tests still run. Example: true. | |
| maxAssets | No | Only include institutions with at most this many total assets, in thousands of dollars. 0 = no ceiling. Combine with minAssets to score within an asset-size peer band (e.g. community banks $250M–$1B). Applied by default if omitted: 0. | |
| minAssets | No | Only include institutions with at least this many total assets, in thousands of dollars (FDIC reports assets in $000s, so 1000000 = $1B). Use with maxAssets to build a peer band. 0 = no floor. Applied by default if omitted: 0. | |
| peerBasis | No | What counts as a 'peer' when computing peer_asset_percentile, peer_roa_percentile, peer_cre_percentile and peer_uninsured_percentile. 'cohort' scores against everything you pulled (a state cohort mixes a $27M agricultural bank with a $200B trust bank, so the percentile means little). 'business_line' uses the FDIC SPECGRP business-model peer group — the cut a bank examiner uses. 'asset_band' uses FFIEC-style size bands. 'community_bank' splits on the FDIC community-bank research flag. Groups with fewer than 5 institutions fall back to the full cohort rather than ranking a bank against two neighbours. Example: "business_line". Applied by default if omitted: "cohort". | |
| maxResults | No | Maximum number of institution-health records to return after filtering, scoring, and ranking. This is your cost cap: one record = one billable result. 500 covers a full mid-size state; TX has ~380 banks, CA ~180. Example: 500. Applied by default if omitted: 1000. | |
| priorItems | No | Optional. In delta mode, an array of institution rows from a previous run (each needs id, total_assets, total_deposits) to diff the current quarter against, instead of auto-fetching the prior quarter. Lets you compare two arbitrary runs. Applied by default if omitted: []. | |
| institutionType | No | Which institutions to include. 'bank' = FDIC-insured banks, fully supported, the only option that returns data today. 'credit_union' = NCUA — NOT AVAILABLE YET (ships in v1.3); selecting it alone fails the run immediately and bills nothing, rather than quietly handing back bank data. 'all' = runs the bank half now and picks up credit unions automatically the moment v1.3 lands. Example: "bank". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Well beyond the annotations, it discloses the metered-run billing model ($0.008/result, down to $2.40 per 1,000 on paid plans), that failed runs are not charged, that it is read-only with respect to the government source, and that credit_union selection fails immediately without billing. This is exactly the kind of side-effect and cost context annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, then a clearly labeled COST AND SIDE EFFECTS block, so the most decision-relevant facts come first. It is somewhat long and ends with a store-page URL, but every sentence carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter tool with no output schema, the description covers cost, side effects, feature availability and the returned metric families, which is what an agent needs to decide and invoke correctly. Return field shapes are left to the schema, which is acceptable given there is no output schema to lean on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all ten parameters are already fully documented in the schema, including enum semantics, defaults and worked examples. The top-level description adds little parameter detail beyond the schema; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific resource and domain (bank/credit-union financial health from FDIC/NCUA data) and enumerates the exact outputs: capital ratios, CRE concentration, deposit runoff, ROA/ROE/NIM, asset quality, QoQ deltas, peer percentiles and health flags. No sibling tool shares this domain, and an agent can tell precisely what it gets without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description supplies clear operating context: mode meanings with use-cases ('delta = the headline run-risk signal', 'stress = the triage view'), a recommendation to scope by state, and a cost-cap rationale for maxResults. It stops short of an explicit when-to-use/when-not statement versus other tools, but no near-alternative exists among the siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fema-nri-county-risk-profileA
FEMA NRI County Risk Profile — Asset Hazard Join. Join any asset (address, lat/lon, or county FIPS) to FEMA's National Risk Index hazard profile at county or census-tract resolution: composite risk score, expected annual loss, social vulnerability, resilience, and ranked top-3 hazards across all 18 FEMA perils. Reads live from the official government source. 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.006 per result ($6 per 1,000). Lower on paid Apify plans, down to $1.80 per 1,000. Nothing is charged when a run fails. Store page: https://apify.com/malonestar/fema-nri-county-risk-profile
| Name | Required | Description | Default |
|---|---|---|---|
| assets | No | Locations to profile. Each item is EITHER {fips:"08031"} (5-digit county FIPS), OR {state:"Colorado", county:"Denver"}, OR {lat:39.7392, lon:-104.9903} (geocoded via the keyless FCC Census Block API). Add an optional "label" to identify each asset in the output. Leave empty to run inventory mode instead (see states/counties below). Example: [{"state":"Colorado","county":"Denver","label":"Denver HQ"},{"lat":29.9511,"lon":-90.0715,"label":"New Orleans warehouse"}]. | |
| states | No | Used only when Assets is empty. Return full NRI risk profiles for these US states (2-letter postal codes or full names, e.g. CO or Colorado) at the resolution set above (county or tract). Leave empty (with Assets also empty) to return a small nationwide sample bounded by Max results. | |
| counties | No | Used only when Assets is empty. Narrows the States filter above to specific bare county names (no "County"/"Parish" suffix), e.g. Denver. Applies at both county and tract resolution. | |
| maxResults | No | Maximum number of output records (each is one billed result). In asset mode this caps the number of assets processed; in inventory mode it bounds the row count returned (there are ~3,144 US counties and ~85,000 US census tracts total). Example: 500. | |
| resolution | No | Geographic resolution to join against: "county" (default — ~3,144 US counties) or "tract" (~85,000 US census tracts, finer-grained). Tract resolution only applies to lat/lon assets (geocoded to a tract via the FCC Census Block API) and to inventory-mode states/counties pulls; fips or state+county assets carry no tract signal and always use county data. If a tract lookup misses or the tract service errors, the record gracefully falls back to its county profile with resolution_used="county" (never fails the run). Example: "county". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=false, idempotentHint=false, openWorldHint=true) are all reconciled explicitly: the description states the tool is read-only against the government source yet starts a metered run on the caller's Apify account at $0.006/result, and that failed runs are not charged. That is exactly the behavioral context an agent needs and cannot infer from the schema, including the graceful tract-to-county fallback that never fails the run.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence and the cost/side-effect block follows in a clearly labeled 'COST AND SIDE EFFECTS' segment, which is justified for a metered tool. It runs slightly long — the discounted-plan pricing ('down to $1.80 per 1,000') and the store URL are marginal — but nothing is genuinely wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still enumerates the returned fields and both operating modes, covers the resolution/fallback semantics, and discloses billing. An agent has everything needed to decide whether to call it and what to expect back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters thoroughly, including the assets format examples and the maxResults billing coupling. The description restates the asset types and modes but adds no syntax or format detail beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — join an asset to FEMA's National Risk Index hazard profile — and names the output dimensions (composite risk score, expected annual loss, social vulnerability, resilience, top-3 hazards). Scope (county/tract, 18 perils) is explicit, so an agent can distinguish it from the other gov-data siblings without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the two operating modes (asset mode when 'assets' is populated, inventory mode when it is empty) and how resolution interacts with each. It does not name competing sibling tools such as site-due-diligence-bundle or epa-contaminated-site-screener, so the routing guidance is strong but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fws-wetlands-proximity-screenerA
USFWS Wetlands Proximity Screener - Section 404 Site Risk API. Wetland due-diligence API for site selection: per lat/lon site, wetland presence within radius, Cowardin classification codes/systems, wetland types, total acreage nearby and a Section 404 dredge-and-fill screening flag. USFWS National Wetlands Inventory open data. CHOOSE THIS for National Wetlands Inventory polygons and their decode columns within a radius. It does NOT answer Clean Water Act §404 jurisdiction — for surface-water features and relative permanence use nhd-surface-water-404-screener. The two are usually needed together. Reads live from the official government source. 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.008 per result ($8 per 1,000). Lower on paid Apify plans, down to $2.40 per 1,000. Nothing is charged when a run fails. Store page: https://apify.com/malonestar/fws-wetlands-proximity-screener
| Name | Required | Description | Default |
|---|---|---|---|
| assets | Yes | Sites to screen for wetlands. Each entry is an object { "lat": number, "lon": number, "label": "optional name" }. Also accepts "lat,lon" strings or [lat, lon] arrays. One dataset row (one billed result) is produced per asset, even when no wetland is found; a bad entry yields an ERROR row and the run continues. Example: [{"lat":36.3736,"lon":-89.385,"label":"Reelfoot Lake, TN - site inside a mapped lake"},{"lat":35.2216,"lon":-75.6913,"label":"Cape Hatteras, NC - estuarine tidal marsh"},{"lat":45.8918,"lon":-123.9615,"label":"Cannon Beach, OR - marine shoreline"},{"lat":47.5,"lon":-99,"label":"Prairie pothole, ND - farmed and drained wetlands"},{"lat":39.7392,"lon":-104.9903,"label":"Denver, CO - urban infill, n…(truncated). | |
| maxResults | No | Maximum number of assets processed in one run (1-2000). One result row is emitted (and billed) per asset. Default 500. Applied by default if omitted: 500. | |
| radiusMeters | No | Radius around each asset used for the wetland-presence check, in meters (10-5000). Screened as a TRUE circle. Default 300 (~984 ft, roughly a parcel-scale buffer). Example: 300. | |
| computeNearestDistance | No | When on (default), the actor measures the true distance and bearing to the nearest NWI wetland polygon instead of reporting a largest-acreage proxy. Costs up to ~10 small extra requests per site. Turn off for very large batches; nearest_wetland_* then falls back to the largest-acreage feature and nearest_basis says so. Example: true. | |
| nearestSearchRadiusMeters | No | How far out to look for the nearest wetland, in meters (up to 8000). Independent of the screening radius, so a site can correctly read 'no wetland within 300 m' and still report the closest one 1,391 m away. Default 1609 (1 mile). Raised automatically to at least the screening radius. Example: 1609. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing the billing model ($0.008/result, discounts to $2.40 per 1,000, no charge on failure) and reconciling the readOnlyHint=false with reality: read-only toward the government source, yet each call starts a metered Apify run. This is exactly the side-effect context the annotations flag but don't explain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then usage routing, then cost and side effects, so the ordering is sensible. The pricing passage and trailing store URL are somewhat verbose, but each block carries distinct, useful information, so it stays reasonably tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so by listing the per-site outputs (presence, Cowardin codes, acreage, 404 flag). Combined with the radius/nearest-distance semantics surfaced in the schema, an agent has enough to call it correctly, though per-row failure behavior is only detailed in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents assets, maxResults, radiusMeters, computeNearestDistance and nearestSearchRadiusMeters in depth (including the true-circle screening and nearest-distance tradeoff). The description adds only the framing 'per lat/lon site' and output content, which is baseline value when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('wetland due-diligence API', 'USFWS Wetlands Proximity Screener - Section 404 Site Risk API') and enumerates the outputs (Cowardin codes/systems, wetland types, acreage, Section 404 screening flag). It names the sibling nhd-surface-water-404-screener and describes the boundary between them, so an agent can distinguish them without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'CHOOSE THIS for National Wetlands Inventory polygons... It does NOT answer Clean Water Act §404 jurisdiction — for surface-water features and relative permanence use nhd-surface-water-404-screener. The two are usually needed together.' This gives explicit when-to-use, when-not, the alternative, and a co-usage note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hifld-grid-proximity-screenerA
Transmission Line & Substation Distance API by Coordinates. For each lat/lon site: distance to the nearest transmission line (kV, owner, overhead/underground), nearest substation, nearest power plant, the serving utility and its ISO/RTO, plus generation and battery-storage MW nearby. Includes sub-100 kV. Data-center, renewable, BESS and EV siting. Reads live from the official government source. 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/hifld-grid-proximity-screener
| Name | Required | Description | Default |
|---|---|---|---|
| assets | Yes | Sites to screen for grid access. Each entry is an object { "lat": number, "lon": number, "label": "optional name" }. Also accepts "lat,lon" strings or [lat, lon] arrays. One dataset row (one billed result) is produced per asset; a bad entry yields an ERROR row and the run continues. Example: [{"lat":39.017,"lon":-77.46,"label":"Ashburn VA data center site"},{"lat":33.4484,"lon":-112.074,"label":"Phoenix AZ site"}]. | |
| eiaApiKey | No | Optional. A free EIA API key (https://www.eia.gov/opendata/register.php) enables the state industrial and commercial electricity price columns. Everything else works without it — leave this empty and those two columns are simply null. One lookup per distinct state, not per site. | |
| maxResults | No | Maximum number of assets processed in one run (1-2000). One result row is emitted (and billed) per asset. Default 500. Applied by default if omitted: 500. | |
| radiusMiles | No | Radius around each asset to search for transmission lines, substations and power plants, in miles (1-50). Features beyond this distance are ignored. Default 5. Example: 10. Applied by default if omitted: 5. | |
| minVoltageKv | No | Optional. Only count/consider transmission lines at or above this many kV. Since v1.2 the underlying layer includes sub-100 kV sub-transmission (69/46/34.5 kV), so values below 100 are now meaningful — leave empty to include every line, or set 115/230 to screen for high-voltage access only. Lines with an unknown voltage are excluded when this is set. Does not filter substations or power plants. | |
| skipErrorRows | No | When true, assets that could not be screened are logged but not written to the dataset, so you are not billed for them. Default false, which keeps every asset accounted for as an ERROR row. Note that a run in which EVERY asset fails always fails outright and bills nothing, regardless of this setting. Applied by default if omitted: false. | |
| includePlanned | No | Advanced/opt-in. Also check a 'planned transmission line' scratch layer that carries NO owner/voltage/status metadata. It is NOT an authoritative planned-line dataset — the planned_line_nearby flag is a low-confidence 'a planned-line geometry exists nearby' hint only. Default false. Applied by default if omitted: false. | |
| includeUtility | No | Also resolve which retail electric utility serves each site, its ownership type, holding company, customer count and summer peak, plus the balancing authority and ISO/RTO (PJM, ERCOT, CAISO, MISO, SPP, ISO-NE, NYISO). Where service territories overlap, the largest utility by summer peak load is reported as primary. On by default — one extra lookup per site. Example: true. | |
| simulateOutage | No | Diagnostic seam for verifying the reliability behaviour on demand rather than waiting for a real outage. "none" (default) is a genuine no-op. "primary" forces the primary line layer to appear down; "drift" forces the live drift gate to measure a truncated layer (the run then fails and bills nothing); "gate" forces the drift probes to be unreachable; "both" combines primary and gate. Leave as none for normal use. Applied by default if omitted: "none". | |
| includePowerPlants | No | Also report the nearest power plant (name, distance, fuel, technology, capacity MW, EIA plant code) plus total generation, battery-storage, solar and wind MW within the radius. Sourced from EIA's monthly plant inventory. On by default — set to false to skip and speed up large batches. Example: true. | |
| includeSubstations | No | Also report the nearest electric substation (name, distance, max/min voltage, connected line count) plus substations within the radius. On by default — set to false to skip substation screening and speed up large batches. Example: true. | |
| allowTruncatedLineFallback | No | The transmission-line answer comes from a national layer of 94,619 lines. If that layer is unavailable, the only backup is a 2023 copy that contains NO line below 100 kV — 44.8% of the US grid, and the sub-transmission most mid-size solar, BESS and EV-charging projects actually interconnect to. At Storm Lake IA it reports the nearest line 2.545 mi away at 161 kV when the truth is 0.649 mi at 69 kV. By default (false) such a run FAILS and bills nothing. Set true to receive rows instead, in which every complete-universe field (nearest_line_distance_miles, lines_within_radius, max_voltage_within_radius_kv, ...) is null, grid_tier reads DEGRADED, and only the nearest_ge100kv_line_* columns are populated. Applied by default if omitted: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses metered billing ($0.01/result, $10/1k, down to $3/1k), that failed runs bill nothing, reads live from the official source, and explains the DEGRADED fallback behavior. The readOnlyHint=false annotation is not contradicted in spirit (writes happen to the agent's own Apify run storage, not external systems) but the description's 'read-only with respect to the government source' wording could be clearer about the run-storage side effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, but the description is long and the COST AND SIDE EFFECTS block plus the extensive allowTruncatedLineFallback narrative make it dense. Much of the cost detail is essential, but the store page URL and some repetition (e.g., billing rules restated) add noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter read tool with no output schema, the description covers billing, data sources, fallback behavior, and default-on vs off semantics well. It could more explicitly enumerate the returned columns or clarify the readOnlyHint=false annotation's meaning, but an agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3; the description adds meaningful semantics beyond the schema — notably the billing consequence of skipErrorRows, the low-confidence nature of includePlanned, and the DEGRADED fallback semantics of allowTruncatedLineFallback. This lifts it above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (distance to transmission lines, substations, power plants by coordinates) with concrete output fields (kV, owner, overhead/underground, utility, ISO/RTO, MW nearby). Clearly distinguishable from siblings like interconnection-queue-tracker or fws-wetlands-proximity-screener, which cover different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names intended use cases (data-center, renewable, BESS, EV siting) which implies when to use it, and the include* flags let an agent scope the screening. It does not, however, explicitly compare against sibling tools or state when NOT to use this one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
interconnection-queue-trackerA
US Interconnection Queue Tracker - 7 ISO Queues & Deltas API. Normalize US ISO/RTO generator interconnection queues (SPP, MISO, NYISO, CAISO, PJM, ERCOT, ISO-NE) into one schema and track new, withdrawn, status-change and COD-slip deltas. For renewables developers, land agents, and energy consultants. Keyless. Reads live from the official government source. 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.008 per result ($8 per 1,000). Lower on paid Apify plans, down to $2.40 per 1,000. Nothing is charged when a run fails. Store page: https://apify.com/malonestar/interconnection-queue-tracker
| Name | Required | Description | Default |
|---|---|---|---|
| isos | No | ISO/RTO codes to pull. Leave empty to pull ALL 7 live sources (SPP, MISO, NYISO, CAISO, PJM, ERCOT, ISO-NE) in one run. All 7 are keyless - no account or API key needed. An unrecognised code now FAILS the run before anything is billed, rather than being silently dropped (which used to fall through to "all seven"). Example: ["SPP"]. Applied by default if omitted: []. | |
| mode | No | snapshot = emit the current normalized queue, automatically annotated with monitor fields (is_new_since_last_run, status_changed, previous_status) vs. the actor's own self-managed KV snapshot, plus synthetic withdrawn and per-ISO iso_summary rows. delta = legacy manual mode: compare against a prior snapshot YOU supply (priorItems/priorKvKey) and emit only change rows (new / withdrawn / status_change / cod_slip). Applied by default if omitted: "snapshot". | |
| deltaOnly | No | Snapshot mode only. When true, suppress unchanged queue rows and emit ONLY new/status-changed rows, synthetic withdrawn rows, and one iso_summary roll-up row per ISO — ideal for a scheduled weekly/daily monitor run that only cares about what changed. When false (default), the full queue is emitted as before, PLUS the same withdrawn/iso_summary rows as free bonus monitoring signal. Applied by default if omitted: false. | |
| maxResults | No | Maximum number of queue records to fetch across ALL selected ISOs combined. The cap is applied in ISO order, so a low value truncates the last ISOs: any ISO that is cut short or never reached is marked iso_status=truncated / not_fetched on its iso_summary row and is excluded from withdrawn-project detection for that run. The default is deliberately low (500) so an unconfigured call cannot run away; raise it to about 20000 to pull the whole federation (~18,200 records). Applied by default if omitted: 500. | |
| priorItems | No | Delta mode: the prior run's unified queue items (the array of records this actor produced before). The diff is computed purely against these. Ignored in snapshot mode. Applied by default if omitted: []. | |
| priorKvKey | No | Delta mode alternative to priorItems: a key in this actor's key-value store holding the prior snapshot. When set, the current snapshot is also SAVED under this key so scheduled runs diff automatically against the previous run. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations give only the safety profile, and the description goes well beyond it: metered Apify run at $0.008/result with plan-based discounts, no charge on failed runs, invalid ISO codes fail before billing, snapshot mode writes to the actor's own KV store, and low maxResults truncates trailing ISOs and excludes them from withdrawn detection. This is exactly the operational context an agent needs before invoking a metered, stateful call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then a clearly labelled COST AND SIDE EFFECTS block. The pricing paragraph is slightly repetitive (two price restatements) but each section is scannable and nothing important is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return burden and largely does it — it names the emitted row types (new, withdrawn, status_change, cod_slip, iso_summary) and describes synthetic rows. It does not specify pagination or the shape of an individual queue record, which is the only notable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description still adds value: the whole-federation size (~18,200 records) and the advice to raise maxResults to ~20000, plus that unrecognised ISOs now fail the run rather than silently falling back to all seven. It stops short of explaining priorItems/priorKvKey interaction in any detail beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (normalize + track deltas) on a specific resource (US ISO/RTO interconnection queues) and enumerates the exact 7 sources covered. The sibling tools are other gov-data utilities, none of which touch interconnection queues, so an agent can route unambiguously without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names an audience (renewables developers, land agents, energy consultants) and gives clear mode-selection context (snapshot vs. delta, deltaOnly for scheduled monitor runs). It never explicitly says when NOT to use it or names an alternative tool, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
license-verifierA
License Verification API — Nurses, MDs & OIG Exclusions. Primary source verification for US professional licenses. Search 19 state boards by name or license number: status, expiration, disciplinary actions. Cross-checks the NPPES NPI registry and screens the HHS-OIG exclusion list. Bulk roster screening. Reads live from the official government source. 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/license-verifier
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City to filter licensees by. Not every board publishes a city column. | |
| name | No | Full-name search that works across every board (handles combined name fields). Use this if lastName/firstName return nothing. | |
| roster | No | Batch mode: verify a whole roster of professionals in one run. Each item: {firstName, lastName, state (optional — omit to search every board), profession (optional), middleName (optional, improves scoring)}. Emits one verdict row per entry with verdict, match_score, match_tier, NPI cross-walk, OIG exclusion screen and board-action status. Capped at 200 entries per run. Every verdict row is billable, including NOT_FOUND and INCONCLUSIVE_SOURCE_ERROR — a verified negative is the deliverable. | |
| states | No | State codes or explicit board IDs. A bare state code searches EVERY board in that state - e.g. "TX" covers TDLR trades AND the Board of Nursing (RN, LVN, APRN). Use a hyphenated ID to target ONE board: IL-IDFPR, CT-DCP, CO-DORA, TX-TDLR, TX-BON (RN), TX-LVN, TX-APRN, OR-CCB, OR-BCD, NY-RACING (horse racing only), NY-RE, NY-COS, NY-NOTARY, NY-APPRAISER, WA-DOH (health professions), WA-CPA, WA-CONTRACTOR, DE-DPR, VT-DFS. States: CO, CT, DE, IL, NY, OR, TX, VT, WA. Example: ["WA"]. | |
| lastName | No | Licensee last name (partial match). Example: "Threlkeld". Applied by default if omitted: "". | |
| firstName | No | Licensee first name (partial match). Supplying it raises match confidence sharply — first + last name exact is the threshold for a confident verdict. Example: "Judson". Applied by default if omitted: "". | |
| npiLookup | No | For each roster entry, look the person up in the federal NPI registry and use their self-reported state license number to pin down the exact board record. This is what turns 125 same-name candidates into one verified match, and it returns NPI, taxonomy and practice address. Applied by default if omitted: true. | |
| maxResults | No | Maximum number of license records to return per board. Each returned row is billable, so start small. Example: 10. Applied by default if omitted: 200. | |
| statusOnly | No | Return only license number, type, status, expiration, provenance and the OIG exclusion flags. Handy for recurring renewal monitoring. NOTE: this is the SAME price per row as a full record — it returns less data, not cheaper data. Applied by default if omitted: false. | |
| licenseType | No | e.g. "Registered Nurse", "Real Estate", "Cosmetology", "Professional Engineer". Boards without a license-type column skip this filter and say so in the log and in unsupported_filters. | |
| businessName | No | Business or DBA name to search (partial match). | |
| licenseNumber | No | Exact license number to verify. The most precise search available — use it when you have it. | |
| checkDiscipline | No | Join the best-matching licensee against secondary board-action datasets: Delaware DPR disciplinary actions and the NYS Office of Professional Medical Conduct. A failed lookup is reported as unknown, never as 'no action on file'. Applied by default if omitted: true. | |
| onlyDisciplined | No | Return only licensees with a disciplinary history. Honoured by IL-IDFPR, CO-DORA, DE-DPR, WA-DOH, TX-BON and TX-LVN. Target those board IDs directly rather than a bare state code, or sibling boards that publish no disciplinary column will also return rows (they are reported in unsupported_filters). Applied by default if omitted: false. | |
| socrataAppToken | No | Optional free Socrata app token to raise rate limits. | |
| screenExclusions | No | Check every result against the federal HHS-OIG List of Excluded Individuals/Entities (83,000+ records, refreshed monthly). Matched on NPI first, then last+first+state. A surname-only hit is NEVER reported as an exclusion — it is flagged for review instead. Adds no per-row cost. Applied by default if omitted: true. | |
| rosterLimitPerBoard | No | How many candidate records to pull per board for each roster entry before scoring. Higher values reduce the chance of missing the right person for a common surname; candidates_truncated tells you when the cap was hit. Applied by default if omitted: 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The dedicated 'COST AND SIDE EFFECTS' section goes well beyond the annotations: it explains that calls are metered runs on the caller's Apify account, priced $0.01/result ($10 per 1,000) and as low as $3.00 per 1,000 on paid plans, with no charge on failed runs. It also clarifies the read-only scope ('never writes to any external system') and that every returned verdict row — including NOT_FOUND and INCONCLUSIVE_SOURCE_ERROR — is billable, which is exactly the kind of trait the readOnlyHint=false / idempotentHint=false annotations imply but don't explain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose, coverage, and cost are front-loaded under an explicit heading, and the cost block is dense with genuinely decision-relevant facts. It is longer than strictly necessary — the store URL and the 'Nurses, MDs & OIG Exclusions' marketing line could go, and some capability claims are double-stated — but nothing is buried or misleading.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 17-parameter, zero-required, no-output-schema tool, the description covers the important agent-facing unknowns: cost model, billing on negative results, roster cap of 200, and the roster verdict row shape (verdict, match_score, match_tier, NPI cross-walk, OIG screen). It does not describe what a single-record search returns or default-response size, which is a minor gap against its otherwise solid coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the 17 parameters are already fully documented at the field level, and the top-level description mostly restates the search modes (name, license number, states, roster) rather than adding syntax or precedence rules. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening states a specific verb-and-resource ('License Verification API ... Primary source verification for US professional licenses') and enumerates scope: 19 state boards, NPI registry cross-check, HHS-OIG exclusion screening, bulk roster mode. This is unmistakably distinct from every sibling (site due diligence, EPA/FEMA/FAA screeners). An agent can route to it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete selection cues: use licenseNumber when you have it (most precise), fall back to full name if lastName/firstName return nothing, use a hyphenated board ID to target one board rather than a bare state code, and use roster mode for batch verification. It never states when NOT to use this tool or names an alternative, but the tool has no functional sibling to redirect to, so the coverage is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nhd-surface-water-404-screenerA
USGS NHD Surface Water & Section 404 Wetland Screener. Screen any lat/lon against USGS NHDPlus HR surface water. 94 fields: exact distance to the nearest perennial, intermittent and ephemeral reach, waterbody type and purpose, mean annual flow, stream order, HUC-8/10/12, a jurisdictional-likelihood call with its reasoning, and a Section 404/WOTUS flag. CHOOSE THIS for Clean Water Act §404 surface-water screening — streams, waterbodies and their relative permanence. For mapped wetland polygons use fws-wetlands-proximity-screener. Reads live from the official government source. 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.012 per Result ($12 per 1,000). Lower on paid Apify plans, down to $3.60 per 1,000. Nothing is charged when a run fails. Store page: https://apify.com/malonestar/nhd-surface-water-404-screener
| Name | Required | Description | Default |
|---|---|---|---|
| assets | Yes | Required. The list of sites to screen, in the standard [{lat, lon, label}] shape. Use decimal degrees (lon is negative in the USA). label is optional free text - it is echoed on every output row so you can join results back to your parcel list. Example: [{"lat":40.0143,"lon":-105.2829,"label":"Boulder CO parcel"}]. The four prefilled sites deliberately cover the range of outcomes: a creekside parcel 5 m from a perennial stream carrying 103 cfs (HIGH), a Louisiana site sitting inside an NHD swamp/marsh (HIGH, wetland-driven), an Arizona parcel inside a mapped desert wash (LOW - washes are reported but are not jurisdictional after Sackett), an upland Mojave parcel whose only nearby feature is an ephemeral reach (LOW), and an open-coast parcel at the mouth of Mobile Bay sitting on the Gulf of Mexico polygon (HIGH) - the coastal case that build 1.1.6 and earlier could not screen at all. Example: [{"lat":40.0143,"lon":-105.2829,"label":"Boulder CO - creekside redevelopment parcel"},{"lat":29.99091,"lon":-89.93323,"label":"New Orleans East LA - swamp/marsh adjacent site"},{"lat":33.42931,"lon":-111.98414,"label":"Tempe AZ - parcel inside a mapped desert wash"},{"lat":35.2,"lon":-115.9,"label":"Mojave NP CA - upland solar reference site"},{"lat":30.2481,"lon":-88.0783,"label":"Dauphin Islan…(truncated). | |
| maxResults | No | Upper bound on the number of assets screened, and therefore on the number of dataset rows produced. One asset always produces exactly one row, including sites that turn out to be far from any mapped water. Clamped to 1-10000. Example: 100. Applied by default if omitted: 1000. | |
| radiusMeters | No | How far around each site to look for NHD flowlines, waterbodies and water areas. 1000 m covers a typical Phase-I ESA adjacent-property review; widen to 3000 m for utility-scale solar, BESS or data-center siting. Clamped to 50-8000 m. Example: 1000. Applied by default if omitted: 1600. | |
| includeNonNetworkFlowlines | No | Also query NHDPlus HR layer 4 (NonNetworkNHDFlowline) for isolated ditches, canals and disconnected reaches near the site. Leave on for a conservative wetland-delineation scope; turn off to save one request per asset. Note that layer 4 carries no NHDPlus value-added attributes, so a nearest reach found there has no mean annual flow, stream order or drainage area. Example: true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are present but thin, and the description adds substantial context the annotations cannot: the read-only-vs-metered distinction ('never writes to any external system — but each call starts a metered run on YOUR Apify account'), exact pricing ($0.012/result, $12 per 1,000, down to $3.60), and the failure-billing exception. This explains why readOnlyHint is false despite reading a government source, which is exactly the gap annotations leave.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, routing, cost and side effects before the long field enumeration, and every clause carries information. It is longer than strictly necessary — the 94-field list and the trailing store URL are dense extras — but nothing is padded with filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the return content (94 fields, jurisdictional-likelihood call with reasoning, 404/WOTUS flag) and by disclosing cost and side effects. An agent has everything needed to decide, invoke and interpret this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already carries parameter meaning and the baseline is 3. The description adds outcome interpretation (HIGH creekside, LOW desert wash after Sackett, coastal case) rather than new parameter syntax or format detail, so it does not clear the bar to 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+scope ('Screen any lat/lon against USGS NHDPlus HR surface water') and enumerates the returned fields (distances to perennial/intermittent/ephemeral reaches, flow, stream order, HUC, 404/WOTUS flag). It explicitly distinguishes itself from the sibling: 'For mapped wetland polygons use fws-wetlands-proximity-screener.' An agent can route between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('CHOOSE THIS for Clean Water Act §404 surface-water screening') and a named alternative for the adjacent case (wetland polygons → fws-wetlands-proximity-screener). It also documents cost conditions and that failed runs are free, so the agent can reason about invocation risk.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parcel-owner-lookupA
Parcel Owner Lookup — Address to Owner & Assessor Record. Turn street addresses into parcel IDs, owner names, mailing addresses, assessed values & coordinates from official assessor rolls (Chicago/Cook County, Philadelphia, NYC) with Census-geocoder fallback. Address-grounding primitive for AI agents, proptech & skip tracing. $0.02/lookup. Reads live from the official government source. 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.02 per Result ($20 per 1,000). Lower on paid Apify plans, down to $6.00 per 1,000. Nothing is charged when a run fails. Store page: https://apify.com/malonestar/parcel-owner-lookup
| Name | Required | Description | Default |
|---|---|---|---|
| addresses | Yes | US street addresses to resolve to a parcel + owner record, one per line (e.g. '1060 W Addison St, Chicago, IL'). v1 matches against the Cook County IL (Chicago), Philadelphia PA, and New York City assessment rolls; addresses outside those areas fall back to Census geocoding (lat/lon only). Every input address always yields exactly one output row — unmatched addresses come back with match_confidence 'none'. Example: ["1060 W Addison St, Chicago, IL","1234 Market St, Philadelphia, PA","350 5th Ave, New York, NY"]. | |
| maxResults | No | Maximum number of addresses to process (one output row per address). Extra addresses beyond this cap are skipped. Example: 10. Applied by default if omitted: 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The COST AND SIDE EFFECTS section discloses a great deal beyond annotations: metered Apify account billing at $0.02/Result ($20/1000, down to $6/1000 on paid plans), no charge on failed runs, and read-only vs the government source. This is unusually rich operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose is strong, but the marketing copy ('Address-grounding primitive for AI agents, proptech & skip tracing', 'Reads live from the official government source', store URL) adds promotional bulk that a calling agent does not need. The billing detail earns its place; the slogan sentences do not.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers sources, fallback, billing, and side effects. The description mentions unmatched addresses return match_confidence 'none' (from the schema), but there is no output schema, so the full set and shape of returned fields (owner, mailing address, assessed value, coordinates) is only loosely implied rather than enumerated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already fully documented in the schema including examples, caps, and defaults. The description adds no parameter syntax or format detail beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: turns street addresses into parcel IDs, owner names, mailing addresses, assessed values, and coordinates. Names the exact data sources (Cook County/Chicago, Philadelphia, NYC assessor rolls, with Census geocoder fallback), which distinguishes it from every sibling, none of which are address-to-parcel tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context ('address-grounding primitive', skip tracing/proptech) and the fallback behavior for out-of-area addresses. It does not name an alternative sibling or state explicit when-not-to-use conditions, but the scope is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run-gov-data-toolA
Run any one of the 120 catalog tools with the given input and return its rows. Call describe-gov-data-tool first to shape the 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 per result row at the rate this tool reports. Call describe-gov-data-tool first to see the exact price before running anything. Nothing is charged when a run fails. A run that FAILS returns an error and no rows rather than an empty result, so a zero-row answer here always means the source was reached and genuinely matched nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | Yes | The tool name to run, e.g. "usgs-seismic-design-screener". | |
| input | Yes | Input object matching the schema returned by describe-gov-data-tool. | |
| maxItems | No | Maximum rows to return. Default 200. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing metered billing per result row on the caller's Apify account, no charge on failed runs, and the crucial failure-vs-empty distinction (a failed run errors rather than returning zero rows). It also reconciles the readOnlyHint=false annotation by clarifying that the run is read-only toward the government source but starts a billed run on the user's account — context no annotation conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then a clearly labeled COST AND SIDE EFFECTS block, so a reader gets the essential contract immediately. However, 'Call describe-gov-data-tool first' is stated twice, which is mild redundancy in an otherwise efficient definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a wrapper tool with no output schema, the description covers everything an agent needs: cost model, failure semantics, zero-row meaning, prerequisite describe call, and row-limit behavior. The absence of an explicit return shape is acceptable because the tool delegates to the described per-tool schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so 'tool', 'input', and 'maxItems' are already documented, and the description's repeated 'describe-gov-data-tool first to shape the input' is more usage guidance than parameter semantics. It mildly enriches the 'input' parameter by explaining where its shape comes from, but the schema does the heavy lifting, making 3 the correct baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource+scope: runs one of 120 catalog tools with a given input and returns its rows. It also implicitly distinguishes itself from describe-gov-data-tool, which is named as the schema-shaping step rather than the runner, so an agent can tell the two apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs the agent to call describe-gov-data-tool first to shape the input and to check the price before running, which is clear usage context and a named alternative. It stops short of stating when NOT to use it (e.g. vs. search-gov-data-tools or the bundled sibling tools), so it is strong but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search-gov-data-toolsARead-onlyIdempotent
Search the full catalog of 120 US government data tools by keyword, agency, or topic (e.g. "wetlands", "FDIC", "flood", "drone airspace", "business licenses"). Returns matching tool names with descriptions. Use this first when the task is not covered by one of the dedicated tools above. FREE: reads a catalog bundled with this server — no network call, no run, nothing charged.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return. Default 10. | |
| query | Yes | Keywords to match against tool name, title, description and category. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, not destructive, closed-world). The description adds cost/latency context beyond annotations: 'FREE: reads a catalog bundled with this server — no network call, no run, nothing charged.' This is valuable non-structured behavior. It doesn't describe result ordering or pagination, keeping it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with purpose, then routing, then cost note. Slightly dense with examples but every clause earns its place. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, routing, cost, and that it returns matching names with descriptions. Since no output schema exists, the description appropriately signals the return shape. The only gap is result ordering/pagination behavior, which is minor for a catalog search.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are fully documented in the schema (query match targets, limit default/max). The description adds nothing beyond the schema about parameters, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Search the full catalog of 120 US government data tools') with the exact matching fields (keyword, agency, topic) and example queries. Clearly distinguishes this discovery tool from the sibling run/describe tools and the dedicated domain screeners.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: 'Use this first when the task is not covered by one of the dedicated tools above.' This is a precise when-to-use cue with an implicit when-not-to-use (when a dedicated tool fits), which is exactly the routing the siblings demand.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
site-due-diligence-bundleA
Environmental Due Diligence Bundle: 20-Layer Site Scorecard. Environmental due diligence at $0.10 per property - one row per site, not per layer. Lat/lon plus radius returns a go/caution/no-go fatal-flaw verdict and 0-100 score across 20 federal layers: EPA contamination, FEMA flood, NWI wetlands, ESA habitat, karst, landslide, levee, dams, CBRS, pipelines. CHOOSE THIS when you want one combined go / caution / no-go verdict for a coordinate across many unrelated layers. It is NOT an ASTM records review: its contamination layer reads RCRA and TRI through ECHO only and omits coordinate-less Superfund records. For a contamination-first question use epa-contaminated-site-screener. Reads live from the official government source. 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.1 per result ($100 per 1,000). Lower on paid Apify plans, down to $30.00 per 1,000. Nothing is charged when a run fails. Store page: https://apify.com/malonestar/site-due-diligence-bundle
| Name | Required | Description | Default |
|---|---|---|---|
| assets | Yes | List of sites to run the full fatal-flaw scorecard on. Each item is an object with numeric lat and lon (WGS84 decimal degrees) and an optional label. One billable scorecard row is returned per successfully screened asset -- invalid coordinates are returned in a separate non-billable dataset. Example: [{"lat":29.7355,"lon":-95.2601,"label":"Houston Ship Channel parcel"}]. Example: [{"lat":29.7355,"lon":-95.2601,"label":"Houston Ship Channel industrial site, TX"},{"lat":44.29,"lon":-105.5,"label":"Gillette, WY greenfield (coal-country)"}]. | |
| maxAssets | No | Maximum number of assets to screen from the list (safety cap). Extra assets beyond this are ignored. Applied by default if omitted: 250. | |
| radiusMiles | No | Search radius in statute miles for the proximity layers (EPA contamination, ESA critical habitat, transmission grid, wildfire flag, landslide nearby-search, CWA 303(d) impaired waters, tank/spill registries, gas pipelines, NWI wetlands, NRHP historic resources, and NID dams). Point-in-polygon-only layers (protected lands, flood/NRI county, seismic, IRA energy community, karst, USACE levee, CalFire FHSZ, NAAQS nonattainment, CBRS) ignore this. Accepts 0.25 to 25; smaller means a tighter on-site screen. Example: 1. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark readOnlyHint=false and openWorldHint=true, and the description explains why by disclosing that each call starts a metered run on the caller's Apify account, billed $0.10 per result with tiered pricing, and that failed runs are not charged. It also clarifies the read-only scope ('never writes to any external system'), which is consistent with rather than contradicting the false readOnlyHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is dense and front-loaded: identity, then choose/not, then cost/side effects, then store link. Every sentence carries information, though the layer enumeration and pricing detail make it longer than strictly necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description supplies the return shape ('go/caution/no-go fatal-flaw verdict and 0-100 score'), the cost model, the billing granularity, and the scope limitations like omitted coordinate-less Superfund records. Nothing an agent needs to call and interpret it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all three parameters in depth; the baseline is 3. The description adds only marginal semantics (e.g. 'one row per site, not per layer' and 'smaller means a tighter on-site screen'), which does not meaningfully exceed what the parameter descriptions already provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (environmental due diligence bundle producing a 20-layer site scorecard) and enumerates the concrete layers and verdict format. It clearly differentiates itself from the sibling epa-contaminated-site-screener and other point tools, so an agent can select it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'CHOOSE THIS when you want one combined go/caution/no-go verdict for a coordinate across many unrelated layers' and gives the when-not ('NOT an ASTM records review') plus the alternative ('For a contamination-first question use epa-contaminated-site-screener'). This is a complete when/when-not/alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v1.1.1- Removed
describe_gov_data_tool - Added
describe-gov-data-tool - Removed
run_gov_data_tool - Added
run-gov-data-tool - Removed
search_gov_data_tools - Added
search-gov-data-tools
15 tool updates
v1.0.2- First observed
describe_gov_data_tool - First observed
epa-contaminated-site-screener - First observed
epa-drinking-water-quality-screener - First observed
faa-drone-airspace-checker - First observed
fdic-ncua-health-rollup - First observed
fema-nri-county-risk-profile - First observed
fws-wetlands-proximity-screener - First observed
hifld-grid-proximity-screener - First observed
interconnection-queue-tracker - First observed
license-verifier - First observed
nhd-surface-water-404-screener - First observed
parcel-owner-lookup - First observed
run_gov_data_tool - First observed
search_gov_data_tools - First observed
site-due-diligence-bundle
TDQS
Scored across 15 tools
Most tools have clearly distinct domains (drone airspace, wetlands, water quality, parcel owners). Overlap exists between site-due-diligence-bundle and epa-contaminated-site-screener, but the descriptions explicitly tell the agent when to choose each. The meta-tools (search/describe/run) are clearly differentiated by their function.
Names follow a rough noun-phrase pattern but mix styles: some are domain_action (site-due-diligence-bundle), others are action_noun (run-gov-data-tool, search-gov-data-tools). Hyphenation is consistent. Verb-first and noun-first conventions are mixed but still readable.
15 tools is reasonable, but the set is fronted by 12 specialized tools plus 3 meta-tools that expose a separate 120-tool catalog. The behavioral surface is effectively 123 tools, making the 15 explicit tools slightly under-representative of the actual scope.
The dedicated tools cover major U.S. government data domains (environmental, energy, financial, FAA, FEMA, USGS, licensing, parcels). The meta-tools provide access to 120 more, filling potential gaps. Some domains (e.g., census demographics, health, transportation) are absent from the dedicated set but may be in the catalog.
Maintenance
Related MCP Connectors
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
Agent-native MCP server over 49M+ US public and government records, privacy-first, always current.
Hosted MCP endpoint with realistic fake data for prototyping agents. 12 tools, no setup.
Free public MCP for AI agents — 193 tools, 44 workflows. No API key.
Related MCP Servers
- AlicenseBqualityDmaintenanceMCP server providing AI agents with access to German government open data. 12 tools across 6 categories: Autobahn traffic, DWD weather, NINA disaster warnings, SMARD energy market, Bundestag parliamentary data, and pollen forecasts. All APIs are free, no keys required.162MIT
- AlicenseAqualityCmaintenanceAn MCP server that connects AI agents to over 200 tools across 27 Brazilian public APIs, covering economic, legislative, transparency, and judicial data. It enables users to query and cross-reference extensive government datasets from sources like IBGE, the Central Bank, and the Brazilian Congress.71,759MIT
- AlicenseNot gradedqualityDmaintenanceMCP Server for accessing 36 Brazilian public data sources and 1 agent, enabling AI agents to query government data on economy, legislation, transparency, judiciary, elections, environment, health, and more.MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that connects AI agents to 28 Brazilian public APIs, providing tools to query government data on economy, legislation, transparency, judiciary, elections, environment, health, and more.MIT