A production-minded MCP server kit: OAuth/PKCE, rate limiting, scope-gated tools, and two-phase confirm — bring your own tools, identity, and storage.
Two tools with basic schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. list_slots has an empty input schema (correct for its use case) but lacks output documentation. book_slot has a single parameter with minimal description. Neither tool documents return structure, pagination, or error recovery paths. Descriptions are present but generic (10-50 chars), below the 50-200 char baseline for LLM-optimized tools. No error handling guidance, no idempotency markers, no scope/permission documentation visible in tool definitions.
Book an appointment slot.
List available appointment slots for today.
Output schemas not documented. Neither tool specifies what fields the response contains, forcing LLMs to infer structure from examples. list_slots returns text; book_slot returns text. No structured object definitions provided.
Parameter descriptions are minimal or absent. book_slot's 'slot' parameter has only 'The appointment slot to book', no format guidance, no enum of valid slots, no example. LLMs cannot validate input without constraints.
Tool descriptions are too short (10-50 chars vs 50-200 baseline). 'List available appointment slots for today' and 'Book an appointment slot' lack context on when to use each, what data is returned, or prerequisites.
No error handling guidance. If book_slot fails (slot already booked, invalid slot), no recovery path is documented. LLMs receive no actionable error messages.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Destructive operation (book_slot) lacks confirmation/preview pattern. The code shows a 'mutating' field with preview/execute, but this is not exposed in the tool schema visible to LLMs. No dry-run or confirmation step documented.