MCP server for GeoTap — collect comprehensive environmental data from 80+ US federal sources for any site. One tool, all the data.
GeoTap defines 2 tools with reasonable descriptions and Zod schemas. collect_site_data has a strong, detailed description (280+ chars) explaining the workflow, data sources, and expected latency. Parameters are well-typed with Zod and include helpful descriptions. However, get_results lacks depth, its description is only 108 chars and does not explain polling behavior, retry guidance, or error states. Output schemas are not documented in the code; the tool descriptions reference returned data but do not formally specify the response structure. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present. Error handling is minimal, no guidance on what to do if a job fails or times out. The server instructions are exceptionally detailed and guide LLM behavior well, but the tool definitions themselves are incomplete by production standards.
Collect comprehensive environmental data from ALL 80+ federal data sources for a site. Accepts an address, lat/lng coordinates, or a GeoJSON geometry (Point or Polygon). Returns a jobId — poll with get_results until complete (60-120 seconds). Data returned covers: flood zones, wetlands, soils, geology, contamination sites, water quality, seismic risk, rainfall, infrastructure, ecology, energy, demographics, and much more.
Check the status of a data collection job and retrieve results. Poll every 10 seconds until status is "completed". Returns all environmental data for the site once ready.
get_results description is too brief (108 chars) and lacks polling guidance, timeout behavior, and error recovery instructions. LLMs need explicit direction on retry intervals and failure modes.
Output schemas are not formally documented. Tool descriptions mention returned data (jobId, status, environmental data) but do not provide a structured schema. LLMs cannot plan downstream operations without knowing response structure.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. Both tools are read-only and idempotent, but this is not declared. Agents cannot infer safety properties.
Error handling is absent. No guidance on job failure, timeout, invalid coordinates, or API errors. Descriptions do not explain what to do if a job never completes or returns _error.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
collect_site_data parameters (address, lat, lng, geometry) are mutually exclusive but this constraint is not documented. LLMs may pass multiple location formats, causing ambiguity.