MCP Apps pattern demo — a tool that returns an interactive room-picker UI rendered inside the agent (ui:// resource, structuredContent vs widgetData separation).
Single tool 'search-rooms' has well-structured schema with proper Zod validation, clear descriptions, and appropriate constraints (checkIn as string YYYY-MM-DD, nights 1-30, guests 1-4). Tool name uses verb_noun pattern correctly. Description is concise (118 chars, within 10-1024 baseline). Parameters all have descriptions and type constraints. Output schema is documented via structuredContent + _meta separation pattern. However, output schema documentation is implicit in code rather than explicit in tool registration metadata. Tool demonstrates MCP Apps pattern correctly with ui:// resource and widgetData separation, but lacks explicit error handling guidance and recovery paths.
Search available rooms at the Demo Hotel. Returns offers and renders an interactive room-picker widget.
Output schema not explicitly documented in tool metadata. While structuredContent and _meta are returned, the tool registration does not include a formal outputSchema or return type description. LLMs cannot predict the response structure without reading implementation code.
No error handling or recovery guidance. Tool lacks error responses for invalid dates, out-of-range parameters, or service failures. LLMs receive no guidance on what to do if search fails.
checkIn parameter accepts free-form string with only description 'Check-in date, YYYY-MM-DD'. No regex pattern constraint or format validation in schema. LLMs may pass invalid dates like '2024-13-45' without client-side rejection.
Tool description does not explain WHEN to use it vs alternatives or what prerequisites exist. Missing context on whether this is a discovery tool or a booking tool, and whether it requires authentication.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | 2025-06-18+ | v2 |