MCP server for terminal session management with UI element detection and terminal automation
Server has 10 well-named tools with complete input schemas and descriptions. Naming follows verb_noun convention (terminal_session_create, terminal_read_output). All tools have descriptions (avg ~60 chars, within baseline). Input schemas are properly typed with JSON Schema. However, output schemas are not formally documented, responses are inferred from jsonResult() calls. Error handling is minimal (generic toolError messages without recovery guidance). No parameter constraints (enums, ranges) despite many accepting free-form strings. Missing idempotency hints and permission declarations. Composition is sound (each tool has one responsibility), but descriptions lack WHEN/WHY context that LLMs need for tool selection.
Click at a position in the terminal session
Press a key or key combination in the terminal session
Read raw terminal output since the last read
Close and terminate a terminal session
Create a new terminal session with the specified command
List all active terminal sessions
Resize a terminal session to new dimensions
Output schemas not formally documented. Responses are constructed via jsonResult() helper but no schema definitions exist in tool registration. LLMs cannot predict return structure for planning downstream calls.
Error messages are generic ('failed to create session: %v'). No recovery guidance or error classification (retryable vs fatal). LLMs cannot determine next action on failure.
Parameter descriptions lack constraints. 'key' in terminal_press_key accepts free-form strings (e.g., 'Enter', 'Ctrl+c', 'Up') but no enum or pattern is declared. LLMs may hallucinate invalid key names.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Capture the current terminal state as a structured Terminal State Tree with detected UI elements
Type text into the terminal session
Wait for a condition in the terminal session
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Agents cannot distinguish safe reads from destructive writes without parsing descriptions.
Descriptions are brief (avg 60 chars) and lack WHEN/WHY context. 'Type text into the terminal session' does not explain when to use terminal_type vs terminal_press_key vs terminal_click, or what the expected output is.