This server powers a demo ChatGPT app widget. Use explore_stays to browse mock stays by city, filter, and select an item for details. All data is local mock JSON; no external calls.
Single tool 'explore_stays' has a well-structured schema with proper types, enums, and descriptions. Tool name uses verb_noun pattern (explore_stays). Description is clear and contextual (127 chars, within 10-1024 range). All parameters have type definitions and descriptions. However, output schema is not formally documented in the tool definition, only inferred from the ToolResult structured_content. Error handling is minimal (no recovery guidance for invalid city, missing stays, etc.). Tool annotations are present (readOnlyHint, idempotentHint, destructiveHint, openWorldHint), which is good. The widget integration via Apps SDK meta is well-implemented but adds complexity. No pagination support despite potential for large result sets.
Browse stays from mock data by city, optional rating filter, sort, and optional selected_id. Use this when the user wants to explore accommodations in a city and see an interactive list.
Output schema not formally documented. ToolResult returns structured_content with city, results, selected, applied_filters, but no schema definition visible in tool registration. LLMs cannot reliably plan downstream operations without knowing the exact structure.
No error handling or recovery guidance. If city is not found, tool returns empty results with no hint to the LLM. If min_rating is invalid (negative, non-numeric), no validation or actionable error message. LLM cannot self-correct.
No pagination support. If a city has hundreds of stays, all are returned in one response, potentially exhausting context window. Tool description does not mention result limits or pagination.
Parameter 'selected_id' is optional but its purpose is unclear from description alone. Description says 'Optional ID of a specific stay to select for details' but does not explain when/why to use it vs. just returning all results. Ambiguous parameter relationships.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 79 | 2025-06-18+ | v2 |
No input validation. Tool accepts any string for 'city' and any number for 'min_rating'. Negative ratings, empty strings, or SQL-injection-like payloads are not sanitized. No constraint documentation (e.g., 'city must be 1-100 chars, alphanumeric + spaces').