Always-on MCP server for Terminal 64 Claude sessions, providing delegation tools for team communication and widget access to Terminal 64 data
Terminal 64 MCP server has 5 tools with basic descriptions but significant quality gaps. All tools have descriptions (10-100 chars), but most are generic and lack actionable context. Input schemas are present but minimal, most tools accept empty objects or single parameters with no validation constraints. No output schemas documented. Error handling is absent; tools provide no recovery guidance. Tool names follow verb_noun convention (get_*, emit_*) but descriptions don't explain WHEN to use each tool or what downstream operations require. No parameter validation, no pagination support, no idempotent guarantees. The server reads Terminal 64 widget state and emits events, a narrow, specialized domain, but the tool definitions don't reflect best practices for agent composition.
Emit a custom event from this widget that Terminal 64 can listen to. Use for inter-widget communication or triggering UI updates.
Get the current canvas state: pan position, zoom level, and number of open panels.
Get recent messages from a specific Claude session.
Get a list of all active Claude Code sessions in Terminal 64, including their names, working directories, and status.
Get a list of all terminal panels on the Terminal 64 canvas, including their positions, titles, and types.
No output schemas documented. LLMs cannot predict what fields get_sessions, get_terminals, or get_canvas_state return, forcing them to guess at downstream field names and risk broken tool chains.
Descriptions are too generic and lack context. 'Get a list of all active Claude Code sessions' does not explain WHEN to call this vs get_terminals, what fields are returned, or what the agent should do with session IDs. Descriptions should be 50-200 chars and answer: what, when, why.
Input schemas are minimal. get_session_messages accepts 'last' (number) but no min/max bounds, no default value, no guidance on what happens if last=0 or last=1000. Parameters lack constraints that prevent invalid LLM inputs.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2026-07-28+ | v2 |
No error handling or recovery guidance. If emit_widget_event fails (invalid event_type, malformed data), the tool provides no actionable error message. LLMs cannot self-correct or retry intelligently.
Tool composition is unclear. get_session_messages requires 'session_id' but get_sessions does not document what field name it returns for session IDs. If get_sessions returns 'id' but the agent needs 'session_id', the chain breaks.