Server has 4 well-named, read-only tools with clear descriptions and proper input schemas using Pydantic Field annotations. All tools follow verb_noun naming (geocode, reverse_geocode, calculate_distance, distance_between_places). Descriptions are concise (34-89 chars) and state what each tool does. Input parameters have type constraints (min/max for coordinates, limit bounds). However, output schemas are not formally documented, responses are inferred from code inspection. Error handling is minimal; no recovery guidance or actionable error messages. Missing tool annotations (readOnlyHint present implicitly via Risk field, but not in MCP schema). No pagination support despite geocode returning lists.
Calculate distance between two coordinates. Returns km, miles, meters, feet, nautical_miles.
Calculate distance between two addresses. Geocodes both, returns address+coords+distances (km, miles, meters, feet, nautical_miles).
Convert an address to latitude/longitude coordinates.
Convert coordinates to an address (full address, lat/lng, name).
Output schemas not formally documented. Responses are inferred from code (lists of dicts, nested distance objects). LLMs cannot plan downstream tool calls without knowing return structure.
geocode returns a list but lacks pagination (no limit parameter default, no total count, no next_cursor). Large result sets could exhaust context window.
No error handling guidance. If geocoding fails (invalid address, rate limit, network error), tool returns empty list or None with no recovery hint. LLM cannot distinguish 'not found' from 'service error'.
Tool annotations missing from MCP schema. Risk field (READ_ONLY) is metadata but not exposed as readOnlyHint in tool definition.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2026-07-28+ | v2 |
distance_between_places description is vague ('Calculate distance between two addresses'). Does not explain that it geocodes both places first, or what happens if either address is ambiguous.