Skip to main content
Glama

cmuxLayer

cmuxLayer exposes a 10-tool public MCP surface for controlling cmux terminal workspaces and managing CLI agents.

install License MCP Tools Tests

Quick start

brew install etanhey/layers/cmuxlayer       # stable, pinned release
brew install --HEAD etanhey/layers/cmuxlayer # or: dogfood the latest main

This installs the cmuxlayer command plus cmuxlayer-app-server and cmuxlayer-proxy. cmux must be running. For fleet wiring, versions, dogfooding, and the CMUX_SOCKET_PATH pin, see docs/releases-and-brew.md.

Then set up this machine:

cmuxlayer init

The wizard selects spawnable repositories, per-repo launchers or direct CLI launches, and approval behavior. It writes ~/.config/cmuxlayer/env.sh and, in launcher mode, a launcher registry. cmuxlayer reads both at startup, including when an MCP client starts it from a GUI. The wizard asks before replacing a file and creates a backup first.

For scripted installs, pass --yes with --repo <name>=<path>. cmuxlayer does not assume a fixed repository layout. See docs/fresh-install.md for the walkthrough and docs/registry-optional-spawn.md for how each lane behaves.

Optional fleet sidebar

Install the optional lane-grouped fleet view with:

bun run install:fleet-sidebar

cmuxLayer refreshes ~/.config/cmux/sidebars/fleet.swift from its reconciled live-agent snapshot. It does not change cmux settings or replace the stock sidebar. Activate it from the sidebar toggle by choosing fleet.

Development and screenshot QA use a separate picker entry:

bun run install:fleet-sidebar:dev
bun run dev

Those commands publish only ~/.config/cmux/sidebars/fleet-dev.swift; choose fleet-dev in cmux while testing. Runtime tests must inject a temporary publisher outputPath.

Add to your MCP config:

Codex CLI / T3 Code

T3 Code inherits MCP servers from the Codex CLI config file at ~/.codex/config.toml (or $CODEX_HOME/config.toml).

[mcp_servers.cmuxlayer]
command = "cmuxlayer"

Claude Code, Cursor, VS Code, Claude Desktop

{
  "mcpServers": {
    "cmuxlayer": {
      "command": "cmuxlayer"
    }
  }
}

To keep only a per-session resident subset of tools, set CMUXLAYER_DEFAULT_PALETTE to comma-separated bare tool names, for example list_surfaces,spawn_agent,send_to. The server also exposes expand_palette, which makes every deferred tool available for the rest of that MCP session. When unset or blank, the signed 10-tool thin-core default applies. When set, the environment value overrides that default for the session. Unknown names are warned and ignored while valid names still load.

Autonomous prompt resolution is experimental and disabled by default. cmuxlayer detects prompt choosers, marks the agent blocked_on_prompt, and escalates without sending a key. Setting CMUXLAYER_EXPERIMENTAL_PROMPT_AUTO_RESOLVE=1 restores the known-imperfect Escape-based resolver for isolated testing only; do not enable it for fleet use.

Config locations: Codex CLI / T3 Code ~/.codex/config.toml (or $CODEX_HOME/config.toml) | Claude Code .mcp.json or claude mcp add cmuxlayer -s user -- cmuxlayer | Cursor .cursor/mcp.json | VS Code .vscode/mcp.json | Claude Desktop — see MCP docs for platform-specific paths

Related MCP server: hyperpanes-mcp

What you can do

Tell your AI agent things like:

  • "Split a pane to the right and run my test suite there"

  • "Spawn a Claude Code agent in a new pane to refactor auth.ts"

  • "Read the screen of surface:2 and tell me if the build passed"

  • "Wait for all agents to finish, then read their output"

  • "Set the sidebar status to show our deploy progress"

cmuxLayer retains 45 internal tool definitions; only 10 are registered and callable through MCP. The other 35 are not exposed through ToolSearch or any other MCP path. reorder_surface is the single approved deletion. read_screen parses agent metadata (status, model, tokens, context %) for Claude Code, Codex, Gemini, and Cursor.

Agent routing workflow

For managed agents, use the agent-first path: list_agents to find the target, send_to to deliver work by agent_id, then wait_for when you need completion. send_to also preserves the registry-independent escape hatch: use mode:"surface", mode:"command", or mode:"key" with a raw surface ref for shells, launch/resume commands, and stuck-pane recovery.

See Agent Routing and Handling Workflow for the full operator playbook, including stuck surface recovery and safe /mcp menu reconnects.

MCP tools (10 registered and callable)

All public tools include ToolAnnotations that clients can use in safety policy.

Public MCP surfacespawn_agent report_to_parent send_to read_screen list_agents wait_for control_health close_surface update_surface list_surfaces

The other 35 internal definitions, including interact, are not callable. The detailed inventory below names 44 live definitions; the 45th source registration is a removed error-only tombstone and is omitted from operator guidance.

Terminal control (16)list_surfaces control_health select_workspace create_workspace delete_workspace new_split new_surface move_surface send_input send_command send_key read_screen rename_tab close_surface update_surface browser_surface

Agent lifecycle (13)spawn_agent new_worktree_split spawn_in_workspace send_to send_to_agent wait_for wait_for_all interact stop_agent kill supersede_agent_goal broadcast report_to_parent

Metacomm (agent inbox, 2)dispatch_to_agent inbox_check

Workspace state (7)list_agents my_agents get_agent_state read_agent_output notify set_status set_progress

Monitor registry (6)register_monitor signal_monitor deregister_monitor list_monitors query_monitor_registry arm_watch

Read-only (10)

Tool

What it does

list_surfaces

List all surfaces across workspaces

control_health

Report socket, binary, process, and job-control diagnostics

read_screen

Read terminal output with parsed agent status

get_agent_state

Full state of a tracked agent

list_agents

All agents, with optional filters

my_agents

Children of a parent agent with live screen status

read_agent_output

Structured output between delimiter markers

inbox_check

Inspect an agent's inbox channel: pending messages, monitor liveness, stale dispatches

list_monitors

List shared monitor-registry records

query_monitor_registry

Query monitor gates and liveness metadata

Mutating (32)

Tool

What it does

select_workspace

Switch the active workspace

create_workspace

Create a new named workspace

delete_workspace

Delete a workspace after live-agent and caller-workspace safety checks

new_split

Deprecated one-release alias; use spawn_agent(placement:...) for managed agents

new_surface

Create a tab in an existing pane

move_surface

Move a surface to another pane or position

send_input

Deprecated one-release alias for send_to(mode:"surface")

send_command

Deprecated one-release alias for send_to(mode:"command")

send_key

Deprecated one-release alias for send_to(mode:"key")

rename_tab

Rename a surface tab

update_surface

Update a surface title or metadata

notify

Show a cmux notification banner

set_status

Set sidebar status key-value pair

set_progress

Set progress indicator (0.0-1.0)

browser_surface

Interact with browser surfaces

spawn_agent

Spawn a CLI agent and return an agent_id for routing

new_worktree_split

Deprecated one-release alias; use spawn_agent(worktree:true, placement:"worker")

spawn_in_workspace

Deprecated one-release alias; create/reuse a workspace and call spawn_agent for each managed agent

dispatch_to_agent

Append a task to an agent's inbox file (deterministic write channel)

send_to

Send by agent ID or raw surface using `mode:"agent"

send_to_agent

Deprecated one-release alias for send_to(mode:"agent")

wait_for

Wait for one agent_id or several ids (defaults to done)

wait_for_all

Deprecated one-release alias for wait_for(ids:[...])

interact

Send interactive input (confirm, cancel, resume)

broadcast

Fan out a guarded message to agents by role

report_to_parent

Report structured completion to a parent agent

supersede_agent_goal

Replace a managed agent's active file-backed goal

register_monitor

Register or re-arm a monitor deadman record

signal_monitor

Refresh a monitor heartbeat

deregister_monitor

Mark a monitor intentionally stopped

arm_watch

Arm a lifecycle watch for an agent transition

Destructive (3)

Tool

What it does

close_surface

Close a terminal or browser pane

stop_agent

Gracefully stop an agent

kill

Force-kill agent processes

Supported agents

CLI

Command

Auto-detected

Claude Code

claude

status, model, tokens, context %

Codex

codex

status, model, context %

Gemini CLI

gemini

status, model, tokens, context %

Cursor

cursor agent

status, model, tokens, context %

Kiro CLI

kiro-cli

spawn and lifecycle only; no Kiro-specific screen parser

read_screen auto-detects agent type and parses metadata from terminal output.

Architecture

AI Agent  ─── MCP ───>  cmuxLayer  ─── Unix socket ───>  cmux
                         ├── Agent engine (spawn → monitor → teardown)
                         ├── Screen parser (5 agent formats)
                         ├── Mode policy (autonomous vs manual)
                         ├── State manager + event log
                         ├── Metacomm READ  — harness JSONL (real tokens/context/model)
                         └── Metacomm WRITE — per-agent inbox file + Monitor dispatch

The socket client connects to cmux through a Unix socket. It reconnects after a disconnect and falls back to a CLI subprocess when the socket is unavailable.

Connection

Latency

Speedup

CLI subprocess

~142ms

baseline

Unix socket

~0.1ms

1,423x

Troubleshooting

cmux is not running cmuxLayer requires a running cmux instance. Install it first, then start a cmux session before using cmuxLayer.

Tools not appearing in Codex CLI or T3 Code Restart the client after adding cmuxlayer to ~/.codex/config.toml. If you use a custom Codex home, verify $CODEX_HOME/config.toml contains the same mcp_servers.cmuxlayer entry.

Tools not appearing in Claude Code Restart Claude Code after adding the MCP config. Run claude mcp list to verify cmuxlayer is connected.

Socket connection failed cmuxLayer auto-discovers the cmux socket (macOS: ~/Library/Application Support/cmux/cmux.sock). Override with CMUX_SOCKET_PATH if needed.

"Cannot resolve a working directory for repo ..." cmuxLayer could not find that checkout. Run cmuxlayer init to register it, or set CMUXLAYER_REPO_HOME to the colon-separated directories holding your repositories. The error lists every path it searched.

Testing

bun run test        # 3023 tests via vitest
npm run typecheck   # Type checking

Git hooks

Enable project hooks to run the regression gate automatically on git push:

git config core.hooksPath .githooks

This enables .githooks/pre-push, which runs scripts/run_tests.sh and blocks pushes on regression failures.

Development

npm install
npm run dev         # Run with tsx (hot reload)
npm run build       # Compile TypeScript
npm start           # Run compiled output

Contributing

See CONTRIBUTING.md for development setup and PR guidelines.

License

Apache 2.0 — see LICENSE.


Part of the Golems AI agent ecosystem. cmuxlayer.etanheyman.com | Built by @EtanHey.

Available Tools

20 tools
browser_surfaceC

Interact with a browser surface (open, navigate, snapshot, click, type, eval, wait)

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesBrowser action to perform
surfaceNoTarget surface ref
workspaceNoTarget workspace ref
urlNoURL for open/goto actions
selectorNoCSS selector for click/type/wait actions
textNoText for type action
scriptNoJavaScript for eval action
timeout_msNoTimeout for wait action

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. While it lists action types, it doesn't explain what 'surface' and 'workspace' refs are, whether actions are synchronous/asynchronous, error handling, or performance characteristics. For a complex 8-parameter tool with multiple action types, this is insufficient behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise - a single sentence that efficiently lists all available actions. It's front-loaded with the core purpose and wastes no words. Every element earns its place in this compact format.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 8 parameters, multiple action types, no annotations, and no output schema, the description is inadequate. It doesn't explain return values, error conditions, or the relationships between parameters for different actions. The agent would struggle to use this tool correctly without significant trial and error.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value by listing action names that correspond to the 'action' enum values, but doesn't provide additional semantic context beyond what's in the schema. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Interact') and resource ('browser surface'), and lists the available actions. However, it doesn't explicitly differentiate this tool from sibling tools like 'send_input', 'send_key', or 'read_screen' which might have overlapping browser interaction capabilities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With multiple sibling tools that might handle browser interactions (send_input, send_key, read_screen, wait_for), there's no indication of when this multi-action browser tool is preferred over more specialized tools or vice versa.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

close_surfaceC

Close a surface (terminal or browser pane)

ParametersJSON Schema
NameRequiredDescriptionDefault
surfaceYesTarget surface ref
workspaceNoTarget workspace ref

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It mentions the action ('Close') but doesn't disclose behavioral traits such as whether this requires specific permissions, if the closure is reversible, what happens to unsaved data, or any side effects. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core action and resource. It uses minimal words ('Close a surface') with a clarifying parenthetical ('terminal or browser pane'), making it zero waste and easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool performs a mutation (closing a surface) with no annotations and no output schema, the description is incomplete. It lacks information on prerequisites, effects, error conditions, or return values. For a tool that modifies state, more context is needed to guide safe and effective usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters ('surface' and 'workspace') with descriptions. The description does not add any meaning beyond what the schema provides, such as explaining what a 'surface ref' entails or when 'workspace' is required. Baseline 3 is appropriate as the schema handles the parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Close') and the resource ('a surface'), specifying it can be a terminal or browser pane. It distinguishes the tool's purpose from siblings like 'list_surfaces' or 'new_split', but doesn't explicitly differentiate from 'kill' which might also terminate something, though 'close' implies a less destructive action on UI elements.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. For example, it doesn't specify if 'close_surface' should be used instead of 'kill' for surfaces, or under what conditions (e.g., after completing a task). The description only states what it does, not when or why to invoke it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_agent_stateB

Get the full state of an agent including cli_session_id for resume.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesAgent ID

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves state information, implying a read-only operation, but doesn't clarify permissions, rate limits, or what 'full state' entails beyond cli_session_id. For a tool with no annotations, this leaves significant gaps in understanding its behavior and constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose ('Get the full state of an agent') and adds a specific detail ('including cli_session_id for resume'). There is no wasted text, and it's structured to convey essential information concisely.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has one parameter with full schema coverage and no output schema, the description is minimally adequate. It specifies what the tool does and a key inclusion (cli_session_id), but lacks details on return values, error handling, or behavioral traits. For a simple read operation, it's functional but could be more informative to compensate for the absence of annotations and output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with the parameter 'agent_id' clearly documented in the schema. The description adds no additional meaning beyond what the schema provides, such as format examples or context for the agent_id. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate but doesn't detract either.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'full state of an agent', specifying it includes 'cli_session_id for resume'. This distinguishes it from siblings like 'list_agents' (which lists agents) or 'read_agent_output' (which reads output). However, it doesn't explicitly differentiate from all siblings, such as 'set_status' or 'stop_agent', which are clearly different actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing agent), exclusions, or comparisons to siblings like 'list_agents' for basic info or 'read_agent_output' for specific data. Usage is implied only by the action described.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

interactA

Send a message to an agent, or perform an agent action (interrupt, model switch, resume, skill, usage). If the agent is alive, sends directly. If not found, returns an error — use spawn_agent first.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentYesAgent ID (from spawn_agent or list_agents)
actionYesAction to perform
textNoText to send (required for action=send)
modelNoModel to switch to (required for action=model)
session_idNoSession ID to resume (optional for action=resume)
commandNoSlash command to run (required for action=skill)

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses key behavioral traits: the tool can fail with an error if the agent isn't found, and it requires the agent to be 'alive' for direct sending. However, it doesn't cover other important aspects like authentication needs, rate limits, side effects of different actions, or what 'alive' means operationally.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise and front-loaded: two sentences that efficiently cover purpose, conditions, and error handling. Every word earns its place with zero waste or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (6 parameters, multiple action types) and no annotations or output schema, the description is adequate but incomplete. It covers the basic workflow and error case, but lacks details on action-specific behaviors, return values, or interaction patterns with sibling tools like 'send_to_agent'. For a multi-action tool with no structured output documentation, more context would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 6 parameters thoroughly. The description adds minimal value beyond the schema—it mentions 'text' for 'send' and 'model' for 'model' actions implicitly, but doesn't provide additional semantic context or usage examples. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Send a message to an agent, or perform an agent action (interrupt, model switch, resume, skill, usage).' It specifies the verb ('send' or 'perform') and resource ('agent'), but doesn't explicitly differentiate from sibling tools like 'send_to_agent' or 'stop_agent' beyond mentioning 'spawn_agent' for error cases.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: 'If the agent is alive, sends directly. If not found, returns an error — use spawn_agent first.' This gives explicit guidance on prerequisites and error conditions, though it doesn't compare alternatives like 'send_to_agent' or explain when to choose specific actions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

killA

Stop one or more agents. Target can be a single agent ID, an array of IDs, or 'all'.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYesAgent ID, array of agent IDs, or 'all' to stop all agents
forceNoForce kill (SIGKILL) instead of graceful (Ctrl+C)

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses the action ('Stop') and target flexibility, but doesn't mention side effects (e.g., agent termination consequences), permissions needed, or error handling. It adds basic context but lacks rich behavioral details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with core action, zero waste. Every word earns its place by specifying target options concisely.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is minimal but adequate for a destructive tool with good schema coverage. It covers the what but lacks details on outcomes, errors, or prerequisites, leaving gaps in completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds no additional meaning beyond what's in the schema (e.g., no extra syntax or format details). Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Stop') and resource ('one or more agents'), distinguishing it from siblings like 'stop_agent' by specifying it can handle multiple targets including 'all'. It's specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by specifying target types (single ID, array, or 'all'), but doesn't explicitly state when to use this vs. 'stop_agent' or other alternatives. It provides clear context but lacks explicit exclusions or comparisons.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_agentsB

List all agents with optional filters by state, repo, or model.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNoFilter by state
repoNoFilter by repository
modelNoFilter by model

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It doesn't mention whether this is a read-only operation, if it requires authentication, potential rate limits, pagination behavior, or what format the returned list takes. 'List all agents' implies a read operation but lacks crucial details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that communicates the core functionality and filtering options without any wasted words. It's appropriately sized for this straightforward list operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list operation with no annotations and no output schema, the description is minimally adequate but leaves significant gaps. It doesn't explain what information is returned about each agent, whether results are paginated, or any authentication requirements. The 100% schema coverage helps, but more behavioral context would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters with their types and the state enum values. The description adds marginal value by mentioning the three filter types but doesn't provide additional semantic context beyond what's in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List') and resource ('all agents'), and specifies optional filtering capabilities. However, it doesn't explicitly differentiate from sibling tools like 'get_agent_state' or 'spawn_agent', which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives like 'get_agent_state' for single-agent queries or 'spawn_agent' for creation. The description only states what the tool does, not when it's appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_surfacesC

List all surfaces (terminal/browser panes) across workspaces

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNoFilter by workspace ref
include_screen_previewNoInclude screen content preview
preview_linesNoNumber of preview lines

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states it 'List all surfaces' but doesn't disclose behavioral traits such as whether this is a read-only operation, potential rate limits, authentication needs, or how results are returned (e.g., pagination, format). For a tool with no annotations, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste. It front-loads the core purpose ('List all surfaces') and adds clarifying details in parentheses and a phrase. Every word earns its place, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete for a tool with three parameters and potential complexity. It doesn't explain return values, error conditions, or behavioral context, leaving the agent under-informed. For a list operation with filtering options, more completeness is needed to guide effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents the three parameters. The description adds no additional meaning beyond implying filtering by workspace and preview options, which are already covered in the schema. This meets the baseline score of 3, as the schema handles parameter documentation adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'surfaces (terminal/browser panes) across workspaces', making the purpose unambiguous. It distinguishes the scope as 'across workspaces', which is helpful. However, it doesn't explicitly differentiate from sibling tools like 'read_screen' or 'browser_surface', which might handle specific surface interactions, so it misses the top score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, exclusions, or compare to siblings like 'list_agents' or 'read_screen' for related data. This leaves the agent without context for tool selection, relying solely on the name and purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

new_splitC

Create a new split pane (terminal or browser)

ParametersJSON Schema
NameRequiredDescriptionDefault
directionYesSplit direction
workspaceNoTarget workspace ref
surfaceNoTarget surface ref
paneNoTarget pane ref
typeNoSurface typeterminal
urlNoURL for browser surfaces
titleNoTab title
focusNoFocus the new pane

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but only states the basic action without disclosing behavioral traits. It doesn't mention permissions needed, side effects (e.g., if it modifies layout or requires active workspace), error conditions, or what happens on success (e.g., returns a pane ref). This leaves significant gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it easy to parse quickly without unnecessary details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of an 8-parameter mutation tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral context, usage scenarios, and expected outcomes, which are crucial for an agent to invoke this tool correctly in a multi-tool environment.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents parameters. The description adds no additional meaning beyond implying 'type' can be 'terminal' or 'browser', which is already in the schema. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Create') and the resource ('new split pane'), specifying it can be either a terminal or browser type. It distinguishes from siblings like 'browser_surface' by focusing on splitting rather than creating standalone surfaces, though it doesn't explicitly contrast with all siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'browser_surface' or 'spawn_agent'. The description lacks context about prerequisites, such as needing an existing pane to split from, or exclusions for when splitting is not applicable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_agent_outputA

Extract structured output from an agent's terminal between delimiter markers (e.g., REVIEW_OUTPUT_START / REVIEW_OUTPUT_END). Returns the content between the markers, or null if not found.

ParametersJSON Schema
NameRequiredDescriptionDefault
surfaceYesTarget surface ref (e.g., 'surface:78')
tagNoDelimiter tag name. Looks for {TAG}_START and {TAG}_END markers. Default: OUTPUT (matches OUTPUT_START/OUTPUT_END). Examples: REVIEW_OUTPUT, SYNTHESIS_OUTPUT, PUSHBACK_OUTPUTOUTPUT
linesNoNumber of screen lines to scan (default: 200)
workspaceNoTarget workspace ref

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the extraction behavior and return value (content between markers or null if not found), but doesn't mention error conditions, performance characteristics, or what happens if markers are malformed. It provides basic operational context but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly concise - a single sentence that states the purpose, mechanism, and return behavior with zero wasted words. It's front-loaded with the core functionality and efficiently communicates essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 4 parameters, 100% schema coverage, but no annotations or output schema, the description provides adequate basic context about what the tool does and its return behavior. However, it lacks information about error handling, performance considerations, or detailed behavioral traits that would be helpful for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents all parameters. The description mentions delimiter markers and the null return case, but doesn't add significant semantic context beyond what the schema provides about parameters like 'surface', 'tag', 'lines', or 'workspace'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('extract structured output'), target resource ('from an agent's terminal'), and mechanism ('between delimiter markers'). It distinguishes from siblings like 'read_screen' (general screen reading) and 'get_agent_state' (state monitoring) by focusing on delimited content extraction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool (when needing to extract content between specific delimiter markers in an agent's terminal). However, it doesn't explicitly mention when NOT to use it or name specific alternative tools for different extraction scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_screenC

Read the current screen content of a terminal surface

ParametersJSON Schema
NameRequiredDescriptionDefault
surfaceYesTarget surface ref
workspaceNoTarget workspace ref
linesNoNumber of lines to read
scrollbackNoInclude scrollback buffer

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions reading screen content but doesn't specify permissions needed, whether this is a read-only operation, potential rate limits, or what format the output returns. This leaves significant gaps for an agent to understand the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's front-loaded with the core purpose and doesn't waste space on redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 4 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what the output looks like (text format, structure), doesn't mention error conditions, and provides minimal behavioral context. Given the complexity of terminal screen reading, more completeness is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters are documented in the schema. The description doesn't add any additional semantic context about parameters beyond what's in the schema (e.g., explaining what a 'surface ref' represents or when to use scrollback). This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Read') and resource ('current screen content of a terminal surface'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'read_agent_output' or 'browser_surface', which might have overlapping reading functionality in different contexts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'read_agent_output' or 'browser_surface'. The description only states what it does, not when it's appropriate or what prerequisites might be needed for accessing terminal surfaces.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rename_tabC

Rename a surface tab

ParametersJSON Schema
NameRequiredDescriptionDefault
surfaceYesTarget surface ref
titleYesNew tab title
workspaceNoTarget workspace ref
preserve_prefixNoOnly replace the task suffix, keeping launcher prefix

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden for behavioral disclosure. 'Rename a surface tab' implies a mutation operation but doesn't specify permissions needed, whether the change is reversible, error conditions, or what happens to the surface state during renaming. For a mutation tool with zero annotation coverage, this is inadequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core action and immediately communicates the tool's purpose without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what 'rename' entails operationally, what happens on success/failure, or how this interacts with other surface operations. The 100% schema coverage helps with parameters, but the behavioral context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters thoroughly. The description adds no additional parameter information beyond what's in the schema. With complete schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate but also doesn't need to.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Rename') and target resource ('a surface tab'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'browser_surface' or 'close_surface', but the verb 'rename' is specific enough to distinguish it from other surface-related operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites, when renaming is appropriate, or what happens if the tab doesn't exist. With multiple surface-related tools available, this lack of contextual guidance is a significant gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_inputA

Send text input to a terminal surface. When sending commands to another Claude session, press_enter can be unreliable — for critical inputs, use send_input without press_enter, then call send_key with key 'return' separately.

ParametersJSON Schema
NameRequiredDescriptionDefault
surfaceYesTarget surface ref
textYesText to send
workspaceNoTarget workspace ref
press_enterNoPress enter after sending text. For reliability with interactive programs, send text first, then use a separate send_key 'return' call.
rename_to_taskNoRename tab suffix to this task name

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively explains a critical reliability consideration (press_enter unreliability) and provides a recommended workaround. However, it doesn't cover other behavioral aspects like error conditions, performance characteristics, or what happens when sending input to non-existent surfaces.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly front-loaded with the core purpose, followed immediately by critical usage guidance. Both sentences earn their place by providing essential information without redundancy. The structure moves from general purpose to specific reliability consideration efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 5 parameters, 100% schema coverage, and no output schema, the description provides excellent contextual completeness. It addresses the most critical behavioral consideration (press_enter reliability) that wouldn't be apparent from the schema alone. The only minor gap is lack of information about return values or error conditions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the schema already documents all 5 parameters thoroughly. The description adds context about the press_enter parameter's reliability issues and recommended usage pattern, which provides valuable semantic context beyond the schema's technical documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Send text input') and target resource ('to a terminal surface'), distinguishing it from sibling tools like send_key (which sends individual keys) or send_to_agent (which targets agents). It provides a precise verb+resource combination that leaves no ambiguity about the tool's function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool versus alternatives, specifically warning that 'press_enter can be unreliable — for critical inputs, use send_input without press_enter, then call send_key with key 'return' separately.' This directly addresses a reliability concern and offers a clear alternative workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_keyA

Send a key press to a terminal surface. Use this after send_input to reliably submit commands — especially when targeting interactive programs like Claude sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault
surfaceYesTarget surface ref
keyYesKey name (e.g. 'return', 'escape', 'tab')
workspaceNoTarget workspace ref

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the tool's purpose for 'reliably submit commands' which implies it handles key press simulation, but doesn't disclose potential side effects, error conditions, or what happens if the surface doesn't exist. It provides some context about when to use it but lacks details about behavioral constraints or limitations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly concise with two sentences that each earn their place. The first sentence states the core functionality, and the second provides crucial usage guidance. There's zero wasted language, and the most important information (what it does) comes first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 3 parameters, 100% schema coverage, and no output schema, the description provides good contextual completeness. It explains the tool's purpose, when to use it, and how it relates to other tools. However, without annotations or output schema, it could benefit from more details about what constitutes success/failure or typical response patterns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the schema already documents all three parameters. The description doesn't add any parameter-specific information beyond what's in the schema. It mentions the general purpose but provides no additional details about parameter usage, constraints, or examples beyond the schema's basic descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('send a key press') and target ('to a terminal surface'), distinguishing it from sibling tools like send_input (which sends text) or interact (which may handle broader interactions). It provides a concrete verb+resource combination that leaves no ambiguity about the tool's function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool ('Use this after send_input to reliably submit commands') and provides a specific use case ('especially when targeting interactive programs like Claude sessions'). It clearly differentiates from send_input by explaining the sequential relationship and specialized purpose for command submission.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_to_agentB

Send text input to an agent. Agent must be in ready or idle state.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesAgent ID
textYesText to send
press_enterNoPress enter after sending text

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the agent state requirement, which is useful context, but doesn't address other important behavioral aspects like whether this is a read-only or destructive operation, what permissions are needed, what happens if the agent isn't in the required state, or what the response/outcome looks like. For a tool that interacts with agents, this leaves significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise - just two short sentences that communicate the core purpose and a key constraint. Every word earns its place, and the most important information (what the tool does) is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that this is a tool that sends input to agents (potentially a mutation operation), the lack of annotations and output schema means the description should do more heavy lifting. While it mentions the agent state requirement, it doesn't explain what happens after sending the text, what kind of response to expect, or any error conditions. For a tool with no structured behavioral hints, this is incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, meaning all parameters are documented in the schema itself. The description doesn't add any additional parameter semantics beyond what's already in the schema (agent_id, text, press_enter). This meets the baseline expectation when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Send text input') and target ('to an agent'), providing a specific verb and resource. However, it doesn't distinguish this tool from similar sibling tools like 'send_input' or 'interact', which likely have overlapping functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides an important precondition ('Agent must be in ready or idle state'), which gives some context for when to use this tool. However, it doesn't explain when to choose this tool over alternatives like 'send_input' or 'interact', nor does it provide explicit exclusions or comparisons with sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_progressC

Set sidebar progress indicator (0.0 to 1.0)

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesProgress value between 0 and 1
labelNoProgress label text
workspaceNoTarget workspace ref
surfaceNoTarget surface ref

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only states what the tool does functionally. It doesn't disclose whether this is a UI-only change, if it persists across sessions, what permissions are needed, or how it affects user experience. For a mutation tool with zero annotation coverage, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise single sentence with zero wasted words. The description is front-loaded with the core functionality and includes essential numeric constraints in parentheses.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with 4 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what happens after setting the progress indicator, whether changes are visible immediately, what error conditions might occur, or how this integrates with the broader UI system.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 4 parameters. The description adds minimal value by mentioning the 0.0-1.0 range for the 'value' parameter, but doesn't provide additional context about parameter interactions or semantics beyond what's already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Set') and the target resource ('sidebar progress indicator'), with specific numeric range context. It doesn't explicitly distinguish from sibling tools like 'set_status', but the resource specificity makes the purpose clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like 'set_status' or other UI manipulation tools. The description provides only functional information without context about appropriate use cases or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_statusC

Set a sidebar status key-value pair

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesStatus key
valueYesStatus value
workspaceNoTarget workspace ref
surfaceNoTarget surface ref
iconNoIcon name
colorNoHex color

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool sets a key-value pair but doesn't explain what happens (e.g., whether it overwrites existing keys, requires specific permissions, or has side effects like UI updates). This is inadequate for a mutation tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste. It's front-loaded with the core action and target, making it easy to parse quickly without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't cover behavioral aspects like effects, error conditions, or return values, leaving significant gaps in understanding how to use the tool effectively in context with its siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all six parameters. The description adds no additional meaning beyond implying 'sidebar status' as the context for the key-value pair, but it doesn't clarify parameter interactions or usage examples. Baseline 3 is appropriate when the schema handles parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Set') and the target ('a sidebar status key-value pair'), making the purpose understandable. It doesn't explicitly distinguish from siblings like 'set_progress', but the specific mention of 'sidebar status' provides some differentiation. No tautology or misleading elements are present.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'set_progress' or other sibling tools. It lacks context about prerequisites, such as whether a sidebar or workspace must be active, and offers no explicit when-not-to-use scenarios or comparisons.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

spawn_agentA

Spawn an AI agent in a new terminal surface. Returns immediately — use wait_for to block until ready.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository name (e.g. 'brainlayer', 'golems')
modelYesModel name (e.g. 'sonnet', 'codex', 'opus')
cliYesCLI tool to launch
promptYesTask prompt to send after agent is ready
workspaceNoTarget workspace ref

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses key behavioral traits: it spawns an agent, returns immediately (non-blocking), and suggests using 'wait_for' for readiness. However, it doesn't cover aspects like error handling, resource consumption, or permissions needed, which are gaps for a tool with no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is highly concise and front-loaded, with two sentences that directly state the purpose and a key behavioral note. Every sentence earns its place by providing essential information without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is moderately complete: it covers the basic action and a critical behavioral trait (non-blocking return). However, for a tool that spawns agents, it lacks details on what the spawned agent does, potential side effects, or error conditions, leaving gaps in context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds no additional meaning beyond the schema, such as explaining interactions between parameters or usage examples. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Spawn an AI agent') and the location ('in a new terminal surface'), which is specific. However, it doesn't explicitly differentiate from sibling tools like 'browser_surface' or 'new_split', which might also create surfaces, leaving some ambiguity about uniqueness.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by mentioning 'Returns immediately — use wait_for to block until ready', suggesting when to use 'wait_for' as an alternative for blocking. But it lacks explicit guidance on when to choose this tool over other surface-related siblings like 'browser_surface' or 'new_split', leaving context somewhat implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stop_agentA

Stop an agent gracefully (Ctrl+C) or forcefully (kill process).

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesAgent ID to stop
forceNoForce kill instead of graceful Ctrl+C

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the two stopping methods (graceful Ctrl+C and forceful kill), which adds useful context about how the tool behaves. However, it doesn't cover other important aspects like permissions needed, side effects, or what happens after stopping (e.g., cleanup, state changes), leaving gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise (one sentence) and front-loaded with the core purpose. Every word earns its place by specifying the action, resource, and key behavioral options without any fluff or redundancy, making it highly efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (a mutation operation with no annotations and no output schema), the description is somewhat complete but has gaps. It covers the basic action and parameter semantics, but lacks details on outcomes, error conditions, or integration with sibling tools. For a tool that stops agents, more context about effects would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds value by explaining the semantics of the 'force' parameter ('Force kill instead of graceful Ctrl+C'), which clarifies the tool's behavior beyond the schema's technical details. This compensates well, though it doesn't add information for 'agent_id'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Stop an agent') and distinguishes between two modes ('gracefully (Ctrl+C) or forcefully (kill process)'). It uses precise verbs and resource references, making the purpose immediately understandable and distinct from sibling tools like 'kill' or 'get_agent_state'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by mentioning two stopping methods (graceful vs. forceful), but it doesn't explicitly state when to use this tool versus alternatives like 'kill' or provide context about prerequisites. It offers some guidance through the parameter explanation but lacks explicit when/when-not instructions or named alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wait_forA

Block until an agent reaches a target state (ready, done, error). Checks retroactively first.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesAgent ID from spawn_agent
target_stateYesState to wait for
timeout_msNoTimeout in milliseconds (default: 5 minutes)

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses key behavioral traits: it's a blocking operation, it checks retroactively first (implying it might return immediately if the agent is already in the target state), and it waits for state transitions. However, it doesn't mention error handling, what happens on timeout, or the return format (e.g., success/failure indicators).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose ('Block until an agent reaches a target state') and adds a key behavioral detail ('Checks retroactively first'). Every word earns its place with zero waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is adequate but has gaps. It covers the purpose and a key behavior, but doesn't explain what the tool returns (e.g., success/failure, timeout handling) or error conditions. For a blocking tool with state dependencies, more context on outcomes would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all parameters. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't explain the implications of 'checks retroactively first' on parameters). Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('block until', 'checks retroactively') and identifies the resource ('agent') and target ('target state'). It distinguishes from siblings like get_agent_state (which checks current state without waiting) and wait_for_all (which waits for multiple agents).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by mentioning 'agent reaches a target state' and 'checks retroactively first', suggesting it's for monitoring agent state transitions. However, it doesn't explicitly state when to use this versus alternatives like get_agent_state (for immediate checks) or wait_for_all (for multiple agents), nor does it mention prerequisites like needing a spawned agent first.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wait_for_allA

Block until ALL agents reach target state OR any agent errors (fail-fast with partial results).

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idsYesArray of agent IDs
target_stateYesState to wait for
timeout_msNoTimeout in milliseconds (default: 5 minutes)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and effectively discloses key behavioral traits: it blocks execution, waits for all agents to reach a target state, implements fail-fast on any error, and returns partial results on failure. However, it does not mention permissions, rate limits, or detailed error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, dense sentence with zero waste—every word contributes essential information about blocking behavior, conditions (all agents reach state or any errors), and fail-fast with partial results. It is front-loaded and efficiently structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (coordinating multiple agents) and no annotations or output schema, the description is mostly complete but could enhance clarity on error types or result format. It covers core behavior adequately but leaves some operational details implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents parameters. The description adds no additional meaning beyond what the schema provides (e.g., no clarification on 'agent_ids' format or 'target_state' implications). Baseline 3 is appropriate as the schema handles parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Block until') and target ('ALL agents reach target state OR any agent errors'), distinguishing it from sibling 'wait_for' which likely handles different conditions. It precisely defines the verb (block/wait), resource (agents), and scope (all vs. any error).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for monitoring multiple agents' states with fail-fast behavior, but does not explicitly state when to use this tool versus alternatives like 'get_agent_state' or 'wait_for'. It provides clear context (waiting for state changes) but lacks explicit exclusions or named alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 20 tool updatesv0.1.0
    • First observedbrowser_surface
    • First observedclose_surface
    • First observedget_agent_state
    • First observedinteract
    • First observedkill
    • First observedlist_agents
    • First observedlist_surfaces
    • First observednew_split
    • First observedread_agent_output
    • First observedread_screen
    • First observedrename_tab
    • First observedsend_input
    • First observedsend_key
    • First observedsend_to_agent
    • First observedset_progress
    • First observedset_status
    • First observedspawn_agent
    • First observedstop_agent
    • First observedwait_for
    • First observedwait_for_all

TDQS

A3.5/5.0
Disambiguation4/5

Most tools have distinct purposes, but some overlap exists between 'kill' and 'stop_agent' (both stop agents) and 'interact' and 'send_to_agent' (both send messages to agents). The descriptions help clarify differences, but an agent might occasionally misselect between these pairs.

Naming Consistency4/5

Tool names follow a consistent snake_case pattern throughout, with clear verb_noun structures (e.g., 'list_agents', 'spawn_agent', 'send_input'). Minor deviations include 'browser_surface' (noun_noun) and 'get_agent_state' (verb_noun_noun), but overall naming is highly predictable and readable.

Tool Count4/5

With 20 tools, the count is on the higher side but reasonable for managing agents, surfaces, and interactions in a complex environment like cmuxlayer. It feels slightly heavy but not excessive, as each tool appears to serve a specific role in the workflow.

Completeness5/5

The toolset provides comprehensive coverage for agent and surface management, including lifecycle operations (spawn, list, interact, stop, kill), surface control (create, read, rename, close), and utility functions (wait, progress, status). No obvious gaps are present for the stated domain.

Maintenance

ActivityActive
ResponsivenessResponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Terminal MCP server for AI coding agents with persistent PTY sessions, ring-buffer incremental reads, headless xterm screen capture, multi-agent orchestration, and a real-time web dashboard.
    24
    23
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    MCP server for hyperpanes terminal workspace app, enabling AI agents to compose and launch workspace layouts, inspect and drive terminal panes, stream output, and orchestrate agent hierarchies.
    47
    1
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    A comprehensive MCP server for driving tmux sessions, windows, panes, sending keystrokes, and reading pane output locally or over SSH, enabling real-time collaborative pairing with AI.
    71
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server to control Onda terminal from AI agents, providing tools for splitting panes, running commands, managing tabs and workspaces, and orchestrating multi-agent workflows across multiple windows.
    39
    17
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/EtanHey/cmuxlayer'

If you have feedback or need assistance with the MCP directory API, please join our Discord server