Skip to main content
Glama
elevanaltd

debate-hall-mcp

by elevanaltd

debate-hall-mcp

License CI PyPI version Python 3.11+

MCP server for Wind/Wall/Door multi-perspective debate orchestration with production-oriented design patterns.

Production Status: This server implements production-minded patterns (validation, bounded operation, atomic persistence) suitable for development and small-scale deployments. For larger production deployments, see production deployment considerations.

Table of Contents


Related MCP server: Roundtable

For AI Agents

===AGENT_BOOTSTRAP===
DEV_BOOTSTRAP::scripts/dev-bootstrap.sh
DEV_HOOKS_OPT_IN::scripts/install-git-hooks.sh[core.hooksPath=.githooks]→DEBATE_HALL_AUTO_BOOTSTRAP=1
SKILL::skills/debate-hall/SKILL.md
WORKFLOW::init→turn→get→close
AGENTS::agents/README.md[Wind/Wall/Door definitions]
COGNITIONS::agents/cognitions/[PATHOS|ETHOS|LOGOS overlays]
RECIPES::[SPEED(3)|STANDARD(12)|DEEP(36)|FORTRESS|LABORATORY]
===END===

What It Does

  • Structured debates with Wind (explore) → Wall (constrain) → Door (synthesize)

  • Deterministic state with turn limits, hash chain, and verifiable transcripts

  • Multiple modes: Fixed sequence or mediated orchestration

  • GitHub integration: Sync debates to Discussions, create ADRs from synthesis

  • OCTAVE export: Semantic compression format with tamper-proof sealing (v1.0.0)

Quick Start

1. Install

pip install debate-hall-mcp

2. Configure MCP Client

Add to Claude Desktop (claude_desktop_config.json) or Claude Code (~/.claude.json):

{
  "mcpServers": {
    "debate-hall": {
      "command": "debate-hall-mcp"
    }
  }
}

3. Start a Debate

User: Start a debate about whether to rewrite our backend in Rust

Claude: [calls init_debate with thread_id="rust-rewrite",
         topic="Should we rewrite our backend in Rust?"]

4. Run the Dialectic

Wind → "What if we rewrote in Rust? Memory safety, performance..."
Wall → "Yes, but: team expertise, ecosystem maturity, timeline..."
Door → "Therefore: Profile hotspots first, consider Rust for specific components..."

That's it. For GitHub integration, see Configuration.

Installation

PyPI:

pip install debate-hall-mcp
# or
uv pip install debate-hall-mcp

From source:

git clone https://github.com/elevanaltd/debate-hall-mcp
cd debate-hall-mcp
./scripts/dev-bootstrap.sh
uv pip install -e ".[dev]"

Development bootstrap (worktrees/branches)

One-command setup:

./scripts/dev-bootstrap.sh

Optional: enable repo-local git hooks (prints reminder, or auto-runs bootstrap when DEBATE_HALL_AUTO_BOOTSTRAP=1):

./scripts/install-git-hooks.sh

MCP Tools

Core Tools

Tool

Purpose

init_debate

Create debate: thread_id, topic, mode?, max_turns?

add_turn

Record turn: thread_id, role, content

get_debate

View state: thread_id, include_transcript?

close_debate

Finalize: thread_id, synthesis, output_format?, seal?

Mode Tools

Tool

Purpose

pick_next_speaker

Set next speaker (mediated mode)

Admin Tools

Tool

Purpose

force_close_debate

Emergency shutdown (I5 kill switch)

tombstone_turn

Redact turn (preserves hash chain)

GitHub Tools

Tool

Purpose

github_sync_debate

Sync turns to GitHub Discussion/Issue

ratify_rfc

Generate ADR from synthesis, create PR

human_interject

Inject human GitHub comment into debate

Auto-Orchestration Tools

Tool

Purpose

run_debate

Run complete Wind→Wall→Door debate automatically

resume_debate

Resume a PAUSED debate after failure

Configuration

Minimal (No GitHub)

The MCP config above is sufficient for local debates.

With GitHub Integration

  1. Copy .env.example to .env

  2. Add your GitHub token:

    GITHUB_TOKEN=ghp_your_token_here

Token scopes needed: repo, write:discussion Get one at: GitHub → Settings → Developer settings → Personal access tokens

Tier Configuration (Auto-Orchestration)

The run_debate tool uses tier configurations to determine which AI providers to use for each role.

Quick Start:

# Copy the template and add your API key
cp tiers.yaml.example tiers.yaml
export OPENROUTER_API_KEY=your-key-here

Resolution order:

  1. DEBATE_HALL_TIERS_FILE environment variable

  2. ./tiers.yaml (project root)

  3. ~/.debate-hall/tiers.yaml (user home)

  4. Built-in defaults

See tiers.yaml.example for all configuration options including CLI providers and custom prompts.

Example tier configuration:

# ~/.debate-hall/tiers.yaml
standard:
  wind:
    provider: cli      # Use external CLI (claude, codex, gemini)
    cli: claude
    role: wind-agent   # Optional: role for PAL MCP
  wall:
    provider: cli
    cli: codex
  door:
    provider: cli
    cli: gemini
  settings:
    consensus_required: true   # Wind/Wall must approve synthesis
    max_turns: 12
    max_refinement_loops: 3

premium:
  wind:
    provider: openrouter       # Use OpenRouter API
    model: anthropic/claude-3-opus
  wall:
    provider: openrouter
    model: openai/gpt-4-turbo
  door:
    provider: openrouter
    model: google/gemini-pro
  settings:
    consensus_required: true
    max_turns: 20
    max_refinement_loops: 5

Provider options:

  • cli: External AI CLIs (requires claude, codex, or gemini CLI installed)

  • openrouter: OpenRouter API (requires OPENROUTER_API_KEY env var)

Settings:

  • consensus_required: If true, Wind and Wall must approve Door's synthesis

  • max_turns: Maximum total turns in debate

  • max_refinement_loops: How many times Door can refine after rejection

See Usage Patterns for detailed configuration options.

Example

Thread: "microservices-vs-monolith"
Topic: "Should we migrate to microservices?"

[WIND] "What if we decomposed into services? Independent scaling,
        technology diversity, team autonomy..."

[WALL] "Yes, but we have 3 developers. Microservices add operational
        complexity, network latency, distributed transactions..."

[DOOR] "Therefore: Start with a modular monolith. Design service
        boundaries now, but keep deployment unified. Extract services
        only when team grows or specific scaling needs emerge."

Documentation

Doc

Content

Usage Patterns

Recipes, tuning, agent tiers, cognition prompts

Evidence

Empirical research validating the approach

Architecture

Execution tiers, Wall content contract

Examples

Real multi-model debate patterns

Agents

Wind/Wall/Door agent definitions

Skills

AI agent skill installation

The Pattern

Three cognitive voices in tension:

Role

Cognition

Voice

Wind

PATHOS

"What if..." — expansive, visionary

Wall

ETHOS

"Yes, but..." — grounding, critical

Door

LOGOS

"Therefore..." — synthesizing, decisive

Architecture Immutables

ID

Principle

I1

Cognitive State Isolation — server manages state

I2

OCTAVE Binding — exportable semantic transcripts

I3

Finite Closure — hard turn/round limits

I4

Verifiable Ledger — SHA-256 hash chain

I5

Safety Override — admin kill switch

Production Deployment Considerations

While debate-hall-mcp implements production-minded patterns (validation, bounded operation, atomic persistence), there are considerations for larger-scale production deployments.

For comprehensive deployment guidance, see Production Deployment Guide.

Current Strengths

  • Deterministic behavior: Rule-based validation with no LLM dependency

  • Resource limits: Hard turn/round limits prevent runaway sessions

  • Atomic persistence: File writes use atomic replace with fsync

  • Concurrency control: File locking with Compare-and-Swap (CAS) for race prevention

  • Content verification: SHA-256 hash chain with optional tamper detection

  • GitHub integration: Rate-limit handling and feature toggles

Quick Configuration

Setting

Environment Variable

Recommended Value

State directory

DEBATE_HALL_STATE_DIR

/var/lib/debate-hall/

OpenRouter API

OPENROUTER_API_KEY

Use secret manager

GitHub token

GITHUB_TOKEN

Use secret manager

Production Checklist

Before deploying at scale:

  • Configure DEBATE_HALL_STATE_DIR to dedicated path outside repository

  • Set proper file permissions (600 for state files, 700 for directory)

  • Use explicit secret injection (avoid .env in production)

  • Plan for state backup/retention

  • Monitor file lock contention if using multiple workers

  • Consider database backend for >10 concurrent instances (#106)

Well-suited for:

  • Development and testing workflows

  • Single-instance or low-concurrency deployments

  • Scripted automation with sequential debates

  • Research and experimentation

Requires additional work for:

  • High-concurrency multi-instance production environments

  • Large-scale orchestration with 10+ concurrent debates

Contributing

See CONTRIBUTING.md for development setup, testing, and guidelines.

# Quick dev setup
git clone https://github.com/elevanaltd/debate-hall-mcp
cd debate-hall-mcp
uv venv && source .venv/bin/activate
uv pip install -e ".[dev]"

# Run tests (800+ tests)
pytest

# Quality checks
ruff check src tests && mypy src && black --check src tests

License

Apache-2.0 — Built with HestAI and MCP Python SDK.

Available Tools

17 tools
add_turnC

Record turn. role:Wind|Wall|Door. cognition:PATHOS|ETHOS|LOGOS→validates content.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYes
modelNo
contentYes
cognitionNo
thread_idYes
agent_roleNo
token_inputNo
token_totalNo
token_outputNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/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. It discloses that content is validated and enumerates acceptable role and cognition values, which are behavioral constraints not present in the schema. However, it does not explain what happens on validation failure, whether the operation is reversible, or any side effects, so it only partially discloses behavior.

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

Conciseness4/5

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

The description is extremely brief and front-loads the action. Each clause adds information: the verb, the role domain, and the cognition-to-validation relationship. It avoids fluff but is so terse that some information is cryptic; still, it demonstrates discipline and earns a high score for conciseness.

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

Completeness2/5

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

Given the complex debate context and 9 parameters, the description is notably incomplete. It does not define what qualifies as a valid 'turn', explain the Wind/Wall/Door roles or PATHOS/ETHOS/LOGOS cognition types, or connect this tool to the surrounding debate lifecycle. An output schema exists, but the description alone is not enough for an agent to use it correctly without external domain knowledge.

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 is the only source of parameter meaning beyond the schema. It adds value for 'role' and 'cognition' by listing allowed values and implies 'content' is validated, but it leaves thread_id, agent_role, and the token_* parameters completely unexplained. With 9 parameters, this is insufficient compensation for the coverage gap.

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 the core action 'Record turn' with a clear verb and resource. It also lists allowed role and cognition values, which adds specificity and helps distinguish from sibling tools like tombstone_turn. However, it does not explicitly contrast with any sibling, 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 Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as pick_next_speaker or human_interject. It is a standalone imperative without context about the debate workflow or conditions for recording a turn, leaving the agent to infer usage from the name and siblings.

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

close_debateC

Finalize debate. synthesis:Door's final resolution->closes room.

Args: output_format: 'json' (default), 'octave', or 'both' seal: Add cryptographic seal to OCTAVE output for tamper detection (v1.0.0) export_decision: Export DecisionRecord to context directory for search indexing (Issue #138). Creates an OCTAVE file in .hestai/state/context/decisions/ that search_decisions can find.

ParametersJSON Schema
NameRequiredDescriptionDefault
sealNo
synthesisYes
thread_idYes
output_formatNo
export_decisionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden. It discloses side effects: closing the room and optionally creating an OCTAVE file in .hestai/state/context/decisions/ when export_decision is true. However, it does not state whether finalization is reversible, whether it requires special permissions, or what happens to the thread after closing.

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 relatively compact and front-loaded with 'Finalize debate,' but the arrow notation and 'Door's' phrasing are confusing. The Args section is clear for the three parameters it covers, but the overall structure is not polished and would benefit from clearer phrasing.

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 five-parameter tool with no annotations, the description is incomplete. It covers optional behaviors well but omits the required parameters' semantics, fails to differentiate from force_close_debate, and gives no usage context. The presence of an output schema helps, but it does not fill these gaps.

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 0%, so the description must compensate. It explains output_format, seal, and export_decision with useful detail, but it leaves the required thread_id and synthesis parameters essentially undocumented. The odd 'synthesis:Door's final resolution' line gives only a vague hint about synthesis.

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 opens with 'Finalize debate' and states the resource and action clearly: it finalizes a debate and closes the room. The phrase 'synthesis:Door's final resolution->closes room' is cryptic and slightly garbled, but the core purpose is still identifiable and distinct from siblings like force_close_debate.

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 call this tool versus force_close_debate or other debate lifecycle tools. It does not state prerequisites, alternatives, or conditions under which normal finalization should be preferred over force-closing.

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

consultA

Create advisory consultation session. advisor answers questioner's question.

Creates a two-party mediated session where a questioner asks an advisor for guidance. The question is recorded as the first turn.

Args: topic: What the consultation is about advisor_role: Who to consult (e.g. "TMG", "CE") question: The specific question being asked questioner_role: Who is asking (default: "Questioner") thread_id: Custom thread ID (auto-generated if omitted) context: Additional context for the advisor max_turns: Consultation turn limit (default: 6)

Returns: Dictionary with thread_id, status, session_type, question, advisor_role, questioner_role, awaiting, turn_count

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYes
contextNo
questionYes
max_turnsNo
thread_idNo
advisor_roleYes
questioner_roleNoQuestioner

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description is the only behavioral disclosure. It states the creation of a two-party mediated session, the question being recorded as the first turn, and a return dictionary. However, it does not disclose side effects like idempotency, thread lifecycle, or prerequisites—adequate but not exhaustive.

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 front-loaded with the main purpose, but includes redundant phrasing—'Create advisory consultation session' followed by 'Creates a two-party mediated session.' The Args list is informative but adds length. It could be more concise without losing clarity.

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

Completeness4/5

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

The description covers the action, parameters, and return dictionary, making it largely complete for a creation tool. However, it omits usage context or exclusions, which would make it fully rounded. Given the output schema exists and parameters are well-described, it is adequate.

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. The 'Args:' section provides meaningful descriptions for each parameter, including defaults and examples (e.g., advisor_role: 'TMG', 'CE'). This fully addresses the schema gap and adds clear semantic value.

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 'Create advisory consultation session' and explains the two-party structure and the first turn being recorded. This is a specific verb+resource with distinct intent, and it distinguishes itself from debate-focused siblings like run_debate or init_debate.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, nor does it mention conditions for choosing a different tool. It solely describes what the tool does, leaving usage context entirely to the agent's inference.

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

conveneA

Assemble committee for group decision. members respond, chair manages order.

Creates a mediated committee session where multiple agents deliberate. Supports go_nogo (GO/NO-GO extraction), vote, and review decision types.

Args: topic: What the committee is deciding members: Committee member roles (e.g. ["CRS", "CE"]) brief: The brief/description for the committee chair_role: Who chairs the committee (default: "Chair") decision_type: "go_nogo" | "vote" | "review" (default: "review") thread_id: Custom thread ID (auto-generated if omitted) context: Additional context for the committee max_turns: Committee turn limit (default: 12)

Returns: Dictionary with thread_id, status, session_type, decision_type, chair_role, members, awaiting, turn_count

ParametersJSON Schema
NameRequiredDescriptionDefault
briefYes
topicYes
contextNo
membersYes
max_turnsNo
thread_idNo
chair_roleNoChair
decision_typeNoreview

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It explains that the tool creates a mediated session, that members respond and the chair manages order, and it lists the supported decision types. It also returns a status indicating the session is 'awaiting' input. This is good behavioral context, though it could mention potential side effects (e.g., asynchronous nature or state changes) but which are implied by 'session' and 'awaiting'.

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 well-structured with an opening summary, followed by a concise list of arguments and returns. It is appropriately sized for an 8-parameter tool. It front-loads the core action and decision types. A slight deduction for redundancy: the first two sentences overlap somewhat ('Assemble committee' vs 'Creates a mediated committee session').

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 (8 params, 3 required, no annotations) and the presence of an output schema, the description covers the essentials: purpose, decision types, parameters, and return fields. It lacks explicit examples of usage or edge cases, but the output schema handles return structure. The description is sufficient for an agent to call the tool correctly, though it could be more explicit about when to choose this over debate tools.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It provides a clear list of all 8 parameters with brief explanations in the Args block, including defaults and examples for members. It adds meaning beyond the schema (e.g., what 'members' are, what 'decision_type' options are). It covers most parameters adequately, but some (like context) are only glossed over.

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 that the tool assembles a committee for group decision-making, with a specific verb ('assemble') and resource ('committee'). It also lists supported decision types, which helps distinguish it from siblings like init_debate that likely start a different deliberation format. However, it does not explicitly compare with siblings, so it misses the differentiation point for 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 Guidelines4/5

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

The description implies usage when a committee-style decision is needed, and the mention of decision types (go_nogo, vote, review) gives context. However, it does not explicitly state when not to use this tool or mention alternative siblings like init_debate or consult. The absence of exclusions drops it from a 5.

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

extract_decision_recordA

Extract a DecisionRecord from a closed debate.

The "Cognitive Notary" product - a verified record that can be indexed, searched, and cited by future decision-making agents.

Args: thread_id: Thread identifier of closed debate

Returns: Dictionary with DecisionRecord fields: - thread_id, topic, decided_at (identity) - synthesis, decision_hash, status (outcome) - wind_perspectives, wall_constraints, door_refinements (rationale) - consensus_reached, consensus_votes, refinement_count (validation) - extracted_at, source_hash, turn_count (provenance)

Raises: FileNotFoundError: If thread doesn't exist ValueError: If debate is not closed (ACTIVE or PAUSED status)

ParametersJSON Schema
NameRequiredDescriptionDefault
thread_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are present, so the description carries the full burden. It discloses error behavior (FileNotFoundError, ValueError) and the full return structure, which is helpful. However, it never explicitly states whether the operation is read-only or has side effects. 'Extract' implies no mutation, but the agent is left to infer it, which is a gap for a tool with zero annotation coverage.

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

Conciseness4/5

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

The description is well-structured with sections for Args, Returns, Raises. The introductory line is direct. The 'Cognitive Notary' context sentence is extra but brief and not harmful. Overall, it is efficient and 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 one-parameter tool with an existing output schema, the description covers the argument semantics, the return categories, and error conditions. It does not mention authentication or rate limits, but these are expected to be covered elsewhere; the missing piece is an explicit read-only statement, which is already noted under behavioral transparency. Overall the description is functionally complete.

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 input schema only defines thread_id as a string with no description (0% coverage). The description's Args section adds the meaning 'Thread identifier of closed debate', which is essential and compensates for the schema gap. It could be more detailed (e.g., where to find it), but for a single obvious parameter it's sufficient.

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 leads with a specific verb ('Extract') and a concrete resource ('DecisionRecord'), and qualifies the source as 'a closed debate'. This distinguishes it from siblings like search_decisions (search) and get_debate (get the debate itself). The purpose is unambiguous and not a tautology.

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 clearly states the prerequisite that the debate must be closed, and documents that ValueError is raised for ACTIVE or PAUSED debates, so an agent knows when it is appropriate to call. However, it does not explicitly name alternative tools or say 'do not use when...' for specific scenarios beyond the state condition. Clear context, no exclusions.

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

force_close_debateC

I5:safety override. reason:logged→force closes any state.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonYes
thread_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool is a safety override and that the reason is logged, but it does not explain side effects, irreversibility, or what 'any state' means. The behavior is vague and potentially destructive without adequate disclosure.

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

Conciseness2/5

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

The description is extremely short, but it is not effectively concise—it is cryptic and under-specified. The 'I5:safety override' prefix and 'reason:logged→' notation are unclear and waste the reader's effort decoding them.

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

Completeness2/5

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

Given the tool is a safety override with destructive implications, the description is inadequate. It does not explain what 'any state' means, what happens to the debate, whether it is reversible, or how it differs from close_debate. The output schema exists but the description still fails to provide essential context for a potentially destructive operation.

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%, and the description does not explain the parameters. 'reason' and 'thread_id' are self-explanatory from their names, but the description adds no meaning about how they are used or why they are required. The 'reason:logged' hint is the only parameter-related context, and it is cryptic.

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

Purpose2/5

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

The description 'I5:safety override. reason:logged→force closes any state.' is cryptic and does not clearly state what the tool does. It mentions 'force closes any state' but lacks a clear verb-resource relationship and does not distinguish it from sibling tools like close_debate. The 'I5:safety override' prefix is unexplained jargon.

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

Usage Guidelines2/5

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

The description implies this is a safety override for force-closing debates, but it does not explicitly state when to use it versus close_debate or other siblings. No exclusions or alternative conditions are provided, leaving the agent to guess when this tool is appropriate.

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

get_debateB

State+optional transcript. include_transcript→adds turn history. context_turns:limit depth.

ParametersJSON Schema
NameRequiredDescriptionDefault
thread_idYes
context_turnsNo
include_metadataNo
include_transcriptNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral burden. It adds useful behavior details, such as include_transcript adding turn history and context_turns limiting depth, but it never explicitly states that this is a read-only operation or mentions permissions, errors, or side effects.

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

Conciseness4/5

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

The description is extremely short, with no filler, and front-loads the core return shape first. The arrow-based shorthand is compact but slightly cryptic, which prevents a perfect score.

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 having an output schema, the description is incomplete given four parameters, no annotations, and a large sibling set. It omits include_metadata semantics and provides no usage differentiation, leaving the agent to infer important context.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It adds meaning for context_turns and include_transcript, but it does not explain include_metadata or the thread_id relationship, though thread_id is fairly self-evident from the name.

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 communicates that the tool returns debate state and optionally a transcript, and the name get_debate identifies the resource. It is clear on the basic purpose, but it does not differentiate itself from siblings like search_decisions or extract_decision_record.

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 about when to use this tool versus alternatives such as search_decisions or resume_debate. The parameter notes describe effects, not selection criteria or when-not-to-use conditions.

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

github_sync_debateA

Sync debate turns to GitHub Discussion/Issue comments.

Posts new turns as formatted comments with cognition headers. Idempotent: tracks synced turns to avoid duplicates.

Args: thread_id: The debate thread to sync repo: Repository in owner/repo format target_id: GitHub node ID (discussions) or issue number (issues) target_type: 'discussion' (GraphQL) or 'issue' (REST)

Note: Can be disabled by setting GITHUB_TOOLS_ENABLED=false

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
target_idYes
thread_idYes
target_typeNodiscussion

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations present, the description carries the full burden of behavioral disclosure. It explicitly states idempotency ('tracks synced turns to avoid duplicates'), the write behavior ('Posts new turns'), and the two API pathways (GraphQL vs REST). It does not mention authentication or rate limits, but the core behavioral risks are covered well.

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 compact and well-structured: purpose first, then behavior, then args, then an operational note. Every sentence adds value and the Args block is easy to scan. There is no filler or repetition of the tool name.

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?

The description is complete for an agent to invoke the tool correctly: all four parameters are semantically explained, the idempotency behavior is disclosed, and the GitHub target ambiguity (discussion vs issue) is resolved. Since an output schema exists, return-value details are not required here.

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 schema provides no property descriptions (0% coverage), so the description must fully compensate. It does: thread_id is explained as the debate thread to sync, repo is given in owner/repo format, target_id distinguishes GitHub node ID from issue number, and target_type is mapped to 'discussion' (GraphQL) or 'issue' (REST). This is exactly the semantic content an agent needs.

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 first sentence uses a specific verb ('Sync') with a clear resource ('debate turns') and destination ('GitHub Discussion/Issue comments'). The follow-up 'Posts new turns as formatted comments with cognition headers' removes any ambiguity about what the tool actually does. It is clearly distinguished from all sibling tools, which are debate-management operations rather than GitHub synchronization.

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 makes the context of use clear: this is the tool for mirroring debate turns into GitHub discussions or issues. It does not name alternatives, but no sibling tool performs GitHub syncing, so exclusion guidance is not necessary. The note about GITHUB_TOOLS_ENABLED=false adds a useful operational condition.

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

human_interjectB

Inject human GitHub comment into active debate as context.

Fetches comment from GitHub and adds to debate context. Detects which role was replied to for injection typing.

Args: thread_id: The debate thread to inject into repo: Repository in owner/repo format target_id: GitHub node ID (discussions) or issue number (issues) comment_id: Comment node ID (DC_...) or issue comment ID (numeric)

Note: Can be disabled by setting GITHUB_TOOLS_ENABLED=false

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
target_idYes
thread_idYes
comment_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses that the tool fetches from GitHub, adds to debate context, and detects which role was replied to. It also mentions a feature flag that can disable the tool. However, it does not disclose side effects like whether the debate state is mutated, whether the comment is permanently stored, or any permission requirements.

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 with the main purpose. The Args block is useful and the note about the feature flag is relevant. It is slightly repetitive ('Inject... as context' vs 'Fetches... and adds to debate context') but overall efficient.

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

Completeness3/5

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

The tool has 4 required parameters, no annotations, and an output schema. The description covers the core behavior and parameter meanings, but lacks details on return values, error conditions, and the exact distinction between discussion and issue IDs. Given the complexity of GitHub API interactions, more context would help an agent call it correctly.

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 provides brief explanations for all four parameters in the Args block, but these are terse and mostly restate the parameter names (e.g., 'thread_id: The debate thread to inject into'). It does not explain formats like 'DC_...' beyond a parenthetical, nor how target_id differs between discussions and issues in practical terms.

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 ('Inject') and resource ('human GitHub comment into active debate as context'), and clarifies it fetches a comment and adds it to debate context. It distinguishes itself from siblings like github_sync_debate by focusing on injecting a single human comment, though it doesn't explicitly name a sibling alternative.

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 a human comment needs to be injected into an active debate. It does not explicitly state when not to use it or name alternatives like github_sync_debate. The note about GITHUB_TOOLS_ENABLED=false provides a conditional usage constraint, but no explicit comparison to sibling tools.

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

init_debateC

Create room. mode:fixed|mediated. strict_cognition->validate turns.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNofixed
topicYes
max_turnsNo
thread_idYes
max_roundsNo
octave_modeNo
strict_cognitionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It adds a cryptic behavior hint ('strict_cognition->validate turns') but does not explain side effects, whether creation is idempotent, permission needs, or what 'validate turns' actually entails.

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 no filler, but the telegraphic fragments sacrifice clarity. 'mode:fixed|mediated' and 'strict_cognition->validate turns' are compressed to the point of being cryptic rather than helpful.

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 7-parameter tool with no annotations and no schema descriptions, this description is far from complete. It omits required parameters, optional controls, and the tool's place in the debate workflow. The output schema exists but does not compensate for missing invocation guidance.

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% and there are 7 parameters. The description adds limited semantics for mode ('fixed|mediated') and strict_cognition ('validate turns'), but does not mention thread_id, topic, max_turns, max_rounds, or octave_mode, leaving most parameters unexplained.

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

Purpose3/5

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

The description says 'Create room,' which gives a verb and object, but 'room' is vague and doesn't explicitly say 'debate room' or distinguish this from sibling tools like convene or run_debate. The tool name init_debate provides some disambiguation, but the description itself lacks specificity.

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 init_debate versus alternatives such as add_turn, run_debate, or convene. It does not state prerequisites, ordering, or scenarios where another tool would be more appropriate.

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

pick_next_speakerB

Mediated mode only. role:Wind|Wall|Door→sets next expected speaker.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYes
thread_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/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 indicates a state change ('sets next expected speaker') but does not mention side effects, permissions, reversibility, failure modes in non-mediated mode, or any impact on debate state. 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.

Conciseness5/5

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

The description is a single, tightly packed line. It front-loads the critical mode constraint ('Mediated mode only') and then gives the role mapping. There is no filler or redundancy; every word contributes.

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 tool is low-complexity (2 required params, simple mutation) and an output schema exists, so return values are covered. However, the description omits what 'thread_id' refers to and what 'next expected speaker' means in the broader debate flow. It is minimally adequate but leaves contextual gaps that an agent must infer.

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 0%, so the description must compensate. It adds meaning to the 'role' parameter by listing allowed values (Wind|Wall|Door), but it provides no additional semantics for 'thread_id', which is left to the parameter name. Partial compensation for a coverage gap.

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 action ('sets next expected speaker') and resource with a clear mode constraint ('Mediated mode only'). It conveys the role mapping (Wind|Wall|Door), which helps distinguish this from generic debate tools, though it doesn't explicitly name sibling alternatives.

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 phrase 'Mediated mode only' implies when the tool is appropriate, but it does not explain when to prefer this over siblings like add_turn or run_debate, nor does it give exclusion criteria. The usage context is implied rather than explicitly contrasted.

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

ratify_rfcA

Generate ADR from Door synthesis and create PR.

Requires: Debate must be closed with synthesis.

Args: thread_id: The debate thread to ratify repo: Repository in owner/repo format adr_number: Explicit ADR number (required to prevent collisions) target_id: Optional reference ID for linking (e.g., discussion node ID) adr_path: Path for ADR file in repo (default: docs/adr/)

Returns: Dictionary with pr_url, pr_number, adr_path, branch_name

Note: Can be disabled by setting GITHUB_TOOLS_ENABLED=false

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
adr_pathNodocs/adr/
target_idNo
thread_idYes
adr_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output 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 carries the burden of behavioral disclosure. It explicitly reveals that the tool creates a PR, making the mutating nature clear, and includes a useful configuration note about GITHUB_TOOLS_ENABLED=false. However, it does not mention permissions, reversibility, or failure behavior, which would be valuable for a write operation.

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 well-structured with clear sections: purpose, Requires, Args, Returns, and Note. Every section contributes necessary information. It is slightly longer than necessary because it restates all parameters, but since the schema lacks descriptions, this repetition is justified.

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

Completeness4/5

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

The description covers the tool's purpose, precondition, all parameter semantics, return values, and an environment-based disable note. It is reasonably complete for invoking the tool correctly. It lacks alternative-tool guidance and error-condition context, but those are secondary given the output schema exists and the description already covers the critical prerequisites.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It does: each parameter gets a meaningful one-line explanation, such as 'repo: Repository in owner/repo format' and 'adr_number: Explicit ADR number (required to prevent collisions).' The parameter descriptions add real semantic value beyond the raw schema.

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

Purpose4/5

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

The opening sentence states a specific action: 'Generate ADR from Door synthesis and create PR.' This clearly identifies the tool's resource and outcome. However, it does not explicitly differentiate itself from siblings like extract_decision_record, which could plausibly overlap in purpose.

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

Usage Guidelines4/5

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

The description provides a clear precondition: 'Requires: Debate must be closed with synthesis.' This gives the agent a concrete gate for when to call the tool. It does not mention alternatives or exclusions, so it stops short of full routing guidance.

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

resolve_questionA

Resolve a question through structured debate and return decision record.

High-level Layer 3 API that combines run_debate + extract_decision_record into a single operation. Agents call this for quick, verified decisions.

Process:

  1. Generate thread_id if not provided (YYYY-MM-DD-topic-slug format)

  2. Run full Wind/Wall/Door debate via run_debate

  3. Extract DecisionRecord from closed debate

  4. Return verified decision ready for use

Args: topic: The question or topic to resolve tier: Tier configuration name (default: "standard") thread_id: Optional custom thread ID (auto-generated if None)

Returns: Dictionary with DecisionRecord fields plus debate metadata: - All DecisionRecord fields (identity, outcome, rationale, validation, provenance) - debate_result: The raw run_debate result for reference

Raises: RuntimeError: If debate fails or cannot be closed ValueError: If tier configuration is invalid

ParametersJSON Schema
NameRequiredDescriptionDefault
tierNostandard
topicYes
thread_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/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 process (thread generation, debate run, decision extraction), the return payload, and the possible RuntimeError/ValueError outcomes. This is transparent enough, though it could mention persistence/side-effect details such as thread creation more explicitly.

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 well-structured with a purpose statement, numbered process, Args section, Returns section, and Raises section. It is detailed yet every sentence earns its place, with the primary purpose front-loaded.

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

Completeness5/5

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

For a multi-step tool with no annotations and an output schema, the description covers the full call flow: inputs, processing, return shape, and error conditions. Nothing an agent needs to call it correctly or understand its result is missing.

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%, but the description compensates fully by explaining all three parameters: topic as the question, tier as a configuration name with a default, and thread_id as optional with auto-generation when None. This adds real meaning 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 states a specific verb ('Resolve a question') and resource ('structured debate... decision record'), and explicitly frames itself as a Layer 3 combination of run_debate + extract_decision_record. This clearly distinguishes it from sibling tools and leaves no ambiguity about what it does.

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?

It says agents call this 'for quick, verified decisions' and explains that it wraps two lower-level tools into a single operation. This gives clear context for when to use it, though it does not explicitly state when not to use it or name alternative tools for raw debate access.

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

resume_debateA

Resume a PAUSED debate from where it left off (Phase 4).

Allows resuming debates that were paused due to failures (provider timeouts, errors, etc.) during auto-orchestration.

Args: thread_id: The thread ID of the paused debate tier: Configuration tier (default: "standard") compression_tier: Override compression tier (None = use tier default) primer_tier: Override primer tier (None = use tier default)

Returns: Dictionary with thread_id, topic, status, turn_count, and synthesis

ParametersJSON Schema
NameRequiredDescriptionDefault
tierNostandard
thread_idYes
primer_tierNo
compression_tierNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral disclosure burden. It does add useful context about resuming from Phase 4 and the failure-triggered pause scenario, plus a return summary. However, it does not disclose side effects, idempotency, whether state is mutated, or what happens if the debate is not actually paused.

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 compact, well-organized with Args/Returns sections, and front-loads the core purpose in the first sentence. Every line adds useful information without filler or redundancy.

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

Completeness4/5

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

For a tool with moderate complexity, the description covers what it does, when it applies, key parameters, and return contents. The main gap is the absence of explicit preconditions or failure behavior—such as what occurs if the thread is not a paused debate—but overall it is sufficiently complete for selection and initial invocation.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It lists each parameter and clarifies defaults and override behavior (e.g., 'None = use tier default'). However, it does not define what the tiers mean or how compression_tier and primer_tier affect behavior, leaving semantic ambiguity beyond the schema.

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

Purpose5/5

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

The description opens with a specific verb ('Resume') and a precise resource ('a PAUSED debate') and adds the phase detail ('from where it left off (Phase 4)'). This clearly distinguishes it from siblings like init_debate, run_debate, and get_debate.

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 states when to use the tool: resuming debates paused due to failures during auto-orchestration, such as provider timeouts or errors. It does not explicitly mention when not to use it or name alternative tools, but the context is clear enough for an agent to identify the intended scenario.

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

run_debateA

Auto-orchestrate a Wind/Wall/Door debate (ADR-0002).

Runs a complete automated debate with three agents:

  • Wind (PATHOS): Expands possibilities and explores alternatives

  • Wall (ETHOS): Validates against constraints and evidence

  • Door (LOGOS): Synthesizes a third-way resolution

Args: topic: The debate topic to explore tier: Configuration tier (default: "standard") thread_id: Optional custom thread ID (auto-generated if not provided) compression_tier: Override compression tier (None = use tier default) primer_tier: Override primer tier (None = use tier default) context_files: Optional list of absolute file paths to inject as codebase context. Agents will see file contents in their prompts. mode: Debate mode - "standard" for full Wind/Wall/Door debate, "speed" for lightweight Speed Dialogue Mode (Issue #139), "raci" for RACI governance mode (Turn Manifest Compiler). raci_config: Required when mode="raci". Dictionary with RACI roles: - responsible: Proposer role name (required) - accountable: Decision maker role name (required) - consulted: List of advisor role names (optional, max 5) - informed: List of observer role names (optional, max 3, post-verdict OBSERVATION turns)

Returns: Dictionary with thread_id, topic, status, turn_count, and synthesis

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNostandard
tierNostandard
topicYes
thread_idNo
primer_tierNo
raci_configNo
context_filesNo
compression_tierNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/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 does well: it reveals that three agents run roles, that context files are injected into prompts, that raci_config is required for raci mode, and that the return value includes thread_id, status, and synthesis. It does not explicitly disclose side effects like thread persistence or whether a new thread is created, but the auto-generated thread_id strongly implies it.

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?

Despite covering many parameters and modes, the description remains well-structured and efficient. The one-sentence summary is front-loaded, followed by scannable bullets for agents, arguments, and return values. No sentence is redundant or filler.

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

Completeness4/5

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

The description is complete enough to correctly invoke the tool: it covers all required parameters, mode-specific requirements, defaults, overrides, and return fields. Minor gaps remain, such as defining what values 'tier' accepts and explicit side-effect behavior, but the output schema and detailed argument docs make these non-blocking.

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 fully compensate, and it does. Each parameter is explained beyond the schema: context_files are 'absolute file paths' injected into prompts, mode explains all three options, and raci_config provides a detailed role dictionary with required and optional fields including max counts.

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?

States a specific verb and resource: 'Auto-orchestrate a Wind/Wall/Door debate (ADR-0002).' It goes on to name the three agents and their roles, making the tool's function unambiguous and distinct from manual debate helpers like init_debate or add_turn.

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?

Clear context is provided: this runs a 'complete automated debate' with three agents, implying it is the orchestration entry point rather than a step-by-step tool. It also explains when to use each mode ('standard', 'speed', 'raci'), but does not explicitly name alternatives or state when not to use this tool.

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

search_decisionsA

Search for past decisions matching a query.

Uses field-weighted BM25 to find relevant decisions from the decisions directory. Returns ranked results with relevance scores.

Field weights (ADR-0004):

  • SEARCH_ANCHORS: 15.0 (pre-computed Q&A)

  • TOPIC: 10.0 (what it is)

  • TAGS: 8.0 (classification)

  • SYNTHESIS: 5.0 (the decision)

  • RATIONALE: 2.0 (wind/wall perspectives)

Args: query: Search query string limit: Maximum number of results (default 10) min_score: Minimum score threshold 0-1 (default 0.0)

Returns: Dictionary with: - query: The search query - count: Number of results - results: List of matching decisions with thread_id, topic, synthesis, score, decided_at, file_path

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
min_scoreNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals that the search is ranked, uses BM25 with specific field weights, and returns a structured dictionary. It also explains the min_score threshold. However, it does not explicitly state whether the operation is read-only or mention any side effects, permissions, or rate limits. For a search tool, the provided detail is substantial but not exhaustive, meriting a 4.

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 well-structured and front-loaded with the core purpose. It then provides field weights, arguments, and return format. While it is somewhat lengthy, every sentence adds useful information for an agent (especially the field weights, which inform query tuning). It could be slightly tightened, but the structure aids comprehension.

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?

The description is complete for an agent to call this tool correctly. It explains all parameters, the return dictionary structure, and the scoring mechanism. Given that this is a read-only search operation and no output schema is provided in the context, the description fully covers what an agent needs to know. No critical 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?

The schema description coverage is 0%, so the description must compensate. It does so comprehensively: each parameter is explicitly explained in the 'Args' section, including defaults and value ranges (e.g., min_score 0-1). This adds significant meaning beyond the raw schema, which only lists types and defaults.

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 function: 'Search for past decisions matching a query.' It specifies the resource (decisions directory), the method (field-weighted BM25), and the output (ranked results with relevance scores). This distinguishes it from sibling tools like get_debate or consult, which serve different purposes.

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 explains what the tool does but does not explicitly state when to use it over alternatives or provide exclusions. It implies usage for searching decisions, but no guidance on when not to use it (e.g., if you already have a thread_id, use get_debate). Sibling tools are not referenced. This leaves the agent to infer appropriate usage from the tool's purpose alone.

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

tombstone_turnD

I4:redact content→hash chain preserved. turn_index:0-based.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonYes
thread_idYes
turn_indexYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

D1.7/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 disclosing behavior. It does disclose one useful fact: the hash chain is preserved when redacting. However, it does not state whether the operation is destructive/irreversible, whether content is actually removed or replaced, or any permission or side-effect information. The tombstone implication is left implicit.

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

Conciseness2/5

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

The description is extremely short, but it sacrifices clarity. The 'I4:' prefix is unexplained jargon, the arrow notation is unconventional, and the two sentences are fragmented. While brevity is a virtue, this reads as a terse internal note rather than a structured user-facing description.

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

Completeness1/5

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

Given that the tool has an output schema but no parameter descriptions and no annotations, the description is grossly inadequate for correct invocation. It does not explain what a tombstoned turn means, how it affects the debate state, why a reason is required, or what the return value represents. An agent cannot confidently call this tool based on the provided description.

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 all three parameters (thread_id, turn_index, reason). It only clarifies that turn_index is 0-based. No meaning is added for thread_id or reason, and the relationship between the parameters and the redaction behavior is unexplained.

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

Purpose2/5

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

The description says 'redact content→hash chain preserved' which implies the tool redacts some content while maintaining a hash chain. However, it never explicitly ties the action to a 'turn' resource, uses cryptic 'I4:' prefix, and does not clearly distinguish it from siblings like add_turn or close_debate. The purpose is inferred but not clearly stated.

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

Usage Guidelines1/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 compared to other debate-management tools like close_debate or human_interject. No exclusions, no context, no mention of prerequisites. An agent would have to guess when tombstone_turn is the right choice.

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. 17 tool updatesv0.5.0
    • First observedadd_turn
    • First observedclose_debate
    • First observedconsult
    • First observedconvene
    • First observedextract_decision_record
    • First observedforce_close_debate
    • First observedget_debate
    • First observedgithub_sync_debate
    • First observedhuman_interject
    • First observedinit_debate
    • First observedpick_next_speaker
    • First observedratify_rfc
    • First observedresolve_question
    • First observedresume_debate
    • First observedrun_debate
    • First observedsearch_decisions
    • First observedtombstone_turn

TDQS

C2.9/5.0

Scored across 17 tools

Disambiguation3/5

Most tools are distinct, but init_debate, run_debate, resolve_question, consult, and convene all create or orchestrate sessions, so an agent could easily pick the wrong one. Descriptions separate manual vs auto vs committee/consultation modes, yet the overlapping names and session-creating behavior leave some ambiguity.

Naming Consistency4/5

Tool names are predominantly snake_case with a verb-first pattern (init_debate, add_turn, get_debate, close_debate, run_debate). A few names deviate, such as github_sync_debate (noun-led), human_interject (no direct object), and bare consult/convene, but the pattern is still readable and mostly predictable.

Tool Count3/5

The 17 tools exceed the typical 3-15 well-scoped range, and several utilities (force_close_debate, tombstone_turn, human_interject) are niche. The set still covers multiple subdomains, but the count feels heavy and includes some redundant high-level conveniences like resolve_question on top of run_debate+extract_decision_record.

Completeness2/5

The core debate lifecycle has init, add, get, close, force close, speaker picking, and tombstoning, but there is no way to list active debates or delete/archive a thread. More critically, consult and convene create sessions that return awaiting states, yet no tool exists to add advisor/committee turns, leaving those workflows half-built.

Maintenance

ActivityInactive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Enables multi-round brainstorming debates between multiple AI models like GPT, DeepSeek, and Ollama to produce synthesized final outputs. Users can orchestrate parallel model interactions where AI agents critique and refine each other's ideas to reach a consolidated conclusion.
    7
    70 npm
    69
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A multi-role AI discussion system that enables users to manage diverse AI personas for collaborative debate and consensus-driven decision-making. It provides tools for role configuration, automated meeting facilitation, and the generation of formatted meeting minutes via the MCP protocol.
    GPL 3.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to facilitate structured multi-model debates that synthesize multiple perspectives into clear categories like ground truths and blind spots. It provides tools for running real-time debates, checking model health, and managing history via the Model Context Protocol.
    5 npm
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Facilitates structured multi-agent debates with arguments, rebuttals, and judgments across multiple rounds, enabling diverse AI personas to engage in formal debate and collaborative problem-solving.
    1
    6 npm
    17
    MIT