gov-data-mcp
gov-data-mcp
95 herramientas de datos abiertos del gobierno de EE. UU., como un solo servidor MCP.
EPA, FEMA, USGS, NOAA, FAA, USACE, FDIC, HUD, NRCS, HRSA, CMS, registros de tasación de condados y juntas de licencias estatales: todo accesible como herramientas invocables por agentes, leyendo directamente de las API oficiales del gobierno y archivos masivos. Sin scraping, sin análisis de HTML, sin ruleta de límites de velocidad.
mcp-name: io.github.malonestar/gov-data-mcp
npx gov-data-mcpInstalación
Necesitas un token gratuito de API de Apify en console.apify.com/settings/integrations. El nivel gratuito de Apify incluye crédito mensual de plataforma que cubre la evaluación de cada herramienta aquí.
Claude Desktop / Claude Code / Cursor
{
"mcpServers": {
"gov-data": {
"command": "npx",
"args": ["-y", "gov-data-mcp"],
"env": { "APIFY_TOKEN": "apify_api_..." }
}
}
}Claude Desktop lee claude_desktop_config.json; Claude Code lee .mcp.json en tu proyecto; Cursor lee .cursor/mcp.json. El bloque es idéntico en los tres.
Related MCP server: mcp-brasil
Lo que obtienes
12 herramientas dedicadas para las preguntas de mayor tráfico, invocables directamente:
Herramienta | Respuestas |
| Veredicto de 20 capas de ir / precaución / no ir para una coordenada |
| Búsqueda de base de datos de Fase I ESA a distancias ASTM E1527-21 |
| Veredictos de espacio aéreo y LAANC de la Parte 107, en lote |
| Línea de transmisión, subestación, empresa de servicio, ISO/RTO más cercanos |
| Colas de interconexión de generadores en 7 ISO |
| Salud de bancos y cooperativas de crédito con cohortes de pares reales |
| Riesgo de peligros naturales a nivel de condado y de tramo censal |
| Humedales NWI dentro de un radio, con columnas decodificadas |
| Pantalla de aguas superficiales de la Ley de Agua Limpia §404 |
| Violaciones de SDWA, plomo, ocurrencia de PFAS |
| Propietario registrado en el rol de tasación para una dirección |
| 19 juntas de licencias profesionales en 9 estados + exclusiones de OIG |
Además, tres herramientas que llegan a las otras 83:
search_gov_data_tools— encuentra una herramienta por palabra clave, agencia o temadescribe_gov_data_tool— esquema de entrada completo para cualquier herramienta del catálogorun_gov_data_tool— ejecuta cualquier herramienta del catálogo
El catálogo está incluido, por lo que el descubrimiento no cuesta nada. Pregunta a tu agente "¿qué herramientas de datos gubernamentales tienes para riesgo de inundación?" y buscará en las 95.
Ejemplos de prompts
Examina 1200 Broadway, Denver CO, para riesgo ambiental bajo ASTM E1527-21 y dime qué hallazgos caen dentro de la distancia de búsqueda del estándar.
Estoy ubicando un proyecto solar de 40 MW en 41.88, -93.10. Verifica proximidad a la red, tierras agrícolas primarias, humedales, hábitat crítico y la cola de interconexión, luego dime qué mataría el proyecto.
¿Puedo volar una misión de la Parte 107 en estas seis coordenadas, y cuáles necesitan autorización de DroneZone en lugar de LAANC?
¿Qué bancos de Texas muestran la guía de concentración de CRE de 2006 marcada en ambos criterios?
Cómo funciona
Cada herramienta es un Apify Actor publicado que este servidor invoca a través de la API de Apify. El servidor inicia la ejecución, espera un estado terminal y devuelve las filas.
Facturación es a tu propia cuenta de Apify a la tarifa publicada de pago por resultado de cada actor, listada en su página de Store. El crédito del nivel gratuito cubre la evaluación. Una ejecución que falla no factura nada más allá de un cargo fraccional de inicio de actor.
Cada resultado lleva el run_id y una URL de console.apify.com, por lo que cualquier afirmación que un agente haga desde este servidor puede rastrearse hasta la ejecución exacta que la produjo.
Sobre respuestas honestas
Estos actores se construyen alrededor de una regla: un fallo nunca debe presentarse como "no se encontró nada". Esa distinción importa más exactamente en los casos para los que la gente usa esto: decirle a un comprador que una propiedad está libre de contaminación, decirle a un piloto que un espacio aéreo no está controlado, decirle a un prestamista que un prestatario no tiene licencia.
Entonces este servidor:
informa
run_statusen cada llamada, y nunca adjunta una claverowsa una ejecución que no tuvo éxitodistingue "la ejecución TUVO ÉXITO y la fuente realmente no coincidió con nada" de "la ejecución falló" en el texto de respuesta, explícitamente
reintenta los 429/5xx transitorios de Apify, luego falla en voz alta diciendo que la plataforma falló y no se debe sacar ninguna conclusión sobre la fuente gubernamental
trata un nombre de herramienta desconocido como un fallo de catálogo, nunca como un resultado vacío
Los actores subyacentes llevan la misma disciplina: estado por fuente en cada fila, null significa no verificado en lugar de verificado y negativo, aserciones de deriva en vivo que fallan la ejecución cuando un proveedor upstream trunca silenciosamente, y protecciones de paginación en fuentes que responden HTTP 200 con una carga parcial. La página de Store de cada actor documenta las trampas específicas contra las que se defiende.
Cobertura
Ambiental y contaminación · inundaciones, incendios forestales, sísmicos, deslizamientos, karst y aumento del nivel del mar · humedales, hábitat crítico, tierras protegidas y lugares históricos · ubicación de energía, red, oleoductos e interconexión · tierras agrícolas, suelos y derechos de agua · banca, cooperativas de crédito y préstamos justos · valores, auditores y planes de pensiones · licencias profesionales y detección de exclusiones · clientes potenciales inmobiliarios, parcelas, escrituras y señales de dificultad · espacio aéreo de drones, puentes, túneles y presas.
Ejecuta search_gov_data_tools con cualquiera de esos términos para la lista completa, o navega por apify.com/malonestar.
Desarrollo
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 APILicencia
MIT
Available Tools
15 toolsdescribe-gov-data-toolARead-onlyIdempotent
Return the full input schema and documentation for any one of the 123 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, non-open-world. The description adds genuine context the annotations cannot: it is FREE, reads a local bundled catalog, makes no network call, performs no run, and incurs no charge. That cost/side-effect disclosure is exactly the kind of value beyond structured fields.
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 with zero filler; the core action and the 'when to use' directive are front-loaded, with cost reassurance last as supporting detail.
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 should say what comes back, and it does — 'the full input schema and documentation' for the requested tool. Given a one-parameter, read-only intro-spection tool, this is essentially complete; only error behavior for an unrecognized tool name is unstated.
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 the single parameter is documented with an example ('noaa-slr-inundation-threshold-screener'). The description adds only the domain context that the value must be one of 123 catalog tools, so the schema does the heavy lifting — baseline 3.
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 (return) + resource (full input schema and documentation) + scope (any one of 123 tools in the catalog). Clearly distinguishable from the sibling run-gov-data-tool, which executes rather than describes.
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 states the calling condition: 'Call this before run-gov-data-tool so the input is correctly shaped.' It names the alternative sibling and the ordering relationship, so an agent knows exactly when to reach for this tool instead of running directly.
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. Call describe-gov-data-tool (free) for a verified example input. COST AND SIDE EFFECTS: read-only with respect to the government source — it never writes to any external system — but each call starts a metered run on YOUR Apify account, billed $0.01 per result ($10 per 1,000). Lower on paid Apify plans, down to $3.00 per 1,000. Nothing is charged when a run fails. Store page: https://apify.com/malonestar/epa-contaminated-site-screener
| 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: 10. Applied by default if omitted: 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?
Annotations only declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true; the description goes well beyond that. It reconciles the readOnlyHint=false by explaining the tool is read-only toward the government source but starts a metered run billed to the caller's Apify account ($0.01/result, $3-10 per 1,000), states nothing is charged when a run fails or when all inputs fail validation, and discloses the key data caveat that only ~165 IC polygons exist nationally so a false institutional-control result does not mean no AUL exists. This is exactly the extra context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded correctly: purpose, then routing rule, then alternatives, then cost/side effects last. It is long and dense with capitalized emphasis, but nearly every sentence carries decision-relevant information (cost math, failure-billing rule, boundary polygon caveat) rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter, zero-required, metered tool with no output schema, the description covers the mode switch, billing and failure semantics, what a "clear" vs "error" row means, and the boundary-check limitations. An agent has everything needed to invoke it correctly and predict cost.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema itself already documents modes, defaults, ranges and ASTM distances, so the baseline is 3. The description still adds parameter-relevant meaning the schema does not: the per-result billing model that governs how maxResults/maxHitsPerProgram should be set, and the ASTM E1527-21 distance framing that motivates radiusMiles values (1.0/0.5/0.25 mi).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (EPA regulatory-records screen by address) and enumerates the exact databases covered (Superfund/NPL, RCRA CORRACTS/TSD/generators, TRI, UST, LUST, Brownfields, NPDES, AIR, TSCA, RMP). It also names the sibling it is NOT (site-due-diligence-bundle for a combined verdict, epa-drinking-water-quality-screener for water quality), so an agent can route without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"CHOOSE THIS for the ASTM E1527-21 Phase I records search at regulation distances" gives an explicit selection rule, followed by concrete alternatives for two adjacent siblings. It also points to describe-gov-data-tool for a verified example input, covering the pre-call discovery step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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. Call describe-gov-data-tool (free) for a verified example input. COST AND SIDE EFFECTS: read-only with respect to the government source — it never writes to any external system — but each call starts a metered run on YOUR Apify account, billed $0.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: discloses per-result metering ($0.012/result, $12 per 1,000, down to $3.60 on paid plans), that failed runs are not charged, the run-budget fail-loud behavior, and the core guarantee that it never publishes a clear for a source that did not answer (NO_SERVICE_AREA instead). The 'read-only with respect to the government source' phrasing is carefully scoped and reconciles with readOnlyHint=false, which reflects the metered run side effect rather than a data write.
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 routing, then cost — a sensible order. The cost/billing block is longer than strictly necessary and repeats pricing twice, but every part is decision-relevant for an agent and nothing is pure padding.
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, no-output-schema tool the description covers the important behavioral contracts: no-false-clear, billing, budget, and partial return shapes (health_based_violation_details, NO_SERVICE_AREA rows). Return format is only sketched at a high level, but that is the main residual 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 already 100%, so baseline is 3, but the description adds real semantics: why includeLead dates results, why includePfas can be disabled for speed, that maxAssets overflow is logged and unbilled, and what simulateOutage is for. It does not restate the schemas so much as explain intent behind the flags.
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 (screen) and resource (US coordinate / public water system) and enumerates the exact evidence classes returned: SDWA health-based violations, LCR 90th-percentile lead results, UCMR5 PFAS detections. It explicitly names the sibling it is not (epa-contaminated-site-screener) and the domain boundary, 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?
Contains an explicit 'CHOOSE THIS for...' selector plus a 'It is NOT a property contamination screen — for soil and groundwater records at a site use epa-contaminated-site-screener' exclusion with a named alternative. It also routes to describe-gov-data-tool for a free example input.
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. Call describe-gov-data-tool (free) for a verified example input. COST AND SIDE EFFECTS: read-only with respect to the government source — it never writes to any external system — but each call starts a metered run on YOUR Apify account, billed $0.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?
Adds substantial context beyond the annotations: it explains the readOnlyHint=false semantics (a metered run is started on the caller's Apify account), the exact billing model ($0.02/result, $20 per 1,000, discounted on paid plans), and the failure guarantee ('nothing is charged when a run fails'). It also discloses a reliability trait ('never reads clear when a layer did not answer'). This is exactly the kind of side-effect disclosure an agent needs before invoking a paid, non-idempotent tool, and it is consistent with the annotations rather than contradicting them.
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 core purpose and layer coverage are front-loaded, and the cost/side-effect block is clearly labeled. It runs long and repeats billing figures (per-check, per-1,000, plan discounts) plus a bare store URL, but each block still serves a distinct function.
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 largely meets it by naming the verdict components (ceilings, offer status, prohibited/TFR/SUA/NSUFR layers) and promising no false 'clear' results. Layer-verdict structure and the exact result shape are still somewhat implied, keeping it short of a 5.
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, and the schema already documents layer semantics, point formats, and the maxPoints cap in detail. The description adds genuinely new meaning by tying parameters to cost ('$0.02 per check,' 'one Result event is charged per row'), which clarifies why points/maxPoints are economically significant.
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: 'Batch lat/lon to FAA UAS airspace verdicts,' and enumerates the exact determinations returned (LAANC ceilings and offer status, Class B/C/D/E, prohibited areas, TFRs, SUA, NSUFR, stadium TFRs). The domain specificity (FAA drone airspace) clearly separates it from the EPA/FEMA/HIFLD siblings without needing to name them.
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?
Usage is implied by the domain (batch airspace checks for drone operations) and it usefully points to describe-gov-data-tool for a verified example input. However, it never states when to prefer this over alternatives or any preconditions/exclusions, leaving the when-to-use decision to inference.
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. Call describe-gov-data-tool (free) for a verified example input. COST AND SIDE EFFECTS: read-only with respect to the government source — it never writes to any external system — but each call starts a metered run on YOUR Apify account, billed $0.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?
Annotations only declare readOnlyHint=false / openWorldHint=true / idempotentHint=false; the description goes far beyond that, disclosing that it never writes to the government source, that each call starts a metered Apify run billed $0.008 per result ($2.40–$8 per 1,000 depending on plan), that failed runs are free, that benchmark costs exactly one extra request, and that credit_union currently fails fast at no charge.
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?
Long but well-structured: purpose first, then a clearly labeled 'COST AND SIDE EFFECTS' block and a store link. Almost every sentence earns its place, though a few phrases (e.g. the repeated 'reads live from the official government source' claim) overlap with content already implied elsewhere.
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, no-output-schema tool, the description is close to complete: it names the metrics returned, flags that every mode returns the same field set, and discloses cost and failure behavior. The only gap is that it never characterizes the response envelope (single JSON run output vs. dataset), which an agent would have to infer.
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 per-parameter docs are extremely rich (mode ordering, peerBasis fallback threshold, cost-cap semantics of maxResults), so the schema carries the load. The top-level description adds only the cost-per-result framing that ties into maxResults and does not enrich the other nine parameters, meriting the baseline 3.
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 with scope: a bank/credit-union financial-health screen over FDIC data, enumerating the concrete metrics (capital ratios, CRE concentration, deposit runoff, ROA/ROE/NIM) and QoQ deltas. An agent can tell this apart from siblings like epa-drinking-water-quality-screener or fema-nri-county-risk-profile 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?
Gives clear routing and prerequisite guidance — call describe-gov-data-tool for a verified example input — and reinforces it via parameter docs (state is 'strongly recommended', inspect priorItems for delta mode). It does not state explicit when-not-to-use conditions against the other sibling tools, so it stops short of the top band.
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. Call describe-gov-data-tool (free) for a verified example input. COST AND SIDE EFFECTS: read-only with respect to the government source — it never writes to any external system — but each call starts a metered run on YOUR Apify account, billed $0.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 declare readOnly=false, openWorld=true, idempotent=false, destructive=false; the description adds substantial non-annotation context: metered Apify billing at $0.006/result, cheaper on paid plans, no charge on failed runs, and that the source itself is never written to. It also discloses graceful county fallback on tract misses, going well beyond what annotations already say.
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 purpose is front-loaded ahead of cost and pricing details, and each block is coherent. It is somewhat long and includes pricing minutiae and a store URL that are useful but slightly padded, keeping it just short of ideal tightness.
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 does identify the key returned fields, plus it explains the metered run and fallback behavior for a moderately complex join tool with 5 optional params. Remaining gaps (record shape, pagination, mode return differences) are minor.
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 already documents asset formats, mode selection (empty Assets triggers inventory mode), maxResults bounds, and resolution semantics with examples. The description adds little beyond what the schema provides (e.g., asset key types), so 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 description states a specific verb ('Join any asset ... to FEMA's National Risk Index') and enumerates the exact resource/fields returned: composite risk score, expected annual loss, social vulnerability, resilience, and ranked top-3 hazards across all 18 perils. This is highly specific and an agent can immediately tell what the tool produces.
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 clear context (reads live from the official source; call describe-gov-data-tool for a free verified example input) and implies use for asset-to-hazard joins. However, it never states when to prefer this over alternatives such as site-due-diligence-bundle or when the tool is inappropriate, so there are no explicit exclusions.
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. Call describe-gov-data-tool (free) for a verified example input. COST AND SIDE EFFECTS: read-only with respect to the government source — it never writes to any external system — but each call starts a metered run on YOUR Apify account, billed $0.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 that each call starts a metered Apify run, the exact per-result price and plan-dependent discounts, that failed runs are not charged, and that the tool never writes to any external system. The readOnlyHint=false annotation is consistent with billing a run to the caller's account, so no contradiction.
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-loads purpose, then the sibling routing, then cost/side effects in clearly labeled blocks. Slightly padded by the pricing breakdown and store-page URL, but for a metered paid tool those details earn most of their space.
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 names the return fields (wetland presence, Cowardin systems, types, acreage, 404 flag) and covers cost, side effects, and alternatives. Given five fully-described parameters and one required field, an agent has nearly everything needed, though error-row behavior is only 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 description coverage is 100% and every parameter (assets, maxResults, radiusMeters, computeNearestDistance, nearestSearchRadiusMeters) is already fully documented with ranges, defaults, and examples in the schema. The description implies radius-based screening and nearest-distance behavior but adds no syntax or semantics the schema lacks, 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?
States a specific verb+resource+scope: per lat/lon site, wetland presence within radius, Cowardin codes, acreage, and a Section 404 screening flag. It explicitly distinguishes itself from the sibling nhd-surface-water-404-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?
Gives an explicit chooser line ('CHOOSE THIS for National Wetlands Inventory polygons'), states what it does NOT answer (CWA §404 jurisdiction) and names the alternative tool for that case, plus notes the two are usually needed together and points to describe-gov-data-tool for a verified example.
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. Call describe-gov-data-tool (free) for a verified example input. COST AND SIDE EFFECTS: read-only with respect to the government source — it never writes to any external system — but each call starts a metered run on YOUR Apify account, billed $0.01 per result ($10 per 1,000). Lower on paid Apify plans, down to $3.00 per 1,000. Nothing is charged when a run fails. Store page: https://apify.com/malonestar/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: it discloses that the call starts a metered run on the caller's Apify account at $0.01/result, that failed runs bill nothing, that read-only applies only to the government source, and it documents degraded-mode behavior (allowTruncatedLineFallback nulling complete-universe fields, grid_tier DEGRADED) plus a diagnostic simulateOutage seam. This is exactly the kind of cost/failure/auth context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Long but front-loaded: capability and outputs come first, then usage contexts, then a clearly labeled COST AND SIDE EFFECTS block. The store-page URL is the only line that doesn't earn its place, but overall it is dense rather than padded.
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 12 parameters, no output schema, and no annotation-level cost disclosure, the description does the heavy lifting: it explains billing model, failure accounting, and named output columns (grid_tier, nearest_ge100kv_line_*). It is nearly complete, missing only a full return-shape summary, which the absence of an output schema makes slightly more important.
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 documents every parameter in depth (including the sub-100 kV nuance and the planned-line caveat), so the description need not repeat them. The description adds only marginal param-level context ('Includes sub-100 kV'), so 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?
States a specific verb+resource ('Transmission Line & Substation Distance API by Coordinates') and enumerates the concrete outputs: nearest line with kV/owner/overhead-underground, nearest substation, nearest plant, serving utility and ISO/RTO, nearby MW. This is clearly distinguishable from siblings like interconnection-queue-tracker or fws-wetlands-proximity-screener.
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 the use contexts explicitly (data-center, renewable, BESS and EV siting) and routes the agent to describe-gov-data-tool for a verified example. It stops short of stating when to prefer a sibling tool (e.g. vs interconnection-queue-tracker) or any exclusion conditions, so it lacks the 5-level routing guidance.
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. Call describe-gov-data-tool (free) for a verified example input. COST AND SIDE EFFECTS: read-only with respect to the government source — it never writes to any external system — but each call starts a metered run on YOUR Apify account, billed $0.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?
Goes well beyond annotations with unusual precision: keyless access, live reads from the official source, no writes to external systems, but every call starts a metered Apify run billed $0.008/result (down to $2.40/1,000 on paid plans) and nothing is charged on failure. This directly explains why readOnlyHint is false — state/cost accrues on the caller's account — without contradicting the annotations.
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 in the first two sentences, then audience, source, and a clearly labeled COST AND SIDE EFFECTS block. The pricing sentence is dense but earns its place for a paid actor; only the store URL and audience line are marginal.
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 cost model, data source, keylessness, delta categories, and a pointer to a companion tool for example input — enough to call it correctly for a six-parameter, two-mode actor with no output schema. Return-shape detail (beyond named monitor fields) is left implicit, which is the only real 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 description coverage is 100%, so each of the six parameters is already fully documented in-schema (including mode, deltaOnly, maxResults truncation semantics). The prose adds the delta-row taxonomy and nothing new about parameter syntax or defaults, 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?
States a specific verb and resource: normalizes US ISO/RTO interconnection queues for seven named ISOs into one schema and tracks new/withdrawn/status-change/COD-slip deltas. Names the exact sources (SPP, MISO, NYISO, CAISO, PJM, ERCOT, ISO-NE) and the audience, so it is unmistakable against the gov-data siblings.
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 snapshot vs delta intent indirectly ('track new, withdrawn, status-change and COD-slip deltas') and points to describe-gov-data-tool for a verified example input. It does not explicitly say when to change maxResults or when deltaOnly is preferred over mode=delta, but the context for a monitoring workflow is clear.
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. Newly licensed clinicians feed (roster-delta). Reads live from the official government source. Call describe-gov-data-tool (free) for a verified example input. COST AND SIDE EFFECTS: read-only with respect to the government source — it never writes to any external system — but each call starts a metered run on YOUR Apify account, billed $0.01 per result ($10 per 1,000). Lower on paid Apify plans, down to $3.00 per 1,000. Nothing is charged when a run fails. Store page: https://apify.com/malonestar/license-verifier
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City to filter licensees by. Not every board publishes a city column. | |
| mode | No | Leave empty for the classic lookup/roster behaviour. Set "roster-delta" for the newly-credentialed feed: every credential ORIGINALLY ISSUED in the last sinceDays on the selected boards, one row each, with NPI cross-walk and OIG screen. The first run seeds a named baseline and emits the window as event_type "inventory"; later runs emit only event_type "newly_licensed" (a credential absent from the baseline AND issued on/after the previous run minus 7 days). A run against unchanged data emits 0 rows and bills nothing. Boards with an original-issue date: WA (DOH), TX-BON, TX-LVN, TX-APRN, IL, CO, CT, DE, OR (CCB), WA-CPA, WA-CONTRACTOR, NY-NOTARY, NY-COS, NY-APPRAISER. In this mode maxResults is the TOTAL row cap for the run (newest credentials first). | |
| 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. | |
| sinceDays | No | roster-delta only. How many days back the original-issue-date window reaches (1-400). The seeding run emits this whole window as inventory; later runs emit only credentials issued since the previous run (minus a 7-day publication slack). A non-integer or out-of-range value fails the run before any request is made. Example: 30. | |
| 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. | |
| professions | No | roster-delta only. Restrict to these professions, matched case-insensitively on the normalised profession (e.g. "Registered Nurse") or as a prefix of the board's raw credential type ("Registered Nurse" reaches "Registered Nurse License" and "Registered Nurse Temporary Practice Permit" but NOT "Advanced Registered Nurse Practitioner"). Examples: "Registered Nurse", "Licensed Practical Nurse", "Physician And Surgeon", "Dentist", "Pharmacist", "Physical Therapist". Omit for every profession the board publishes. Changing this filter starts a NEW delta baseline (the baseline is scoped by boards + professions). Example: ["Registered Nurse"]. | |
| 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?
Adds substantial context beyond the annotations: exact pricing ($0.01/result, $10 per 1,000, down to $3.00 on paid plans), that failed runs bill nothing, that each call starts a metered run on the caller's own Apify account, and rate-limit relief via socrataAppToken. It also reconciles the readOnlyHint=false annotation by clarifying the read-only property applies to the government source, not to the caller's account — a genuinely useful disclosure.
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-loads purpose, then cross-checks, then a clearly labelled COST AND SIDE EFFECTS block, which is the right ordering for a metered tool. Length is justified by the 20-parameter surface, though the store-page URL and the repeated marketing phrasing ('Primary source verification') are mild 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?
For a complex, 20-param, no-output-schema tool the description covers scope, cost, side effects, cross-checks and mode behaviour well, and points to a helper tool for example inputs. It does not enumerate the return shape for the classic lookup path (output schema is absent), leaving a small gap, but the roster verdict fields are described.
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 per-parameter descriptions are extremely detailed (mode semantics, board IDs, delta baselines, billing per row), so the schema carries the parameter burden. The top-level description adds only marginal parameter meaning ('start small' on maxResults, pointer to describe-gov-data-tool), so 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?
States a specific verb and resource ('Primary source verification for US professional licenses'), names the exact scope (19 state boards, name or license number, status/expiration/discipline) and the federal cross-checks (NPPES NPI, HHS-OIG). The sibling tools are all in unrelated domains (EPA, FAA, FEMA, wetlands, parcels), so no differentiation ambiguity exists.
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 clear context for the main modes (classic lookup/roster vs roster-delta newly-licensed feed) and routes the agent to describe-gov-data-tool for a verified example input. It also advises starting small on maxResults because rows are billable. It does not, however, state when to prefer this tool over an alternative approach or any explicit exclusions.
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. Call describe-gov-data-tool (free) for a verified example input. COST AND SIDE EFFECTS: read-only with respect to the government source — it never writes to any external system — but each call starts a metered run on YOUR Apify account, billed $0.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. | |
| runBudgetSeconds | No | Optional. One time budget for the whole run, shared by the live drift checks (at most 180 s of it) and every site. If hydro.nationalmap.gov is slow and the budget runs out, the sites not yet reached are returned as rows with failure_kind "deadline" and null counts/flags instead of the run dragging on. Leave empty to use max(240, 90 + 30 x number of assets) seconds. Clamped to 30-3500; the run also always stops before its Apify timeout. Example: 240. | |
| 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?
Despite annotations existing, the description adds substantial behavior not in them: the metered run on the caller's Apify account, exact pricing ($0.012 per Result, down to $3.60/1,000 on paid plans), no charge on failed runs, live reads from the official source, and deadline/failure semantics. This explains the readOnlyHint=false nuance (no writes to external systems, but the call does incur billed side effects) rather than contradicting it.
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 sibling routing, then cost/side effects last, and each sentence carries usable information (selection rule, alternative tool, pricing, store link). It is on the long side and the 94-field enumeration is dense, but little is genuinely redundant.
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 describing the return content (distance metrics, waterbody type, flow, stream order, HUC levels, jurisdictional call and reasoning, 404/WOTUS flag) and failure rows ("failure_kind deadline" with null counts). Combined with full schema coverage and rich annotations, 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 all five parameters (assets, maxResults, radiusMeters, runBudgetSeconds, includeNonNetworkFlowlines) are fully documented in the schema itself. The description adds output-field framing ("94 fields") but no parameter syntax or semantics beyond what the schema already provides, which is the expected baseline 3.
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?
Starts with a specific verb+resource ("Screen any lat/lon against USGS NHDPlus HR surface water") and enumerates the concrete outputs (distance to perennial/intermittent/ephemeral reaches, mean annual flow, stream order, HUC codes, jurisdictional-likelihood call, Section 404/WOTUS flag). It explicitly distinguishes itself from the sibling fws-wetlands-proximity-screener — streams/waterbodies vs mapped wetland polygons — 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?
Gives an explicit selection rule ("CHOOSE THIS for Clean Water Act §404 surface-water screening") and names the alternative to use otherwise ("For mapped wetland polygons use fws-wetlands-proximity-screener"). It also points to describe-gov-data-tool for a verified example input, covering the pre-call discovery step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parcel-owner-lookupA
Parcel Owner Lookup — Address to Owner & Assessor Record. Address to parcel ID, owner name, mailing address & assessed value from official assessor rolls: Chicago, Philadelphia, NYC + NC, NY State, WI, CO, MN, AR, MA, CT, VT statewide, Phoenix, Houston, Cleveland, Nashville & DC. Census fallback elsewhere. $0.02/lookup. Reads live from the official government source. Call describe-gov-data-tool (free) for a verified example input. COST AND SIDE EFFECTS: read-only with respect to the government source — it never writes to any external system — but each call starts a metered run on YOUR Apify account, billed $0.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'). Matched against the Cook County IL (Chicago), Philadelphia PA and New York City rolls, plus (v1.1) statewide rolls for North Carolina, New York State, Wisconsin, Colorado, Minnesota (opt-in counties), Arkansas, Massachusetts, Connecticut and Vermont and county rolls for Maricopa AZ (Phoenix), Harris TX (Houston), Cuyahoga OH (Cleveland), Nashville TN and Washington DC - routed by the Census-geocoded point's county. Addresses elsewhere fall back to Census geocoding (lat/lon only). Every input address yields exactly one output row; see lookup_status on each row. 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. | |
| runBudgetSeconds | No | Optional wall-clock budget for the whole run. A parcel roll that is slow to answer is cut when the budget runs out: that address comes back lookup_status "source_unavailable" (or keeps the answer the house-number query already gave) with lookup_cut_by_deadline: true, instead of the run hanging. Leave empty for no budget. Example: 240. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses per-Result metering ($0.02/lookup, $20 per 1,000, as low as $6/1,000 on paid plans), that nothing is charged on failure, that each call starts a run on the caller's Apify account, and that one output row is guaranteed per input address via lookup_status. It also explains deadline-cut behavior (lookup_cut_by_deadline, 'source_unavailable'), reconciling the readOnlyHint=false annotation by clarifying it is read-only toward the government source but creates a billed 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?
Front-loaded with the core purpose before coverage, pricing, and side effects, and the 'COST AND SIDE EFFECTS' block is clearly signposted. It is somewhat long and includes a store-page URL and pricing repetitions that could be trimmed, but nearly every sentence carries operational value.
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 metered, no-output-schema tool the description covers inputs, routing/fallback logic, billing, failure semantics, and the derived output fields (lookup_status, lookup_cut_by_deadline). An agent has enough to invoke correctly; only the concrete result record shape is left unspecified, which is minor given the fields it names.
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 three parameters (addresses, maxResults, runBudgetSeconds) are already fully documented in the schema, including defaults and edge behavior. The description adds little parameter-level detail beyond what the schema states, 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 and resource ('Address to parcel ID, owner name, mailing address & assessed value from official assessor rolls'), naming exactly what is produced. It enumerates the jurisdictions served and the Census fallback, so an agent knows the precise scope without opening the schema. The sibling tool describe-gov-data-tool is also named, distinguishing this from generic lookups.
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 clear context: address-to-owner resolution with a Census geocoding fallback for uncovered areas, plus an explicit pointer to call describe-gov-data-tool for a verified example input before invoking. What is missing is explicit when-not-to-use guidance versus the other gov-data siblings (e.g., run-gov-data-tool), which is left implicit.
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 123 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 means the source was reached and matched nothing for exactly that input. Failed and zero-row results carry next_step, must_supply and a verified example_input to copy. Inputs are checked locally first: a missing required field or an invalid enum value is reported free, without starting a run.
| 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?
Far exceeds the annotations: it discloses metered per-row billing on the caller's Apify account, that failed runs are free, that failure returns an error with no rows (distinct from a zero-row success), and that failures/zero-rows carry next_step, must_supply and a verified example_input. It also clarifies that read-only applies only to the government source, which explains rather than contradicts readOnlyHint=false and openWorldHint=true.
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-loads the one-line purpose before the cost and failure semantics, and every clause carries a fact an agent needs (pricing, error vs empty, free validation). It loses a point for restating "Call describe-gov-data-tool first" twice and running somewhat long.
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, a nested input object and 3 params, the description still closes the important gaps: return shape (rows), error-vs-empty semantics, cost model, and pre-flight validation behavior. An agent has everything required to decide and call 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 the schema already documents tool, input and maxItems; baseline is 3. The description adds real meaning by telling the agent how to obtain the input object's shape (via describe-gov-data-tool) rather than guessing it.
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 with quantified scope: "Run any one of the 123 catalog tools with the given input and return its rows." It is clearly the generic executor in a catalog where siblings are individual named tools, so an agent can distinguish it 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?
Gives an explicit prerequisite workflow twice: call describe-gov-data-tool first to shape the input and to see the exact price before running. It does not, however, say when to call this generic runner versus invoking a specific named sibling like epa-contaminated-site-screener directly, leaving that routing decision to inference.
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 123 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 declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds value beyond that: it discloses the return format and the cost/latency profile ('no network call, no run, nothing charged'), which the annotations do not 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?
Three sentences, front-loaded with purpose, then return value, then routing and cost. Every clause earns its place; no restatement of the tool name or padding.
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?
No output schema, but the description states what is returned (matching names with descriptions), and annotations carry the safety profile. For a two-parameter discovery search, nothing needed 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 both parameters are already documented and a baseline of 3 applies. The description adds example query values ('wetlands', 'FDIC', 'flood', 'drone airspace') that concretely illustrate what the query string may contain, marginally exceeding the schema's generic wording.
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 ('Search the full catalog of 123 US government data tools') with the exact match dimensions (keyword, agency, topic) and the return shape ('matching tool names with descriptions'). It also positions itself against the sibling tools by scope, so an agent can tell it apart from run-gov-data-tool and the dedicated 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?
Explicit routing rule: 'Use this first when the task is not covered by one of the dedicated tools above.' This names the alternative class and the condition that selects this tool. It stops short of naming the natural next step (describe-gov-data-tool / run-gov-data-tool), so it is strong 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.
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. Call describe-gov-data-tool (free) for a verified example input. COST AND SIDE EFFECTS: read-only with respect to the government source — it never writes to any external system — but each call starts a metered run on YOUR Apify account, billed $0.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 already declare readOnlyHint=false, openWorldHint=true, and idempotentHint=false, and the description explains the nuance behind that profile: it never writes to any external system but each call starts a metered run on the caller's Apify account. It adds cost rates ($0.10 per result, down to $30/1,000 on paid plans), the failure-billing rule ('nothing is charged when a run fails'), and the live-source read behavior — none of which the annotations convey. No contradiction with readOnlyHint=false.
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?
Long but information-dense and front-loaded, with clear 'CHOOSE THIS' and 'COST AND SIDE EFFECTS' sections. The store-page URL and the describe-gov-data-tool pointer are arguably marginal, keeping it from a 5, but no sentence is pure 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?
For a metered, multi-layer screening tool with no output schema, the description covers purpose, routing, exclusions, cost/billing model, side effects, and source fidelity, and points to a free example-input tool. Nothing an agent needs to select or safely invoke it 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 schema already documents assets, maxAssets, and radiusMiles in detail, including which layers honor the radius and which ignore it. The description adds per-site billing semantics ('one row per site, not per layer'), but that is the schema/annotations' territory rather than new parameter syntax. 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?
States a specific verb+resource and scope: a combined go/caution/no-go fatal-flaw verdict with a 0-100 score across 20 named federal layers, one row per site. It explicitly names the sibling it is not (an ASTM records review) and routes contamination-first questions to epa-contaminated-site-screener, so an agent can distinguish it 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?
Explicit selection guidance: 'CHOOSE THIS when you want one combined go/caution/no-go verdict for a coordinate across many unrelated layers,' plus a negative boundary ('NOT an ASTM records review... omits coordinate-less Superfund records') and a named alternative for the contamination-first case. Alternatives and the condition that selects them are fully stated.
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.
2 tool updates
v1.2.6- Changed
nhd-surface-water-404-screener1 field changed- changed
Input schema / properties / runBudgetSeconds / descriptionPrevious value: -"Optional. One time budget for the whole run, shared by the live drift checks (at most 90 s of it) and every site. If hydro.nationalmap.gov is slow and the budget runs out, the sites not yet reached are returned as rows with failure_kind \"deadline\" and null counts/flags instead of the run dragging on. Leave empty to use max(240, 90 + 30 x number of assets) seconds. Clamped to 30-3500; the run also always stops before its Apify timeout. Example: 240."New value: +"Optional. One time budget for the whole run, shared by the live drift checks (at most 180 s of it) and every site. If hydro.nationalmap.gov is slow and the budget runs out, the sites not yet reached are returned as rows with failure_kind \"deadline\" and null counts/flags instead of the run dragging on. Leave empty to use max(240, 90 + 30 x number of assets) seconds. Clamped to 30-3500; the run also always stops before its Apify timeout. Example: 240."
- Changed
parcel-owner-lookup1 field changed- added
Input schema / properties / runBudgetSecondsAdded value: +{ + "description": "Optional wall-clock budget for the whole run. A parcel roll that is slow to answer is cut when the budget runs out: that address comes back lookup_status \"source_unavailable\" (or keeps the answer the house-number query already gave) with lookup_cut_by_deadline: true, instead of the run hanging. Leave empty for no budget. Example: 240.", + "maximum": 3600, + "minimum": 30, + "type": "integer" +}
2 tool updates
v1.2.0- Changed
license-verifier3 fields changed- added
Input schema / properties / modeAdded value: +{ + "description": "Leave empty for the classic lookup/roster behaviour. Set \"roster-delta\" for the newly-credentialed feed: every credential ORIGINALLY ISSUED in the last sinceDays on the selected boards, one row each, with NPI cross-walk and OIG screen. The first run seeds a named baseline and emits the window as event_type \"inventory\"; later runs emit only event_type \"newly_licensed\" (a credential absent from the baseline AND issued on/after the previous run minus 7 days). A run against unchanged data emits 0 rows and bills nothing. Boards with an original-issue date: WA (DOH), TX-BON, TX-LVN, TX-APRN, IL, CO, CT, DE, OR (CCB), WA-CPA, WA-CONTRACTOR, NY-NOTARY, NY-COS, NY-APPRAISER. In this mode maxResults is the TOTAL row cap for the run (newest credentials first).", + "enum": [ + "roster-delta" + ], + "type": "string" +} - added
Input schema / properties / professionsAdded value: +{ + "description": "roster-delta only. Restrict to these professions, matched case-insensitively on the normalised profession (e.g. \"Registered Nurse\") or as a prefix of the board's raw credential type (\"Registered Nurse\" reaches \"Registered Nurse License\" and \"Registered Nurse Temporary Practice Permit\" but NOT \"Advanced Registered Nurse Practitioner\"). Examples: \"Registered Nurse\", \"Licensed Practical Nurse\", \"Physician And Surgeon\", \"Dentist\", \"Pharmacist\", \"Physical Therapist\". Omit for every profession the board publishes. Changing this filter starts a NEW delta baseline (the baseline is scoped by boards + professions). Example: [\"Registered Nurse\"].", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / sinceDaysAdded value: +{ + "description": "roster-delta only. How many days back the original-issue-date window reaches (1-400). The seeding run emits this whole window as inventory; later runs emit only credentials issued since the previous run (minus a 7-day publication slack). A non-integer or out-of-range value fails the run before any request is made. Example: 30.", + "maximum": 400, + "minimum": 1, + "type": "integer" +}
- Changed
parcel-owner-lookup1 field changed- changed
Input schema / properties / addresses / descriptionPrevious value: -"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\"]."New value: +"US street addresses to resolve to a parcel + owner record, one per line (e.g. '1060 W Addison St, Chicago, IL'). Matched against the Cook County IL (Chicago), Philadelphia PA and New York City rolls, plus (v1.1) statewide rolls for North Carolina, New York State, Wisconsin, Colorado, Minnesota (opt-in counties), Arkansas, Massachusetts, Connecticut and Vermont and county rolls for Maricopa AZ (Phoenix), Harris TX (Houston), Cuyahoga OH (Cleveland), Nashville TN and Washington DC - routed by the Census-geocoded point's county. Addresses elsewhere fall back to Census geocoding (lat/lon only). Every input address yields exactly one output row; see lookup_status on each row. Example: [\"1060 W Addison St, Chicago, IL\",\"1234 Market St, Philadelphia, PA\",\"350 5th Ave, New York, NY\"]."
2 tool updates
v1.1.3- Changed
epa-contaminated-site-screener1 field changed- changed
Input schema / properties / maxHitsPerProgram / descriptionPrevious value: -"Assets mode only: cap on the number of nearest site hits reported per program per asset (keeps output and billing bounded near dense industrial areas). The nearest sites are kept. Default 50. Range 1-1000. Example: 50."New value: +"Assets mode only: cap on the number of nearest site hits reported per program per asset (keeps output and billing bounded near dense industrial areas). The nearest sites are kept. Default 50. Range 1-1000. Example: 10. Applied by default if omitted: 50."
- Changed
nhd-surface-water-404-screener1 field changed- added
Input schema / properties / runBudgetSecondsAdded value: +{ + "description": "Optional. One time budget for the whole run, shared by the live drift checks (at most 90 s of it) and every site. If hydro.nationalmap.gov is slow and the budget runs out, the sites not yet reached are returned as rows with failure_kind \"deadline\" and null counts/flags instead of the run dragging on. Leave empty to use max(240, 90 + 30 x number of assets) seconds. Clamped to 30-3500; the run also always stops before its Apify timeout. Example: 240.", + "maximum": 3500, + "minimum": 30, + "type": "integer" +}
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
Each dedicated tool targets a distinct data domain (airspace, grid, wetlands, drinking water, parcels, licenses, etc.), and the descriptions actively disambiguate the few adjacent pairs (bundle vs. contaminated-site screener, FWS wetlands vs. NHD surface water, drinking water vs. site contamination) with explicit 'CHOOSE THIS' / 'use X instead' guidance. The meta trio (search/describe/run) is clearly framed as the fallback path for anything not covered by the dedicated tools, so no two tools appear to do the same thing.
All names are kebab-case and readable, and the 12 dedicated tools follow a consistent agency/topic-plus-role pattern (-screener, -checker, -tracker, -rollup, -profile, -lookup, -verifier, -bundle). The three meta tools, however, switch to a verb_noun convention (search-/describe-/run-gov-data-tool), leaving two naming families in one set.
15 tools sits at the top of the well-scoped band but is justified: 12 curated high-frequency domain tools plus 3 meta tools that expose the remaining 111 catalog entries. No tool appears redundant or vestigial for the server's stated purpose.
The search/describe/run trio provides full reach into the 123-tool catalog, and describe-before-run plus local input validation removes dead ends, while the dedicated tools cover the most common government-data workflows (environmental, energy, water, parcels, licensing, financial health). No obvious lifecycle gap exists for a read-only data-lookup server.
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,801MIT
- AlicenseAqualityDmaintenanceMCP 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.6MIT
- 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