TUI testing toolkit for automated terminal user interface testing via MCP
Server has 10 tools with complete input schemas and descriptions visible in src/tools.zig. Naming follows verb_noun pattern (tui_start, tui_send, tui_screen, etc.), which is good. Descriptions are present but brief (10-50 chars), below the 50-200 char LLM-optimized baseline. Parameters have types and descriptions, but lack constraints (enums, ranges, patterns). No output schemas documented. Error handling and recovery guidance absent. Tool composition is reasonable (single responsibility), but descriptions don't explain WHEN to use each tool or dependencies between them.
Get a single cell's attributes
Start recording tool calls to a JSONL file
Stop recording and close the file
Resize terminal and return screen state
Get the current screen content
Send input and return screen state
Capture or compare a screen snapshot
Descriptions are too brief (10-50 chars vs. 50-200 char baseline). LLMs cannot determine WHEN to use tui_wait vs tui_send, or dependencies between tools. Add context: 'Wait for a condition (text, cursor position, or screen stability) before proceeding. Use when you need to synchronize with async TUI updates. Timeout in ms (default 5000).'
No output schemas documented. LLMs cannot plan downstream calls or extract required fields. Document what tui_start, tui_send, tui_screen, tui_wait, tui_resize return (e.g., screen content structure, session_id format, exit codes).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Start a TUI program and return initial screen state
Stop a session and get exit code
Wait for a condition and return screen state
Parameter constraints missing. settle_ms accepts 0-5000 but no min/max in schema. keys array has no item type or length limit. region object has no bounds validation. Add JSON Schema constraints: 'settle_ms': {type: integer, minimum: 0, maximum: 5000}.
No error handling or recovery guidance. If tui_start fails (command not found, permission denied), LLM has no guidance. Add: 'Error responses include: command_not_found (check PATH), permission_denied (check executable), timeout (increase settle_ms).'
Tool composition lacks dependency hints. tui_send requires session_id from tui_start, but description doesn't say 'Call tui_start first to get session_id.' LLMs may call tools in wrong order.