Skip to main content
Glama

MCACP

Bridge any MCP client to any ACP coding agent.

MCACP is an MCP server that speaks the Agent Client Protocol on behalf of your MCP host. It lets Claude Code, Zed, VS Code, or any MCP-compatible client spawn, manage, and interact with ACP coding agents — turning a single chat window into a multi-agent control plane.

MCP Client (Claude Code, Zed, VS Code, ...)
    |
    |  MCP (stdio)
    v
  MCACP
    |
    |  ACP (stdio, per agent)
    v
 Claude Code  ·  Gemini CLI  ·  Codex  ·  Auggie  ·  Copilot  ·  ...

What can you do with this?

Run any ACP agent from any MCP client. You don't need a dedicated IDE plugin for each agent. Install Gemini from Claude Code. Run Codex from Zed. Mix and match.

Compare agents side by side. Give the same task to Claude Code ACP and Gemini CLI in parallel sessions and compare the results.

Build agent-driven pipelines. One agent writes code, another reviews it, a third runs the tests. MCACP handles the lifecycle and permission flow for all of them.

Control permissions interactively. On hosts that support MCP elicitation (Zed), permission requests pop up as interactive forms. On hosts that don't (Claude Code), they fall back to operator mode where the host agent decides.

Resume where you left off. Sessions persist to disk. Shut down, restart, load_session — the agent picks up where it stopped.

Discover and install agents from chat. Browse the ACP registry, install agents, check for upgrades — without leaving your conversation.

Related MCP server: Herald

Quick start

Install

npm install -g mcacp

Or run directly:

npx mcacp

Add to your MCP client

Claude Code (~/.claude/settings.json):

{
  "mcpServers": {
    "mcacp": {
      "command": "npx",
      "args": ["-y", "mcacp"]
    }
  }
}

Zed (settings.json):

{
  "context_servers": {
    "mcacp": {
      "command": { "path": "npx", "args": ["-y", "mcacp"] }
    }
  }
}

Then from chat:

"Search for available agents"        →  registry_search
"Install the Gemini agent"           →  agent_install
"Initialize it and start a session"  →  initialize + new_session
"Ask it to refactor auth"            →  prompt_start + prompt

MCP tools

MCACP exposes 22 tools organized into five groups.

Registry

Tool

Description

list_installed_agents

List locally installed agents

registry_search

Search the ACP agent registry

agent_install

Install an agent from the registry

agent_uninstall

Remove an installed agent

agent_check_upgrades

Check for available upgrades

discover_agents

Scan editor configs (Zed, JetBrains) for agents

reload_config

Reload mcacp.json from disk

Lifecycle

Tool

Description

initialize

Spawn an agent process and perform the ACP handshake

shutdown

Gracefully shut down an agent

Sessions

Tool

Description

new_session

Create a session with working directory and permission policy

load_session

Resume a persisted session

list_sessions

List stored sessions for an agent

close_session

Close a session (preserved for later resume)

Interaction

Tool

Description

prompt_start

Send a prompt (returns immediately)

prompt

Block until events are available

prompt_events

Non-blocking poll for events

grant_permission

Resolve a pending permission request (operator mode)

request_permission

Send an MCP elicitation to the host for a permission decision

cancel

Cancel an in-progress prompt

set_mode

Switch agent operating mode

Status

Tool

Description

list_running_agents

List all agents with status and sessions

get_agent_status

Detailed status of a running agent

set_agent_status

Set status text for an agent

Permission policies

Each session can use a different policy:

Policy

Behavior

allow_all

Auto-approve all agent actions

deny_all

Block all tool use

elicit

Forward as MCP elicitations to the host; falls back to operator if unsupported

operator

Queue as events — the host agent decides via grant_permission

Operator flow

Orchestrator                   MCACP                      ACP Agent
    |                            |                            |
    |-- prompt(sessionId, ...) ->|                            |
    |                            |-- session/prompt --------->|
    |                            |<- request_permission ------|
    |<- {pendingPermission: ...} |                            |
    |                            |                            |
    |-- grant_permission ------->|                            |
    |   {toolCallId, optionId}   |-- permission outcome ----->|
    |                            |<- prompt result -----------|
    |<- {stopReason, updates}    |                            |

Configuration

MCACP looks for mcacp.json in these locations (first found wins):

  1. --config flag or MCACP_CONFIG env var

  2. .mcacp/mcacp.json in the current directory

  3. ~/.config/mcacp/mcacp.json

{
  "registries": ["https://cdn.agentclientprotocol.com/registry/v1/latest/registry.json"],
  "defaultPermissionPolicy": "elicit",
  "agent_servers": {
    "my-custom-agent": {
      "command": "node",
      "args": ["my-agent.js"]
    }
  }
}

See docs/configuration.md for the full schema.

Building from source

git clone https://github.com/Oortonaut/mcacp.git
cd mcacp
npm install
npm run build
node dist/index.js

License

Apache-2.0

Available Tools

24 tools
agent_check_upgradesB

Check all installed agents for available version upgrades.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It implies a read-only, non-destructive operation but omits details such as whether network calls are made, permissions required, rate limits, or what triggers an upgrade check. The description is too minimal to fully inform the agent about side effects.

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

Conciseness4/5

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

The description is a single, clear sentence with no wasted words. It is concise but could be slightly more structured by including output or behavior hints. Still, it earns a high score for brevity without sacrificing clarity.

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's simplicity (no parameters, no output schema), the description should at least hint at the return format or what 'available version upgrades' means. It does not specify whether the output is a list, boolean, or something else, leaving the agent uncertain about the result shape.

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?

The tool has zero parameters and 100% schema coverage, so the description need not add parameter details. The description adds value by explaining what the tool does, which is sufficient given the lack of parameters.

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 'Check' and resource 'all installed agents for available version upgrades,' making the purpose specific and unambiguous. It distinguishes itself from sibling tools like 'agent_install' and 'list_installed_agents' by focusing on upgrade availability rather than installation or listing.

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 such as 'get_agent_status' or 'list_installed_agents.' There is no indication of prerequisites, when not to use it, or how it fits into a workflow, leaving the agent without context for selection.

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

agent_installB

Install an ACP agent from the registry.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentIdYesRegistry ID of the agent
versionNoSpecific version (default: latest)

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 the full burden of behavioral disclosure. It only states the action but omits critical details such as side effects, permissions required, error conditions, or what constitutes a successful installation. The agent's safety profile is unclear.

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

Conciseness4/5

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

The description is a single concise sentence with no wasted words. It is front-loaded and efficient, though it could benefit from slightly more structure to break down key points.

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 simplicity of the tool (2 parameters, no output schema), the description is incomplete. It does not explain what happens after installation (e.g., output, state changes), whether version selection is optional, or how errors like duplicate installation are handled.

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%—both agentId and version have descriptions in the input schema. The tool description does not add any additional meaning or context beyond what the schema already provides. Baseline 3 is appropriate.

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 action ('Install') and the resource ('an ACP agent from the registry'). It distinguishes the tool from siblings like agent_uninstall and list_installed_agents by specifying the installation action.

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 given on when to use this tool versus alternatives (e.g., agent_check_upgrades, agent_uninstall). The description does not mention prerequisites, success criteria, or scenarios where installation is appropriate.

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

agent_uninstallB

Remove a locally installed ACP agent.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentIdYesID of the agent to uninstall

TDQS

B3/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 for behavioral disclosure. It only says 'Remove', but does not indicate side effects, reversibility, required permissions, or impact on running sessions, which is insufficient for a destructive action.

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

Conciseness3/5

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

The description is a single sentence and concise, but lacks critical details expected for a destructive tool, making it under-specified rather than efficiently concise.

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's destructive nature, lack of annotations, and no output schema, the description is too brief. It omits return values, prerequisites, asynchronous behavior, and cleanup details.

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 coverage is 100% with one parameter; the description adds no extra meaning beyond the schema's own description of the agentId parameter.

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?

Description clearly states the tool removes a locally installed ACP agent. The verb 'Remove' and resource 'locally installed ACP agent' are specific and distinguishable from sibling tools like agent_install and list_installed_agents.

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, such as deactivating an agent with set_agent_status or when prerequisites like stopping the agent are needed.

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

cancelB

Cancel an in-progress prompt.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesSession to cancel

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, and the description only states the action without detailing side effects, permissions, or state changes.

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 with no wasted words; front-loaded and efficient.

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?

Adequate for a simple cancel action, but could specify post-cancel behavior or connection to sessions.

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 coverage is 100% with a description for sessionId, but the tool description adds no extra meaning beyond the schema.

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 uses a specific verb 'cancel' and resource 'in-progress prompt', clearly distinguishing it from sibling tools like close_session or prompt_sync.

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; no exclusions or prerequisites are mentioned.

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

close_sessionA

Close an active session. Session file preserved for future load_session.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesSession ID to close

TDQS

A3.5/5.0
Behavior2/5

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

Describes session file preservation but omits other behaviors like error conditions, permission needs, or state transitions; no annotations to compensate.

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?

Two sentences, no wasted words, front-loaded with core action.

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 simple 1-param tool without output schema, adequate but lacks details like invalid session handling or side effects beyond file preservation.

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 coverage is 100% and description adds no additional meaning beyond the schema's parameter description.

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 'close' and resource 'active session', and distinguishes from sibling by mentioning session file preservation for future load_session.

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?

Hint that file is preserved for load_session gives some guidance, but no explicit when-to-use vs when-not-to-use.

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

discover_agentsA

Scan editor configs (Zed settings.json, JetBrains acp.json) for ACP agents. Returns agents with command/args/env and source. To import, add them to agent_servers in your mcacp.json and call reload_config.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/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 indicates a read-only operation (scanning configs, returning results) without modifying anything. However, it does not explicitly state it is non-destructive or mention any required permissions. The instruction to import later implies safety.

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 two sentences long with no extraneous information. It is front-loaded with the action and provides immediate value.

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

Completeness5/5

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

For a tool with no parameters and no output schema, the description comprehensively explains the purpose, return fields, and necessary follow-up steps. It is entirely sufficient for an agent to decide to use it.

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?

There are zero parameters, so the description does not need to explain parameter semantics. The baseline score of 4 is appropriate.

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 it scans editor configs for ACP agents and returns specific fields like command, args, env, and source. This differentiates it from siblings like list_installed_agents (which lists pre-configured agents) and reload_config (which reloads configuration).

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 explicitly says when to use this tool (to scan editor configs for agents) and provides a clear follow-up action: add discovered agents to agent_servers in mcacp.json and call reload_config. It does not explicitly mention when not to use, but the context is sufficient for correct agent selection.

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

eventsA

Block until any prompted session produces events. Returns events stamped with sessionId and agentId. Supports optional Nagle-style coalescing to batch events across sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutMsNoMax wait time in ms. Returns empty on timeout.
nagleMsNoCoalescing window in ms. Batches events arriving within this window. Default: 0 (immediate).

TDQS

A4.4/5.0
Behavior4/5

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

The description discloses key behaviors: blocking nature, return format (events with sessionId and agentId), and Nagle-style coalescing. No annotations are present, so description carries the full burden and does so well, though it could mention error conditions or permissions.

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?

Three short, front-loaded sentences. Each sentence adds value: main action, return format, and optional feature. No wasted words.

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?

The description is adequate given no output schema: it explains when to use, blocking behavior, parameters, and return format minimally. It could detail the event structure but the provided identifiers are likely sufficient in context of sibling tools.

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 coverage is 100% with parameter descriptions. The tool description adds meaning by explaining the parameters in context: 'block until' for timeoutMs and 'Nagle-style coalescing' for nagleMs, enriching understanding beyond the schema.

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 blocks until any prompted session produces events and returns events with identifiers. It distinguishes itself from sibling tools like prompt_events by implying it is used after prompting.

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 it should be used after prompting sessions ('any prompted session'), providing clear context. It does not explicitly state when not to use or provide alternatives, but the context is sufficient for appropriate selection.

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

get_agent_statusB

Get detailed status of a running ACP agent.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentIdYesAgent to query

TDQS

B3.4/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. It notes the agent must be 'running', but fails to disclose other behaviors: what 'detailed status' includes (e.g., uptime, health), whether authentication is needed, or if the tool has side effects. Missing critical context for safe invocation.

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

Conciseness4/5

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

A single sentence that is efficient and to the point. No wasted words, but could be slightly expanded to include key behavioral notes without losing conciseness.

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 simple getter with one parameter and no output schema or annotations, the description is minimally adequate. However, given the large number of sibling tools, additional context (e.g., what 'status' entails, relation to list_running_agents) would improve usability.

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 coverage is 100% with one parameter 'agentId' described as 'Agent to query'. The description adds no extra meaning beyond the schema. Baseline of 3 is appropriate since the schema already documents the parameter adequately.

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 'Get detailed status of a running ACP agent' clearly states the action (get detailed status) and the resource (running ACP agent). It distinguishes from sibling tools like list_running_agents (list all) and set_agent_status (modify), indicating a specific query for a single agent.

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 use when you need detailed status of a specific agent, but it does not explicitly state when to use this tool versus alternatives (e.g., list_running_agents for a summary, discover_agents for discovery). No exclusion criteria or prerequisites are mentioned.

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

grant_permissionA

Respond to a pending permission request (operator policy). The agent resumes; new events flow to the queue.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesSession with pending permission
toolCallIdYesTool call ID requesting permission
optionIdYesPermission option to select

TDQS

A3.7/5.0
Behavior3/5

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

No annotations provided, so description must cover behavior. It discloses that the agent resumes and new events flow, indicating a state change, but does not mention whether the action is reversible, requires authorization, or what happens upon denial.

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?

Two sentences, no redundancy. The key action and effect are front-loaded, making it easy to parse quickly.

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?

Describes trigger and effect but lacks details on error conditions, prerequisites, or what 'optionId' options exist. For a tool that likely carries significant impact, more context 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 coverage is 100%, so parameters are documented. Description adds no extra meaning beyond their names or schema descriptions, providing no additional context for selection or formatting.

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?

Description states verb 'Respond' and resource 'pending permission request', clearly distinguishing from sibling 'request_permission'. The phrase 'operator policy' adds context without ambiguity.

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?

Implied usage is to respond to pending permission requests, but no explicit guidance on when not to use or comparison with 'request_permission' or other alternatives. Lacks exclusion criteria.

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

initializeA

Spawn an ACP agent process and perform the initialize handshake. Must be called before creating sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentIdYesID of the installed agent to initialize
protocolVersionNoProtocol version to negotiate
clientInfoNoCalling client info
clientCapabilitiesNoClient capabilities
envNoEnvironment variable overrides. Merged on top of config/installed env.

TDQS

A3.6/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 mentions spawning a process and handshake but does not disclose side effects, idempotency, error states, or what happens if already initialized. Limited behavioral insight.

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?

Two clauses in one sentence, front-loaded with action. Every word is functional; no filler.

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 critical initialization tool with 5 parameters (including nested objects) and no output schema, the description is too minimal. It does not explain return values, error handling, or post-conditions, which are essential for correct 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 coverage is 100%, baseline is 3. The description adds no parameter-specific detail beyond what the schema already provides; it only states the overall purpose.

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?

Description starts with a specific verb 'Spawn' and resource 'ACP agent process', and clearly states it performs 'initialize handshake'. It also gives context: 'Must be called before creating sessions', distinguishing it from session-related sibling tools.

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?

Explicitly states the prerequisite condition: 'Must be called before creating sessions', which guides when to use. However, no explicit exclusions or alternatives are mentioned, but the sibling context makes it clear.

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

list_installed_agentsA

List all locally installed ACP agents with their id, name, version, and description.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. Discloses return fields but does not state read-only nature or potential side effects. Adequate but could be improved.

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 verb and resource, no superfluous words. Highly efficient.

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?

No output schema, but description lists return fields sufficiently. For a simple list tool with 0 parameters, it is complete. No mention of pagination or limits, but not strictly necessary.

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?

Input schema has 0 parameters, so baseline is 4. Description adds meaning by explaining the tool's action and output, though no parameter details needed.

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?

Clearly states verb 'List' and resource 'locally installed ACP agents', specifying returned fields (id, name, version, description). Differentiates from siblings like 'list_running_agents' and 'discover_agents'.

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 explicit guidance on when to use this tool vs alternatives (e.g., use 'list_running_agents' for running agents). Implies usage via context but lacks exclusions.

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

list_running_agentsA

List all spawned ACP agent processes with status, heartbeat, and active sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided, so description bears full burden. It mentions output fields but doesn't disclose behavioral traits like read-only nature or authorization needs. Adequate but not thorough.

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?

One sentence, concise, front-loaded with purpose, no wasted words.

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

Completeness5/5

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

Tool has zero parameters and no output schema, but description sufficiently explains what it returns. Complete for its simplicity.

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?

No parameters exist, so baseline 4 applies. Description adds no param info as none needed.

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?

Description uses specific verb 'list' and resource 'spawned ACP agent processes', and includes the information returned (status, heartbeat, active sessions). It clearly distinguishes from sibling tools like list_installed_agents and get_agent_status.

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?

No explicit guidance on when to use or alternatives. The purpose implies it's for listing running agents, but lacks explicit context or exclusions.

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

list_sessionsB

List stored sessions. Does not require the agent to be running.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentIdYesAgent ID to list sessions for

TDQS

B3.2/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. It discloses the agent running requirement but omits other behavioral traits like read-only nature, authentication needs, or rate limits.

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

Conciseness4/5

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

The description is two sentences, concise and front-loaded with the core purpose. It could be slightly more structured but is efficient.

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 simple list tool with one parameter and no output schema, the description provides basic completeness. However, it lacks details on what 'stored sessions' encompasses and whether pagination exists.

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 coverage is 100% for the single parameter, and the description adds no extra meaning beyond what the schema provides. Baseline score applies as per guidelines.

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 lists stored sessions, with a specific condition about the agent not needing to be running. However, it does not explicitly differentiate from sibling tools like list_installed_agents or load_session.

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 when to use (when listing sessions without requiring the agent to run) but lacks explicit guidance on when not to use or alternatives among siblings.

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

load_sessionC

Resume a previously created session. Agent must support session loading.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentIdYesID of the initialized agent
sessionIdYesSession ID to resume
cwdYesWorking directory
mcpServersNo

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 must disclose behavioral traits. It only states a prerequisite and does not mention side effects, required permissions, or what happens on failure (e.g., if session does not exist). This is insufficient 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.

Conciseness4/5

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

The description is a single sentence, concise and front-loaded with the core purpose. Every word contributes, but it could be slightly more informative without being verbose.

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's moderate complexity and lack of output schema, the description is incomplete. It does not explain return values, error conditions, or what happens to the current session. The required prerequisite is mentioned but not elaborated.

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 75% (three of four parameters have descriptions). The description does not add any additional meaning beyond what is in the schema. Baseline 3 is appropriate since schema covers most parameters.

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: 'Resume a previously created session.' It uses a specific verb ('resume') and resource ('session'), distinguishing it from sibling tools like 'new_session' or 'close_session'. However, it could be more precise about what resuming entails.

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 explicit guidance on when to use this tool versus alternatives like 'new_session' or 'close_session'. It only adds the prerequisite 'Agent must support session loading', which is not a usage guideline but a requirement.

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

new_sessionA

Create a new ACP session on an initialized agent. Returns the agent's session ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentIdYesID of the initialized agent
cwdYesWorking directory for the session
mcpServersNoMCP servers to make available to the agent
permissionPolicyNoPermission policy: elicit, allow_all, deny_all, or operator

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description must carry full behavioral disclosure. It only states the creation action and return value, omitting details like session limits, permission requirements, or side effects such as overwriting existing sessions.

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 one sentence that clearly states the action and return value, with no unnecessary words.

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 fully described in schema and no output schema, the description is adequate but not thorough. It does not address potential errors or prerequisites beyond 'initialized 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?

Since schema description coverage is 100%, the baseline is 3. The description adds no parameter-specific information beyond what the schema already provides.

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 uses specific verb 'create' and resource 'ACP session', specifying the prerequisite 'initialized agent'. It clearly distinguishes from sibling tools like 'initialize' (agent initialization) and 'close_session'.

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 after agent initialization ('on an initialized agent') but lacks explicit guidance on when to use this tool versus alternatives like 'load_session'. No exclusions or when-not-to-use are stated.

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

prompt_eventsA

Non-blocking poll for prompt events. Returns all queued events (updates, permission requests, completion). May return empty array if no new events.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesActive session ID

TDQS

A3.8/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 that it is non-blocking and may return an empty array, but lacks details on error handling, permission requirements, or behavioral implications of polling.

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 two sentences with no extraneous information. It is well-structured and front-loaded with purpose.

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 simple poll tool with one parameter and no output schema, the description adequately covers what the tool does and returns. Minor gaps include lack of error scenarios or session initialization requirements, but overall sufficient.

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 coverage is 100% with the parameter 'sessionId' already described as 'Active session ID'. The description adds no additional semantic value beyond the schema, so baseline of 3 is appropriate.

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 it is a 'non-blocking poll for prompt events' and lists the specific event types (updates, permission requests, completion). This verb+resource combination effectively distinguishes it from sibling tools like 'events' which may be more generic.

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 use for polling without blocking, but does not explicitly state when to use this tool versus alternatives like 'prompt_polled' or 'events'. No exclusions or prerequisites are mentioned.

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

prompt_polledA

Send a prompt to an active ACP session. Returns immediately with { status: "prompted" }. Use prompt_events to poll for events. Pair with prompt_events for the async pattern; use prompt_sync for the blocking pattern.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesActive session ID
promptYesPrompt text or content blocks

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, so description bears full burden. It discloses immediate return with { status: 'prompted' } and async nature. However, it could mention behavior on invalid session or errors, but schema handles validation. Still fairly transparent.

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?

Three sentences, all essential: main action, return value, and usage guidance with alternatives. No fluff, front-loaded.

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

Completeness5/5

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

For a 2-parameter tool with no output schema, description is complete: explains return behavior and async pattern. References relevant siblings and provides enough context for correct 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 coverage is 100%, so baseline is 3. The description adds no extra meaning beyond what the schema provides for sessionId and prompt. The schema already details prompt structure with const and required fields.

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 'Send' and the resource 'active ACP session'. It distinguishes itself from siblings by mentioning prompt_events and prompt_sync, making the tool's role in the async pattern evident.

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?

Explicitly states when to use this tool (async pattern) and when to use alternatives: 'Pair with prompt_events for the async pattern; use prompt_sync for the blocking pattern.' Provides clear context and exclusions.

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

prompt_syncA

Send a prompt and block until it completes, errors, or a permission_request needs operator attention. Returns all collected events at once. Returns early (without a complete event) on permission_request or timeout. For the async pattern, use prompt_polled + prompt_events instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesActive session ID
promptYesPrompt text or content blocks
timeoutMsNoMax wait time in ms. Returns collected events on timeout (may be empty).
includeThoughtsNoInclude non-tool, non-terminal updates (message chunks, thought chunks, plan, mode changes, etc.)
includeToolsNoInclude tool_call and tool_call_update updates in returned events

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses blocking behavior, early return conditions, and event collection. Could add more about error handling details, but sufficient for a safe write-like operation.

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?

Three sentences, front-loaded with main behavior. No fluff. Every sentence adds value: blocking behavior, early returns, async alternative.

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?

Covers key aspects: blocking, early returns, permission_request, timeout. No output schema, but event collection is implied. Could be improved by specifying event list structure, but complete given sibling 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 baseline 3. Description adds overall context about early returns and blocking but does not add specific parameter-level meaning beyond the schema 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 tool sends a prompt and blocks until completion, error, or permission_request. It specifies the resource (prompt) and behavior (returns events, early return on permission_request/timeout). Distinguishes from async sibling pattern.

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?

Explicitly provides when-to-use guidance: 'For the async pattern, use prompt_polled + prompt_events instead.' This tells the agent when NOT to use this tool and gives the alternative.

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

reload_configA

Reload configuration from disk. Use after editing mcacp.json to pick up new agent_servers entries or changed settings. Returns the new config.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

Discloses that the tool reads from disk and returns the new config. With no annotations, it carries the transparency burden well, though it could mention potential side effects like temporary unavailability or locking, but the stated behavior is accurate.

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?

Two concise sentences with no wasted words. The first sentence states the action, the second provides usage context and return value. Perfectly front-loaded.

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

Completeness5/5

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

Given zero parameters and no output schema, the description fully explains what the tool does, when to use it, and what it returns. No further context is needed.

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?

No parameters exist, and schema coverage is 100%, so baseline 4 applies. The description adds no param info, which is acceptable since none are needed.

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?

Clearly states the tool reloads configuration from disk, using specific verb 'reload' and resource 'configuration'. It distinguishes from sibling tools, which are mostly agent or session management, by focusing on server configuration reload.

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?

Explicitly tells when to use: after editing mcacp.json to apply new agent_servers entries or changed settings. This is precise and helpful, guiding the agent to the correct context.

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

request_permissionB

Send an MCP elicitation to the outer host asking for a permission decision. Does not require a running agent or session.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesHuman-readable description of the action requesting permission
optionsNoPermission choices (defaults to Allow / Reject)

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, and the description only states the action and a constraint. It does not disclose whether the request is synchronous or asynchronous, what happens after the request, or how the decision is returned.

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, consisting of two sentences: the first states the core action, and the second adds a key constraint. No unnecessary words.

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 that requests a permission decision with no output schema, the description lacks details about the return value, whether the call blocks, or how the decision is communicated. Additional context would be beneficial for correct invocation.

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 input schema already provides clear descriptions for both parameters (title and options), and the tool description does not add any additional meaning beyond what the schema offers. Schema coverage is 100%, placing baseline at 3.

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 that the tool sends an MCP elicitation to request a permission decision, and it explicitly notes that it does not require a running agent or session, which distinguishes it from session-dependent tools like grant_permission.

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 it can be used without a running agent or session, but it does not provide explicit guidance on when to use or avoid it compared to sibling tools like grant_permission.

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

set_agent_statusA

Set an explicit status text for a running agent.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentIdYesAgent ID
statusYesStatus text

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It indicates a mutation (setting status) but does not explain side effects, overwrite behavior, success/failure responses, or required permissions. The description is too sparse 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?

A single sentence of 8 words efficiently communicates the tool's purpose without wasted words. Structure is ideal for a simple tool with basic parameters.

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 simplicity (2 params, no output schema), the description is adequate for a basic understanding but lacks completeness regarding agent must be running (though implied), error scenarios, and return values. It is minimally viable.

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 coverage is 100%, so the schema already describes both parameters. The description adds no additional meaning or constraints (e.g., valid status values, length limits) beyond the schema's minimal descriptions. Baseline 3 applies because 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 identifies the action as setting an explicit status text for an agent. It uses a specific verb-resource pair and distinguishes from sibling tools like get_agent_status.

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 states the tool is for running agents, implying a prerequisite, but provides no guidance on when to use this tool versus alternatives like set_mode or get_agent_status. No exclusions or context for decision-making.

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

set_modeC

Switch the operating mode of a session.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesSession ID
modeIdYesMode to switch to

TDQS

C2.8/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 for behavioral traits. It only states 'switch' without disclosing whether the change is reversible, what side effects occur (e.g., state changes), or whether any permissions are needed.

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

Conciseness3/5

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

The description is a single sentence, which is concise but lacks structure. It is not overly verbose, but it omits important details that would make it more informative, such as the effect on the session or possible mode values.

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 output schema and no annotations, the description is insufficient for a tool with two required parameters and no return value explanation. It does not mention what happens after switching, whether it returns a confirmation, or what valid mode IDs are.

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 coverage is 100% with descriptions for both sessionId and modeId, so the schema already documents the parameters. The tool description adds no additional meaning beyond what the schema provides, meeting the baseline of 3.

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 'switch' and the resource 'operating mode of a session', which is specific and distinct from sibling tools like load_session or close_session. However, it does not differentiate from other potential mode-related tools or clarify what 'operating mode' means in this context.

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 new_session or load_session. The description lacks prerequisites, such as requiring an existing session, or conditions under which switching is valid.

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

shutdownB

Gracefully shut down a running ACP agent, closing all sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentIdYesID of the agent to shut down

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description provides some behavioral context ('gracefully', 'closing all sessions') but lacks details on side effects, required permissions, or reversibility. It implies safe cleanup but omits important traits.

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 concise sentence, front-loaded with the main action. Every word is purposeful.

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 simplicity (one parameter, no output schema), the description is minimally adequate. However, it fails to address potential confusion with sibling tools like 'close_session' or to specify behavior for non-running agents.

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 coverage for the sole parameter 'agentId' is 100%. The description adds no additional meaning beyond the schema's description. Baseline score of 3 is appropriate.

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 ('shut down') and scope ('ACP agent, closing all sessions'). It distinguishes from sibling tools like 'close_session' by implying a broader shutdown. However, the term 'gracefully' is vague and could be clarified.

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 such as 'agent_uninstall', 'cancel', or 'set_agent_status'. The description does not mention prerequisites or conditions for shutdown.

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. 24 tool updatesv0.1.3
    • First observedagent_check_upgrades
    • First observedagent_install
    • First observedagent_uninstall
    • First observedcancel
    • First observedclose_session
    • First observeddiscover_agents
    • First observedevents
    • First observedget_agent_status
    • First observedgrant_permission
    • First observedinitialize
    • First observedlist_installed_agents
    • First observedlist_running_agents
    • First observedlist_sessions
    • First observedload_session
    • First observednew_session
    • First observedprompt_events
    • First observedprompt_polled
    • First observedprompt_sync
    • First observedregistry_search
    • First observedreload_config
    • First observedrequest_permission
    • First observedset_agent_status
    • First observedset_mode
    • First observedshutdown

TDQS

A3.6/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose, covering separate aspects like agent lifecycle, session management, prompting patterns, permissions, and configuration. No two tools overlap significantly; even similar-sounding tools like prompt_polled, prompt_sync, and prompt_events are well-differentiated by their descriptions.

Naming Consistency4/5

Most tool names follow a consistent verb_noun or verb_adjective_noun pattern in snake_case (e.g., agent_install, list_sessions, prompt_sync). A few outliers like 'events' (noun-only) and 'cancel' (verb-only) exist, but the overall pattern is strong and intuitive.

Tool Count4/5

With 24 tools, the count feels appropriate for the complex domain of ACP agent management. Each tool addresses a distinct operation, and the number is high enough to cover the required functionality without being excessive.

Completeness4/5

The tool set covers the core lifecycle (install, uninstall, initialize, shutdown, status), session management (new, close, load, list), multiple prompting modes (sync, async), permissions, and configuration. Minor missing operations like an explicit update tool could be added, but the set is largely comprehensive.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

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
    B
    quality
    F
    maintenance
    A bridge server that connects Agent Communication Protocol (ACP) agents with Model Context Protocol (MCP) clients, enabling seamless integration between ACP-based AI agents and MCP-compatible tools like Claude Desktop.
    16
    24
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    The self-hosted MCP bridge between Claude Chat and Claude Code.
    46
    AGPL 3.0
  • F
    license
    Not graded
    quality
    A
    maintenance
    MCP server that bridges coding agents (Claude Code, Codex, Gemini CLI) via ACP for pair programming, enabling agents to consult each other as tools.
    -

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/Oortonaut/mcacp'

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