MCP server providing calendar scheduling tools with temporal context awareness, calendar discovery, availability checking, and conflict-free booking via Two-Phase Commit
Temporal Cortex MCP exhibits significant definition quality gaps across all dimensions. Tool descriptions are present but severely lack detail and actionability for LLM selection. Input schemas are either completely absent or partially visible in examples only. No output schemas are documented. Parameter descriptions are missing or minimal. The server appears to expose calendar/scheduling tools but lacks the rigor required for production agentic use. Tools are inferred from example files rather than explicitly registered with full schemas, forcing a hard cap at 50 per tool. Critical issues: (1) No input schemas visible in source code for most tools, only examples show 'book_slot' has a schema, others are undocumented. (2) Descriptions are under 150 chars and lack actionable context (e.g., 'Get the current temporal context' does not explain WHEN to call it or what downstream tools it enables). (3) No output schemas documented anywhere. (4) Parameter descriptions completely absent for most tools. (5) No error handling guidance visible.
Adjust a timestamp by a duration
Book a conflict-free meeting using Two-Phase Commit to prevent double-bookings
Check availability for a specific time range
Compute duration between two timestamps
Convert timestamps between timezones
Expand recurrence rules into specific dates
Find available time slots on a given date across calendars
No input schemas visible in source code for 12 of 13 tools. Only 'book_slot' shows a partial schema in examples. All other tools lack formal JSON Schema definitions with type information and parameter constraints.
Tool descriptions are vague and lack actionable context. 'Get the current temporal context' (38 chars) does not explain what data is returned, when the LLM should invoke it, or what downstream tools it enables. Baseline for A+ tools is 50-200 chars with clear WHAT/WHEN/WHY structure.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | F | 20 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 45 | - | v1 |
Get availability information for calendars
Get the current temporal context: current time, timezone, UTC offset, and DST status
Discover connected calendars from all providers (Google, Outlook, CalDAV)
Query events in a calendar within a time range
Request a booking (Open Scheduling tool)
Convert human datetime expressions into precise RFC 3339 timestamps
No output schemas documented. LLMs cannot plan multi-step operations without knowing what fields are returned. Agents need to know: does list_calendars return [calendar_id, name, email] or just names? Without documented output structure, agents hallucinate field access.
Parameter descriptions are completely absent. Input schema for 'book_slot' shows parameters like 'calendar_id', 'title', 'start', 'duration_minutes' but other tools lack any parameter documentation. For 'resolve_datetime', what format does 'start' accept? Is it 'next Tuesday' or 'Tuesday 2pm'? LLMs cannot infer.
Tool names are generic or ambiguous. 'get_availability' vs 'check_availability' vs 'find_free_slots', three tools that likely overlap but have no clear distinction in naming. LLMs will struggle to select the correct tool when names are this similar.
No error handling guidance visible in any tool description. If 'book_slot' fails due to a conflict, what does the error message say? Can the agent retry? Should it call 'find_free_slots' again? No recovery paths documented.
Tool definitions inferred from examples (langgraph/crewai) rather than explicitly visible in a centralized schema registry or __init__.py. This affects all 13 tools.
'book_slot' documentation mentions 'Two-Phase Commit' but provides no details on failure modes, rollback behavior, or idempotency guarantees. If an agent retries a failed booking, will it create duplicates? Per pattern:idempotent-operation, agents assume retries are safe.
Pagination not mentioned for 'list_calendars' and 'list_events'. What happens if a user has 500 calendars or 10,000 events? No page/limit/offset parameters documented.