CMUX MCP Server — programmable terminal control plane for multi-agent AI workflows
51 tools with consistent naming (verb_noun pattern: cmux_*) and basic descriptions (avg ~80 chars). However, critical gaps: (1) Most parameter descriptions are minimal (1-2 lines), lacking format/constraint details required by pattern:constrained-input. (2) No output schemas documented, LLMs cannot infer response structure for chaining. (3) No error handling guidance, tools return raw errors without recovery hints. (4) Descriptions lack WHEN/WHY context (pattern:tool-description). Example: cmux_send has description 'Send text input to a surface' but omits whether it's blocking, what happens on failure, or how to detect completion. (5) No distinction between similar tools (cmux_send vs cmux_send_panel are duplicates; cmux_send_key vs cmux_send_key_panel). (6) Destructive tools (cmux_close_workspace, cmux_close_window, cmux_close_surface, cmux_browser_close) lack confirmation/dry-run patterns. (7) Parameters accepting IDs/refs (e.g., 'workspace:209') lack format documentation. Baseline: 90% of A+ tools have 50-200 char descriptions with param constraints; this server averages 80 chars with minimal constraints.
Break a pane out into its own window
Navigate back in browser history
Close the browser
Navigate forward in browser history
Navigate the browser to a URL
Open a URL in the built-in browser
Reload the current page in the browser
Capture the current screen text from a pane
No output schemas documented for any tool. LLMs cannot infer response structure, breaking tool chaining and forcing discovery detours.
Destructive tools (cmux_close_workspace, cmux_close_window, cmux_close_surface, cmux_browser_close) lack confirmation/dry-run patterns. Agents can irreversibly delete resources without safeguards.
Parameter descriptions lack format/constraint details. E.g., 'workspace' param accepts 'workspace:209' format but description omits this. No enums for constrained values (e.g., 'direction' in cmux_new_split should enum [horizontal, vertical]).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Clear all notifications
Close a surface
Close a window
Close a workspace by ID or ref
Get the currently focused window
Get the currently selected workspace
Drag a surface to split another surface
Focus/select a pane
Focus/select a window
Identify the currently focused surface and its context
Join a pane into another pane
List all notifications
List all surfaces in a pane
List all surfaces (panels) in a pane
List all panes in a window
List all windows in the current workspace
List all workspaces with their IDs, names, and selection status
Move a surface to a different pane
Move a workspace to a different window
Create a new pane in a window
Create a new surface by splitting an existing surface
Create a new surface (terminal panel) in a pane
Create a new window in a workspace
Create a new workspace with an optional name
Send a notification
Ping the CMUX server to verify it is running and responsive
Read the current screen text from a surface
Rename a tab
Rename a window
Rename a workspace
Reorder surfaces within a pane
Reorder workspaces by moving one to a new position
Resize a pane
Select/focus a workspace by ID or ref
Send text input to a surface
Send a key event to a surface
Send a key event to a panel (surface)
Send text input to a panel (surface)
Set the sidebar status text
Get the current sidebar state
Toggle the sidebar visibility
Swap the positions of two panes
Display the full workspace/window/pane/surface tree structure
Duplicate tools with unclear distinction: cmux_send/cmux_send_panel and cmux_send_key/cmux_send_key_panel. LLMs waste reasoning cycles deciding between them.
No error handling guidance. Tools return raw errors without recovery hints (e.g., 'workspace not found' should suggest 'Try cmux_list_workspaces() to see available workspaces').