On-demand MCP server that detects built-up change over small BBoxes by fusing Sentinel-1 SAR and Sentinel-2 optical, validated against Google Open Buildings 2.5D.
Single tool 'detect_builtup_change' has a well-written description (280+ chars, exceeds 10-char minimum) and clear naming (verb_noun pattern). Input schema is present with proper JSON Schema types (array, string) and parameter descriptions. However, output schema is NOT documented, the tool returns a string summary with no structured schema definition, violating pattern:tool and pattern:response-shaper. Error handling returns plain text messages rather than actionable recovery guidance. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. Parameter descriptions are adequate but lack explicit format constraints (e.g., bbox bounds validation rules, ISO date format enforcement stated only in docstring, not schema). Overall: solid naming and description, but missing output schema documentation and structured error responses.
Detect on-demand built-up change (gain/loss) over a small bbox. Produces a built-up CHANGE signal: where built-up area has increased (new construction) or decreased (e.g. disaster-driven destruction) within the bbox, at higher temporal cadence than published epoch products (GHSL, WSF). Fuses SAR (Sentinel-1, all-weather) with optical (Sentinel-2) and uses Overture buildings as a baseline prior. Writes a GeoJSON of the change signal and returns a concise text summary. The output schema is intentionally extensible: future sources (e.g. NISAR) may add attributes such as height, footprint geometry, or roughness.
Output schema not documented. Tool returns a plain string summary with no structured schema definition. LLMs cannot plan downstream operations or extract specific fields (e.g., GeoJSON path, pixel counts). Violates pattern:tool and pattern:response-shaper.
Error handling returns plain text messages ('Input validation failed: ...', 'Pipeline error: ...') without actionable recovery guidance. LLMs cannot determine if errors are retryable, user-fixable, or fatal. Violates pattern:recovery-guide.
No tool annotations present. Tool is read-only (does not modify state) but lacks readOnlyHint annotation. Agents cannot infer safety/idempotency from the tool definition alone.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Parameter constraints not formalized in schema. bbox description states 'Must be smaller than configured cap (default 5 square kilometers)' but no minItems/maxItems or custom validation constraint in JSON Schema. ISO date format for target_date and baseline_date stated in docstring only, not as schema format:'date' or pattern.
Tool description mentions GeoJSON output file but does not document the file path, schema, or how the agent retrieves it. Breaks pattern:tool-chain, downstream tools cannot reference the output without additional discovery.