Skip to main content
Glama

Polyagent

Multi-provider AI agent bridge for Claude Desktop. Connect Claude to external AI agents (GLM, OpenAI, Anthropic, Bedrock, Gemini) for specialized tasks like security scanning, code review, and more.

Features

  • Multi-Provider Support: Google Gemini and Ollama Cloud through an OpenAI-compatible endpoint

  • Dynamic Agent Registration: Register agents at runtime via MCP tools

  • Flexible Pipeline Modes: Sequential, Iterative, and Parallel execution

  • Loop Prevention: Max iterations, confidence thresholds, human approval

  • Streaming Support: Stream responses in real-time

  • Production Ready: Comprehensive error handling, logging, and metrics

Related MCP server: Agent Communication MCP Server

Architecture

[Claude Desktop] ←→ [AI Agent MCP Server] ←→ [External AI Agents]
                           │
        ┌──────────────────┼──────────────────┐
        │                  │                  │
   Agent Registry    Pipeline Engine    Loop Prevention
   (dynamic reg)     (seq/iter/parallel) (max iter/confidence/approval)

Installation

Prerequisites

  • Python 3.10 or higher

  • uv package manager (recommended)

Setup

# Clone or navigate to the project
cd ai-agent-mcp-server

# Install dependencies
uv sync

# Set up environment variables. The server also loads a local .env file.
export GOOGLE_API_KEY="your-key"          # For Gemini
export OLLAMA_API_KEY="your-key"          # For Ollama Cloud
export OLLAMA_BASE_URL="https://ollama.com/v1"

Usage

1. Configure Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "ai-agent-bridge": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/ai-agent-mcp-server",
        "run",
        "main.py"
      ],
      "env": {
        "GOOGLE_API_KEY": "your-key",
        "OLLAMA_API_KEY": "your-key",
        "OLLAMA_BASE_URL": "https://ollama.com/v1"
      }
    }
  }
}

Config file locations:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

2. Restart Claude Desktop

Fully quit Claude Desktop (Cmd+Q on macOS) and restart.

3. Register an Agent

In Claude Desktop, use the register_agent tool:

Register a security scanner agent using GLM-4

Claude will call:

{
  "name": "register_agent",
  "arguments": {
    "name": "security-scanner",
    "provider": "openai_compat",
    "model": "glm-4",
    "system_prompt": "You are an expert security auditor...",
    "description": "Scans code for security vulnerabilities",
    "api_key_env": "GLM_API_KEY",
    "base_url": "https://open.bigmodel.cn/api/paas/v4",
    "capabilities": ["security", "vulnerability-detection"]
  }
}

4. Execute an Agent

Scan this code for vulnerabilities: [paste code]

Claude will call:

{
  "name": "execute_agent",
  "arguments": {
    "agent_name": "security-scanner",
    "input_content": "[your code]"
  }
}

Available Tools

Agent Management

  • register_agent: Register a new AI agent

  • list_agents: List all registered agents

  • update_agent: Update agent configuration

  • remove_agent: Remove an agent

Pipeline Execution

  • execute_agent: Execute a single agent

  • execute_pipeline: Execute multi-agent pipeline

Configuration

  • set_safety_config: Configure loop prevention

  • get_safety_config: Get current safety settings

Example: Security Scanner Pipeline

Step 1: Register Security Agent

# In Claude Desktop
register_agent(
    name="security-scanner",
    provider="openai_compat",
    model="glm-4",
    system_prompt="You are an expert security auditor. Find vulnerabilities in the following code.",
    description="Scans code for security vulnerabilities using GLM-4",
    api_key_env="GLM_API_KEY",
    base_url="https://open.bigmodel.cn/api/paas/v4",
    capabilities=["security", "vulnerability-detection"],
    temperature=0.3
)

Step 2: Execute Security Scan

# In Claude Desktop
execute_agent(
    agent_name="security-scanner",
    input_content="def process_user_input(user_input):\n    eval(user_input)"
)

Step 3: Claude Processes Results

Claude receives the security findings and can:

  • Explain vulnerabilities to the user

  • Suggest fixes

  • Re-run scans on fixed code

Pipeline Modes

Sequential (Default)

Single pass: Claude → Agent → Claude

execute_pipeline(
    agents=["security-scanner"],
    input_content="[code]",
    mode="sequential"
)

Iterative

Multiple rounds: Claude ↔ Agent (with loop prevention)

execute_pipeline(
    agents=["security-scanner"],
    input_content="[code]",
    mode="iterative",
    max_iterations=3,
    confidence_threshold=0.9
)

Parallel

Multiple agents analyze simultaneously:

execute_pipeline(
    agents=["security-scanner", "code-reviewer", "performance-analyzer"],
    input_content="[code]",
    mode="parallel"
)

Supported Providers

OpenAI-Compatible (GLM, DeepSeek, etc.)

register_agent(
    name="glm-agent",
    provider="openai_compat",
    model="glm-4",
    base_url="https://open.bigmodel.cn/api/paas/v4",
    api_key_env="GLM_API_KEY"
)

Anthropic Claude

register_agent(
    name="claude-agent",
    provider="anthropic",
    model="claude-3-5-sonnet-20241022",
    api_key_env="ANTHROPIC_API_KEY"
)

Google Gemini

register_agent(
    name="gemini-agent",
    provider="gemini",
    model="gemini-1.5-pro",
    api_key_env="GOOGLE_API_KEY"
)

AWS Bedrock

register_agent(
    name="bedrock-agent",
    provider="bedrock",
    model="anthropic.claude-3-5-sonnet-20241022-v2:0",
    api_key_env="AWS_BEDROCK_API_KEY",
    region="us-east-1"
)

Loop Prevention

Configure safety settings:

set_safety_config(
    max_iterations=3,              # Stop after 3 iterations
    confidence_threshold=0.9,      # Stop when confidence > 90%
    require_approval_after=2,      # Ask for approval after 2 iterations
    timeout_seconds=300            # Global timeout
)

Development

Run in Development Mode

# Test with MCP Inspector
uv run mcp dev main.py

Run Tests

uv run pytest tests/

Project Structure

ai-agent-mcp-server/
├── src/
│   ├── server.py           # MCP server entry point
│   ├── providers/          # AI provider adapters
│   │   ├── base.py         # Abstract base provider
│   │   ├── openai_compat.py # OpenAI-compatible (GLM, DeepSeek)
│   │   ├── anthropic.py    # Anthropic Claude
│   │   ├── bedrock.py      # AWS Bedrock
│   │   └── gemini.py       # Google Gemini
│   ├── agents/             # Agent management
│   │   ├── profiles.py     # Agent profile definitions
│   │   └── registry.py     # Dynamic agent registry
│   ├── pipeline/           # Communication pipeline
│   │   └── engine.py       # Pipeline execution engine
│   ├── safety/             # Loop prevention
│   │   └── limits.py       # Safety mechanisms
│   └── config.py           # Configuration management
├── tests/
├── main.py                 # Entry point
├── pyproject.toml
└── README.md

Troubleshooting

Server not showing up in Claude

  1. Check claude_desktop_config.json syntax

  2. Use absolute paths

  3. Fully quit and restart Claude Desktop

Tool calls failing

  1. Check Claude's logs: ~/Library/Logs/Claude/mcp*.log

  2. Verify API keys are set

  3. Test with MCP Inspector: uv run mcp dev main.py

API errors

  1. Verify API keys are correct

  2. Check rate limits

  3. Ensure model names are valid

License

MIT

Contributing

Contributions welcome! Please read CONTRIBUTING.md for guidelines.

Support

  • GitHub Issues: [Report bugs or request features]

  • Documentation: [Full API documentation]

  • MCP Discord: #python-sdk-dev

Available Tools

9 tools
execute_agentC

Execute a single agent.

Args: agent_name: Name of the agent to execute input_content: Input content to process context: Optional context from Claude

Returns: Execution result

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNo
agent_nameYes
input_contentYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state whether execution is a read-only operation or causes side effects, what the failure modes are, whether it blocks, or how long it can run. 'Returns: Execution result' is a tautology that adds no behavioral detail beyond the tool name.

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 compact and front-loaded: the single-sentence summary comes first, followed by a terse argument list. Its only waste is the 'Returns: Execution result' line, which restates the obvious, but it is short and does not materially reduce 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?

This is a low-information definition for a tool with no output schema, no annotations, and no parameter documentation in the schema. The description never clarifies what 'input content' should be, what a result contains, how errors surface, or how this relates to execute_pipeline. An agent has enough to make a plausible guess but not enough to invoke it confidently.

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

Parameters2/5

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 for the three undocumented parameters. It defines each parameter with one line, but 'Name of the agent to execute' 'Input content to process' and 'Optional context from Claude' add almost no meaning beyond the property titles. The description does not specify input format, size limits, or the shape of the expected context.

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 states a specific verb and resource — 'Execute a single agent' — which tells the agent this runs one agent, and the phrase 'single agent' implicitly contrasts with the sibling execute_pipeline. However, 'execute an agent' remains somewhat ambiguous: it never explains what executing an agent entails (running it on a task, invoking a workflow, etc.).

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?

There is no guidance on when to use this tool versus its siblings. Crucially, execute_pipeline is a sibling that appears to be the multi-agent alternative, but the description never mentions it or any condition selecting between them. No prerequisites are given either (e.g., whether the agent must already exist via register_agent).

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

execute_pipelineB

Execute a pipeline with multiple agents.

Args: agents: List of agent names input_content: Input content to process mode: Pipeline mode (sequential, iterative, parallel) context: Optional context from Claude max_iterations: Maximum iterations for iterative mode confidence_threshold: Confidence threshold for stopping require_approval_after: Pause iterative mode for human approval after N iterations. Defaults to None (disabled) so max_iterations is the real bound; pass an int to opt into an approval checkpoint.

Returns: Pipeline execution results

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNosequential
agentsYes
contextNo
input_contentYes
max_iterationsNo
confidence_thresholdNo
require_approval_afterNo

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 mentions one behavioral nuance (require_approval_after pauses for human approval) but does not clarify whether execution is synchronous or asynchronous, whether it modifies system state, or what the result contains. This is insufficient for a tool that orchestrates multiple agents, so it scores a 2.

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 formatted as a docstring with Args and Returns sections, which is organized. However, it is somewhat verbose, particularly in the require_approval_after explanation, which could be more succinct. It is not minimal but not overly long either. A 3 reflects an adequate structure with room for tightening.

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?

Despite covering all parameters, the description omits crucial context: the return format is vague ('Pipeline execution results'), there is no mention of error handling, concurrency, or whether the pipeline can be interrupted. Given the tool's complexity (7 params, no output schema), an agent lacks enough to know what to expect or how to handle failures. This is incomplete, scoring a 2.

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

Parameters5/5

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 thoroughly explains each parameter: agents ('List of agent names'), input_content, mode ('sequential, iterative, parallel'), context ('Optional context from Claude'), max_iterations, confidence_threshold, and require_approval_after with a detailed note on defaults and behavior. This greatly exceeds what the schema provides, earning a 5.

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 states a clear action ('Execute a pipeline') and resource ('with multiple agents'), which conveys the tool's purpose. It is distinguishable from siblings like execute_agent (which presumably handles a single agent) and list_agents, but it does not explicitly name the alternative. A 4 is appropriate because it's specific but lacks direct sibling differentiation.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description does not mention conditions like 'use this for multi-agent orchestration' or exclude cases for single-agent execution. An agent would have to infer usage from the parameter list. This lacks explicit when/when-not guidance, receiving a 2.

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

get_available_modelsA

Get list of all available models and their capabilities.

This tool should be called by Claude to discover which models are available and what tasks they're best suited for.

Returns: Dictionary with model registry including capabilities

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 bears the full burden. It discloses the operation (list) and the return type ('Dictionary with model registry'), but it does not explicitly state that it is a read-only operation, nor does it mention any side effects, authorization requirements, or rate limits. For a simple retrieval tool, the implied read-only nature is acceptable, but a more explicit statement would be better.

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 concise: three sentences plus a brief 'Returns:' note. The key purpose is front-loaded, and there is no extraneous information. Every sentence earns its place, making it efficient and easy to scan.

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 read-only tool with no parameters and no output schema, the description is complete. It clearly states what the tool does and what it returns. It does not require additional details about authentication or pagination, as these are not indicated by any schema or annotation. The description fully supports correct invocation.

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, so the schema covers everything trivially. Per the baseline for 0 parameters, a score of 4 is appropriate. The description does not (and need not) add parameter semantics because there are none.

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 states a clear purpose: 'Get list of all available models and their capabilities.' It specifies the resource (models) and the action (get list), and distinguishes from sibling tools like list_agents by targeting models rather than agents. The verb and object are unambiguous.

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

Usage Guidelines4/5

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

The description explicitly says 'This tool should be called by Claude to discover which models are available and what tasks they're best suited for,' which gives a clear use case. It does not explicitly mention alternatives or when not to use it, but the context of available sibling tools (agents, safety config) makes the intended use clear enough. A bit more directness on exclusions would push to 5.

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

get_safety_configA

Get current safety configuration.

Returns: Current safety configuration

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?

With no annotations, the description must carry the behavioral burden. 'Get' implies a read-only operation, but the text never explicitly states that it makes no changes, has no auth requirements, or is safe to call repeatedly. It is minimally transparent but not richly so.

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 very short and front-loaded with the action. The 'Returns' line repeats the main idea rather than adding new information, but the overall text is compact and easy to parse.

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

Completeness3/5

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

For a zero-parameter getter, this is mostly complete, but with no annotations and no output schema, the description does not say what fields or structure 'current safety configuration' contains. An agent can invoke it, but the return value is only vaguely described.

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 no parameters and the schema documents none, so there is nothing for the description to add about argument meaning. The description matches the schema's inference that invoking this requires no inputs.

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 and object: 'Get current safety configuration.' It clearly distinguishes this operation from sibling tools like set_safety_config, so an agent knows what action it performs.

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 it (when you need the current safety configuration) and the sibling set_safety_config implies the alternative, but no explicit guidance is provided about prerequisites, side effects, or how it relates to other configuration tools.

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

list_agentsB

List all registered agents.

Args: capability: Optional capability filter

Returns: List of agent profiles

ParametersJSON Schema
NameRequiredDescriptionDefault
capabilityNo

TDQS

B3/5.0
Behavior3/5

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

The description indicates a read-only listing operation, but no annotations are provided to confirm this. It does not disclose whether the list is sorted, paginated, or if it requires authentication. The 'capability' filter's behavior is not explained (e.g., does it filter by exact match or partial?). Since annotations are absent, the description carries the burden, but it only partially addresses it.

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 concise with no wasted words. It clearly separates the main purpose from the Args and Returns sections, making it easy to scan. The structure is conventional for API documentation.

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 optional parameter and no output schema, the description is mostly adequate but lacks key context. It does not explain the output format beyond 'List of agent profiles', which is vague. Given that there is no output schema, it would benefit from noting that each profile contains typical fields (e.g., name, id). Also, the capability filter semantics are underspecified.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must explain the 'capability' parameter. It only says 'Optional capability filter', which adds minimal meaning beyond the schema's type. It does not specify the format of the capability value, nor what happens if omitted (presumably returns all agents). The description fails to provide sufficient semantic detail for the parameter.

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 states a clear verb-resource pair ('List all registered agents') and the single optional parameter ('capability'), distinguishing it from mutation tools like register_agent or remove_agent. It is concise and unambiguous, but does not explicitly differentiate from other 'list' or 'get' sibling tools, though the resource ('agents') is specific enough.

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?

There is no guidance on when to use this tool versus alternatives. The description does not mention when to use it over other agent-related tools, nor when the 'capability' filter should be applied. It provides no context about typical use cases or prerequisites.

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

register_agentA

Register a new AI agent.

Args: name: Unique name for the agent provider: Provider type (openai_compat, anthropic, bedrock, gemini) model: Model identifier (e.g., 'glm-4', 'claude-3-5-sonnet') system_prompt: System prompt for the agent description: Human-readable description api_key_env: Environment variable name for API key temperature: Sampling temperature (0.0-2.0) max_tokens: Maximum tokens to generate capabilities: List of agent capabilities base_url: Base URL for OpenAI-compatible providers region: AWS region for Bedrock

Returns: Registered agent profile

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
modelYes
regionNous-east-1
base_urlNo
providerYes
max_tokensNo
api_key_envYes
descriptionYes
temperatureNo
capabilitiesNo
system_promptYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states that an agent is registered and that a profile is returned, but it does not disclose side effects, duplicate-name behavior, provider access requirements, or reversibility. For a mutation tool, this leaves important behaviors unspecified.

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 uses a single summary sentence followed by a flat parameter list and a return-value note. It is appropriately sized for an 11-parameter tool and every line adds real semantic value beyond the schema, though the long list format is a bit mechanical.

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?

The description states the return value and parameter purposes, but lacks higher-level lifecycle context: how registration feeds into execute_agent or update_agent, what happens on duplicate names, and whether the agent is immediately usable after creation. For a complex creation tool without annotations or an output schema, some gaps remain.

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

Parameters5/5

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

With 0% schema description coverage, the description compensates thoroughly: every one of the 11 parameters gets a meaningful explanation, including unique-name constraints, provider value details, temperature range, model examples, and conditional semantics like base_url applying to openai_compat and region to Bedrock. This goes well beyond the bare 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 opens with 'Register a new AI agent,' a specific verb and resource that clearly identifies the action. It is immediately distinguishable from sibling tools (list/update/remove/execute) without needing to inspect their schemas.

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 verb 'Register' and 'new AI agent' imply this is the creation tool, but there is no explicit guidance on when to use it instead of update_agent, or how it relates to execute_agent and safety config tools. The intended usage context is inferred but not stated, and no alternatives are named.

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

remove_agentC

Remove an agent.

Args: name: Agent name

Returns: Removed agent profile

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries full behavioral disclosure burdenched, but it only says 'Remove an agent' and the return. It does not disclose whether removal is permanent, whether it affects running executions, or what happens if the agent does not exist.

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

Conciseness5/5

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

The description is extremely concise and front-loaded, with a clear verb, a short Args section, and a Returns section. It is easy to scan and directly addresses the single parameter.

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 destructive tool with no annotationsament, the description omits important context such as permanence of removal, required permissions, error behavior, and what happens to dependent resources. The simple return line helps, but an agent still lacks enough to call it safely.

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

Parameters2/5

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

The schema already declares a required 'name' property. The description's 'name: Agent name' adds only a slight clarification that it is an agent identifier, but no format, constraints, or edge-case behavior is explained despite 0% schema coverage.

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

Purpose4/5

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

The description states a clear verb and resource ('Remove an agent'), which makes the tool's purpose immediately understandable. It doesn't differentiate itself from siblings like execute_agent or update_agent, but the action is self-evident.

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 about when to use this tool versus its siblings (list_agent, register_agent, update_agent), nor are any prerequisites or conditions for removal mentioned.

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

set_safety_configA

Configure loop prevention and safety settings.

Args: max_iterations: Maximum iterations before stopping confidence_threshold: Stop when confidence exceeds threshold require_approval_after: Require approval after N iterations timeout_seconds: Global timeout in seconds

Returns: Updated safety configuration

ParametersJSON Schema
NameRequiredDescriptionDefault
max_iterationsNo
timeout_secondsNo
confidence_thresholdNo
require_approval_afterNo

TDQS

A3.7/5.0
Behavior2/5

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

There are no annotations, so the description must fully disclose behavioral traits. It only says 'configure' without explaining the scope (global vs per-agent), persistence, immediate effect on running executions, or any permissions required. It also does not mention that the configuration likely affects execute_agent and execute_pipeline. This lack of behavioral detail is a significant gap for a mutation tool.

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

Conciseness5/5

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

The description is concise, front-loads the purpose, and uses a clean list for parameters. It includes a Returns section for clarity. Every sentence contributes value without redundancy.

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?

The description explains parameters and returns but lacks broader context: it does not clarify whether the configuration applies globally or per agent, whether it persists across sessions, or how it interacts with execute_agent and execute_pipeline. Without this, an agent may not understand the full impact of calling the tool. The absence of an output schema and annotations increases the need for contextual detail, which is not provided.

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

Parameters5/5

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

The description adds clear meaning to every parameter: max_iterations 'Maximum iterations before stopping', confidence_threshold 'Stop when confidence exceeds threshold', require_approval_after 'Require approval after N iterations', and timeout_seconds 'Global timeout in seconds'. With schema coverage at 0%, this is essential and well-executed.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Configure loop prevention and safety settings.' This is a specific verb+resource combination that distinguishes it from siblings like get_safety_config, which retrieves rather than modifies. The phrasing is not tautological and leaves no ambiguity about the tool's function.

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

Usage Guidelines3/5

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

The description implies usage—it is the setter counterpart to get_safety_config—but does not explicitly state when to use this tool versus alternatives. It does not mention 'use this to modify safety parameters' or contrast with get_safety_config. An agent could infer the appropriate time, but explicit guidance is missing.

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

update_agentC

Update an existing agent.

Args: name: Agent name **kwargs: Fields to update

Returns: Updated agent profile

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
kwargsYes

TDQS

C2.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 must carry the full burden of behavioral disclosure. It only states that it updates an agent and returns the updated profile. It does not mention side effects, permissions, whether the operation is idempotent, or what happens if the agent does not exist. This is a significant gap 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.

Conciseness3/5

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

The description is very short and has a clear Args/Returns structure, which is front-loaded with the core action. However, it is under-specified; while concise, it omits essential details about parameter encoding and usage context, making it less 'appropriately sized' than it could be. The brevity does not earn its place because it leaves critical questions unanswered.

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?

Despite being a simple tool, the description is incomplete. It does not explain what fields can be updated, how to pass multiple fields via the string-typed 'kwargs', whether the agent must exist, or the relationship to sibling tools. There is no output schema, so more detail on the return value would be expected, but it just says 'Updated agent profile'.

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

Parameters2/5

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 labels 'name' as 'Agent name' (trivial) and 'kwargs' as 'Fields to update' (vague). Critically, the schema expects 'kwargs' as a single string, but the description refers to '**kwargs' (keyword arguments), implying a dict format. No encoding (e.g., JSON) is explained, making the parameter usage unclear.

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 ('Update an existing agent') and the resource (agent). It distinguishes from sibling tools like register_agent (create) and remove_agent (delete) by the verb. However, it does not specify which fields can be updated, leaving some ambiguity about the scope of 'update'.

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?

There is no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., agent must exist), nor does it contrast with register_agent for creation or remove_agent for deletion. The agent must infer usage purely from the verb.

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.

  1. 9 tool updatesv0.1.0
    • First observedexecute_agent
    • First observedexecute_pipeline
    • First observedget_available_models
    • First observedget_safety_config
    • First observedlist_agents
    • First observedregister_agent
    • First observedremove_agent
    • First observedset_safety_config
    • First observedupdate_agent

TDQS

A3.6/5.0

Scored across 9 tools

Disambiguation5/5

Every tool targets a distinct concern: agent lifecycle, agent execution, pipeline execution, safety configuration, and model discovery. The only potentially similar pair (execute_agent vs execute_pipeline) is clearly differentiated by scope: single agent vs multi-agent pipeline.

Naming Consistency5/5

Tool names follow a consistent verb_noun pattern: list_, register_, update_, remove_, execute_, get_, set_. Naming clearly indicates both the action and the resource, with no mixed conventions or vague verbs.

Tool Count5/5

Nine tools is well-scoped for an agent management and orchestration server. Each tool covers a necessary aspect of the domain without redundancy or bloat.

Completeness5/5

The tool surface provides complete agent lifecycle coverage (list, register, update, remove), execution paths for both individual and multi-agent workflows, safety controls, and model discovery. There are no obvious dead ends or missing operations for the stated purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Integrates 100+ specialized AI agents with Claude Desktop, providing automated agent discovery, multi-agent coordination, and ready-to-use task templates for complex development and business workflows. Enables users to leverage enterprise-level AI capabilities through actionable resources and intelligent agent matching.
    23 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables multi-agent orchestration and coordination using specialized, persistent Claude agents for complex workflows like financial analysis and research. It supports intelligent agent handoffs, local storage, and pre-built team templates through Claude Desktop.
    MIT