A MCP server for interactive user questions with native UI
Single tool 'ask_user' with well-structured schema and clear descriptions. Tool naming follows verb-noun pattern (ask_user). Input schema is fully defined with Zod validation converted to JSON Schema. All parameters have descriptions. Output is documented via parseToolResult function. However, output schema is not explicitly documented in tool registration (only visible in implementation code), and tool lacks error handling guidance for recovery scenarios. No tool annotations (readOnlyHint/destructiveHint/idempotentHint) present.
Ask the user a question with several choices via a native GUI window. Supports Markdown in the body and a recommended choice. The user can also type a custom answer or skip the question entirely.
Output schema not documented in tool registration. Tool definition shows input schema via Zod but parseToolResult implementation (returns string union of outcomes) is not declared to LLM.
Error handling does not guide LLM recovery. When 'recommended' doesn't match any choice, McpError is thrown but no alternative suggestions provided. Error message only states constraint violation, not corrective action.
No tool annotations for state mutation. 'ask_user' modifies user-visible state (shows GUI window, solicits interaction) but lacks idempotentHint or any annotation clarifying retry safety and side effects.
Parameter descriptions reference 'Markdown support' but do not specify format constraints (e.g., max length, allowed HTML tags, XSS handling). Code uses DOMPurify in UI but tool definition does not document sanitization guarantees.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 60 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 52 | - | v1 |
No guidance on timeout behavior. Tool accepts optional --timeout CLI flag but tool description does not document what happens on timeout (window closes? custom_input reset? user cancellation reported?).