MCP server with 10 zero-API-key public data tools: sun/moon, holidays, timezone, geocoding, distance, elevation. Free, MIT.
Server provides 10 well-scoped read-only tools with complete input schemas and clear descriptions. All tools have proper JSON Schema definitions with required fields and type annotations. Descriptions are concise (10 - 200 chars) and action-oriented. However, output schemas are not documented, LLMs cannot predict response structure for downstream chaining. Parameter descriptions are minimal (e.g., 'ISO date' lacks format guidance). No error handling guidance, no recovery hints, and no per-parameter constraints (enums, ranges). Tools are well-named with action verbs (sunrise_sunset, moon_phase, geocode) but lack composition hints for multi-step workflows.
Convert a time between two IANA timezones.
Compute great-circle distance between two coordinates (km and miles).
Get elevation in meters for a coordinate. Uses Open-Elevation.
Convert an address or place name to lat/lon. Uses OpenStreetMap Nominatim.
Check if a date is a public holiday in a given country (ISO 3166-1 alpha-2 code).
Get moon phase (0=new, 0.5=full) and illumination percentage for a date.
Get the next upcoming public holiday in a country.
Output schemas not documented. LLMs cannot predict response structure (fields, types, nesting) for downstream tool chaining. E.g., sunrise_sunset returns 12 fields but no schema is published.
Parameter descriptions lack format constraints. 'ISO date' should specify 'ISO 8601 format YYYY-MM-DD' and note defaults. 'country' should document 'ISO 3166-1 alpha-2 code (e.g., US, CA, GB)' with enum examples.
No error handling guidance. Tools call external APIs (sunrise-sunset.org, nager.at, Nominatim, Open-Elevation) but do not document failure modes, retry logic, or recovery hints. E.g., 'HTTP 429 from Nominatim, rate limited, retry after 1 second'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Convert lat/lon to a human-readable address. Uses OpenStreetMap Nominatim.
Get sunrise, sunset, civil/nautical/astronomical twilight times for a coordinate.
Get IANA timezone for a coordinate.
No tool composition hints. Tools like geocode + distance + elevation form a natural workflow, but no documentation guides LLMs to chain them. E.g., 'Call geocode() first if you only have an address.'
next_holiday lacks required parameter description. 'country' parameter has no description of valid format (ISO 3166-1 alpha-2 code). LLMs may pass invalid values like 'United States' instead of 'US'.