Ploidy
Allows running automated debate sessions using OpenAI's API as the backend for generating positions and challenges.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Ploidydebate: should we adopt a monorepo?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Ploidy
Context-asymmetric structured debate for difficult decisions.
Ploidy gives one side of a debate project context and keeps the other side fresh, then records positions before either side can anchor on the other. It ships as a Python 3.11+ MCP server with SQLite persistence.
Install
pip install ploidyAdd the API extra only when the server itself will generate an automatic debate:
pip install "ploidy[api]"Related MCP server: consensus-mcp
Recommended local setup: stdio
stdio is the default transport. One MCP client starts one server on
demand, so there is no port or background process to manage.
{
"mcpServers": {
"ploidy": {
"type": "stdio",
"command": "python3",
"args": ["-m", "ploidy"]
}
}
}The primary tool is debate:
mode="solo": the caller supplies independently generated Deep and Fresh positions. No external model API is required.mode="auto": the server generates both sides through an OpenAI-compatible API. Non-emptycontext_documentsare required so the Deep and Fresh sides are actually asymmetric.
Example auto call:
await debate(
prompt="Should we split the ingestion service?",
mode="auto",
context_documents=["Current topology, incident history, and constraints…"],
context_sources=["architecture-notes"],
)Configure the API backend before using auto mode:
export PLOIDY_API_BASE_URL=https://api.openai.com/v1
export PLOIDY_API_KEY=...
export PLOIDY_API_MODEL=your-modelShared server: Streamable HTTP
Use HTTP when multiple MCP clients must share one debate or when Ploidy is deployed as a service:
PLOIDY_TRANSPORT=streamable-http python3 -m ploidy
export PLOIDY_URL=http://127.0.0.1:8765Configure each client with ${PLOIDY_URL}/mcp (substitute the value;
JSON does not expand shell variables):
{
"mcpServers": {
"ploidy": {
"type": "streamable-http",
"url": "http://127.0.0.1:8765/mcp"
}
}
}PLOIDY_URL is the base URL used by ploidy-ask and other HTTP
clients. The MCP endpoint is /mcp, and the live HTTP/SSE endpoint is
/v1/debate/stream.
MCP tools
Ploidy 0.4.0 exposes exactly 13 tools. New integrations should use the
unified debate tool. The other 12 remain available for explicit
two-client, phase-by-phase, history, cancellation, and HITL workflows.
Tool | Purpose |
| Unified |
| Create a Deep session |
| Join as Fresh or Semi-Fresh |
| Submit an independent position |
| Submit a semantic challenge |
| Produce the convergence result |
| Cancel an active debate |
| Permanently delete a debate |
| Read current state |
| List visible debate history |
| Legacy alias for caller-supplied debate |
| Legacy alias for API-generated debate |
| Approve, override, or reject a paused auto debate |
Service configuration
Common environment variables:
PLOIDY_TRANSPORT=stdio # stdio (default) or streamable-http
PLOIDY_PORT=8765
PLOIDY_DB_PATH=~/.ploidy/ploidy.db
PLOIDY_MAX_CONTEXT_TOKENS=20000 # recommended for hosted auto mode
PLOIDY_RATE_CAPACITY=20
PLOIDY_RATE_PER_SEC=1
PLOIDY_RETENTION_DAYS=30Authentication modes and their limits:
Admission-controlled self-hosting:
PLOIDY_AUTH_MODE=bearerwithPLOIDY_TOKENS='{"token":"tenant"}'.OAuth interoperability:
PLOIDY_AUTH_MODE=oauthand an exact publicPLOIDY_OAUTH_ISSUER; v0.4.0 auto-approves clients and therefore is not user login or public admission control.Migration only:
PLOIDY_AUTH_MODE=bothadds the static-token fallback.
Bearer mode without a configured token is intentionally unauthenticated and is suitable only for loopback development. Public services need a private ingress/gateway or controlled static tokens until OAuth gains resource-owner login and consent.
Container
The published image is immutable by release version:
docker run --rm \
-p 127.0.0.1:8765:8765 \
-v ploidy-data:/data \
ghcr.io/heznpc/ploidy:0.4.0Or run the checked-in Compose configuration:
docker compose up --buildThe image defaults to streamable-http and contains the API,
dashboard, metrics, Redis, and CLI runtime extras.
Documentation
License
MIT
Available Tools
13 toolsdebateADestructive
Run a context-asymmetric debate in a single call.
One canonical entry point. Pick a mode:
auto(default): Ploidy generates both sides via the configured OpenAI-compatible API endpoint and returns the convergence result. Requires non-emptycontext_documentsplus a configured API endpoint. HITL pause/resume is available viapause_at; resume with the legacydebate_reviewtool.solo: you supply both positions (and optionally both challenges) and Ploidy persists + converges them. No external API key needed — the recommended single-terminal flow when the caller (e.g. Claude Code itself) writes both sides locally.
The older 12-tool surface (debate_start / debate_join /
debate_position / ...) remains available for two-terminal and
HITL workflows but is now deprecated; new integrations should use
this tool.
Args:
prompt: The decision question to debate.
mode: "auto" or "solo".
deep_position: (solo only) Deep side's stance.
fresh_position: (solo only) Fresh side's stance.
deep_challenge: (solo only) Optional deep-side critique.
fresh_challenge: (solo only) Optional fresh-side critique.
deep_label / fresh_label: (solo) display labels for roles.
fresh_role: (auto) "fresh" or "semi_fresh".
delivery_mode: (auto + semi_fresh) "passive", "active",
or "selective".
pause_at: (auto) Optional "challenge" or "convergence"
HITL pause point.
deep_n / fresh_n: (auto) Ploidy level per side.
effort: (auto) "low", "medium", "high", "max".
injection_mode: (auto) Context formatting mode.
context_pct: (auto) Percentage of context to retain.
language: (auto) Output language code.
deep_model / fresh_model: (auto) Model override. Supplying either
applies it to both sides; if both are supplied they must match.
context_documents: Documents attached only to the Deep side. Required
and non-empty in auto mode; optional provenance in solo mode.
context_sources: Optional provenance labels, one per context document.
blocked_sources: Optional strings that must not appear in source labels
or context documents.
target_lease: Optional target identifier that pins this debate's scope.
allowed_sources: Optional source-label allowlist; defaults to target_lease
when a target lease is set.
Returns: Convergence result dict, or paused state (auto + pause_at).
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | auto | |
| deep_n | No | ||
| effort | No | high | |
| prompt | Yes | ||
| fresh_n | No | ||
| language | No | en | |
| pause_at | No | ||
| deep_label | No | Deep | |
| deep_model | No | ||
| fresh_role | No | fresh | |
| context_pct | No | ||
| fresh_label | No | Fresh | |
| fresh_model | No | ||
| target_lease | No | ||
| deep_position | No | ||
| delivery_mode | No | none | |
| deep_challenge | No | ||
| fresh_position | No | ||
| injection_mode | No | raw | |
| allowed_sources | No | ||
| blocked_sources | No | ||
| context_sources | No | ||
| fresh_challenge | No | ||
| context_documents | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint=false, idempotentHint=false, destructiveHint=true. The description adds substantial behavioral context beyond these annotations: it explains that auto mode generates both sides via the API, solo mode persists and converges user-supplied positions without external API keys, and pause_at creates HITL pause points that require resuming with the legacy debate_review tool. This meaningfully characterizes the tool's runtime behavior and requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well justified for a 24-parameter tool. It front-loads the core purpose in the first sentence, uses clear bullet-style sections for modes, deprecation, and Args, and every sentence contributes useful operational detail. The structure mirrors the schema's parameter list while adding essential mode-specific context, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (24 parameters, no output schema, and minimal annotations), the description is remarkably complete. It covers both operating modes, prerequisites, HITL pause/resume, deprecated siblings, parameter applicability, and the return type (convergence result dict or paused state). The only missing piece would be a detailed output schema, but the description's Returns line offers a sufficient hint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a schema description coverage of 0%, the description fully compensates by listing all 24 parameters with mode annotations (e.g., '(solo only)', '(auto)') and cross-parameter constraints. It clarifies that deep_position/fresh_position are solo-only, deep_model/fresh_model apply to both sides when either is supplied and must match if both are given, and context_documents must be non-empty in auto mode. This goes far beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource statement: 'Run a context-asymmetric debate in a single call' and immediately identifies this as the 'One canonical entry point.' It explicitly distinguishes itself from the 12-tool legacy surface by declaring that surface deprecated and recommending this tool for new integrations, which resolves ambiguity among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: it names the deprecated debate_start/join/position tools as alternatives for two-terminal/HITL workflows, explains the auto mode requires a configured API endpoint and non-empty context_documents, and highlights solo mode as the recommended single-terminal flow. It also notes how to resume HITL pauses with debate_review, giving clear decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
debate_autoADestructive
DEPRECATED (v0.4) — prefer debate(prompt, mode=...).
Run a complete debate automatically in a single command.Requires non-empty context_documents and a configured API endpoint.
Generates positions and one independent challenge per seat with one
resolved model, runs the protocol, and returns the convergence result.
| Name | Required | Description | Default |
|---|---|---|---|
| deep_n | No | ||
| effort | No | high | |
| prompt | Yes | ||
| fresh_n | No | ||
| language | No | en | |
| pause_at | No | ||
| deep_model | No | ||
| fresh_role | No | fresh | |
| context_pct | No | ||
| fresh_model | No | ||
| target_lease | No | ||
| delivery_mode | No | none | |
| injection_mode | No | raw | |
| allowed_sources | No | ||
| blocked_sources | No | ||
| context_sources | No | ||
| context_documents | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate destructiveHint=true, readOnlyHint=false, idempotentHint=false. The description adds useful behavioral context beyond this: it explains the internal process (generates positions and independent challenges, runs the protocol, returns the convergence result) and states the prerequisite of non-empty context_documents and an API endpoint. It does not contradict the annotations, though it doesn't elaborate on the destructive 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: a deprecation warning, a one-sentence function summary, then required conditions and behavior. No filler or repetition of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description conveys the tool's high-level behavior, prerequisites, and return value ('returns the convergence result') in a concise way. However, with 17 parameters, no output schema, and minimal parameter semantics, an agent invoking this tool would be under-informed about many configurable options. The deprecation reduces the need for exhaustive detail, but there are still notable gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are 17 parameters and the schema has 0% description coverage. The description only mentions 'context_documents' as needing to be non-empty and implicitly references 'prompt' in the preferred debate call, but provides no explanation of deep_n, effort, fresh_n, pause_at, delivery_mode, injection_mode, or the other parameters. This is far below what a 17-parameter tool needs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Run a complete debate automatically in a single command', clearly identifying the verb, resource, and scope. It distinguishes itself from siblings by declaring DEPRECATED and pointing to 'debate(prompt, mode=...)' as the preferred alternative, while also listing generated positions, challenges, and the convergence result.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'prefer debate(prompt, mode=...)' and gives a deprecation warning, which is an explicit alternative. It also states the preconditions 'Requires non-empty context_documents and a configured API endpoint', giving clear context for when this tool can be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
debate_cancelADestructiveIdempotent
DEPRECATED (v0.4) — prefer debate(prompt, mode=...).
Cancel a debate in progress.| Name | Required | Description | Default |
|---|---|---|---|
| debate_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as destructive and idempotent. The description adds that the debate must be 'in progress' and communicates the deprecation status, which is useful context. However, it does not describe side effects like whether transcripts are removed or if cancellation is reversible, but the annotations lower the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two sentences with no filler. The deprecation warning is front-loaded, immediately guiding the agent away from this tool, and the purpose statement follows cleanly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple deprecated tool with one parameter and existing annotations, the description covers the essential context: deprecation, alternative, and purpose. It does not explain edge cases like what happens if the debate is not in progress, but the minimal scope and annotations make it reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has a single required parameter 'debate_id' with a title 'Debate Id' and 0% description coverage. The description does not mention 'debate_id' at all, failing to compensate for the lack of schema documentation. While the parameter name is somewhat self-explanatory, the description adds no semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Cancel a debate in progress' with a specific verb (cancel) and resource (debate). It also explicitly distinguishes itself from the preferred alternative 'debate(prompt, mode=...)' and other siblings like debate_delete and debate_start, making the tool's scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description is explicit about usage: it is deprecated and the agent is told to prefer 'debate(prompt, mode=...)'. This provides a clear when-to-use and when-not-to-use directive, naming the alternative sibling directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
debate_challengeA
DEPRECATED (v0.4) — prefer debate(prompt, mode=...).
Submit a challenge to another session's position.| Name | Required | Description | Default |
|---|---|---|---|
| action | No | challenge | |
| content | Yes | ||
| session_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, non-idempotent action. The description adds the deprecation status and the fact that the challenge targets 'another session's position', which provides useful context beyond the annotations. It does not detail side effects, but the deprecation notice is valuable behavioral information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, with the deprecation and preferred alternative front-loaded. Every word adds value, and it occupies minimal space while conveying essential guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is deprecated and points to a clear alternative, the description is sufficient for an agent to decide not to use it. However, if invoked, it lacks return-value information and parameter semantics. While deprecation lowers the need for full completeness, the description still leaves gaps for an agent that must interact with it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate for parameter meaning. It only implies that 'session_id' refers to another session and 'content' is the challenge text, but it does not explicitly explain any of the three parameters, their roles, or the default 'action' value. This is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Submit a challenge to another session's position.' It names the specific verb and resource, and the deprecation notice with a preferred alternative distinguishes it from sibling tools like debate and debate_start.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'DEPRECATED (v0.4) — prefer ``debate(prompt, mode=...)``.' This gives clear when-not-to-use guidance and names the exact alternative tool and invocation pattern, exceeding basic usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
debate_convergeA
DEPRECATED (v0.4) — prefer debate(prompt, mode=...).
Trigger convergence analysis for a debate.| Name | Required | Description | Default |
|---|---|---|---|
| debate_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the behavioral context that the tool is deprecated, which is valuable. However, it does not describe any side effects, return values, or operational behavior beyond 'triggering' an analysis. With all annotations set to false, there are no safety claims, so the description carries full burden but only partially fulfills it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the deprecation warning, and contains no unnecessary words. It conveys the essential information (deprecated, prefer alternative, basic action) efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a deprecated tool with a single parameter and no output schema, the description covers the key context: it is deprecated and the preferred replacement is provided. It lacks details about what convergence analysis entails or what the tool returns, but given the deprecation status, the essential operational guidance is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is 0%, so the description must compensate, but it does not mention the parameter at all. However, the single parameter 'debate_id' is self-explanatory from its name and the schema provides its type and title. The description adds no extra meaning, but the parameter is simple enough that ambiguity is limited.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Trigger convergence analysis for a debate.' It also explicitly names the preferred alternative (debate(prompt, mode=...)), distinguishing it from sibling tools. However, 'convergence analysis' is not elaborated, leaving some ambiguity about what the tool actually does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance to prefer debate(prompt, mode=...) instead, which serves as a clear alternative. It does not elaborate on when to use this tool (since it's deprecated, the implication is 'don't use'), but the deprecation notice effectively communicates the usage recommendation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
debate_deleteADestructiveIdempotent
DEPRECATED (v0.4) — prefer debate(prompt, mode=...).
Permanently delete a debate and all its data.| Name | Required | Description | Default |
|---|---|---|---|
| debate_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive and idempotent behavior. The description adds context by stating 'Permanently' and 'all its data', clarifying the scope of destruction. It also discloses the deprecation status, which is not in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, with the deprecation notice front-loaded. Every word serves a purpose, providing clear action and alternative without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter destructive tool with annotations covering idempotency and destructiveness, the description fully captures what the agent needs: the action, the permanence, the scope, and the alternative. No output schema requires no explanation of return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter 'debate_id' with no description coverage (0%). The description does not explain the parameter format, validity, or behavior when the ID does not exist, despite low schema coverage requiring compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Permanently delete a debate and all its data.' It uses a specific verb ('delete') and resource ('debate'), and the deprecation notice distinguishes it from the preferred alternative (debate).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs not to use this tool and to prefer 'debate(prompt, mode=...)' instead, providing clear when-to-use and alternative guidance. This goes beyond a simple mention of the algorithm.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
debate_historyARead-onlyIdempotent
DEPRECATED (v0.4) — prefer debate(prompt, mode=...).
Retrieve past debates and their outcomes.| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only and non-destructive, but the description adds important behavioral context: it is deprecated since v0.4 and superseded by debate(prompt, mode=...). This is a valuable disclosure beyond the annotations, indicating possible instability or removal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, with the deprecation warning front-loaded to capture attention. There is no unnecessary detail, making it highly efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose and deprecation, but it omits details about the 'limit' parameter and the return format. Given the tool's simplicity, the missing parameter documentation is a noticeable gap, though the deprecation redirect does partially compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter 'limit' has no description in the schema (0% coverage), and the tool description does not mention it. The agent receives no clarification on what 'limit' controls—whether it limits the number of debates, pagination, or something else—so the parameter semantics are unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Retrieve' to indicate the action, names the resource ('past debates and their outcomes'), and clearly distinguishes itself from the preferred alternative debate(prompt, mode=...). This makes the tool's purpose immediately obvious and differentiates it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly marks the tool as DEPRECATED and advises to prefer debate(prompt, mode=...). This provides clear 'when to use vs. alternative' guidance, effectively instructing the agent not to use this tool and directing it to the recommended replacement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
debate_joinA
DEPRECATED (v0.4) — prefer debate(prompt, mode=...).
Join an existing debate as a fresh or semi-fresh session.| Name | Required | Description | Default |
|---|---|---|---|
| role | No | fresh | |
| debate_id | Yes | ||
| delivery_mode | No | none |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnly=false, idempotent=false, destructive=false. The description adds the 'fresh or semi-fresh' mode but does not explain side effects, session behavior, or error scenarios. It provides some context beyond annotations but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two brief, front-loaded sentences. The deprecation notice is immediately actionable, and there is no redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 3 parameters, no output schema, and a sparse description. It does not explain what joining entails, return values, or delivery_mode semantics, making it incomplete for reliable invocation. The deprecation and alternative mitigate the need but do not fully compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It implicitly explains 'role' via 'fresh or semi-fresh session', but 'delivery_mode' remains entirely unexplained, and 'debate_id' format/constraints are not addressed. The description does not add sufficient meaning for reliable invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool joins an existing debate as a fresh or semi-fresh session, using a specific verb and resource. It also distinguishes itself by noting deprecation and preferring debate(prompt, mode=...), which differentiates from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says it is deprecated and prefers debate(prompt, mode=...), providing a clear alternative and when-not-to-use. It also indicates the specific use case of joining an existing debate, giving context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
debate_positionA
DEPRECATED (v0.4) — prefer debate(prompt, mode=...).
Submit a position from a session.| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | ||
| session_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a mutating, non-idempotent operation. The description adds the deprecation context, but does not disclose side effects such as session validation, position creation behavior, or return values. Minimal added context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with two sentences that front-load the critical deprecation warning before stating the action. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a deprecated tool with only two simple parameters, pointing to the preferred debate tool provides the most essential context. However, it omits details about session state prerequisites or operation outcomes, which could be relevant if called directly. Still, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only implicitly maps 'content' to 'position' and 'session_id' to 'session' in the phrase 'from a session', without adding constraints, relationships, or usage details. This is insufficient compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Submit a position from a session' with a clear verb and resource, and it distinguishes from sibling tools by explicitly deprecating and pointing to debate(prompt, mode=...) as the preferred alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'DEPRECATED (v0.4) — prefer debate(prompt, mode=...)', providing a clear when-not-to-use directive and naming the alternative tool. This satisfies the explicit usage guideline criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
debate_reviewA
DEPRECATED (v0.4) — prefer debate(prompt, mode=...).
Review and resume a paused auto-debate (HITL).Call after debate_auto with pause_at paused the run. Action
is one of 'approve', 'override', or 'reject'.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | approve | |
| debate_id | Yes | ||
| override_content | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context that this is a human-in-the-loop resume operation and lists the allowed actions ('approve', 'override', 'reject'). However, it does not disclose what each action does, any side effects, or whether the operation is reversible. Annotations are present (readOnlyHint=false, destructiveHint=false) and no contradiction exists, but richer behavioral detail is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the deprecation warning. Every sentence serves a purpose: deprecation/alternative, core function, and usage precondition. No filler or redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters and no output schema, the description leaves key gaps: it never explains what `override_content` is for, the semantics of each action, or what the tool returns after review. Although deprecated, the tool still needs enough context to be used correctly if invoked.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all parameters. It only clarifies the `action` parameter ('Action is one of ...'), leaving `debate_id` and `override_content` unexplained. `override_content` is particularly important and undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Review and resume a paused auto-debate (HITL).' This is a specific verb+resource and distinguishes it from siblings by referencing `debate_auto` and the preferred alternative `debate(prompt, mode=...)`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is explicitly scoped: 'Call after `debate_auto` with `pause_at` paused the run.' It also provides an explicit alternative by stating 'DEPRECATED (v0.4) — prefer `debate(prompt, mode=...)`,' which covers when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
debate_soloADestructive
DEPRECATED (v0.4) — prefer debate(prompt, mode=...).
Run a complete debate from caller-supplied positions in one call.Single-terminal entry point: the caller generates both sides locally and submits the texts here. No external API key required.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | ||
| deep_label | No | Deep | |
| fresh_label | No | Fresh | |
| target_lease | No | ||
| deep_position | Yes | ||
| deep_challenge | No | ||
| fresh_position | Yes | ||
| allowed_sources | No | ||
| blocked_sources | No | ||
| context_sources | No | ||
| fresh_challenge | No | ||
| context_documents | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the agent knows this is potentially destructive. The description adds useful context like 'No external API key required' and 'caller generates both sides locally', but it does not disclose what destructive side effects occur or what happens to any created debate state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the deprecation warning, and contains no filler. Every sentence earns its place by either directing to the replacement or clarifying the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 12 parameters, no output schema, and a destructive annotation, the description is too thin. It describes the core one-shot flow but omits optional parameters, return values, side effects, and edge cases, leaving the agent under-informed for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only vaguely references 'caller-supplied positions', giving slight meaning to deep_position and fresh_position. None of the other 12 parameters are explained, and the description does not compensate for the missing schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Run a complete debate from caller-supplied positions in one call' with a specific verb and resource. It also distinguishes itself from the multi-step sibling tools by calling itself a 'Single-terminal entry point' and explicitly pointing to debate() as the preferred alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The first line directly says 'DEPRECATED (v0.4) — prefer debate(prompt, mode=...)' giving an explicit alternative. It also explains when this tool is used: 'Single-terminal entry point' and 'No external API key required', which helps the agent decide between a one-shot vs. interactive debate flow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
debate_startADestructive
DEPRECATED (v0.4) — prefer debate(prompt, mode=...).
Begin a new debate session with a decision prompt.Creates a debate and a Deep (full-context) session. Share the returned debate_id with the fresh session so it can join.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | ||
| target_lease | No | ||
| allowed_sources | No | ||
| blocked_sources | No | ||
| context_sources | No | ||
| context_documents | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructive and non-idempotent behavior; the description adds that the tool 'Creates a debate and a Deep (full-context) session' and that the returned debate_id enables the fresh session to join. This provides context beyond the annotations, though it does not detail all 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences with deprecation status front-loaded. It is concise, and every sentence adds value—deprecation warning, purpose, and workflow hint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With six parameters and no output schema, the description only covers the prompt and vaguely mentions the returned debate_id. It omits parameter semantics and return value structure, and while deprecation redirects to another tool, the existing tool's description is still incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only mentions 'prompt' conceptually as a decision prompt. The other five parameters (target_lease, allowed_sources, blocked_sources, context_sources, context_documents) are completely unexplained, so the description fails to compensate for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Begin a new debate session with a decision prompt' and tells that it creates a debate and Deep session. It also distinguishes from the sibling debate tool by explicitly directing users to 'debate(prompt, mode=...)'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit guidance to prefer 'debate(prompt, mode=...)' instead, which is a clear alternative. It also explains the usage flow: 'Share the returned debate_id with the fresh session so it can join.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
debate_statusARead-onlyIdempotent
DEPRECATED (v0.4) — prefer debate(prompt, mode=...).
Get current state of a debate.| Name | Required | Description | Default |
|---|---|---|---|
| debate_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already reveal readOnly, idempotent, and non-destructive behavior. The description adds the deprecation context and the preferred alternative, which is extra behavioral/lifecycle information beyond the annotations. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the most actionable information (deprecation and alternative). Every clause serves a purpose; there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one parameter and no output schema, the description is minimal but sufficient to convey the core function and deprecation. However, it does not describe what the "current state" includes or any response expectations, which would enhance completeness given the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter meaning, but it does not. The sole parameter `debate_id` is not explained. Although the name is somewhat self-evident, the description provides no explicit guidance on its format or purpose, leaving a gap in a low-coverage schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb and resource: "Get current state of a debate." It also distinguishes itself by flagging deprecation and pointing to a preferred alternative (`debate(prompt, mode=...)`), which helps an agent understand its role and relative standing among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit usage guidance is provided: "DEPRECATED (v0.4) — prefer debate(prompt, mode=...)." This directly tells the agent when NOT to use this tool and names the alternative. This is more than adequate for guiding selection.
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.
13 tool updates
v0.4.0- First observed
debate - First observed
debate_auto - First observed
debate_cancel - First observed
debate_challenge - First observed
debate_converge - First observed
debate_delete - First observed
debate_history - First observed
debate_join - First observed
debate_position - First observed
debate_review - First observed
debate_solo - First observed
debate_start - First observed
debate_status
TDQS
The set includes one canonical tool and 12 deprecated tools that are explicitly marked as superseded. While each deprecated tool has a distinct action, they overlap with the canonical tool's modes, so an agent must read the deprecation notices carefully. The guidance is clear, so most ambiguity is resolved.
The deprecated tools follow a consistent 'debate_' prefix with verb suffixes, but the canonical 'debate' and two mode-based tools ('debate_solo', 'debate_auto') deviate from the verb pattern. Overall the consistency is good, with only minor deviations.
The tool count is bloated: 12 of 13 tools are deprecated legacy surface, while the entire functionality is available through the single 'debate' tool. This duplication inflates the count unnecessarily, making the set feel much heavier than its actual scope.
The debate lifecycle is fully covered: starting, joining, submitting positions, challenging, converging, canceling, deleting, status, history, and HITL review. The canonical tool subsumes all of these, so there are no obvious gaps.
Maintenance
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
MCP server for building and testing AI agents with multi-model experimentation and insights.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
AI Reasoning Cache & Consensus Layer with 11 MCP tools via Streamable HTTP.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables collaborative debates between multiple AI agents, allowing them to discuss and reach consensus on user prompts.1MIT
- AlicenseNot gradedqualityBmaintenanceAn MCP server that enables multi-model debate and consensus building through a single tool. It orchestrates multiple AI models from various providers to debate topics and reach validated conclusions with real-time progress tracking.203MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for AI agents to conduct multi-LLM roundtable discussions, returning structured common, divergent, and unique perspectives.MIT
- AlicenseAqualityBmaintenanceDynamic multi-agent debate MCP server for structured argumentation and reasoning among AI agents.135MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/heznpc/PLOIDY'
If you have feedback or need assistance with the MCP directory API, please join our Discord server