ACP-MCP-Server
Used as part of the protocol bridge to enable HTTP/WebSocket communication between MCP clients and ACP agents.
Provides containerized deployment options with different transport modes (HTTP, SSE) for production and development environments.
Offers issue reporting, discussions, and documentation access through GitHub repositories.
Makes the server available as a Python package that can be installed directly from PyPI.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ACP-MCP-Serverask the translation agent to convert 'hello world' to Spanish"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ACP-MCP-Server
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.
β¨ Features
π Protocol Bridge: Seamlessly connects ACP agents with MCP clients
π Multiple Transports: Supports STDIO, SSE, and Streamable HTTP
π€ Agent Discovery: Automatic discovery and registration of ACP agents
π§ Smart Routing: Intelligent routing of requests to appropriate agents
π Async Support: Full support for synchronous and asynchronous operations
π¬ Interactive Sessions: Support for multi-turn agent interactions
π Multi-Modal: Handle text, images, and other content types
Related MCP server: A2A MCP Server
π Quick Start
Installation
# Install from PyPI
pip install acp-mcp-server
# Or use uvx for isolated execution
uvx acp-mcp-serverBasic Usage
# Run with STDIO (default, for Claude Desktop)
acp-mcp-server
# Run with SSE transport
acp-mcp-server --transport sse --port 8000
# Run with HTTP transport
acp-mcp-server --transport streamable-http --host 0.0.0.0 --port 9000
# Connect to different ACP server
acp-mcp-server --acp-url http://localhost:8001Using with Claude Desktop
Add to your Claude Desktop configuration:
{
"mcpServers": {
"acp-bridge": {
"command": "uvx",
"args": ["acp-mcp-server"]
}
}
}π Requirements
Python 3.11+
Running ACP server with agents
FastMCP for protocol implementation
π§ Configuration
Environment Variables
ACP_BASE_URL: ACP server URL (default:http://localhost:8000)
Command Line Options
usage: acp-mcp-server [-h] [--transport {stdio,sse,streamable-http}] [--host HOST] [--port PORT] [--path PATH] [--acp-url ACP_URL] [--version]
options:
-h, --help show this help message and exit
--transport {stdio,sse,streamable-http}
Transport protocol (default: stdio)
--host HOST Host address for HTTP transports (default: 127.0.0.1)
--port PORT Port number for HTTP transports (default: 8000)
--path PATH URL path for HTTP transports (default: /mcp)
--acp-url ACP_URL ACP server URL (default: http://localhost:8000)
--version show program's version number and exitπ οΈ Available Tools
The bridge server provides several MCP tools:
Agent Management
discover_acp_agents: Discover available ACP agentsget_agent_info: Get detailed information about specific agents
Agent Execution
run_acp_agent: Execute agents in sync/async modesget_async_run_result: Retrieve results from async executionslist_active_runs: List all active agent runs
Smart Routing
smart_route_request: Intelligently route requests to best agentstest_routing: Test routing logic without executionadd_routing_rule: Add custom routing ruleslist_routing_strategies: View all routing strategies
Interactive Sessions
start_interactive_agent: Start interactive agent sessionsprovide_user_input: Provide input to waiting agentslist_pending_interactions: View pending interactions
Message Processing
convert_acp_message: Convert between ACP and MCP formatsanalyze_message_content: Analyze message structure and content
ποΈ Architecture
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β MCP Client β β ACP-MCP Bridge β β ACP Agents β
β (Claude Desktop)βββββΊβ Server βββββΊβ (echo, chat, β
β β β β β translate...) β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β β β
MCP Protocol Protocol Bridge ACP Protocol
(STDIO/SSE/HTTP) (FastMCP + aiohttp) (HTTP/WebSocket)π Transport Modes
STDIO (Default)
Perfect for Claude Desktop integration:
acp-mcp-serverSSE (Server-Sent Events)
For web applications and streaming:
acp-mcp-server --transport sse --port 8000Streamable HTTP
For REST API integration:
acp-mcp-server --transport streamable-http --port 9000π³ Docker
Quick Start with Docker
# Build the image
docker build -t acp-mcp-server .
# Run with Streamable HTTP transport
docker run -p 9000:9000 acp-mcp-server
# Run with SSE transport
docker run -p 8000:8000 acp-mcp-server \
--transport sse --host 0.0.0.0 --port 8000
# Connect to custom ACP server
docker run -p 9000:9000 -e ACP_BASE_URL=http://my-acp-server:8001 acp-mcp-serverUsing Docker Compose
# Run HTTP transport service
docker-compose up acp-mcp-http
# Run SSE transport service
docker-compose up acp-mcp-sse
# Run both services
docker-compose up
# Run development mode with live code reload
docker-compose --profile dev up acp-mcp-devProduction Docker Image
For production deployments, use the multi-stage Dockerfile:
# Build production image
docker build -f Dockerfile.prod -t acp-mcp-server:prod .
# Run production container
docker run -d \
--name acp-mcp-server \
--restart unless-stopped \
-p 9000:9000 \
-e ACP_BASE_URL=http://your-acp-server:8000 \
acp-mcp-server:prodπ€ Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
π License
This project is licensed under the MIT License - see the LICENSE file for details.
π Related Projects
FastMCP - Fast, Pythonic MCP server framework
ACP SDK - Agent Communication Protocol SDK
Claude Desktop - AI assistant with MCP support
π Support
π Report Issues
π¬ Discussions
π Documentation
Available Tools
16 toolsadd_routing_ruleC
Add a new routing rule to a strategy
| Name | Required | Description | Default |
|---|---|---|---|
| agent_name | Yes | ||
| description | No | ||
| keywords | Yes | ||
| priority | No | ||
| strategy_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure but offers minimal information. It states the tool adds a rule but doesn't cover permissions needed, whether it's idempotent, what happens on conflicts, or the response format. 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.
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 resource, making it easy to parse quickly, which is ideal for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters with 0% schema coverage, no annotations, and involves mutation (adding rules), the description is incomplete. It doesn't explain parameter meanings, behavioral traits, or usage context, and while an output schema exists, the description lacks even basic operational details needed for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning all 5 parameters lack documentation in the schema. The description adds no parameter semantics beyond implying 'strategy_name' is a target and 'keywords' and 'agent_name' are involved. It doesn't explain what 'priority' means, what format 'keywords' uses, or how 'description' is applied, failing to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('add a new routing rule') and target resource ('to a strategy'), which is specific and unambiguous. However, it doesn't differentiate this tool from sibling tools like 'list_routing_strategies' or 'smart_route_request', which would require explicit comparison to earn a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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., existing strategies), exclusions, or how it relates to sibling tools like 'list_routing_strategies' or 'smart_route_request', leaving the agent with no contextual usage information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_message_contentC
Analyze the content types and structure of an ACP message
| Name | Required | Description | Default |
|---|---|---|---|
| acp_message_json | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 'analyzes' content types and structure, implying a read-only operation, but doesn't specify behavioral traits such as whether it's idempotent, has side effects, requires specific permissions, or handles errors. For a tool with no annotation coverage, this leaves significant gaps in understanding how it behaves beyond its basic function.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that directly states the tool's function without unnecessary words. It's front-loaded with the core action ('Analyze') and resource ('ACP message'), making it efficient and easy to parse. Every part of the sentence contributes to understanding the purpose, earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (which should detail return values), the description doesn't need to explain outputs. However, with no annotations, 1 parameter at 0% coverage, and moderate complexity (analyzing message structure), the description is incompleteβit lacks details on usage, parameters, and behavioral context. It's minimally viable but has clear gaps that could hinder effective tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 1 parameter with 0% description coverage, and the tool description doesn't add any semantic details about the parameter. It doesn't explain what 'acp_message_json' should contain (e.g., JSON format, required fields, examples) or how it's used in the analysis. With low schema coverage, the description fails to compensate, leaving the parameter's meaning unclear beyond its name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool analyzes 'content types and structure of an ACP message', which provides a general purpose (analyze message content). However, it lacks specificity about what 'analyze' entails (e.g., extracting metadata, identifying patterns, validating structure) and doesn't distinguish it from sibling tools like 'convert_acp_message' or 'smart_route_request', which might also involve message processing. It's not tautological but remains somewhat vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an ACP message), exclusions (e.g., not for routing or conversion), or compare to siblings like 'convert_acp_message' (which transforms messages) or 'smart_route_request' (which might analyze for routing). Without such context, users must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_interactionC
Cancel a pending interactive agent
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 context. It states the action is 'cancel' but doesn't disclose whether this is destructive, reversible, requires specific permissions, or what happens to the agent's state. The term 'pending' suggests it might only work on certain agent statuses, but this isn't elaborated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with a single, clear sentence. It's front-loaded with the core action and target, with zero wasted words or redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter mutation tool with no annotations, the description is minimally adequate but has significant gaps. The existence of an output schema helps, but the description doesn't address behavioral implications, parameter meaning, or usage context. It meets a bare minimum but lacks completeness for safe, informed use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate but provides no parameter information. It doesn't explain what 'run_id' represents, how to obtain it, or its format. The single required parameter remains undocumented beyond the schema's basic structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Cancel') and target ('a pending interactive agent'), providing a specific verb+resource combination. However, it doesn't differentiate from potential sibling tools like 'list_active_runs' or 'get_async_run_result' that might relate to agent management.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 a run_id from 'list_pending_interactions'), nor does it clarify what constitutes a 'pending interactive agent' versus other agent states.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_acp_messageB
Convert ACP message format to MCP-compatible format
| Name | Required | Description | Default |
|---|---|---|---|
| acp_message_json | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 conversion action but doesn't describe what the conversion entails (e.g., format changes, data loss, validation), whether it's idempotent, or what happens on errors. This leaves significant gaps for a transformation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
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 purpose and appropriately sized for a straightforward conversion tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (format conversion), no annotations, and an output schema present, the description is minimally adequate. It states what the tool does but lacks details on behavior, parameters, or usage context. The output schema mitigates some gaps, but more guidance would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, with one parameter 'acp_message_json' documented only by name and type. The description doesn't add any parameter-specific details (e.g., expected JSON structure, validation rules). However, with only one parameter, the baseline is 4, but the lack of compensation for the coverage gap reduces it to 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as converting ACP message format to MCP-compatible format, using specific verbs ('convert') and resources ('ACP message format', 'MCP-compatible format'). It doesn't explicitly distinguish from sibling tools like 'analyze_message_content' or 'smart_route_request', but the conversion focus is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 ACP message), exclusions, or how it differs from sibling tools like 'analyze_message_content' that might handle message processing differently.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_acp_agentsB
Discover all available ACP agents and register them as resources
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 discovers and registers agents, implying a read operation that may update internal state (registration). However, it lacks details on permissions required, whether registration is persistent, rate limits, error handling, or what 'available' means (e.g., online agents only). For a tool with no annotations, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's action and outcome. It is front-loaded with the core purpose ('discover all available ACP agents') and adds a secondary effect ('register them as resources') without unnecessary elaboration. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 0 parameters, 100% schema coverage, and an output schema exists (so return values needn't be explained in the description), the description is minimally adequate. However, with no annotations and a purpose that involves discovery and registration (potentially mutating internal state), it lacks completeness regarding behavioral aspects like side effects or prerequisites. It meets basic needs but has clear gaps in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, with 100% schema description coverage (since there are no parameters to describe). The description doesn't need to add parameter semantics beyond the schema. According to the rules, 0 parameters baseline is 4, as there's no gap to compensate for, and the description doesn't introduce any parameter-related confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('discover') and resource ('ACP agents'), and mentions an additional action ('register them as resources'). It distinguishes from siblings like 'get_agent_info' (which likely retrieves info on a specific agent) by focusing on discovery and registration of all agents. However, it doesn't explicitly differentiate from all siblings, such as 'list_active_runs' or 'list_pending_interactions', which also involve listing operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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., when agents need to be discovered), exclusions (e.g., not for real-time agent status), or direct comparisons to siblings like 'get_agent_info' (for specific agent details) or 'list_active_runs' (for active agent runs). Usage is implied only by the tool's name and description, lacking explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agent_infoC
Get detailed information about a specific ACP agent
| Name | Required | Description | Default |
|---|---|---|---|
| agent_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states this is a read operation ('Get'), but doesn't specify whether it requires authentication, has rate limits, what format the detailed information includes, or if there are any side effects. This leaves significant gaps for a tool that presumably fetches sensitive agent data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with zero wasted words. It's appropriately sized for a simple lookup tool and front-loads the core purpose immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (which should document return values), the description's main job is to clarify purpose and usage. While concise and clear on purpose, it lacks guidance on when to use it versus siblings and doesn't address behavioral aspects like authentication needs. For a 1-parameter read tool with output schema, this is minimally adequate but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must compensate. It mentions 'specific ACP agent' which implies the 'agent_name' parameter identifies an agent, but doesn't clarify what constitutes a valid agent name, format expectations, or whether it's case-sensitive. This adds minimal semantic value beyond the schema's basic structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'detailed information about a specific ACP agent', making the purpose unambiguous. However, it doesn't differentiate from sibling tools like 'discover_acp_agents' or 'get_server_info', 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.
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 'discover_acp_agents' (which might list agents) or 'get_server_info' (which might provide server-level details). It also doesn't mention prerequisites or exclusions for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_async_run_resultC
Get the result of an asynchronous run
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 results but doesn't describe key behaviors: whether it's idempotent, if it polls or waits for completion, error handling for invalid run_ids, or performance characteristics like latency. The description is minimal and fails to provide necessary operational context for safe and effective use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely conciseβa single sentence with no wasted words. It's front-loaded with the core purpose ('Get the result'), making it easy to scan. Every word earns its place, and there's no redundancy or unnecessary elaboration, which is efficient for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (asynchronous result retrieval), lack of annotations, and presence of an output schema, the description is minimally complete. It states the purpose but misses usage guidelines and behavioral details. The output schema likely covers return values, reducing the burden, but without annotations, more context on how the tool operates would be beneficial. It's adequate but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter semantics beyond what the input schema provides. With 0% schema description coverage and 1 parameter (run_id), the schema only indicates it's a required string titled 'Run Id'. The description doesn't explain what a run_id is, how to obtain it, or its format. However, since there's only one parameter and the tool's purpose implies its use, a baseline score of 3 is appropriate, though additional details would improve clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool's purpose as retrieving results from asynchronous runs, which is clear but vague. It uses the verb 'Get' with the resource 'result of an asynchronous run', but doesn't specify what constitutes a 'run' or what format the results take. Compared to siblings like 'list_active_runs' or 'run_acp_agent', it distinguishes itself by focusing on results rather than listing or initiating runs, though the distinction could be more explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 a run_id from a prior operation), exclusions, or how it relates to sibling tools like 'list_active_runs' or 'run_acp_agent'. Without this context, users must infer usage based on the tool name alone, which is insufficient for effective tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_server_infoB
Get information about the ACP-MCP bridge server
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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. While 'Get information' implies a read-only operation, it doesn't specify what type of information is returned, whether there are authentication requirements, rate limits, or any side effects. For a 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any unnecessary words. It's perfectly front-loaded and wastes no space, making it ideal for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has zero parameters, 100% schema coverage, and an output schema exists, the description doesn't need to cover parameters or return values. However, with no annotations and multiple sibling tools that might overlap in function, the description should provide more context about what specific information is retrieved to help distinguish it from alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema description coverage is 100%, so there's no need for parameter documentation in the description. The description appropriately focuses on the tool's purpose rather than parameter details, earning a baseline score of 4 for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('information about the ACP-MCP bridge server'), making the purpose immediately understandable. However, it doesn't differentiate this from sibling tools like 'get_agent_info' or 'discover_acp_agents' which might also retrieve server-related information, preventing 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.
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 sibling tools like 'get_agent_info' and 'discover_acp_agents' that might retrieve related information, there's no indication of what distinguishes this tool's scope or when it's the appropriate choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_active_runsB
List all active runs
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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. 'List all active runs' implies a read-only operation but doesn't specify what constitutes an 'active run', whether results are paginated, or what the output format is. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description 'List all active runs' is a single, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it easy to parse and understand immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 0 parameters, 100% schema coverage, and an output schema exists, the description is minimally adequate. However, with no annotations and siblings that might overlap (e.g., 'list_pending_interactions'), it lacks context about what 'active runs' are or how this tool fits into the broader workflow, leaving room for improvement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100%, so there's no need for parameter documentation in the description. The description appropriately doesn't mention parameters, which is correct for a parameterless tool, earning a baseline score of 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List all active runs' clearly states the verb ('List') and resource ('active runs'), making the tool's purpose immediately understandable. It doesn't distinguish from sibling tools like 'list_pending_interactions' or 'get_async_run_result', but the purpose is unambiguous on its own.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 siblings like 'list_pending_interactions' and 'get_async_run_result', there's no indication of how 'active runs' differ from 'pending interactions' or 'async runs', leaving the agent to guess based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pending_interactionsB
List all pending interactive agents waiting for input
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 action but lacks details on permissions, rate limits, pagination, or what constitutes a 'pending' state. For a tool with zero annotation coverage, this is insufficient to inform safe and effective use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It's front-loaded with the core action and resource, 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 0 parameters, 100% schema coverage, and an output schema exists, the description is minimally adequate. However, with no annotations and siblings that might overlap, it lacks context on behavioral traits and differentiation, leaving gaps in completeness for effective tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, meaning no parameters are documented. The description doesn't add parameter details, but since there are no parameters, this is acceptable. Baseline for 0 parameters is 4, as the description doesn't need to compensate for missing param info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 'pending interactive agents waiting for input', making the purpose immediately understandable. However, it doesn't explicitly differentiate this tool from sibling tools like 'list_active_runs' or 'discover_acp_agents', which might also list related entities, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 siblings like 'list_active_runs' and 'discover_acp_agents', there's no indication of the specific context or criteria for choosing this tool, such as filtering by status or agent type.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_routing_strategiesB
List all available routing strategies and their rules
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'List' implies a read-only operation, it doesn't specify whether this returns all strategies at once or uses pagination, what format the rules are returned in, or any authentication requirements. The description is minimal and lacks important operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states exactly what the tool does with zero wasted words. It's appropriately sized for a simple listing tool and gets straight to the point without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, has output schema), the description is minimally complete. The output schema will document return values, so the description doesn't need to explain them. However, for a tool with no annotations, more behavioral context about how the listing works would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0 parameters and 100% schema description coverage, the baseline for this dimension is 4. The description appropriately doesn't discuss parameters since there are none, and the schema already fully documents the empty input object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 available routing strategies and their rules'), making the tool's purpose immediately understandable. It doesn't specifically differentiate from sibling tools like 'smart_route_request' or 'test_routing', but the listing function is distinct enough for basic understanding.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 siblings like 'smart_route_request' and 'test_routing' that might involve routing logic, there's no indication of when a simple listing is appropriate versus more complex routing operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
provide_user_inputC
Provide user input to resume a waiting interactive agent
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | ||
| user_input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 resumes a waiting agent but doesn't explain what 'resume' entails (e.g., does it trigger further processing, is it idempotent, are there rate limits?). For a tool that likely involves state changes in interactive agents, this lack of detail is a significant gap, leaving the agent with minimal 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that directly states the tool's function without unnecessary words. It's front-loaded with the core action and purpose, making it efficient and easy to parse. Every part of the sentence contributes essential information, earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description doesn't need to explain return values. However, with no annotations, 0% schema coverage, and two required parameters, the description is incompleteβit lacks details on behavioral traits and parameter semantics. For a tool that interacts with waiting agents, more context on usage and effects would be beneficial, but the presence of an output schema slightly mitigates this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the input schema provides no descriptions for parameters. The description doesn't add any meaning beyond the schemaβit doesn't explain what 'run_id' refers to (e.g., an identifier from a paused agent) or what 'user_input' should contain (e.g., text to continue the interaction). With two required parameters and no compensation in the description, this leaves the agent guessing about parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Provide user input to resume a waiting interactive agent.' It specifies the action ('provide user input') and the target ('resume a waiting interactive agent'), which is specific and actionable. However, it doesn't explicitly differentiate from sibling tools like 'cancel_interaction' or 'list_pending_interactions', which handle related but distinct operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 a run_id from a waiting agent), exclusions, or how it differs from tools like 'cancel_interaction' or 'get_async_run_result'. Without such context, the agent might struggle to select this tool appropriately in complex scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_acp_agentC
Execute an ACP agent with specified mode
| Name | Required | Description | Default |
|---|---|---|---|
| agent_name | Yes | ||
| input_text | Yes | ||
| mode | No | sync | |
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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. It mentions 'specified mode' but doesn't explain what modes are available, whether execution is synchronous/asynchronous, what permissions are needed, or what side effects occur. For a tool that likely performs operations, this minimal description fails to provide adequate 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It's front-loaded with the core action, though it could be more structured by explicitly listing key parameters or outcomes. The brevity is appropriate but borders on under-specification given the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters, no annotations, 0% schema coverage, but an output schema exists, the description is incomplete. It doesn't explain what the tool returns, how errors are handled, or the operational context. The output schema mitigates some gaps, but the description fails to provide enough context for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema provides no parameter descriptions. The description only vaguely references 'specified mode', adding minimal meaning beyond the parameter names. It doesn't explain what 'agent_name' refers to, what 'input_text' should contain, or the purpose of 'session_id'. With 4 parameters, this is insufficient compensation for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Execute an ACP agent with specified mode' states the action ('Execute') and resource ('ACP agent'), but it's vague about what execution entails and doesn't differentiate from sibling tools like 'start_interactive_agent' or 'smart_route_request'. It provides a basic purpose but lacks specificity about what ACP agents are or what execution involves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context, or exclusions, leaving the agent to infer usage from the tool name alone. With sibling tools like 'start_interactive_agent' and 'smart_route_request' that might overlap, this lack of 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.
smart_route_requestC
Intelligently route a request to the best ACP agent
| Name | Required | Description | Default |
|---|---|---|---|
| input_text | Yes | ||
| mode | No | sync | |
| session_id | No | ||
| strategy | No | default |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 mentions 'intelligently route' but doesn't explain what that entailsβwhether it's a read-only operation, if it modifies state, what permissions are needed, or how it handles errors. For a tool with 4 parameters and no 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that gets straight to the point with no wasted words. It's appropriately sized for a tool with this complexity and is front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters with 0% schema coverage and no annotations, but does have an output schema, the description is incomplete. It doesn't explain parameter semantics or behavioral traits, though the output schema might cover return values. For a routing tool with multiple parameters, more context is needed to be fully helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning none of the 4 parameters have descriptions in the schema. The tool description doesn't add any meaning beyond the schemaβit doesn't explain what 'input_text', 'mode', 'session_id', or 'strategy' do, their formats, or acceptable values. This fails to compensate for the low coverage, leaving parameters largely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Intelligently route a request to the best ACP agent'. It specifies the verb ('route') and resource ('request'), and distinguishes it from siblings like 'add_routing_rule' or 'run_acp_agent'. However, it doesn't explicitly differentiate from 'list_routing_strategies' or 'test_routing', which keeps it from 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.
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 siblings like 'run_acp_agent', 'analyze_message_content', and 'list_routing_strategies', there's no indication of context, prerequisites, or exclusions. This leaves the agent guessing about appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_interactive_agentC
Start an interactive ACP agent that may require user input
| Name | Required | Description | Default |
|---|---|---|---|
| agent_name | Yes | ||
| initial_input | Yes | ||
| session_id | No | ||
| timeout_minutes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 that the agent 'may require user input', hinting at interactive behavior, but fails to detail critical aspects like authentication needs, rate limits, error handling, or what 'starting' entails operationally. This leaves significant gaps in understanding 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that is front-loaded with the core action. It avoids unnecessary words, making it appropriately concise, though it could benefit from more detail given the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, interactive nature) and the presence of an output schema, the description is incomplete. It lacks details on parameters, behavioral traits, and usage context, failing to provide enough information for effective tool selection and invocation, even with the output schema covering return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema provides no parameter details. The description adds no meaning beyond the schema, as it does not explain any parameters (e.g., 'agent_name', 'initial_input', 'session_id', 'timeout_minutes'), their purposes, or how they affect the tool's operation. This fails to compensate for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool 'Start[s] an interactive ACP agent that may require user input', which provides a clear verb ('Start') and resource ('interactive ACP agent'). However, it lacks specificity about what distinguishes this from sibling tools like 'run_acp_agent' or 'discover_acp_agents', making the purpose somewhat vague in context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or comparisons to sibling tools such as 'run_acp_agent' or 'provide_user_input', leaving the agent with no explicit usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_routingA
Test routing without executing - shows which agent would be selected
| Name | Required | Description | Default |
|---|---|---|---|
| input_text | Yes | ||
| strategy | No | default |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 discloses the key behavioral trait that this is a simulation ('without executing'), but lacks details on permissions, rate limits, or what the output looks like. The description is accurate but minimal for a tool with no 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero wasteβevery word contributes to understanding the tool's purpose and key behavior. It's appropriately sized for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (2 parameters, no nested objects) and the presence of an output schema (which handles return values), the description is reasonably complete. It covers the core purpose and behavioral constraint, though more parameter guidance would enhance it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It implies 'input_text' is used for routing testing and 'strategy' might influence selection, but doesn't explain parameter meanings, formats, or constraints. The description adds minimal value beyond the schema's property names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('test routing') and resource ('which agent would be selected'), and distinguishes it from siblings by emphasizing it's a simulation ('without executing') rather than an actual execution tool like 'run_acp_agent' or 'smart_route_request'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 ('Test routing without executing') and implies when not to use it (when actual execution is needed), with clear alternatives among siblings like 'run_acp_agent' for execution or 'smart_route_request' for actual routing.
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.
16 tool updates
v1.0.0- First observed
add_routing_rule - First observed
analyze_message_content - First observed
cancel_interaction - First observed
convert_acp_message - First observed
discover_acp_agents - First observed
get_agent_info - First observed
get_async_run_result - First observed
get_server_info - First observed
list_active_runs - First observed
list_pending_interactions - First observed
list_routing_strategies - First observed
provide_user_input - First observed
run_acp_agent - First observed
smart_route_request - First observed
start_interactive_agent - First observed
test_routing
TDQS
Scored across 16 tools
Most tools have distinct purposes, but there is some potential overlap between 'smart_route_request' and 'test_routing' as both involve routing decisions, which could cause confusion. The other tools are clearly differentiated by their specific actions on agents, runs, interactions, or routing components.
All tool names follow a consistent snake_case pattern with clear verb_noun structures, such as 'add_routing_rule', 'analyze_message_content', and 'run_acp_agent'. This uniformity makes the tool set predictable and easy to navigate.
With 16 tools, the count is slightly high but reasonable for an ACP-MCP bridge server covering discovery, routing, execution, and interaction management. It might feel a bit heavy, but each tool appears to serve a specific function in this domain.
The tool set provides comprehensive coverage for the ACP agent domain, including agent discovery, information retrieval, execution (synchronous and asynchronous), routing management, interaction handling, and message conversion. There are no obvious gaps, supporting full lifecycle management.
Maintenance
Related MCP Connectors
The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client β Claude, ChatGPT, Cursor, Cline, Windsurf.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.
Related MCP Servers
- FlicenseBqualityDmaintenanceA macOS-native bridge server that enables communication between different AI clients like Claude and Cline, allowing them to interact with each other through the Model Context Protocol.23-
- AlicenseAqualityFmaintenanceA bridge server that enables MCP-compatible AI assistants like Claude to seamlessly discover, communicate with, and manage A2A protocol agents.7148Apache 2.0
- FlicenseNot gradedqualityAmaintenanceMCP server that bridges coding agents (Claude Code, Codex, Gemini CLI) via ACP for pair programming, enabling agents to consult each other as tools.-
- AlicenseNot gradedqualityFmaintenanceBridges Agent Communication Protocol (ACP) agents with Model Context Protocol (MCP) applications, allowing MCP clients such as Claude Desktop to discover and invoke ACP agents as tools and resources.36Apache 2.0