AI sidecar terminal - let any MCP client run commands in a visible, persistent terminal you control. Pluggable backends: iTerm2, tmux, Ghostty, WezTerm, Kitty, maquake, and VSCode/IntelliJ via local Unix socket.
Sideshell exposes 10 terminal control tools with basic schemas and descriptions. Most tools have descriptions (8-50 chars), but many are terse and lack actionable guidance. Schemas are present but sparse: parameters lack detailed type constraints, enums are minimal, and output schemas are undocumented. No error handling guidance, no recovery hints, and no tool annotations (readOnlyHint/destructiveHint). Tool names are verb-based (execute, read, control-char, list, split, new-window, new-tab, focus, clear, paste) but some are hyphenated and non-standard (control-char, new-window, new-tab). Critical gap: no documentation of what each tool returns or how to chain them. Descriptions do not explain prerequisites, side effects, or when to call list() first. Parameters like session_id lack guidance on how to obtain them. This is a functional but under-documented toolkit typical of early-stage MCP servers.
Clear terminal screen.
Send control character: Ctrl+c/d/z, enter, esc, arrows, F1-F12, etc.
Execute command in terminal. Supports single/multiple targets, wait for completion. Call 'list' first.
Focus a specific terminal session.
List all terminal sessions with metadata.
Create a new terminal tab.
Create a new terminal window.
Output schemas completely undocumented. No tool describes what it returns, what fields are in the response, or how to chain results to downstream tools. LLMs cannot plan multi-step sequences without knowing what data is available.
Descriptions are terse (25-50 chars) and lack actionable guidance. 'Create a new terminal window' does not explain what happens, what is returned, or when to use it vs new-tab. No hints on prerequisites (e.g., 'Call list() first to find session_id').
No error handling or recovery guidance. Tools do not document what errors can occur, whether they are retryable, or what the LLM should do next. A failed execute() call returns nothing actionable.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | <=2025-11-25 | v2 |
Paste text into terminal.
Read terminal output. Use 'list' first to find session_id.
Split pane horizontally or vertically.
Tool names use non-standard hyphenation (control-char, new-window, new-tab). Prefer snake_case (control_char, new_window, new_tab) for consistency with verb_noun pattern and LLM parsing.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe read-only tools (read, list) from destructive ones (execute, paste, clear) without explicit hints. This risks unsafe agent behavior.