MCP server providing temporal awareness and time calculation capabilities for AI agents.
The server defines 4 tools with consistent naming patterns (verb_noun: get_current_time, calculate_difference, get_timestamp_context, adjust_timestamp). All tools have descriptions (100-200 chars, within baseline), and input schemas are fully visible in server.py with proper JSON Schema structure including types, descriptions, and constraints. However, there are notable gaps: output schemas are NOT documented (tools return text responses but the structure is not specified), some parameter descriptions lack actionable constraints (e.g., 'Timezone for parsing ambiguous timestamps' doesn't explain how ambiguous parsing is resolved), and error handling is not visible in the provided code excerpts. The get_timestamp_context tool has reasonable constraints (business_hours_start/end with min/max 0-23), but most parameters lack format validation hints. No enum constraints are present where they could reduce hallucination (timezone could benefit from a curated list). Parameter descriptions are present for all but lack the level of detail (e.g., 'ISO format or human readable' is vague, what datetime formats exactly?). The tool composition is sound (each tool does one thing), but the lack of documented output structure and limited error guidance prevent a higher score.
Adds or subtracts a duration from a given timestamp
Calculates the duration between two timestamps
Returns the current date and time in a specified timezone
Provides human-readable context about a specific timestamp
Output schemas are not documented. The code shows tools return [{'type': 'text', 'text': result}] but the actual structure of 'result' fields (e.g., what fields does GetCurrentTimeResult contain?) is not specified anywhere. LLMs cannot plan downstream operations or extract typed fields without knowing the response structure.
Timezone parameter accepts free-form strings with no enum or validation hint. Description says 'Timezone name (e.g., 'UTC', 'US/Pacific', 'Europe/London')' but does not specify the standard (IANA tzdata) or validation rules. LLMs may pass invalid timezones like 'PST' or 'EST' (non-standard) instead of 'US/Pacific'. No constraint documented.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | D | 57 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 59 | - | v1 |
Timestamp parameter descriptions are vague: 'ISO format or human readable' does not specify which human-readable formats are accepted (RFC 2822? locale-specific? natural language like 'tomorrow'?). LLMs cannot reliably construct valid inputs without exact format examples or a regex pattern in the description.
No error handling or recovery guidance visible in the code. If a timestamp parsing fails or a timezone is invalid, the exception handling is not shown. The response should include actionable guidance like 'Invalid timezone, use IANA tz database names (e.g. US/Pacific)' rather than a raw error. This prevents LLM self-correction.
The 'format' parameter in get_current_time has enum values ('iso', 'human', 'timestamp') but get_timestamp_context tool has 'business_hours_end' parameter that lacks description on what 'business hours context' means. Incompleteness across similar tools.