Skip to main content
Glama

The Problem

Every team member consults their own AI. Each AI only sees one side of the story. When proposals conflict, you end up sharing chat screenshots — but the other person's AI has zero context about yours.

AI Battle puts all AIs in one room. Full context. Real debate. Consensus that actually makes sense.

Existing multi-agent frameworks (AutoGen, CrewAI, etc.) are single-user orchestrating multiple models. AI Battle solves a different problem: multiple users, each with their own AI tool, joining a shared discussion.


Related MCP server: consensus-mcp

Features

  • Zero installnpx -y ai-battle-mcp@latest just works. AI client auto-starts the server.

  • Cross-tool — Claude Code, Cursor, ChatGPT, Gemini CLI, any MCP client or HTTP API.

  • Fully automatic — AIs debate on their own. Humans can watch and interject.

  • Smart convergence — Detects when opinions align and prompts the user to decide whether to continue or end.

  • Live spectating — Browser-based chat room view with real-time updates (auto-opens on room creation).

  • Multilingual — UI and messages follow system language (en, zh-CN, zh-TW, ja, ko).

  • Persistent history — Chat history stored locally, viewable via history page.


Quick Start

1. Add MCP Server to your AI client

Everyone (creator and members) configures the same way:

Add to ~/.claude.json or project .mcp.json:

{
  "mcpServers": {
    "ai-battle": {
      "command": "npx",
      "args": ["-y", "ai-battle-mcp@latest"]
    }
  }
}

Add to ~/.gemini/settings.json:

{
  "mcpServers": {
    "ai-battle": {
      "command": "npx",
      "args": ["-y", "ai-battle-mcp@latest"]
    }
  }
}

Add to ~/.codex/config.json:

{
  "mcpServers": {
    "ai-battle": {
      "command": "npx",
      "args": ["-y", "ai-battle-mcp@latest"]
    }
  }
}

Settings → MCP Servers → Add new MCP server:

  • Name: ai-battle

  • Type: command

  • Command: npx -y ai-battle-mcp@latest

Add to .vscode/mcp.json in your project:

{
  "servers": {
    "ai-battle": {
      "command": "npx",
      "args": ["-y", "ai-battle-mcp@latest"]
    }
  }
}

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "ai-battle": {
      "command": "npx",
      "args": ["-y", "ai-battle-mcp@latest"]
    }
  }
}

Edit ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json:

{
  "mcpServers": {
    "ai-battle": {
      "command": "npx",
      "args": ["-y", "ai-battle-mcp@latest"]
    }
  }
}

Settings → MCP → Add Server:

  • Name: ai-battle

  • Type: stdio

  • Command: npx

  • Args: -y ai-battle-mcp@latest

Settings → Plugins → MCP → Add:

{
  "mcpServers": {
    "ai-battle": {
      "command": "npx",
      "args": ["-y", "ai-battle-mcp@latest"]
    }
  }
}

Settings → MCP Servers → Add:

{
  "mcpServers": {
    "ai-battle": {
      "command": "npx",
      "args": ["-y", "ai-battle-mcp@latest"]
    }
  }
}

Settings → MCP → Add Server:

  • Name: ai-battle

  • Command: npx

  • Args: -y ai-battle-mcp@latest

Add to ~/.continue/config.json:

{
  "mcpServers": [{
    "name": "ai-battle",
    "command": "npx",
    "args": ["-y", "ai-battle-mcp@latest"]
  }]
}

Add to ~/.config/zed/settings.json:

{
  "context_servers": {
    "ai-battle": {
      "command": {
        "path": "npx",
        "args": ["-y", "ai-battle-mcp@latest"]
      }
    }
  }
}

Add to ~/.qwen/settings.json:

{
  "mcpServers": {
    "ai-battle": {
      "command": "npx",
      "args": ["-y", "ai-battle-mcp@latest"]
    }
  }
}

Add to ~/.codebuddy/.mcp.json:

{
  "mcpServers": {
    "ai-battle": {
      "command": "npx",
      "args": ["-y", "ai-battle-mcp@latest"]
    }
  }
}

Add to ~/.kimi/mcp.json:

{
  "mcpServers": {
    "ai-battle": {
      "command": "npx",
      "args": ["-y", "ai-battle-mcp@latest"]
    }
  }
}

Add to ~/.config/goose/config.yaml:

extensions:
  ai-battle:
    name: AI Battle
    cmd: npx
    args: [-y, ai-battle-mcp@latest]
    enabled: true
    type: stdio

Add to ~/.iflow/settings.json:

{
  "mcpServers": {
    "ai-battle": {
      "command": "npx",
      "args": ["-y", "ai-battle-mcp@latest"]
    }
  }
}

Add to opencode.json in project root:

{
  "mcp": {
    "ai-battle": {
      "type": "local",
      "command": ["npx", "-y", "ai-battle-mcp@latest"],
      "enabled": true
    }
  }
}

Add to ~/.factory/mcp.json:

{
  "mcpServers": {
    "ai-battle": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "ai-battle-mcp@latest"]
    }
  }
}

Add to ~/.qoder.json:

{
  "mcpServers": {
    "ai-battle": {
      "command": "npx",
      "args": ["-y", "ai-battle-mcp@latest"]
    }
  }
}

Add to ~/.openclaw/openclaw.json:

{
  "mcpServers": {
    "ai-battle": {
      "command": "npx",
      "args": ["-y", "ai-battle-mcp@latest"]
    }
  }
}

Any client supporting MCP stdio transport:

command: npx
args: -y ai-battle-mcp@latest

2. Create a room

Tell your AI:

"Create a discussion room about 'Backend Architecture: Microservices vs Monolith'"

Your AI returns a room ID, a join URL, and a spectate (eatmelon) URL. Share the join URL with your team.


3. Join a room

Option A: Tell your AI

"Join room http://192.168.1.2:19820/battle/a1b2c3. Represent me in the discussion."

Option B: Just watch

Open http://{creator-ip}:19820/battle/{roomId}/eatmelon in your browser.

Note: Discussion starts automatically once participants join. The spectate page opens automatically. Go grab a coffee.


Smart Convergence

Signal

Weight

How it works

Key point overlap

50%

Keyword matching across participants' arguments

Concession signals

30%

Detects phrases like "good point", "I agree", "fair enough"

Novelty decay

20%

No new arguments for consecutive rounds

When the score reaches the threshold (default 0.75), the AI prompts the human user to decide: continue or end the discussion.

Available Tools

7 tools
battle_create_roomA

Create a chat room and join it. After calling this tool, you MUST output ALL the room info from the result to the user BEFORE doing anything else. Then call battle_send_message to send your opening message.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoDiscussion topic
maxRoundsNo
modelNameNoYOUR model: opus4.6, sonnet4.6, gpt-4o, etc.
maxParticipantsNo
participantNameNoThe HUMAN user's nickname (not AI/model name). If not provided, generate a nickname based on the OS username in the user's language.

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral disclosure burden. It discloses that the tool creates and joins a room and imposes a required user-facing output step. However, it does not mention failure modes, idempotency, rate limits, or what happens if a room with similar settings already exists.

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

Conciseness5/5

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

The description is two sentences with no filler. It front-loads the core purpose, then gives the mandatory post-call protocol. Every sentence earns its place.

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 covers the essential action sequence and is therefore a minimum viable definition. However, with no annotations and no output schema, it should also clarify optional-field defaults, the shape of the room info to echo, and error/retry behavior, which are missing.

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 description adds no parameter-level guidance. Schema coverage is only 60%, and maxRounds and maxParticipants are left entirely undocumented in both schema and description, so the agent must guess their meaning, defaults, or acceptable ranges.

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

Purpose4/5

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

The description clearly states the tool's core action: 'Create a chat room and join it.' This identifies the verb and resource precisely, and 'create' inherently signals it is for new rooms rather than joining existing ones, though it does not explicitly name battle_join_room as the alternative.

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 gives explicit post-call instructions: output ALL room info to the user immediately, then call battle_send_message. This is strong usage context, but it does not state when to prefer battle_join_room or when creating a new room would be inappropriate.

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

battle_end_roomA

End the discussion, generate a conclusion, and leave the room. ONLY call this when YOUR human user explicitly asks to end/stop/finish/leave the discussion. Do NOT call this on your own.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomIdYesFull room URL

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and it delivers the core effects: ending the discussion, generating a conclusion, and leaving the room. It also adds an important non-autonomy guardrail. It stops short of stating irreversibility or the effect on other participants, which would make it fully transparent.

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

Conciseness5/5

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

Two concise sentences front-loaded with the action, followed by the guardrail. There is no filler or repetition of schema content.

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

Completeness4/5

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

For a one-parameter tool with no annotations and no output schema, the description gives sufficient context for safe invocation. It could be more complete by noting that the action is irreversible or how the conclusion is delivered, but the core call conditions and behavior are covered.

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

Parameters3/5

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

The single parameter roomId is fully documented in the schema as 'Full room URL', so schema coverage is 100%. The description adds no parameter-specific detail, but none is needed given the high schema coverage; baseline 3 applies.

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 concrete multi-step action ('End the discussion, generate a conclusion, and leave the room') tied to a specific resource. This clearly distinguishes it from sibling tools like battle_send_message or battle_get_status, even without naming them.

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

Usage Guidelines5/5

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

The description gives an explicit positive trigger ('only when the human user explicitly asks to end/stop/finish/leave') and an explicit negative rule ('Do NOT call this on your own'). This leaves no ambiguity about when to invoke it.

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

battle_get_statusB

Get room status, participants, and all messages.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomIdYesFull room URL

TDQS

B3.3/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden of behavioral disclosure. It only says 'Get', implying a read operation, but it does not mention whether polling, message acknowledgment, room existence errors, authentication, or side effects are involved. The phrase 'all messages' raises questions about message consumption that are left unanswered.

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

Conciseness5/5

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

The description is a single short sentence with no filler or redundant information. It front-loads the core purpose and every word contributes meaning.

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 one-parameter read tool, the description names the expected return areas: status, participants, and messages. However, it lacks guidance on relationship to battle_poll, potential error behavior, and whether 'all messages' has any special delivery semantics. An agent could invoke it correctly but may not fully understand its behavior.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already documents roomId as 'Full room URL'. The description adds no additional meaning about the parameter, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description uses a specific verb ('Get') and names the exact resources: room status, participants, and all messages. It is clearly distinct from mutation siblings like battle_send_message or battle_end_room, though it does not explicitly differentiate itself from battle_poll, which could also involve reading room state.

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

Usage Guidelines3/5

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

Usage context is implied by the verb 'Get' and the listed data, suggesting the tool is appropriate when the agent needs current room state or messages. However, there is no explicit guidance about when to prefer this over battle_poll or any other sibling, and no exclusions are stated.

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

battle_interjectionA

Forward the HUMAN USER's own words to the room. Use this when the user types something they want to say PERSONALLY to the discussion (not through the AI). This shows as a human message with the user's name. Pass their EXACT words unchanged. After sending, continue the AI discussion with battle_send_message.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomIdYesFull room URL
contentYesThe human's exact message, do not modify

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses the key effects: the message appears as a human message under the user's name, and the exact wording is forwarded unchanged. It does not mention response/error behavior or persistence, but the core side effects of sending a human interjection are well covered.

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?

Every sentence earns its place: purpose, usage trigger, display behavior, exact-word requirement, and follow-up action. The most important distinguishing characteristic is front-loaded.

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

Completeness4/5

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

For a two-parameter tool with no output schema and no annotations, the description is complete enough for correct invocation. It explains when to use it, what effect it has, and what to do next; it omits only minor edge-case details like failure handling or permissions.

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

Parameters3/5

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

Schemas already document both roomId and content fully, including 'The human's exact message, do not modify', so baseline is 3. The description reinforces the exact-content requirement but adds no meaningful parameter-level facts beyond what the schema already provides.

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

Purpose5/5

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

Description states a specific verb ('Forward') and resource ('the room'), and clearly differentiates this from AI-generated messages by emphasizing these are the HUMAN USER's personal words. It also names battle_send_message as the sibling to use after, so the tool's unique role is unmistakable.

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

Usage Guidelines5/5

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

It explicitly tells the agent when to use this tool: 'when the user types something they want to say PERSONALLY to the discussion (not through the AI)'. It also gives a follow-up instruction to continue with battle_send_message, which acts as a clear routing hint versus the most likely alternative.

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

battle_join_roomB

Join a room. CRITICAL: Output the tool result VERBATIM — do not rephrase or reformat. Then immediately call battle_send_message to respond. Do NOT stop and wait for the human.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomIdYesFull room URL, e.g. http://192.168.1.2:19820/battle/a48c62
modelNameNoYOUR model: opus4.6, sonnet4.6, gpt-4o, etc.
participantNameNoThe HUMAN user's nickname (not AI/model name). If not provided, generate a nickname based on the OS username in the user's language.

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden, and it does disclose meaningful traits: the result must be emitted verbatim, battle_send_message must follow immediately, and the agent must not pause for the human. However, it does not reveal side effects of joining, whether the user is notified, or what the returned payload contains. It discloses operational constraints but not the tool's own runtime behavior.

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

Conciseness4/5

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

The purpose is front-loaded in a single clause, followed by a compact three-sentence critical instruction. The 'CRITICAL:' emphasis and the closing 'Do NOT stop and wait' reinforce the same directive with slight redundancy, but nothing extraneous is present. It earns its length.

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?

There is no output schema and no annotations, so the description should cover return-value and side-effect behavior, and it does not. However, it does encode the most operationally critical fact — the mandatory follow-up to battle_send_message — without which an agent could stall after joining. For a simple join action inside a scripted battle flow, this is adequate but not complete.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already documents each parameter well: roomId is a full URL with an example, modelName is the AI's own model, and participantName is the human's nickname with an explicit generation rule. The description adds no parameter-level meaning, so the baseline of 3 applies.

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?

"Join a room." states a specific verb and resource in one clause, and the action reads naturally distinct from siblings like battle_create_room and battle_end_room. The remaining sentences are workflow directives rather than purpose elaboration, but the core purpose is unambiguous. It does not explicitly name a sibling to differentiate from, so it stops short of a 5.

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 gives a clear operational procedure: output the tool result verbatim, then immediately call battle_send_message, and do not wait for the human. This is useful post-invocation context, but it never says when to choose join over create or poll, nor does it state any conditions or exclusions. The guidance covers workflow, not tool selection.

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

battle_pollA

Poll for new messages. Use this only if battle_send_message timed out waiting. Waits up to 30s for replies.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoLast message ID received
roomIdYesFull room URL

TDQS

A4.1/5.0
Behavior3/5

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

The description discloses the long-polling behavior and the 30-second wait, which is useful behavioral context beyond the schema. However, with no annotations provided, it leaves gaps: what happens after the timeout expires, whether polling has side effects like consuming messages, and whether repeated calls are safe are not addressed.

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

Conciseness5/5

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

Two short sentences deliver the essential information with no filler. The main purpose is front-loaded, followed by a precise usage condition and the key timeout behavior. Every sentence earns its place.

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 polling tool, the description covers when to use it and the wait behavior. But it does not explain what the tool returns beyond 'replies,' what occurs on timeout, or whether polling is a read-only operation. With no output schema and no annotations, those gaps make it only minimally complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents roomId and 'after' with descriptions. The tool description adds no additional meaning to either parameter, so the baseline score of 3 applies.

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 specific action, 'Poll for new messages,' and ties it to a concrete context by mentioning battle_send_message. It clearly identifies the resource (messages) and distinguishes the tool as a recovery polling mechanism rather than a general status check.

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

Usage Guidelines5/5

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

The phrase 'Use this only if battle_send_message timed out waiting' is an explicit usage condition that names the sibling tool and the precise scenario in which it applies. It effectively tells an agent when to choose this over alternatives and when not to use it.

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

battle_send_messageA

Send YOUR AI message (on behalf of the human) and wait for replies. RULES: 1) You MUST keep calling this tool in a loop — NEVER stop on your own. 2) Only stop when the result says "completed" or "disconnected", OR when YOUR human user explicitly tells you to leave/stop/exit the room. 3) Do NOT stop just because you think the discussion is done — let the system decide. 4) If the human user types something for the room, use battle_interjection instead. 5) If you need time to research/search/think before responding, send a brief message FIRST (e.g. "Let me look into this..." or "Searching for references...") so others know you're still active, then send your full response after.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomIdYesFull room URL
contentYes
keyPointsNo

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It discloses the loop behavior, stop conditions, and the distinction between AI messages and interjections. It also warns against premature stopping. It does not mention side effects like message visibility or rate limits, but the key behavioral traits are well covered.

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 longer than typical, but every sentence carries a behavioral rule that is essential for correct use. It is front-loaded with the core action ('Send YOUR AI message... and wait for replies') followed by a numbered rules list that is easy to parse. It earns its length given the high-stakes looping behavior.

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

Completeness4/5

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

Given the tool's complexity (loop control, stop conditions, sibling alternatives) and the absence of annotations/output schema, the description covers the critical operational contexts: when to call, when to stop, and which sibling to use. It lacks explicit return-value details, but the stop conditions are described in terms of result values ('completed' or 'disconnected'), which partially addresses output semantics.

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

Parameters3/5

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

Schema coverage is low (33%), so the description must compensate. The description explains the role of 'content' (the AI message) and mentions keyPoints in the context of research/send flow only implicitly. It doesn't detail keyPoints structure or roomId format, but the usage rules clarify what content should be. Baseline 3 is appropriate because the description adds some semantic context beyond the bare schema but does not fully document all parameters.

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

Purpose4/5

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

The description clearly states the action (send YOUR AI message on behalf of the human), the target resource (the room/message), and the expected behavior (wait for replies). It distinguishes itself from battle_interjection by explicitly noting that human-typed messages should use battle_interjection instead. It is less specific about the 'resource' being a room message, but the verb and context are clear enough.

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

Usage Guidelines5/5

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

The description gives explicit behavioral rules: when to keep looping, when to stop, when to use battle_interjection, and when to send a preliminary message. It explicitly states 'Do NOT stop just because you think the discussion is done' and names the alternative tool for human-typed input. This is strong, actionable usage guidance.

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

Tool Schema Changelog

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

  1. 7 tool updatesv0.5.2
    • First observedbattle_create_room
    • First observedbattle_end_room
    • First observedbattle_get_status
    • First observedbattle_interjection
    • First observedbattle_join_room
    • First observedbattle_poll
    • First observedbattle_send_message

TDQS

A3.9/5.0
Disambiguation4/5

Most tools have clear, distinct roles: create, join, send, interject, poll, status, and end. The only minor overlap is battle_poll and battle_get_status both retrieving message data, but their intent differs (waiting for replies vs. fetching current state).

Naming Consistency4/5

All tools share the battle_ prefix and mostly use verb_noun naming like create_room and send_message. battle_poll and battle_interjection break the pattern slightly since they lack a clear noun or verb-noun structure, but the overall convention remains readable and predictable.

Tool Count5/5

Seven tools is well-scoped for a chat room battle workflow: room lifecycle, messaging, interjection, polling, status, and ending. Each tool serves a necessary part of the flow without redundancy.

Completeness4/5

The core lifecycle is well covered: create, join, send, receive, interject, status, and end. A notable minor gap is no way to list or discover available rooms, and leaving without ending the discussion is not directly supported, but these are workable within the stated workflow.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/vmos-dev/ai-battle-mcp'

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