A Model Context Protocol server providing tools for time queries and timezone conversions for LLMs
Two tools with complete schemas and reasonable descriptions. Naming follows verb_noun convention (get_current_time, convert_time). Descriptions are adequate (50-80 chars) but lack actionable context for LLM selection. Parameter descriptions are present but generic, no format constraints, ranges, or error recovery guidance. Output schemas are not documented. Error handling exists but lacks recovery hints. No tool annotations (readOnlyHint). Composition is sound: each tool has one responsibility. Baseline: avg tool description 194 chars (these are 50-80), avg params 4 (these have 3-4), 100% of A+ tools document output (these don't).
Convert time between timezones
Get current time in a specific timezones
Output schemas not documented. LLMs cannot infer what fields to expect (timezone, datetime, is_dst, time_difference). Pydantic models exist in code but are not exposed in tool definitions.
Parameter descriptions lack format constraints and error recovery hints. 'timezone' and 'time' accept free-form strings with no guidance on valid formats, ranges, or what happens on invalid input (e.g., 'Invalid timezone: got "America/New_Yark", did you mean America/New_York?').
Tool descriptions are too brief (50 - 80 chars vs. baseline 194 chars). Missing WHEN to use each tool and what distinguishes them. 'Get current time in a specific timezones' (grammatical error: 'timezones' should be 'timezone') does not explain when to call this vs. convert_time.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
No tool annotations. Tools are read-only but lack readOnlyHint in schema. Agents cannot infer safety properties without explicit hints.
Error messages in code (e.g., 'Invalid timezone: {str(e)}', 'Invalid time format. Expected HH:MM [24-hour format]') are not documented in tool descriptions. LLMs cannot plan error recovery without knowing what errors are possible.