MCP server exposing teru's process graph and pane state over a Unix domain socket. Implements a minimal HTTP JSON-RPC 2.0 server for the Model Context Protocol.
Teru exposes 35 tools with basic schemas and descriptions, but falls short of production quality. Most tools have 1-4 parameters with type definitions and brief descriptions (avg ~60 chars), meeting minimum viability. However, critical gaps undermine LLM usability: (1) No output schemas documented, LLMs cannot predict return structure or chain tools reliably. (2) Descriptions are generic and lack WHEN/WHY context, e.g., 'List all panes in the current workspace' does not explain when to call it vs. alternatives. (3) Parameter descriptions are minimal; many lack constraints, ranges, or format hints. (4) No error handling guidance, tools return success/failure with no recovery hints. (5) Enum constraints missing for string parameters (e.g., direction, layout, zoom direction), LLMs will hallucinate invalid values. (6) No idempotency or confirmation patterns for destructive ops (close_pane, session_restore). (7) Tool composition is weak, no chaining IDs returned in responses, forcing discovery detours. Naming is consistent (verb_noun pattern) and mostly clear, but descriptions and schemas lag production baselines.
Broadcast input to all panes in a workspace
Close a specific pane
Create a new pane
Focus a specific pane
Get all configuration values
Get the process graph structure
Get the state of a specific pane
List all panes in the current workspace
No output schemas documented. LLMs cannot predict return structure, field names, or types. Breaks tool chaining, agents cannot extract IDs for downstream calls.
String parameters lack enum constraints. 'direction' (horizontal/vertical), 'layout' (grid/tall), 'zoom' (in/out/reset) accept free-form strings, LLMs will hallucinate invalid values.
Descriptions lack WHEN/WHY context. Generic descriptions like 'Get the state of a specific pane' do not explain when to call this vs. teru_read_output or teru_get_graph. LLMs cannot disambiguate.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2026-07-28+ | v2 |
Read terminal output from a pane
Take a screenshot and save to a file
Scroll a pane's scrollback buffer
Send input text to a pane
Send key sequences to a pane
Restore a saved session
Save the current session
Set a configuration value
Set the layout for a workspace
Subscribe to teru and teruwm events
Switch to a different workspace
Wait for a pattern to appear in a pane's output
Close a window
Focus a window
Get all configuration values
Get the currently focused window
List all windows in the compositor
List all workspaces
Move a window to a different workspace
Take a screenshot of the entire compositor
Set a configuration value
Set the layout for a workspace
Spawn a new terminal window
Switch to a different workspace
TEST ONLY: set a pane's scrollback position in pixels, bypassing the real wlr_pointer_axis handler
Zoom the font globally
Zoom the font for the focused terminal pane only
Destructive operations (teru_close_pane, teru_session_restore, teruwm_close_window) lack confirmation or dry-run patterns. Agents can irreversibly delete without safeguards.
No error handling guidance. Tools return success/failure with no recovery hints. If teru_wait_for times out or teru_create_pane fails, LLM has no guidance on next steps.