cross-review
The cross-review server orchestrates API-first peer review across six AI providers (Claude, ChatGPT Codex, Gemini, DeepSeek, Grok, and Perplexity) with unanimous convergence gates. Here's what you can do:
Run & Manage Reviews
ask_peers— Run a single synchronous review round against selected peersrun_until_unanimous/session_start_unanimous— Iteratively review until all peers converge or a round limit is hit (foreground or background)session_start_round— Launch a background review round and return a job ID immediately
Session Lifecycle
Create, list, read, poll, and finalize durable review sessions
Cancel running jobs, recover interrupted sessions, and auto-finalize idle sessions via sweep
Stream session events incrementally
Evidence & Truth Management
Attach operator-custodied text evidence (append-only, SHA-256 tracked)
Update evidence checklist items and run single or consensus LLM judge passes to verify satisfaction
Re-run local truthfulness preflight checks after attaching evidence
Reporting & Observability
Generate full Markdown session reports (convergence, peer decisions, costs, events)
Pull aggregate/per-session metrics, peer reliability reports (error rates, latency, cost), and judgment precision reports (precision/recall/F1)
Audit session health via
session_doctorandsession_check_convergence
Governance & Security
Formally contest a final verdict to open a new linked deliberation cycle
Escalate issues for human operator intervention
Rotate per-agent F1 identity capability tokens
Server Inspection & Setup
Query runtime capabilities, version, and config fingerprint
Probe all provider APIs to discover available models and verify reachability
Key design properties: three deliberation modes (ship/review/circular), per-peer reasoning effort overrides, relator lottery (random non-caller lead reviewer), financial budget caps, and a CROSS_REVIEW_STUB=1 mode for no-cost CI/smoke testing.
Enables cross-review using Google's Gemini API, allowing Gemini to contribute to the review process.
Enables cross-review using OpenAI's API (ChatGPT Codex), allowing OpenAI models to participate in the review process.
Enables cross-review using Perplexity's API, allowing Perplexity to participate in the review process.
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., "@cross-reviewcross-review my latest code changes for bugs"
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.
cross-review
MCP server orchestrating API-first cross-review between Claude, ChatGPT Codex, Gemini, DeepSeek, Grok, and Perplexity with unanimous convergence gates.
Upgrade from the published registry.
npm upgrade -g @lcv-ideas-software/cross-review --ignore-scripts --allow-git=none --allow-remote=none
# or using the GitHub Packages mirror:
npm upgrade -g @lcv-ideas-software/cross-review --@lcv-ideas-software:registry=https://npm.pkg.github.com --ignore-scripts --allow-git=none --allow-remote=nonenpm 12 global operations evaluate the whole global dependency tree, not this
package's project policy in isolation. The command therefore disables every
install-time script and keeps Git and remote-URL dependencies blocked. The
published package has no install lifecycle and is tested in this mode. Never add
--dangerously-allow-all-scripts, and do not install a locally built source
tree or tarball as a substitute for the published registry release.
Status. Stable. The current source/release target is v05.00.00 (package 5.0.0).
Use the npm badge or npm view @lcv-ideas-software/cross-review version for
registry state and server_info for the version actually loaded by an MCP
window. See
CHANGELOG.md for the full release history.
Project renamed 15/05/2026. This project was previously published as
@lcv-ideas-software/cross-review-v2(versions 0.x through 3.7.5). v4.0.0 is the first release under the shorter canonical name@lcv-ideas-software/cross-reviewafter the companioncross-review-v1project was discontinued and archived. Historical CHANGELOG entries below v4.0.0 reference the prior name verbatim.
The version history at a glance:
Release | Scope |
| Major: legacy Sonar dimensions removed. |
| Evidence custody fixes. A provider-escaped GitHub URL quoted from the attachment no longer downgrades a READY vote; a relator may name a file the admitted unified diff materializes. |
| No manual gesture. A push to |
| Native release path. The repository-owned tagging, dispatch and policy machinery leaves; publishing runs on a published GitHub Release with npm Trusted Publishing and provenance. |
| Native organization governance. Actions lockfile, advanced CodeQL workflow, merge-queue triggers and the v04.05.26 recovery workflow leave; the canonical Dependabot auto-merge and the organization workflows enter; the release gates read the CodeQL default-setup analyses. |
| Makes evidence conflict correlation linear and argv-exact, and makes future/current model parsing clause-aware through finite English/Portuguese frames, including |
| Restores fail-closed anti-deception semantics for conflicting executions of the same command, additive |
| Republish of v04.06.01 with a self-contained pin-validator action (bundled parser, clean-runner proven), reference-resolved local action manifests and a location-scoped Scorecard allowance. |
| Republish of v04.06.00 with the supply-chain gate fix: minimal per-job GITHUB_TOKEN permissions across all workflows, |
| Migrates the Perplexity peer to the Agent API ( |
| Prevents repeated caller-token permission recovery in one boot, regenerates only after a confirmed disappearance, and makes the trusted-console Windows recipe replace only a protected-empty DACL before verifying the exact result. |
| Locks the T2#10 source-regex debt at its current |
| Makes Windows caller-token ACL hardening interruption-tolerant, repairs one protected-empty-DACL denial without looping or rotating tokens, binds path/SID data outside the PowerShell command parser, and adds a dedicated Windows regression gate. |
| Repairs byte-exact JSON citation grounding, preserves active caller evidence during full decision retry, accepts documented terminal Perplexity aggregate content, and refreshes the signed immutable central automation pins. |
| Hardens the public-package boundary, moves administrative release checks into the protected non-deployment environment, updates TypeScript ESLint to 8.66.0, and makes Windows parent-process forensics tests deterministic without changing the 500 ms best-effort runtime cap. |
| Removes two redundant control-flow expressions reported by GitHub Code Quality while preserving the budget-preflight behavior and the lazy evidence-attachment fallback used when truthfulness preflight is disabled. |
| Supersedes the unpublished 4.5.32 tag by recognizing npm's documented |
| Bootstraps checksum-verified npm 12.0.2, proves both npm OIDC environment boundaries before source execution, splits privileged publication from verification, and remediates the current Hono, brace-expansion, fast-uri and ip-address advisories. |
| Supersedes the unpublished 4.5.30 tag by making the clean-consumer license gate follow the exact bundled MCP SDK version instead of a stale hard-coded version. |
| Updates the OpenAI runtime to 7.0.0 and bundled MCP SDK to 1.30.0; completely removes Socket Security and StepSecurity; prevents redundant immutable-tag publication; fails closed on ambiguous GitHub API status; and runs direct Zizmor through checksum-verified uv. |
| Supersedes the unpublished 4.5.28 tag and locks |
| Adds opt-in Claude Opus 5 support; bounds Evidence Broker amplification without weakening blockers; repairs interrupted-session lifecycle, checklist provenance and truthfulness diagnostics; hardens caller-token ACLs; and makes event polling compact. |
| Updates the Anthropic and OpenAI SDKs, makes manifests and lockfiles the dependency source of truth, and ships hardened dependency automation with verified release recovery. |
| Bundles the MCP runtime and hardens exact-SHA automation, immutable releases, and current provider dependencies. |
| Resolves the three registry advisories in the lockfile: |
| Accepts npm 12's one-item |
| Decodes npm's Sigstore DSSE envelope before binding the SLSA provenance to the protected tag, publication workflow, and immutable source commit; the later cryptographic |
| Aligns the durable effective-config regression with JSON semantics: unset optional properties are omitted consistently from persisted snapshots and their SHA-256 canonical form. |
| Restores a deterministic CI fixture for the pre-publish budget/cache contract: Gemini has an explicit test rate and a manually known settlement cannot retain a stale unknown-spend marker. The production financial gate remains fail-closed. |
| Hardens the npm publication gate without weakening artifact verification: an integrity-bound temporary lock drives |
| Closes the 4.5.16–4.5.17 session-audit findings: symmetric grounding for blocking verdicts, per-peer write-through durability, terminal preflight audit trails, bounded evidence judges, complete cache/config telemetry and action-oriented compact reports. |
| Publishes the accumulated provider/toolchain maintenance, raises the Anthropic SDK range and keeps npm 12 dependency scripts fail-closed with an exact, reviewed Google Gen AI 2.12.0 no-op lifecycle permission. |
| Makes background observation compact and race-safe: summary polling by default, explicit forensic detail, real HTML-neutralized Markdown, durable cross-host job status and idempotent late-cancellation results with final state. |
| Ships the Evidence Broker continuity fix with the complete Dependabot hardgate: supported npm resolver, npm 12 build/release pin, pip-compile source+hash lock, grouped Python updates and concurrent-base merge retry. |
| Restores Evidence Broker continuity safely: clean grounded historical READY sources are replayed locally without stale prompt reuse, strict same-owner aliases collapse, |
| Eliminates a repeated ReDoS class in Evidence Broker symbol extraction and makes publication wait for CodeQL on the exact SHA plus zero actual open code-scanning alerts. |
| Fixes Evidence Broker convergence: direct rounds receive unresolved checklist IDs, grounded same-requester rechecks close the correct item, natural-language alternatives no longer deadlock, and irrelevant or partial evidence still fails closed. |
| Makes autonomous evidence routing unambiguous in the MCP contract: AI evidence is persisted automatically through review starters, while the optional operator authority-promotion tool cannot be mistaken for a mandatory human upload step. |
| Retries npm attestation propagation independently from package visibility and follows the registry-advertised pathname on the pinned npm registry origin, preventing false-negative post-publish failures without weakening SLSA provenance requirements. |
| Keeps server-authored READY remediation out of peer |
| Hash-pinned npm 12.0.1 bootstrap across CI/release jobs and trusted default-branch auto-tag checkout with exact successful-CI SHA gating; closes code-scanning alerts 32–38. |
| Complete 4.5.6 provider remediation plus CI-before-tag release ordering, npm 12.0.1 alignment, strict dependency-script review and cache exclusion. |
| Six-provider contract remediation — provider-specific wire schemas and output budgets, controlled OpenAI/Gemini truncation recovery, safe citation/diff correlation, runtime namespace fixes, corrected FinOps, and npm 12/OIDC release hardening. |
| Clean-runner publish follow-up — make cancellation, health and accounting regression fixtures independent from private operator rate cards and reject false-green preflight coverage; production financial gates remain fail-closed. |
| Runtime-hardgate remediation — fix grounding, truthfulness namespaces, consensus judging, multi-window cancellation, accounting, session ceilings, terminal reports and cross-provider |
| Security/hardgate patch — remove exponential regex backtracking, trust integrity-checked attachment path/digest metadata, accept correlated single-quoted artifact literals and stop treating source-version bumps as historical runtime claims. |
| Patch release — publish the complete authenticated-evidence transport update with a hermetic clean-runner regression fixture; no operator central configuration is required by the test gate. |
| Patch release — restore authenticated peer evidence transport with append-only active snapshots, combined preflight parity, strict operational records, independent relator/reviewer roles and immutable terminal outcomes; no manual operator attachment is required. |
| Minor release — refresh all six provider contracts and add fail-closed provider terminals, runtime config fingerprints, operator evidence custody, peer self-attestation rejection, and grounded READY votes. |
| Patch — raise the transitive |
| Patch — promote the patched |
| Patch — close the remaining Claude re-validation tail: orchestrator attached-evidence reads now fail closed, session_doctor defaults to action-oriented findings, and T2#10 source-regex debt drops to a locked total of 160. |
| Patch — close the seven verified residual audit items: evidence fail-closed realpath handling, typed shadow-decision runtime events, derived release date, redaction-comment correction, retry/security gate verification, and a locked T2#10 smoke source-contract budget. |
| Patch — central config can now carry model-specific rate cards, so Claude Opus 4.8 and Claude Fable 5 pricing are both stored and the active Anthropic rates follow the configured Claude model automatically. |
| Patch — continue the T2#10 smoke-debt reduction by moving the lazy provider SDK import source contract into the dedicated source-contract smoke, preserving coverage while reducing broad smoke regex pins. |
| Patch — support Claude Fable 5 as an explicit Anthropic production-model option, including verified model selection, refusal handling, refusal events, docs and cost guidance. |
| Patch — complete residual audit sweep: full mutating-tool identity gate, evidence attachment cache/safety, async EventLog flush, Perplexity auth-only probe mode, cache-cost correctness, dashboard report method split, and dedicated source-contract smoke isolation. |
| Minor — consolidated audit close-out: log-level validation, realpath containment, initial-draft fabrication guard, Perplexity probe minimization, identity audit events, derived tool list, docs and metadata guards. |
| Patch — move |
| Patch — move |
| Patch — evidence preflight now blocks paid review when the submission references an external evidence/log artifact that was not attached to the session. |
| Patch — isolate |
| Patch — filter Perplexity streaming |
| Patch — harden cross-process event sequencing, exact-match fabrication checks, Gemini missing-text handling, and streaming provider error retry classification. |
| Patch — add forensic diagnostics for append/event and identity failures, flush pending events on shutdown signals, retry structured provider 5xx errors, and refresh official AI provider SDKs. |
| Patch — harden persistence redaction, finalized-session mutation guards, side-effect identity gates, caller-token rotation output, and Windows registry config fallback. |
| Patch — tighten skip-peer classification so non-retryable provider errors block, while Anthropic overload events remain retryable and better surfaced in skip diagnostics. |
| Minor — P1/P2/P3 follow-up with unresolved-evidence close-out visibility, an offline fixture eval harness, and a read-only peer reliability report. |
| Patch — harden session auditability with terminal events, cost split reporting, |
| Patch — harden truthfulness preflight auditability, add a read-only preflight retest tool, and reduce false parser warnings for attached/log evidence. |
| Patch — promote the Gemini canonical default to |
| Patch — provider-doc refresh, Perplexity probe repair, current model pins, and rate-card guidance. |
| Patch — publish the workspace hard-gate cleanup as a package release. |
| Minor — bounded MCP session listing and cancellation semantics cleanup. |
| Patch — release the hard-gate cleanup as a published package. |
| Minor — security hardening of session-store concurrency, write-path DoS surface, and credential redaction. |
| Patch — eliminate the recurring |
| Patch — bounded npm registry fetch in the post-publish verifier. |
| Patch — Windows-safe registry verifier. |
| Patch — hard-gate close-out for the Codex v4.0.4 audit. |
| Patch — restore prettier coverage of |
| Patch — biome/check gate wiring after the v4 rename. |
| Patch — Codex second-pass audit close-out (6 findings). |
| Patch — close-out of post-v4.0.0 audit (eight surfaces left stale by the rename bulk-replace). |
| Major — project renamed to |
| Patch — logs+sessions study 15/05/2026 close-out (4 surgical fixes from 244-session/429-round corpus). |
| Patch — "sem fallback é sem fallback" directive + Codex v3.7.2 parecer residuals. |
| Patch — Codex 3rd super-audit close-out of v3.7.1 |
| Patch — Codex super-audit close-out of v3.7.0 |
| Minor — Codex super-audit close-out 14/05/2026 |
| Minor — observability + caller-discipline close-out 14/05/2026 |
| Minor — Codex operational-report close-out 14/05/2026: 5 findings from sessions |
| Minor — Perplexity multi-failure-mode close-out 13/05/2026: 3 coordinated fixes covering 7 production sessions Codex flagged ( |
| Minor — Caller peer-selection lock (operator directive 12/05/2026: "TODOS OS AGENTES/PEERS SEMPRE PARTICIPAM, INDEPENDENTE DA ESCOLHA OU VONTADE DO CALLER"). |
| Patch — Codex bug-report close-out 12/05/2026: three surgical fixes (Perplexity |
| Minor — Central config file ( |
| Major — Perplexity joins the sexteto. Quinteto (5 peers) → sexteto (6). |
| Minor — Cold-start hardening Part 3: Windows registry env-var lookup bulk-cached (3-7 s → ~100 ms). |
| Patch — Cold-start hardening Part 2: lazy-load 5 provider SDKs + defer 6 startup sweeps to setTimeout(30s). |
| Minor — Cold-start hardening Part 1: corrupted meta.json auto-quarantine + finalized-session auto-prune. |
| Patch — |
| Minor — Full pricing-model schema: base + extended-tier + cache (read/write) + promo (limited-time discount), all env-configurable, graceful fallback when fields are absent or promo expires. |
| Patch — |
| Third deliberation mode |
| Evidence-provenance lock for the ship-mode relator (Codex bug report 10/05/2026). |
| Anthropic empty-revision degenerate path detection. |
|
|
| Cross-provider prompt caching across all 5 peers (OpenAI, Anthropic, Gemini, DeepSeek, Grok). |
| Site sponsor card iteration. |
| Patch — |
| Patch — Gemini API function-declaration compatibility for MCP tool inputSchemas. |
| Patch — anti-drift smoke drivers for v2.18.4 audit closure (operator directive 07/05/2026). |
| Patch — Codex external audit 07/05/2026 outcome: 6 surgical fixes (P1.1, P1.2, P1.3, P1.4, P2.1, P2.4). |
| Patch — Gemini default pin bump |
| Tier 5 — Windows process-tree introspection (coordinated with cross-review-v1 v1.12.2). |
| Hotfix: closes Dependabot security advisory GHSA-v2v4-37r5-5v8g (medium severity) — |
| F1 caller capability tokens (coordinated with cross-review-v1 v1.11.0). |
| HARD GATE — identity forgery rejection (operator directive 05/05/2026). |
| Tribunal protocol repair plus operational doctor. |
|
|
| Backlog bundle for operational judge controls. |
| Grok reasoning model hotfix. |
| Grok joins the tribunal. |
| Lead meta-review drift fix. |
| Shadow judge observability. |
| Relator lottery plus shadow auto-wire. |
| LLM evidence-judge pass. |
| Per-peer health and Evidence Broker lifecycle. |
| Evidence Broker. |
| Fallback/recovery budget hard gate. |
| Token-delta compaction plus v2.5 format hotfix bundle. |
| Evidence and budget hardening pass. |
| CI stub fail-fast hotfix. |
| Audit-closure hardening pass. |
| Prompt shielding and financial safety. |
| CI-green README/docs cleanup. |
| README organizational standardization. |
| Provider-neutral |
| Provider token streaming. |
| CodeQL and model-selection hardening. |
| First stable |
| Session event race hotfix. |
| Background sessions and durable reports. |
| Publishing and dashboard sanitization. |
| Public npm/package metadata alignment. |
| Development package line hardening. |
| Durable session recovery alpha. |
| Model attestation and store hardening alpha. |
| Initial API/SDK-only MCP server. |
What It Does
cross-review is the stable API-first implementation of the cross-review
pattern. It orchestrates provider API clients (OpenAI/Codex, Anthropic/Claude,
Google Gemini, DeepSeek, xAI/Grok, and Perplexity) and provides an
MCP-compatible server surface.
Runtime calls are real provider calls by default. Stubs exist only for smoke
tests and CI when CROSS_REVIEW_STUB=1.
OpenAI client library (
openai) for the Codex/OpenAI peer.Anthropic TypeScript client library (
@anthropic-ai/sdk) for Claude.Google Gen AI client library (
@google/genai) for Gemini.OpenAI-compatible DeepSeek API through the OpenAI client library.
OpenAI-compatible xAI Grok API through the OpenAI client library.
OpenAI-Responses-compatible Perplexity Agent API through the OpenAI client library.
The MCP SDK (
@modelcontextprotocol/sdk) is declared as a development dependency and bundled into the stdio artifact; its audited scope is thereforebundled/dev, not an undeclared consumer dependency.
package.json is the source of truth for declared dependency ranges.
package-lock.json records the exact resolution for this repository checkout;
consumers resolve those ranges through their own lockfiles.
Related MCP server: Multi-MCP
Quick Start
# Set API keys (PowerShell example)
[Environment]::SetEnvironmentVariable("OPENAI_API_KEY", "<OPENAI_API_KEY>", "User")
[Environment]::SetEnvironmentVariable("ANTHROPIC_API_KEY", "<ANTHROPIC_API_KEY>", "User")
[Environment]::SetEnvironmentVariable("GEMINI_API_KEY", "<GEMINI_API_KEY>", "User")
[Environment]::SetEnvironmentVariable("DEEPSEEK_API_KEY", "<DEEPSEEK_API_KEY>", "User")
[Environment]::SetEnvironmentVariable("GROK_API_KEY", "<GROK_API_KEY>", "User")
[Environment]::SetEnvironmentVariable("PERPLEXITY_API_KEY", "<PERPLEXITY_API_KEY>", "User")Restart your terminal after changing environment variables.
Run the MCP host only from the package published by the registry; do not point a production host at this checkout:
npm upgrade -g @lcv-ideas-software/cross-review --ignore-scripts --allow-git=none --allow-remote=noneFor local smoke tests (no-cost):
$env:CROSS_REVIEW_STUB = "1"
npm testConfiguration
Model selection and runtime behaviour can be controlled with environment variables. Example overrides (PowerShell):
[Environment]::SetEnvironmentVariable("CROSS_REVIEW_OPENAI_MODEL", "gpt-5.6-sol", "User")
[Environment]::SetEnvironmentVariable("CROSS_REVIEW_OPENAI_REASONING_EFFORT", "max", "User")
[Environment]::SetEnvironmentVariable("CROSS_REVIEW_ANTHROPIC_MODEL", "claude-fable-5", "User")
[Environment]::SetEnvironmentVariable("CROSS_REVIEW_ANTHROPIC_REASONING_EFFORT", "max", "User")
[Environment]::SetEnvironmentVariable("CROSS_REVIEW_GEMINI_MODEL", "gemini-3.1-pro-preview", "User")
[Environment]::SetEnvironmentVariable("CROSS_REVIEW_DEEPSEEK_MODEL", "deepseek-v4-pro", "User")
[Environment]::SetEnvironmentVariable("CROSS_REVIEW_GROK_MODEL", "grok-4.6", "User")
[Environment]::SetEnvironmentVariable("CROSS_REVIEW_GROK_REASONING_EFFORT", "xhigh", "User")
[Environment]::SetEnvironmentVariable("CROSS_REVIEW_PERPLEXITY_MODEL", "perplexity/kimi-k3", "User")
[Environment]::SetEnvironmentVariable("CROSS_REVIEW_PERPLEXITY_REASONING_EFFORT", "max", "User")ultra is a Codex product/CLI execution mode, not a literal OpenAI Responses
API reasoning.effort. Cross-review nevertheless accepts it in central config,
environment variables and per-call overrides as a compatibility alias, then
normalizes it inside each provider adapter. For gpt-5.6-sol, the wire value is
the official max; ultra is never sent to the Responses API. Using max
directly remains equivalent and makes the API value explicit. The shared
legacy value minimal is likewise translated to GPT-5.6's lowest active API
effort, low. Explicit older-model overrides use a family-aware compatibility
matrix: GPT-5.5/5.4/5.2 map minimal to low and max/ultra to xhigh;
GPT-5.1 maps minimal to low and xhigh/max/ultra to high; original
GPT-5 maps none to minimal and xhigh/max/ultra to high. Supported
native values pass through unchanged.
Claude Fable 5 is the canonical Anthropic pin. Its request deliberately omits
the explicit thinking field: Fable applies adaptive thinking automatically,
while output_config.effort controls depth. Anthropic documents a 30-day data
retention posture and no zero-data-retention option for this model. A response
with stop_reason="refusal" is recorded as provider_refusal, and partial
refusal output is not accepted as a review.
Claude Opus 5 (claude-opus-5) is a first-class explicit override, not a
fallback and not an automatic replacement for Fable 5. The adapter sends
adaptive thinking with omitted thinking text and supports
low/medium/high/xhigh/max effort. The maintained 64,000-token Claude
output budget is Anthropic's recommended starting point for xhigh or max;
the model's synchronous API ceiling is 128,000. Selecting Opus 5 also selects
its own model-specific rate card, so Fable pricing is never borrowed.
For Grok, GROK_API_KEY is canonical. The default pin is grok-4.6; xAI
accepts low, medium, high, or xhigh reasoning effort for it, so the
adapter normalizes max/ultra to xhigh before sending the request.
For Perplexity, PERPLEXITY_API_KEY is canonical. The default pin is
perplexity/kimi-k3 on the Perplexity Agent API (OpenAI-Responses-compatible
/v1/responses). Sonar Chat Completions retires on 27/09/2026, so legacy
unprefixed Sonar ids are rejected with a migration diagnostic. The reviewer
role declares the web_search tool (billed per invocation); the relator role
never does.
Central configuration is loaded once when the MCP server process starts. Use
server_info.config_load to inspect the loaded path, parse result, loaded and
current SHA-256/mtime, and reload_required. live_reload_supported is
false: after editing config.json or host environment variables, restart or
reload the MCP host/window. A stale or invalid central config blocks paid calls
instead of silently spending under fallback defaults.
Evidence judges have independent compact controls:
evidence_judge_autowire.max_output_tokens defaults to 2048 and
evidence_judge_autowire.reasoning_effort defaults to medium. Unknown
in-flight provider cost blocks judge dispatch rather than being treated as
zero. Their environment-variable equivalents are
CROSS_REVIEW_EVIDENCE_JUDGE_MAX_OUTPUT_TOKENS and
CROSS_REVIEW_EVIDENCE_JUDGE_REASONING_EFFORT; as with the other central
settings, an explicit host environment value takes precedence over
config.json.
Evidence Broker admission is fail-closed and atomic. Its configurable defaults
are 8 requests per peer per round, 24 requests per round, 64 durable
items and 64,000 total request characters per session:
{
"evidence_broker": {
"max_requests_per_peer_round": 8,
"max_requests_per_round": 24,
"max_items_per_session": 64,
"max_chars_per_session": 64000
}
}Crossing a limit never truncates, discards or auto-satisfies a blocker. The
complete peer response remains durable, the checklist batch is rejected as a
unit, automatic judging is skipped and the session stops with
evidence_checklist_contract_violation before another paid round. Existing
oversized sessions stop before provider dispatch.
Financial and budget controls are required for paid provider calls. Configure these environment variables before running real sessions (example):
[Environment]::SetEnvironmentVariable("CROSS_REVIEW_MAX_SESSION_COST_USD", "20", "User")
[Environment]::SetEnvironmentVariable("CROSS_REVIEW_PREFLIGHT_MAX_ROUND_COST_USD", "20", "User")
[Environment]::SetEnvironmentVariable("CROSS_REVIEW_UNTIL_STOPPED_MAX_COST_USD", "20", "User")MCP Tools
server_inforuntime_capabilitiesprobe_peerssession_initsession_listsession_readask_peerssession_start_roundrun_until_unanimoussession_start_unanimoussession_cancel_jobsession_recover_interruptedsession_pollsession_eventssession_metricssession_doctorsession_reportsession_peer_reliability_reportsession_check_convergencesession_preflight_checksession_truthfulness_preflight_checksession_attach_evidence— optional operator-only authority promotion; AI callers use the automaticevidencefield on review starterssession_evidence_checklist_updatesession_evidence_judge_passsession_evidence_judge_consensus_passsession_judgment_precision_reportcontest_verdictescalate_to_operatorregenerate_caller_tokenssession_sweepsession_finalize
session_events returns at most 200 events by default, excludes
peer.token.delta telemetry unless include_token_deltas=true, and returns
next_seq plus has_more for bounded pagination. Set limit explicitly up to
1,000 when a larger forensic page is needed.
session_poll uses detail="summary" by default. The compact response keeps
operational progress, verdicts, bounded peer summaries and convergence data,
but omits complete prior-round peer text, raw and structured
payloads. Use detail="full" or session_read only for deliberate forensic
inspection. active_round_number names the round executing now, whereas
latest_completed_round_number names the newest round already appended to
durable history; during a live round these values can differ.
Every tool that accepts response_format="markdown" returns actual Markdown,
not a JSON object serialized inside a text block. Strings from callers, peers
and persisted sessions are HTML-neutralized before rendering.
session_cancel_job is idempotent around settlement races. A late request
for a known completed, failed or cancelled job returns requested=false,
reason="job_already_terminal", terminal_job and final_state. When
the session itself is already terminal, the reason is
session_already_terminal. Compact job status is persisted per session so a
sibling MCP host or a restarted runtime can return the same answer without
requiring process-local memory.
session_doctor separates real and stub sessions, flags terminal outcomes that
lack terminal events, and reports peer-call cost separately from generation
artifact cost. Terminal max-rounds and terminal not_resurfaced history stay
in totals but are omitted from default operational findings; pass
include_terminal_findings=true to enumerate that historical inventory.
session_report uses the same cost split and calls out not_resurfaced
evidence checklist items as inference-only, not proof that the requested
evidence was satisfied. If a session otherwise reaches unanimity with open or
not_resurfaced checklist items, finalization records an
*_with_unresolved_evidence outcome reason and emits a durable unresolved
evidence event. session_peer_reliability_report is read-only and aggregates
per-peer parser warnings, evidence ask status, provider failures, cost and
latency.
Anti-deception and evidence custody
The runtime does not treat a peer's claim that work was completed as proof.
Before paid calls and again during convergence, it checks runtime/model claims,
workflow and authorization assertions, test/build/hash claims, concrete source
correspondence, unresolved evidence asks, model attestation, and structured
status completeness. Authenticated caller evidence supplied inline or through
the evidence field is persisted with an integrity digest and transported to
every reviewer as PEER-SUBMITTED / UNVERIFIED; no manual operator attachment
is required. Each external submission atomically supersedes the active caller
snapshot while preserving prior manifests for audit, so retries cannot inherit
old failures or replay old successes. Every READY vote must cite sources traceable to the reviewed
artifact or admitted evidence. When operational claims depend only on
peer-submitted material, at least two independent non-author reviewers must use
confidence="verified" and cite the attachment path, SHA-256 and correlated raw
lines; one voter, inferred confidence or narrative repetition cannot converge.
Relator output that invents operational evidence is rejected rather than
propagated; a source that quotes an admitted attachment literally — a GitHub
URL the provider escaped included — is not treated as invented, and a file
whose post-image an admitted unified diff carries is not treated as
unattached.
READY is intentionally not free-form. Its summary must be exactly
No blocking objections remain., caller_requests and follow_ups must be
empty, and no narrative may appear outside the JSON/status envelope. Detail
belongs in evidence_sources. This removes synonym/negation ambiguity: any
noncanonical READY becomes NEEDS_EVIDENCE and cannot converge.
Each attachment-backed evidence_sources item has one canonical string format:
Attachment: evidence/review.txt
sha256=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Artifact quote: "Tests 74 passed (74)"This block shows the decoded string; a raw JSON response encodes its two line
breaks as \n.
The path and full 64-character lowercase digest identify the same persisted
attachment, and Artifact quote is a literal from that attachment. The quote
must be at least 12 characters and must end the item. Cite the smallest
sufficient literal (normally no more than 500 characters); the hard limits are
2,500 characters per whole item and 30 items. Multiple sources belong in
separate array items—never join attachments or append rationale after a quote.
The wire type deliberately remains string[], so existing string-producing
clients remain compatible; the runtime does not require citation objects.
These limits are both anti-verbosity and anti-shortcut controls. A peer must
inspect the artifact and cite the decisive raw value, but must not replace a
review with a full-file, full-log, or provider-output dump. A bare filename,
digest, generic assurance, or empty code fence cannot sustain READY.
Only the human operator may call the optional session_attach_evidence
authority-promotion surface or mutate terminal state and security
configuration. This tool is never required for an ordinary AI-initiated
review: the runtime tool descriptions and rejected-call remediation direct AI
callers to the automatically persisted evidence field. Each new attachment
records the verified caller, origin, timestamp, byte count and SHA-256, emits a
durable custody event, and is re-hashed on every read.
Tampering fails closed. Peer-attributed material remains reviewable but cannot
grant operator authority; a generic attachment does not by itself prove an
unrelated claim.
An evidence requester may automatically withdraw only its own earlier ask after
a strictly grounded READY/verified recheck. That transition is recorded as
requester_reverified; silence remains not_resurfaced, and no peer can close
another peer's ask or an operator-terminal item.
On an existing session, review starters require the persisted petitioner token
or the dedicated operator token. Evidence is attributed to the authenticated
invoker rather than inherited from the session owner, so a peer cannot turn its
submission into operator_verified by continuing an operator-owned session.
Caller identity uses seven distinct local capabilities: one for each peer and
one for operator. Operator tools require the operator token even when token
enforcement for peers is otherwise permissive. Keep that token only in a
dedicated human-console MCP host—placing it in a model host grants that model
operator authority. host-tokens.json contains secrets and assumes the local
OS account/data directory is trusted. The runtime now removes inherited NTFS
ACLs from this file on Windows and grants only the current user, SYSTEM and
Administrators; on POSIX it verifies owner-only mode 0600. This blocks direct
read access inherited by model-sandbox groups, but it is not isolation from
another process running as the same unrestricted OS user.
session_cancel_job and contest_verdict accept only the explicitly persisted
session petitioner with its peer token, or the dedicated operator. Legacy
sessions without an explicit petitioner require the operator token.
Repository conventions
License: Apache-2.0. See NOTICE and THIRDPARTY.
Security disclosure: see SECURITY.md.
Code of conduct: see CODE_OF_CONDUCT.md.
Changelog: CHANGELOG.md.
Contributing: see CONTRIBUTING.md.
Sponsorship: see the repo's
Sponsorbutton or central sponsor page.Action pinning: all GitHub Actions are pinned by full SHA per supply-chain hardening baseline.
Code owners: .github/CODEOWNERS.
Links
License
Apache-2.0. See LICENSE, NOTICE, and THIRDPARTY.
Available Tools
31 toolsask_peersAsk PeersA
Run a real API review round against selected peers. AI evidence supplied in evidence is persisted durably and transported automatically; no manual operator attachment is required. Runtime default uses real provider APIs; stubs run only when CROSS_REVIEW_STUB=1.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | ||
| draft | Yes | ||
| peers | No | ||
| caller | No | operator | |
| evidence | No | Raw evidence from the authenticated AI caller. It is persisted automatically as durable, SHA-256-addressed caller_submitted_unverified material and transported to reviewers; no manual operator attachment is required. Do not call session_attach_evidence for this routine path. | |
| session_id | No | ||
| review_focus | No | Optional provider-neutral review scope anchor. This is not Claude Code's /focus UI command; it is injected as a front-loaded Review Focus prompt block for every selected peer, including OUT OF SCOPE handling for unrelated findings. | |
| caller_status | No | READY | |
| response_format | No | json | |
| reasoning_effort_overrides | No | Optional per-peer reasoning_effort overrides for this call. Keys are peer ids (codex|claude|gemini|deepseek|grok|perplexity); missing keys fall back to global config. This is a shared scale: adapters normalize unsupported literals to the selected model's documented enum (`ultra` becomes max on GPT-5.6, Kimi K3 via Perplexity and DeepSeek, and xhigh on Grok 4.6; older GPT-5 families use their own ceilings). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavior beyond annotations: evidence is durably persisted and auto-transported without operator attachment, and execution hits real provider APIs unless CROSS_REVIEW_STUB=1. These side effects align with readOnlyHint=false and openWorldHint=true and are exactly what an agent needs to know before invoking.
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?
Three tight sentences: the action is front-loaded, then key evidence behavior, then runtime mode. Every sentence adds operational information, and nothing is wasted.
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 10 parameters, nested objects, no output schema, and a non-read-only side-effect profile, the description is too thin. It doesn't cover return format, async/poll behavior, failure modes, or how this relates to the surrounding session lifecycle tools.
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 only 30%, so the description needed to explain the remaining parameters. It only elaborates on evidence persistence and vaguely references 'selected peers', while task, draft, response_format, caller_status, and the nested reasoning_effort_overrides remain unexplained.
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 and resource ('Run a real API review round against selected peers'), which clearly states the tool's core action. It does not explicitly distinguish itself from siblings like session_start_round or probe_peers, so it falls 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives useful operational context: evidence is transported automatically and real provider APIs are the default, with stubs only under CROSS_REVIEW_STUB=1. However, it never says when to choose this tool over sibling session/round tools, leaving the choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contest_verdictContest VerdictA
v2.14.0 — formally contest a final verdict and open a new deliberation cycle. The reason accepts at most 4,000 characters. Requires the verified capability token of the persisted session petitioner, or the dedicated operator token. Petitioner READY (acata) → notify the human operator so the dedicated console can finalize; petitioner NOT_READY (contesta) → contest_verdict. Stamps the original session's meta with a contestation record (timestamp + reason + original_outcome + new_session_id) and initializes a NEW session whose contests_session_id points back to the contested session, preserving the chain of custody append-only across sessions. The original session must be in a final state (converged/aborted/max-rounds); contesting an in-flight session throws cannot_contest_in_flight_session. Once contested, a session cannot be contested again (chain-of-custody invariant) — contest the LATEST session in the chain.
| Name | Required | Description | Default |
|---|---|---|---|
| caller | No | operator | |
| reason | Yes | ||
| new_task | Yes | ||
| new_caller | No | ||
| session_id | Yes | ||
| response_format | No | json | |
| new_initial_draft | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate not read-only, not destructive, not idempotent. The description goes far beyond: it details side effects (stamps a contestation record, initializes a new session, links via contests_session_id), auth requirements (capability token or operator token), and error conditions (cannot_contest_in_flight_session). This is thorough disclosure of behavioral traits, fully compensating for the sparse 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 dense but every sentence adds critical information: purpose, constraints, auth, conditional logic, side effects, preconditions, and invariants. It is front-loaded with the core purpose and follows a logical flow, making it efficient without redundancy.
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 (7 params, 3 required, no output schema, rich invariants), the description covers all essential aspects: prerequisites, side effects on the original and new sessions, chain-of-custody rules, and error cases. There is no mention of return value, but without an output schema and given the action-oriented nature, this is acceptable; the agent has enough to call it correctly.
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 explains the primary parameters—session_id (the contested session), reason (max 4000 chars, though this repeats schema), and new_task (implied as the task for the new session)—and mentions new_initial_draft implicitly by context. However, it does not explain new_caller, response_format, or caller, leaving those to inference from defaults and enums. Partial compensation, but gaps remain.
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 'formally contest a final verdict and open a new deliberation cycle,' a specific verb and resource that clearly distinguishes it from siblings like session_finalize or session_init. It unambiguously states the tool's function and scope, making its purpose immediately understandable.
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?
Provides explicit conditions: 'Petitioner READY (acata) → notify the human operator ...; petitioner NOT_READY (contesta) → contest_verdict.' It also states preconditions ('original session must be in a final state') and exclusions ('once contested, a session cannot be contested again'), and instructs to 'contest the LATEST session in the chain.' This gives clear when-to-use and when-not-to-use guidance relative to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
escalate_to_operatorEscalate To OperatorA
Record a durable operator escalation for sessions that require human judgment or external intervention. The reason accepts at most 1,000 characters.
| Name | Required | Description | Default |
|---|---|---|---|
| caller | No | operator | |
| reason | Yes | ||
| severity | No | warning | |
| session_id | Yes | ||
| response_format | No | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
All annotation hints are false, so the description carries the burden of behavioral disclosure. It says the escalation is 'durable,' implying a persistent side effect, but it does not mention whether the escalation is reversible, notifies external parties, or what the response looks like.
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?
Two sentences with the core purpose front-loaded and a relevant constraint right after. Every word earns its place and there is no filler.
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 is serviceable for a simple escalation record, but with no annotations, no output schema, and five parameters (three enums), it leaves severity meaning, response_format behavior, and post-call outcomes unexplained. An agent could call it correctly using defaults but would be guessing about semantics.
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. The only parameter detail, 'the reason accepts at most 1,000 characters,' merely repeats the schema's maxLength. No semantics are added for session_id, severity, caller, or response_format.
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 specific verb and resource: 'Record a durable operator escalation.' It also gives the condition ('sessions that require human judgment or external intervention') and is clearly distinct from the sibling session_* management 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 phrase 'for sessions that require human judgment or external intervention' provides a clear usage condition. However, it does not explicitly name alternative tools or state when not to use it, so it stops short of the top tier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
probe_peersProbe PeersARead-onlyIdempotent
Query official provider APIs to discover available models for the current API keys, select the highest-capability documented model, and verify provider reachability.
| Name | Required | Description | Default |
|---|---|---|---|
| caller | No | operator | |
| response_format | No | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, idempotent, open-world safety profile. The description adds value by revealing that the tool makes network calls to provider APIs, uses API keys, selects a model, and probes reachability—behavioral detail beyond 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 entire definition is one dense, front-loaded sentence that begins with the primary verb and packs three related behaviors without filler. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for deciding to invoke the tool and understanding its general effect, but with no output schema it does not say what the tool returns or how providers/keys are identified in the output. A brief mention of the result shape or error behavior would complete the picture.
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 the undocumented parameters, but it never explains caller or response_format. 'Current API keys' hints at credentials but does not map to the caller enum, and the JSON/markdown response switch is unmentioned.
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 names a specific action ('Query official provider APIs'), a resource ('available models for the current API keys'), and two follow-up outcomes (select highest-capability model, verify reachability). It is unambiguous about what the tool does, though it does not explicitly contrast itself with siblings such as ask_peers.
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 provides clear context for when to call it: when an agent needs to inventory models for the current API keys or confirm provider reachability. It does not state exclusions or explicitly name an alternative like ask_peers, so it misses the full when-vs-alternatives guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
regenerate_caller_tokensRegenerate Caller Tokens (F1)ADestructive
Rotate the seven caller capability tokens (six peer identities plus a distinct operator). Requires the current dedicated operator token. The response exposes fingerprints only. Distribute each peer token only to its matching model host; keep the operator token exclusively in a separate human-console MCP host. Never place the operator token in Codex, Claude, Gemini, DeepSeek, Grok or Perplexity host configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| caller | No | operator | |
| response_format | No | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, it explains that rotation produces only fingerprints in the response and that the operator token must be isolated in a separate human-console MCP host. These details add real security behavior knowledge that is not present in annotations or the schema.
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 front-loaded with the action, followed by the prerequisite, output constraint, and distribution rules. Every sentence earns its place; there is no fluff or redundant restatement of the title.
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 destructive security-sensitive operation, it names the prerequisite, describes the response limitation, and provides host-scope safety rules. Since the annotations already signal destructive behavior and there is no output schema, the description is complete enough for an agent to invoke the tool safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description should compensate. It maps the 'caller' concept to 'six peer identities plus a distinct operator', which helps interpret the enum, but it never explicitly clarifies the response_format parameter or its default. The enum values are self-explanatory enough to avoid a lower score.
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 a specific verb ('Rotate') and a specific resource ('the seven caller capability tokens'), and it clearly distinguishes this from the session and info tools listed among siblings. The noun phrasing could be tautological, but the enumeration of peer identities plus operator gives concrete scope.
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 provides strong contextual guidance: the prerequisite (requires current dedicated operator token), the operational handling of peer tokens vs the operator token, and explicit hosts where the operator token must never be placed. It does not explicitly compare to an alternative tool, but no sibling is a competing token-regeneration tool, so this context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runtime_capabilitiesRuntime CapabilitiesARead-onlyIdempotent
Return the stable cross-review runtime capability contract and active tool list.
| Name | Required | Description | Default |
|---|---|---|---|
| caller | No | operator | |
| response_format | No | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, fully covering the safety profile. The description adds that the result is 'stable' and includes a 'capability contract' and 'active tool list', which provides some behavioral context but does not go beyond what annotations already imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the key information: what is returned. There is no extraneous 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 operation with no required parameters and good annotations, the description is largely adequate. However, it does not explain what the 'capability contract' or 'active tool list' contain, and omits parameter details. Slightly incomplete for a new agent.
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. However, it does not mention the two optional parameters (caller, response_format) or their meaning. The agent gets no additional insight beyond the schema's enum names and defaults.
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 returns a 'stable cross-review runtime capability contract and active tool list'. The verb 'return' and specific resource 'runtime capabilities contract' make the purpose distinct. It differentiates well from siblings like server_info or session tools, 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.
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. There is no mention of prerequisites, context, or when not to use it. Given the many sibling tools, usage guidelines would help the agent decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_until_unanimousRun Until UnanimousA
Generate or revise a draft and continue real API peer-review rounds until unanimous READY or the configured max_rounds is reached. AI evidence supplied in evidence is persisted durably and transported automatically; no manual operator attachment is required. v2.11.0: when caller is set to a peer id (claude|codex|gemini|deepseek|grok|perplexity), the relator lottery activates: omit lead_peer to have the server randomly select a non-caller peer as relator (modeled on judicial colegiados), or supply an explicit lead_peer that is NOT the caller. An explicit lead_peer === caller is rejected at the server with caller_cannot_be_lead_peer — an agent never reviews itself (workspace HARD GATE).
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | ship | |
| task | Yes | ||
| peers | No | ||
| caller | No | operator | |
| evidence | No | Raw evidence from the authenticated AI caller. It is persisted automatically as durable, SHA-256-addressed caller_submitted_unverified material and transported to reviewers; no manual operator attachment is required. Do not call session_attach_evidence for this routine path. | |
| lead_peer | No | ||
| max_rounds | No | Hard review-round ceiling unless allow_auto_extension is explicitly true. | |
| max_cost_usd | No | ||
| review_focus | No | Optional provider-neutral review scope anchor. This is not Claude Code's /focus UI command; it is injected as a front-loaded Review Focus prompt block for every selected peer, including OUT OF SCOPE handling for unrelated findings. | |
| initial_draft | No | ||
| until_stopped | No | ||
| response_format | No | json | |
| allow_auto_extension | No | Opt in to at most two evidence-only auto-extensions. False keeps max_rounds rigid. | |
| reasoning_effort_overrides | No | Optional per-peer reasoning_effort overrides for this call. Keys are peer ids (codex|claude|gemini|deepseek|grok|perplexity); missing keys fall back to global config. This is a shared scale: adapters normalize unsupported literals to the selected model's documented enum (`ultra` becomes max on GPT-5.6, Kimi K3 via Perplexity and DeepSeek, and xhigh on Grok 4.6; older GPT-5 families use their own ceilings). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses the termination condition, durable evidence persistence, automatic transport, relator lottery behavior, server rejection of lead_peer===caller with the exact error code, and the workspace hard gate. This substantially enriches what the structured annotations alone convey.
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 front-loaded with the core behavior, then adds evidence handling and versioned relator-lottery semantics. Every sentence carries unique behavioral information; the density is justified by the complexity of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter tool with no output schema, the description covers the core loop, evidence handling, and relator gate, which is strong. However it omits return/polling behavior, cost controls, mode/peer selection semantics, and terminal outcome representation, leaving gaps that an agent must resolve elsewhere.
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 only 36% schema description coverage, the tool text correctly explains the most consequential parameters (caller, lead_peer, evidence) but leaves mode, peers, max_cost_usd, initial_draft, until_stopped, response_format, and other parameters to be inferred from enums/defaults. It compensates for key protocol params but not for the full parameter set.
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: 'Generate or revise a draft and continue real API peer-review rounds until unanimous READY or the configured max_rounds is reached.' This clearly identifies the purpose, but it never names or contrasts sibling tools such as session_start_unanimous, so the agent must infer the differentiation.
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?
There is no explicit when-to-use or when-not-to-use guidance relative to the many session_* and ask_peers siblings. The nearest guidance is the conditional explanation of caller/lead_peer and the note that evidence needs no manual attachment, but that addresses parameter workflow rather than tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
server_infoServer InfoBRead-onlyIdempotent
Return runtime information for the API-only Cross Review MCP server, including version, data directory and active security mode.
| Name | Required | Description | Default |
|---|---|---|---|
| caller | No | operator | |
| response_format | No | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior. The description adds specific context by naming the exact information returned (version, data directory, security mode) and specifying the server scope, which helps an agent understand the tool's output beyond what annotations convey.
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 single-sentence description is efficient in stating purpose but omits critical parameter usage. It is front-loaded with the main verb, but the lack of parameter context makes it less effective. Could be improved by briefly noting parameter options.
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 simple with two optional parameters and no output schema, the description should at minimum indicate that caller and response_format customize the output. It does not address this, leaving a significant gap in understanding how to invoke the tool effectively.
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% (no parameter descriptions in schema) yet the description provides no explanation of the two parameters (caller and response_format). Both have enums and defaults, but an agent cannot know their purpose from either the schema or description. Description fails to 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?
Description clearly states the tool returns runtime information for a specific server ('API-only Cross Review MCP server') and lists the included fields (version, data directory, active security mode). This distinctively separates it from sibling tools which are session-focused.
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?
No explicit guidance on when to use this tool versus alternatives. The description lacks context like 'Use this to check server status before performing actions' or any mention of prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_attach_evidencePromote Operator Evidence (Optional)A
Optional operator-only authority promotion; AI callers must not use this tool. No human operator action is required for ordinary reviews: pass raw proof through the evidence field of ask_peers, session_start_round, run_until_unanimous, or session_start_unanimous, and the runtime persists it durably as caller_submitted_unverified material.
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | ||
| caller | No | operator | |
| content | Yes | ||
| extension | No | txt | |
| session_id | Yes | ||
| content_type | No | text/plain | |
| response_format | No | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (destructiveHint=false, readOnlyHint=false). Description adds context: it's an optional operator promotion, no human operator action required for ordinary reviews, and runtime persists material durably. However, it does not fully explain side effects or permissions, but given the restricted use case, it's sufficient.
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?
Two sentences, no fluff. Front-loaded with the warning and alternative instructions. Every part is necessary 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?
For a tool with 7 parameters and no output schema, the description covers purpose and usage but lacks parameter details. Given that the tool is essentially restricted to operators and AI agents should not call it, the information is adequate but not fully 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%, and the description does not explain any parameter meanings or usage. For example, it doesn't clarify what `label`, `content`, or `extension` represent. This leaves the agent without critical information for correct 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?
Description clearly states this is an operator-only tool for attaching evidence, explicitly distinguishing it from other tools by stating AI callers must not use it. Title 'Promote Operator Evidence (Optional)' reinforces purpose.
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 states that AI callers must not use this tool and provides clear alternatives: pass evidence through the `evidence` field of other tools like `ask_peers`, `session_start_round`, etc. This gives unambiguous usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_cancel_jobCancel Session JobBIdempotent
Request cancellation for running background jobs in a durable session. The reason accepts at most 300 characters. Requires the verified capability token of the persisted session petitioner, or the dedicated operator token; another peer cannot cancel the job. Provider calls receive AbortSignal where the provider client supports it.
| Name | Required | Description | Default |
|---|---|---|---|
| caller | No | operator | |
| job_id | No | ||
| reason | No | requester_requested | |
| session_id | Yes | ||
| response_format | No | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations: it notes that cancellation is a request (not immediate), requires specific tokens, and mentions AbortSignal support. Annotations already indicate idempotentHint=true and destructiveHint=false; the description does not contradict them.
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 (4 sentences) and front-loads the purpose. It is not verbose, but the lack of parameter descriptions reduces structural clarity.
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 5 parameters, no output schema, and 0% schema coverage, the description is incomplete. It explains purpose and some constraints but omits parameter details, return values, and error handling, leaving agents underinformed.
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 mentions reason's maxLength (300 chars). It does not explain session_id, job_id, caller, or response_format, leaving agents without crucial parameter semantics.
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 cancels running background jobs in a durable session. It uses a specific verb-resource pair ('request cancellation' + 'background jobs in a durable session'). It distinguishes from siblings because many session_ tools exist, but only this one targets cancellation.
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 specifies token requirements and restrictions (another peer cannot cancel), providing some usage context. However, it does not explicitly state when to use this tool versus alternatives like session_doctor or session_events, nor does it mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_check_convergenceCheck ConvergenceARead-onlyIdempotent
Return the latest durable convergence state, health and scope for a saved session without calling providers.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | ||
| response_format | No | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and idempotentHint=true, and the description adds behavioral context about not calling providers, which aligns with and supplements the annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the key information (return value and behavior) with 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?
Despite having only two parameters and no output schema, the description lacks parameter details, expected return format, and error states, and does not address how this tool fits among many sibling session tools.
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 tool description provides no information about the parameters (session_id pattern or response_format enum), leaving the agent with only the schema names and types.
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 returns 'the latest durable convergence state, health and scope for a saved session' and specifies it does so 'without calling providers,' distinguishing it from sibling tools like session_read that likely involve provider calls.
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 implies a lightweight check ('without calling providers') but does not explicitly state when to use this tool versus alternatives like session_read or probe_peers, nor does it provide exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_doctorSession DoctorAIdempotent
Operational audit across durable sessions: open/stale/blocked cases, legacy self-lead metadata, open evidence asks (with per-peer item type drill-down + chronic blockers since v2.22), Grok provider errors, and token-event noise. Read-only by default (does not modify sessions). Terminal max-rounds and terminal not_resurfaced history stay in totals but are not default operational findings; pass include_terminal_findings=true to enumerate that historical inventory. Pass include_legacy=true to enumerate per-session self_lead_metadata entries (hidden by default since v2.22 because pre-v2.16 sessions carry the legacy artifact at ~38% rate; totals.self_lead_metadata count is always visible). v3.6.0: pass repair=true (opt-in) to recompute convergence_health for sessions stuck in the contradictory outcome="converged"+health="blocked" state left by pre-v3.2.0 corruption — only that specific contradiction is touched, only when explicitly requested; the repaired array lists what was fixed.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| caller | No | operator | |
| repair | No | ||
| include_legacy | No | ||
| response_format | No | json | |
| include_terminal_findings | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behavioral traits beyond annotations: read-only by default with opt-in modification via repair=true, specifics of repair (only touches specific contradiction state), legacy artifact handling, and terminal findings enumeration. This adds valuable context not present in annotations (which only hint at idempotency and non-destructiveness).
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 verbose and dense with technical details (e.g., 'v3.6.0', 'pre-v3.2.0 corruption', '~38% rate'). While every sentence adds value, the length and jargon may hinder quick comprehension. Structuring with bullet points or shorter sentences would improve conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, multi-faceted audit), the description covers major behaviors: read-only default, repair mechanics, legacy enumeration, terminal findings. It lacks description of output format (beyond noting the 'repaired' array) but adequately addresses the core functionality. The absence of an output schema raises the burden, but the description meets most requirements.
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 bears full burden. It explains repair, include_legacy, and include_terminal_findings parameters with precise semantics. However, limit, caller, and response_format are not described, leaving gaps. The explanation for the explained parameters is clear and adds meaning beyond the schema enum/default values.
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 performs an 'operational audit' across durable sessions, enumerating specific categories like open/stale/blocked cases, legacy metadata, evidence asks, Grok errors, and token noise. This distinguishes it from sibling tools like session_list or session_read by being a comprehensive health check rather than a simple listing or retrieval.
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 implies usage for auditing session health and troubleshooting, but does not explicitly state when to use this tool versus alternatives. It lacks direct comparisons or exclusions, though the detailed behavior (read-only default, repair opt-in) provides contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_eventsRead Session EventsARead-onlyIdempotent
Read a bounded page of durable session events. Token-delta telemetry is excluded by default; opt in only for streaming forensics. Continue with next_seq while has_more is true.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| since_seq | No | ||
| session_id | Yes | ||
| response_format | No | json | |
| include_token_deltas | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds valuable context: that events are 'durable' (persisted), pagination is via 'next_seq' and 'has_more', and token-delta telemetry is excluded by default. This goes beyond annotations without contradicting them, providing practical behavioral expectations for the agent.
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 comprised of three concise sentences, each adding distinct value: the first defines the operation, the second clarifies a special parameter, and the third provides pagination guidance. It is front-loaded with the core purpose and has zero fluff. This is exemplary conciseness with high information density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (5 parameters, pagination) and no output schema, the description covers the essential points: what events are read, the main optional parameter, and how to paginate. It does not explain the output format or the meaning of response_format, but the schema's enum and default handle that. The description is almost complete for effective usage, with only minor gaps in return value documentation.
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 the undocumented parameters. The description mentions 'bounded page' (implying limit), 'next_seq' (since_seq parameter), and 'token-delta telemetry' (include_token_deltas). It also states the default exclusion of token deltas, which aligns with the default false. However, it does not describe response_format or the meaning of since_seq beyond pagination, but given the schema has defaults and clear types, this is a solid 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 'Read a bounded page of durable session events' which specifies the verb (Read), resource (session events), and key characteristic (bounded, durable). It distinguishes itself from siblings like session_list (list sessions) and session_metrics (aggregate metrics) by focusing on raw event logs. The mention of token-delta telemetry exclusion further clarifies its scope.
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 strong context: 'Continue with next_seq while has_more is true' gives explicit pagination guidance, and 'Token-delta telemetry is excluded by default; opt in only for streaming forensics' tells when to use the include_token_deltas parameter. However, it does not explicitly mention alternative tools for other event-related operations (e.g., session_metrics for aggregated data), which would strengthen the usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_evidence_checklist_updateUpdate Evidence Checklist Item StatusA
Operator workflow for the v2.7.0 Evidence Broker. Mark a checklist item as 'satisfied' (operator confirms the ask was answered), 'deferred' (out of scope for this session), 'rejected' (ask itself is unfounded), or 'open' (retract a prior terminal status). The 'addressed' status is reserved for runtime auto-promotion (resurfacing inference) and cannot be set via this tool. Every transition is appended to evidence_status_history with the operator's optional note.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| caller | No | operator | |
| status | Yes | ||
| item_id | Yes | ||
| session_id | Yes | ||
| response_format | No | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (all false), the description discloses the key behavioral trait: 'every transition is appended to evidence_status_history with the operator's optional note', which is consistent with idempotentHint=false since repeated calls create additional history entries. It also explains the runtime auto-promotion behavior that owns the 'addressed' status. This enriches context without contradicting the structured hints.
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?
Each of four sentences earns its place moves forward: the role and version, the statuses with crisply scoped definitions, the 'addressed' exclusion, and the history side effect. Context is reasonably|null|. There is no filler or tautology — it reads as a spec, not boilerplate.
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 tool with no output schema, no parameter descriptions, and only negative annotations, the description covers the full decision surface: all four legal statuses, the forbidden status, and the side-effect of appending history entries. Remaining gaps are minor: what response_format returns and the exact provenance of item_id are not explained, but the operator workflow and status semantics are completely usable.
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?
Given 0% schema description coverage, this description carries the semantic weight for the most important parameter, 'status': it defines exactly what each enum value resolves when monitoring an operator action. It also clarifies that 'note' is the optional operator note appended to history. It does not explain session_id, item_id, caller, or response_format, but their schemas' patterns and enums already serve those adequately — the definition focuses its budget where ambiguity is highest.
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 specific verb and resource ('Mark a checklist item') and enumerates all four legal statuses with their operational meanings: satisfied, deferred, rejected, open. It clearly signals that 'addressed' is not settable through this tool, which is an additional scope boundary. The operator-workflow framing and status semantics distinguish it from evidence-attachment and judging siblings without needing to name them.
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 when-to-use context: each status is mapped to the operator's workflow condition ('operator confirms the ask was answered', 'out of scope for this session', etc.). It also gives a crisp when-not-to-use rule: the 'addressed' status is réservé for runtime auto-promotion and cannot be set here. It does not name alternative sibling tools explicitly, but the exclusion and conditional semantics provide solid routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_evidence_judge_consensus_passRun Evidence Judge Consensus PassB
Operator-authorized multi-peer evidence judgment. Requires the dedicated operator capability token and at least two distinct enabled judge peers. A peer is forbidden from ruling on its own evidence ask; any self-judge member makes that item's consensus fail closed. Active mode promotes only unanimous verified-satisfied judgments with non-empty rationales and zero parser warnings; shadow mode never mutates state.
| Name | Required | Description | Default |
|---|---|---|---|
| draft | Yes | ||
| round | No | ||
| caller | No | operator | |
| item_ids | No | ||
| session_id | Yes | ||
| judge_peers | Yes | ||
| shadow_mode | No | ||
| review_focus | No | ||
| response_format | No | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With all annotations false, the description carries the burden of disclosing behavior. It meaningfully explains that shadow mode never mutates state, active mode enforces unanimous verified-satisfied judgments with non-empty rationales and zero parser warnings, and self-judging causes fail-closed behavior. This goes well beyond the structured annotations, though it leaves the exact effects of 'promoting' somewhat vague.
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 information-dense, consisting of two front-loaded sentences that establish purpose, prerequisites, mode differences, and key constraints. It has no filler, though the density of specialized terms like 'parser warnings' and 'promotes' could benefit from brief expansion.
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 complex tool with 9 parameters, no output schema, and sparse annotations, the description is insufficient. It leaves critical operational details undefined, such as what 'draft' contains, how item_ids are selected, what review_focus does, and what the tool returns. An agent would struggle to construct a correct call with only this description.
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 clarifies judge_peers and shadow_mode. It does not explain the meaning or usage of session_id, draft, round, caller, item_ids, review_focus, or response_format, which are essential for correctly invoking this tool with 9 parameters.
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 identifies the tool as an operator-authorized multi-peer evidence judgment process, with specific operational constraints. It distinguishes itself from sibling tools like session_evidence_judge_pass through the explicit 'consensus' focus, though it does not directly name any sibling.
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 necessary prerequisites (operator token, two distinct judge peers) and differentiates active vs shadow modes, giving some contextual use guidance. However, it does not explicitly state when to choose this tool over alternatives such as ask_peers, run_until_unanimous, or session_evidence_judge_pass, nor does it mention exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_evidence_judge_passRun Evidence Judge PassA
Operator-authorized LLM satisfied-detection for the Evidence Broker. Requires the dedicated operator capability token. The configured judge peer reads each currently-open checklist item against the supplied draft and returns a structured judgment; a peer can never judge its own evidence ask. The runtime promotes only items where satisfied=true AND confidence='verified'; everything else stays open. Terminal operator statuses and already-addressed items are never touched. Optional shadow_mode records non-mutating decisions.
| Name | Required | Description | Default |
|---|---|---|---|
| draft | Yes | ||
| round | No | ||
| caller | No | operator | |
| item_ids | No | ||
| judge_peer | Yes | ||
| session_id | Yes | ||
| shadow_mode | No | ||
| review_focus | No | ||
| response_format | No | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
All annotations are false, so the description carries the full burden of behavioral disclosure. It discloses the token requirement, the judge peer's role, the 'cannot judge its own ask' constraint, the promotion rule (satisfied=true and confidence='verified'), that everything else stays open, that terminal statuses are untouched, and that shadow_mode is non-mutating. These details go well beyond a generic tool statement and make side effects predictable.
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 about four sentences and packs a lot of information without being overly verbose. The opening sentence establishes the purpose, and subsequent sentences detail behavior. There is minor redundancy (e.g., 'Operator-authorized' and 'Requires the dedicated operator capability token' could be merged), but overall it is efficiently structured and front-loads the core action.
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 tool with 9 parameters, no output schema, and zero param descriptions, the description covers the core process well (what items it operates on, promotion rules, exceptions) but omits parameter semantics for most fields and does not describe return structure. It gives enough for a basic invocation but not enough to use optional parameters like round, item_ids, review_focus, or response_format effectively. The complexity warrants more detail.
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 adds meaning only for 'draft' (the supplied text) and 'judge_peer' (the configured reader), with no explanation of the other 7 parameters (session_id, round, caller, item_ids, review_focus, response_format, shadow_mode). An agent would have to infer or guess the role of item_ids, review_focus, and response_format. This is a significant gap given the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('judge pass'), a specific resource ('Evidence Broker'), and what it does: runs an LLM satisfied-detection pass over open checklist items. It also names the sibling it is not (consensus pass) indirectly by calling itself a judge pass. The distinction from related tools is clear enough for an agent to route correctly.
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 clear context: it requires an operator token, operates on currently-open items, and promotes only satisfied+verified items. However, it does not explicitly state when to prefer this tool over the consensus pass or other sibling tools, nor does it mention exclusions beyond 'terminal operator statuses and already-addressed items.' No alternative is named, so guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_finalizeFinalize SessionBIdempotent
Operator-only: mark a durable session as converged, aborted or max-rounds with an optional reason of at most 200 characters. Requires the dedicated operator capability token from a separate human-console host.
| Name | Required | Description | Default |
|---|---|---|---|
| caller | No | operator | |
| reason | No | ||
| outcome | Yes | ||
| session_id | Yes | ||
| response_format | No | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=true), and the description is consistent with these — no contradiction. The description adds useful context about the operator token and host requirement beyond the annotations. However, it misses the most agent-relevant behavioral details for a state-mutating operation: whether finalization is terminal, whether it can be resumed, what happens to in-flight rounds, and what the return looks like. Annotations lower the bar, but the description still leaves side effects undisclosed.
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?
Two sentences with every clause earning its place; the operator scope is front-loaded ahead of the action, and the token/host requirement is packed into the second sentence. The only minor waste is restating the 200-character reason limit that already exists in the schema's maxLength constraint. Otherwise remarkably tight for the amount of information conveyed.
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 moderate-complexity mutation tool with no output schema, the description covers the core operation and access model competently. However, with no output schema to document return values, the burden on the description rises, and it leaves unexplained: whether finalization is terminal, the return/confirmation format, and error behaviors (e.g., unknown session_id, finalizing an already-finalized session). The absence of any guidance on interaction with concurrent rounds is notable given siblings like session_recover_interrupted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description bears a heavy burden, but it adds almost nothing beyond restating the 200-character reason cap already present in the schema's maxLength. It offers no guidance on the semantics of choosing among 'converged' vs 'aborted' vs 'max-rounds', does not disambiguate the confusing 'caller' enum (listing model names with default 'operator'), and is silent on session_id state requirements and response_format. For a tool with low schema coverage, this is a significant gap that the description fails to compensate for.
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 provides a specific verb ('mark'), a resource ('a durable session'), and the exact set of outcome values ('converged, aborted or max-rounds'), leaving no ambiguity about what the tool does. The 'Operator-only' scoping and title align tightly with the name. However, it doesn't explicitly differentiate itself from the 28 siblings (e.g., session_cancel_job, session_start_round), even though such differentiation would be valuable, keeping it at a 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives meaningful contextual constraints — 'Operator-only' and 'Requires the dedicated operator capability token from a separate human-console host' — which effectively tell the agent when it can and cannot call this tool. However, it provides no explicit routing to or exclusion from alternatives, which matters given the large sibling set. The usage guidance is implied through access prerequisites rather than stated as when-to-use vs. 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.
session_initInitialize SessionA
Create a durable cross-review session after probing provider availability and model selection. This does not call reviewer models yet. AI callers should submit raw proof through the evidence field of the subsequent review starter; the runtime will persist it automatically without session_attach_evidence or human intervention.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | Original task or artifact being reviewed. | |
| caller | No | operator | |
| review_focus | No | Optional provider-neutral review scope anchor. This is not Claude Code's /focus UI command; it is injected as a front-loaded Review Focus prompt block for every selected peer, including OUT OF SCOPE handling for unrelated findings. | |
| response_format | No | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutating, non-idempotent operation. The description adds valuable behavioral context beyond annotations: the session is durable, reviewer models are not invoked yet, and evidence submitted later is persisted automatically without human intervention or an attach step. This meaningfully clarifies side effects and workflow behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The core purpose is front-loaded, and the second sentence adds essential workflow context about evidence persistence and the absence of reviewer invocation. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the key workflow context: when to call it, what it does not do, and how evidence should be handled afterward. It does not name the specific 'subsequent review starter' tool or describe return values, but given the moderate complexity and the presence of sibling tools, this is a minor gap rather than a critical omission.
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 only 50%, and the description does not compensate for the undocumented caller and response_format parameters. It mentions the evidence field, but that is not a parameter of this tool. The description adds no meaning to task, caller, review_focus, or response_format beyond what the schema already provides.
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 specific verb and resource: 'Create a durable cross-review session'. It also distinguishes itself from siblings by noting it runs 'after probing provider availability and model selection' and explicitly says 'This does not call reviewer models yet', separating it from ask_peers and session_start_round.
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 sequencing guidance ('after probing provider availability and model selection'), clarifies what the tool does not do ('does not call reviewer models yet'), and tells callers to submit evidence via the subsequent review starter instead of using session_attach_evidence. This effectively provides when, when-not, and an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_judgment_precision_reportJudgment Precision ReportARead-onlyIdempotent
v2.14.0 — compute precision/recall/F1 of the shadow judge against the empirical ground truth (whether peers raised the same ask in a subsequent round). Walks session.evidence_judge_pass.shadow_decision events across all sessions (or a single session via session_id, or filtered by judge peer / since timestamp), correlates each decision with the subsequent evidence_checklist resurfacing behavior, and returns per-peer TP/FP/TN/FN counts plus precision/recall/F1. Decisions whose item.last_round equals the judge round AND no later round exists are excluded as 'no ground truth' (we cannot tell if the ask would have come back). Operator uses this to decide whether to flip a peer from shadow to active mode (item 2 / v2.13).
| Name | Required | Description | Default |
|---|---|---|---|
| peer | No | ||
| since | No | ||
| session_id | No | ||
| response_format | No | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the provided annotations (readOnlyHint, idempotentHint, destructiveHint) by disclosing a genuinely subtle behavioral trait: decisions whose item.last_round equals the judge round AND no later round exists are excluded as 'no ground truth,' with an explanation of why ('we cannot tell if the ask would have come back'). This is exactly the kind of non-obvious scoping an agent needs to interpret results. Also adds version context and result shape. No contradiction with 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?
Substantial but every sentence earns its place: version marker, function, inputs, algorithm, output, exclusion rule, and consumer decision. The most important behavioral detail (the no-ground-truth exclusion) is front-staged where it can't be missed, and the dangling operational references ('v2.14.0', 'item 2 / v2.13') add provenance without bloat.
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 complex analytical tool doing multi-session aggregation with a non-trivial ground-truth determination rule, this description is remarkably self-sufficient: it covers inputs, mechanism, output contract, edge-case exclusion, and the downstream decision it serves. The only marginal gap is the lack of a defined return schema, but no output schema exists and the prose already enumerates the return shape (per-peer TP/FP/TN/FN plus precision/recall/F1).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description carries full weight, and it largely delivers: it adds meaning to three of the four parameters by embedding them in the algorithm ('via session_id, or filtered by judge peer / since timestamp'), clarifying that 'peer' means the judging peer and 'since' is a timestamp filter. response_format is left undiscussed, though its name and default make it self-explanatory. Strong compensation for the schema's silence, though not exhaustive.
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?
Opens with a specific verb+resource: 'compute precision/recall/F1 of the shadow judge against the empirical ground truth,' then details the exact event stream, correlation mechanism, and output shape. The extreme specificity of the resource ('session.evidence_judge_pass.shadow_decision' events vs. 'evidence_checklist resurfacing behavior') makes confusion with siblings like session_metrics or session_peer_reliability_report implausible, even without naming them explicitly.
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?
Provides a concrete 'when to use' statement: 'Operator uses this to decide whether to flip a peer from shadow to active mode (item 2 / v2.13),' which ties the tool to a real decision gate. However, it never names the overlapping alternatives (session_peer_reliability_report, session_metrics, session_doctor) nor states when NOT to use it, leaving the exclusion side implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_listList SessionsARead-onlyIdempotent
List durable sessions saved under the local data directory. The default response is paginated and summary-only to keep stdio transports bounded; use session_read for one full session or detail='full' for a bounded page of full metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| detail | No | summary | |
| offset | No | ||
| outcome_filter | No | all | |
| response_format | No | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, freeing the description from safety disclaimers. The description adds valuable behavioral context by explaining WHY the default is summary ('to keep stdio transports bounded') and that detail='full' returns a 'bounded page of full metadata.' This reveals the tool's internal rate-limiting rationale, which is genuinely useful behavior not evident from annotations alone.
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?
Two sentences, zero fluff. The first sentence states the core purpose, the second explains behavior, rationale, and points to the alternative. Every clause contributes to the user's decision-making: what, why, and when-not. The most important information is front-loaded immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters and no output schema, the description adequately covers the main usage decision (how to get full vs summary, and where to go for a single session). It could mention `outcome_filter` since that's a domain-specific filter, but the defaults and self-explanatory names reduce the ambiguity. The presence of annotations for read-only/idempotence fills the safety gap. Minor omissions prevent a 5, but the description is complete enough for an agent to use the tool correctly in most intended scenarios.
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 description coverage is 0%, so the description carries the burden of explaining parameters. It does explain the `detail` parameter's effect (summary vs full) and implies pagination via 'paginated,' which covers `limit` and `offset` conceptually. However, it leaves `outcome_filter` and `response_format` unexplained, and doesn't explicitly map the pagination wording to the parameter names. The description adds meaning for the most crucial parameters but still leaves the agent to infer the rest from names alone.
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 clear verb-resource-scope triplet: 'List durable sessions saved under the local data directory.' This precisely distinguishes it from siblings like session_metrics or session_read, and the contrast with session_read is explicitly stated. The purpose is immediately understandable and differentiates from other session_* 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 routes the agent: 'use session_read for one full session or detail='full' for a bounded page of full metadata.' This names the alternative tool (session_read) and provides the selection condition, leaving no ambiguity about when to choose this tool versus the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_metricsSession MetricsARead-onlyIdempotent
Return aggregate observability metrics across all sessions, or only one session when session_id is provided.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No | ||
| response_format | No | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds that the tool returns metrics for all or one session, but does not disclose further behavioral traits (e.g., data freshness, pagination, or performance). With annotations covering safety, the description provides some context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that efficiently conveys the purpose and optional scoping. No wasted 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 tool with 2 parameters and no output schema, the description is brief. It does not explain the structure of the returned metrics or any usage constraints. While adequate for a simple read-only tool, more detail would improve completeness.
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 add meaning. It does: explains that session_id is optional and scopes results to one session. However, it does not describe what 'aggregate observability metrics' includes or the meaning of response_format beyond the enum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Return' and the resource 'aggregate observability metrics', and specifies scope (all sessions or one with session_id). This distinguishes it from sibling tools which focus on session actions like cancel, attach evidence, etc.
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?
No explicit guidance on when to use this tool versus alternatives. The description does not mention prerequisites, exclusions, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_peer_reliability_reportPeer Reliability ReportARead-onlyIdempotent
Read-only per-peer reliability telemetry: READY/NEEDS_EVIDENCE/NOT_READY counts, parser warnings, provider errors, unresolved evidence asks, fabrication events, latency and cost. Observational only; does not change peer selection or mutate sessions.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No | ||
| response_format | No | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds that it is 'Observational only' and enumerates the telemetry fields, providing useful 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 three sentences, front-loaded with the purpose, and lists data fields efficiently. Minor redundancy could be removed, but overall 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?
For a simple read-only tool with two optional parameters and good annotations, the description provides sufficient behavioral context. It explains what data is returned, though it lacks output format details.
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%. The description does not explain the two input parameters (session_id and response_format) at all, leaving the agent without guidance on how to invoke the tool.
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 specifies 'Read-only per-peer reliability telemetry' and lists the exact data fields, clearly defining the tool's function. It distinguishes from siblings as no other tool in the list explicitly provides similar reliability metrics.
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?
States 'Observational only; does not change peer selection or mutate sessions,' giving clear context on when to use. However, it does not mention when not to use this tool compared to alternatives like session_report.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_pollPoll SessionARead-onlyIdempotent
Return durable session state and background job status without waiting for provider calls to finish. Default detail=summary keeps prior-round peer text/raw payloads out of polling responses; use detail=full or session_read only when full forensic data is required.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | summary | |
| session_id | Yes | ||
| response_format | No | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses non-blocking behavior, default detail filtering, and persistence of state beyond annotations; no contradiction with readOnly, idempotent, destructive hints.
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?
Two sentences efficiently covering purpose, behavior, and parameter guidance with 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?
Given annotations, schema, and sibling tools, the description provides sufficient context for an agent to correctly invoke the tool in a polling workflow.
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%, but description adds meaning for 'detail' parameter; however, does not explain 'response_format' parameter, leaving some semantic 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 tool returns 'durable session state and background job status' and distinguishes from blocking operations and sibling session_read by mentioning polling behavior and when to use 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?
Explicitly states when to use default detail=summary vs detail=full and recommends session_read for full forensic data, providing clear context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_preflight_checkCheck Submission PreflightsARead-onlyIdempotent
Run the same enabled evidence and truthfulness gates used by a real review round, without calling providers. Peer-submitted inline/structured evidence is checked as review material and requires no manual operator attachment.
| Name | Required | Description | Default |
|---|---|---|---|
| task | No | ||
| draft | No | ||
| caller | No | operator | |
| evidence | No | ||
| session_id | Yes | ||
| response_format | No | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description's burden is reduced. It adds value by stating that no providers are called and that peer-submitted evidence requires no manual attachment. This provides useful behavioral context beyond 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 extremely concise with two sentences, no redundancy, and no extraneous information. Every word contributes to the tool's core purpose and behavior.
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 6 parameters, no output schema, and no parameter descriptions, the description is inadequate. It does not explain what the tool returns, how to interpret results, or how to properly fill required fields like task and draft. The tool is simple but the description leaves significant 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?
Schema description coverage is 0%, so the description must compensate. It only indirectly mentions 'evidence' in the context of peer-submitted inline/structured evidence, but does not explain the purpose or usage of other parameters like task, draft, caller, session_id, or response_format. This leaves the agent with insufficient guidance.
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 it runs the same evidence and truthfulness gates as a real review round, without calling providers. This specifies the verb ('Run'), the resource ('gates'), and distinguishes it from a full review round. The title 'Check Submission Preflights' further reinforces the purpose.
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 implies its use case (pre-checking evidence and truthfulness before a review round), but does not provide explicit guidance on when to use versus sibling tools like 'session_truthfulness_preflight_check'. No exclusion criteria or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_readRead SessionARead-onlyIdempotent
Read a durable session meta.json by session_id.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | ||
| response_format | No | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds the 'durable' aspect, suggesting persistent storage, but does not disclose error behavior, auth requirements, or rate limits. Given annotations cover the main behavioral aspects, a 3 is appropriate.
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?
A single, front-loaded sentence with no filler. It efficiently communicates the core action and resource, earning its place with minimal verbosity.
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 operation with annotations covering safety and a self-explanatory schema, the description is nearly complete. It lacks explicit mention of return structure, but the response_format parameter implies output formatting. The absence of an output schema means the description could state that the response contains the meta.json content, but this is minor given the tool's simplicity.
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 by explaining parameter meaning, but it does not mention either parameter. The schema itself provides clear semantics via the UUID pattern for session_id and enum for response_format, but the description adds no value for parameter understanding.
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 specific verb ('Read') and resource ('durable session meta.json') keyed by session_id. This is distinct from sibling tools like session_list (for listing) or session_events (for event data), and the term 'meta.json' clarifies the exact artifact being read.
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 implies usage when you need the raw meta.json content of a durable session, but it does not explicitly contrast with alternatives or state when not to use it. With many session-related siblings, explicit routing would be helpful, but the specificity provides some implied guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_recover_interruptedRecover Interrupted SessionsAIdempotent
Mark unfinished sessions with stale in-flight rounds as recovered after a MCP host restart so they can be resumed explicitly.
| Name | Required | Description | Default |
|---|---|---|---|
| caller | No | operator | |
| response_format | No | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotentHint=true and destructiveHint=false. The description adds the context of marking sessions as recovered after restart, which aligns. However, it does not elaborate on what 'stale' means or if there are side effects, but given the annotations, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that directly states the function. It is front-loaded and efficient, though slightly dense. It earns its place 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?
Given the absence of an output schema and the simple nature of the tool, the description provides the core context. However, it lacks details on what 'stale in-flight rounds' means and what the response looks like. It is minimally complete but could be better.
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 does not explain the 'caller' or 'response_format' parameters. While both have enums and defaults, the description should clarify their role to help the agent select correct values. This is a clear 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 tool's purpose: to recover interrupted sessions after a restart by marking unfinished ones as recovered. The verb 'recover' and resource 'interrupted sessions' are specific, and the context of restart distinguishes it from other session management 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 implies the usage scenario (after a restart) and outcome (explicit resumption). It does not explicitly state when not to use or provide alternatives, but the purpose is clear enough for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_reportSession ReportCRead-onlyIdempotent
Generate and save a Markdown report with convergence, peer decisions, failures, costs and latest events.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | ||
| response_format | No | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says 'save a Markdown report,' implying a write operation, but annotations set readOnlyHint=true, indicating it should not modify state. This is a direct contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and front-loaded with the main purpose. However, it sacrifices clarity for brevity, leading to ambiguity.
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 no output schema and two parameters, the description is incomplete. It does not describe the return value or parameter details, and the contradiction with annotations undermines completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not explain any of the two parameters (session_id, response_format). Schema description coverage is 0%, so the description should compensate but fails to do so. Additionally, the description mentions Markdown but response_format defaults to json, causing further confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it generates and saves a Markdown report listing specific contents (convergence, peer decisions, etc.), which provides a clear verb and resource. However, it does not distinguish from sibling tools like session_events or session_check_convergence, which might overlap.
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?
There is no guidance on when to use this tool versus alternatives. No context about prerequisites or typical use cases is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_start_roundStart Review RoundB
Start a real peer-review round in the background and return immediately with a session_id/job_id for polling. AI evidence supplied in evidence is persisted durably and transported automatically; no manual operator attachment is required.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | ||
| draft | Yes | ||
| peers | No | ||
| caller | No | operator | |
| evidence | No | Raw evidence from the authenticated AI caller. It is persisted automatically as durable, SHA-256-addressed caller_submitted_unverified material and transported to reviewers; no manual operator attachment is required. Do not call session_attach_evidence for this routine path. | |
| session_id | No | ||
| review_focus | No | Optional provider-neutral review scope anchor. This is not Claude Code's /focus UI command; it is injected as a front-loaded Review Focus prompt block for every selected peer, including OUT OF SCOPE handling for unrelated findings. | |
| caller_status | No | READY | |
| response_format | No | json | |
| reasoning_effort_overrides | No | Optional per-peer reasoning_effort overrides for this call. Keys are peer ids (codex|claude|gemini|deepseek|grok|perplexity); missing keys fall back to global config. This is a shared scale: adapters normalize unsupported literals to the selected model's documented enum (`ultra` becomes max on GPT-5.6, Kimi K3 via Perplexity and DeepSeek, and xhigh on Grok 4.6; older GPT-5 families use their own ceilings). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal a non-read-only, non-idempotent mutation, and the description adds useful context: the operation runs in the background, returns immediately, persists evidence durably, and transports it automatically. This goes beyond the structured hints without contradicting them.
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 short and front-loaded, with the action and return behavior in the first sentence. The second sentence reinforces evidence handling but partially duplicates the evidence parameter's own schema description, so it is not entirely additive.
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 10-parameter tool with nested objects, no output schema, and only 30% schema coverage, the description is too sparse. It omits required parameter semantics, the meaning of `peers`/`caller` enums, response format selection, and how the returned session_id/job_id should be polled in practice.
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 only 30%, and the main description only elaborates on `evidence`. Required parameters like `task` and `draft`, plus `peers`, `caller`, `session_id`, `caller_status`, and `response_format`, receive no semantic explanation in either the description or the schema. The description does not compensate for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Start a real peer-review round') and adds the key async behavior: launch in background, return session_id/job_id for polling. It does not explicitly differentiate from sibling session_start_unanimous beyond the vague word 'real', 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys an async usage pattern (start and poll) and the evidence parameter explicitly says 'Do not call session_attach_evidence for this routine path', giving one clear exclusion. However, it never states when to prefer this over run_until_unanimous, session_start_unanimous, or ask_peers, so the guidance is mostly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_start_unanimousStart Until UnanimousA
Start real API generation/revision rounds in the background until unanimity, max_rounds or budget limit. AI evidence supplied in evidence is persisted durably and transported automatically; no manual operator attachment is required. v2.11.0: same caller + relator-lottery semantics as run_until_unanimous — see that tool for details.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | ship | |
| task | Yes | ||
| peers | No | ||
| caller | No | operator | |
| evidence | No | Raw evidence from the authenticated AI caller. It is persisted automatically as durable, SHA-256-addressed caller_submitted_unverified material and transported to reviewers; no manual operator attachment is required. Do not call session_attach_evidence for this routine path. | |
| lead_peer | No | ||
| max_rounds | No | Hard review-round ceiling unless allow_auto_extension is explicitly true. | |
| session_id | No | ||
| max_cost_usd | No | ||
| review_focus | No | Optional provider-neutral review scope anchor. This is not Claude Code's /focus UI command; it is injected as a front-loaded Review Focus prompt block for every selected peer, including OUT OF SCOPE handling for unrelated findings. | |
| initial_draft | No | ||
| until_stopped | No | ||
| response_format | No | json | |
| allow_auto_extension | No | Opt in to at most two evidence-only auto-extensions. False keeps max_rounds rigid. | |
| reasoning_effort_overrides | No | Optional per-peer reasoning_effort overrides for this call. Keys are peer ids (codex|claude|gemini|deepseek|grok|perplexity); missing keys fall back to global config. This is a shared scale: adapters normalize unsupported literals to the selected model's documented enum (`ultra` becomes max on GPT-5.6, Kimi K3 via Perplexity and DeepSeek, and xhigh on Grok 4.6; older GPT-5 families use their own ceilings). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are thin (readOnly=false, idempotent=false, destructive=false), so the description carries real weight and delivers: background execution with concrete stop conditions, evidence that is 'persisted durably and transported automatically,' and version-pinned semantics referencing run_until_unanimous. It stops short of warning that 'real API' rounds incur real cost or telling the caller how results are later retrieved.
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?
Three sentences with the purpose and stop conditions front-loaded in the first sentence. Sentence 2 partially duplicates the evidence schema description, and sentence 3 defers substance via 'see that tool for details' rather than explaining it, but there is no outright 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?
A 15-parameter background-job starter with no output schema needs to state what it returns and how to monitor or cancel the job; the description mentions neither, forcing the agent to infer session_poll and session_cancel_job from sibling names. It is adequate for initiating the job but incomplete for the full lifecycle.
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 only 33% schema description coverage, the description should compensate for undocumented parameters, but it only addresses `evidence` (which the schema already describes in greater detail) and `caller` (deferred to run_until_unanimous). Ambiguous enums like mode ('ship' vs 'circular') and the roles of lead_peer, until_stopped, and max_cost_usd are left unexplained.
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 action — 'Start real API generation/revision rounds in the background' — and names the three termination conditions (unanimity, max_rounds, budget limit). The 'background' qualifier hints at the distinction from the synchronous run_until_unanimous, but it never names session_start_round as the single-round alternative, so sibling differentiation is incomplete.
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 positions this as the background variant and defers `caller` + relator-lottery semantics to run_until_unanimous, and the evidence parameter adds an explicit exclusion: 'Do not call session_attach_evidence for this routine path.' However, the tool never states when to prefer this over session_start_round or run_until_unanimous, leaving the when-to-use matrix partial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_sweepSweep Idle SessionsAIdempotent
Finalize unfinished sessions whose metadata has been idle for at least 24 hours. The terminal reason accepts at most 200 characters. v3.7.5 (B1): opt-in prune_corrupt also removes stale entries from the corrupt_sessions/ quarantine directory.
| Name | Required | Description | Default |
|---|---|---|---|
| caller | No | operator | |
| reason | No | stale | |
| outcome | No | aborted | |
| idle_minutes | No | ||
| prune_corrupt | No | ||
| response_format | No | json | |
| corrupt_min_age_days | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare readOnlyHint=false (so it's a state-changing operation), idempotentHint=true (safe to retry), and destructiveHint=false. The description adds useful context by noting the prune_corrupt option removes entries from quarantine, which is a subtle destructive-ish behavior not covered by annotations. However, it doesn't detail what 'finalize' does to the underlying session state beyond that, or whether there are side effects on related data. It adds some value but the bar is lower because annotations carry the safety profile.
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 — three sentences total, and the first sentence is front-loaded with the core purpose. The version note and prune_corrupt detail are placed at the end, which is good structure. Every sentence adds value; no fluff or repetition of schema fields.
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 tool with 7 parameters and 0% parameter documentation, the description is notably incomplete. It covers the idle condition and the prune_corrupt feature, but doesn't explain the meaning of 'outcome', 'response_format', or 'corrupt_min_age_days' — these are critical for correct invocation. The lack of an output schema means the description must also hint at return values, which it doesn't. Overall, an agent could call it safely with defaults but can't make informed customizations without external knowledge.
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% — the description provides NO parameter-level explanation. With 7 parameters and 0% coverage, the description should compensate, but it doesn't. It only mentions the reason max length and the prune_corrupt option, leaving idle_minutes, outcome, response_format, corrupt_min_age_days, and caller completely undocumented. An agent cannot know the meaning or effect of most parameters without opening the schema, and even then the schema only shows types/enums, not semantics like when to change defaults.
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 specific verb ('Finalize'), a specific resource ('unfinished sessions'), and a precise triggering condition (idle ≥24 hours). It also mentions the terminal reason length limit and the optional prune_corrupt behavior, which adds specificity beyond just naming the action. This clarity distinguishes it from other session tools (which focus on other lifecycle steps like init, list, read).
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 clearly implies this tool is for finalizing idle sessions — the idle condition (24 hours) and the mention of 'unfinished sessions' give the agent clear context on when to call it. It does not explicitly name sibling alternatives or exclusion conditions, but the context is strong enough that an agent can infer when this tool is appropriate versus session_init/session_read/session_finalize.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_truthfulness_preflight_checkCheck Submission Preflights (Legacy Alias)CRead-onlyIdempotent
Backward-compatible alias for session_preflight_check. Its top-level pass now reflects both enabled runtime gates, eliminating truthfulness-only false positives.
| Name | Required | Description | Default |
|---|---|---|---|
| task | No | ||
| draft | No | ||
| caller | No | operator | |
| evidence | No | ||
| session_id | Yes | ||
| response_format | No | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations by revealing that the top-level pass now reflects both enabled runtime gates, eliminating truthfulness-only false positives. Annotations already provide readOnlyHint and idempotentHint, so the bar is lower, but the description meaningfully extends transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short (two sentences) and front-loaded, but it omits critical information about parameters and usage. While concise, it sacrifices clarity and completeness, earning a middle score.
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 6 parameters (with 0% schema description coverage) and no output schema, the description is woefully incomplete. It does not explain what the tool returns, how to use inputs, or any prerequisites. Only the behavioral quirk is addressed.
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%, yet the description provides no information about any parameters (session_id, task, draft, evidence, caller, response_format). The description does not compensate at all, leaving the agent without guidance on parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it is a backward-compatible alias for session_preflight_check and explains a behavioral change, but does not clearly state the core function of checking submission preflights. The title helps, but the description is ambiguous for an agent unfamiliar with the original tool.
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?
No explicit guidance on when to use this tool versus alternatives (e.g., session_preflight_check). The description implies legacy use but does not provide practical usage context or exclusions.
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.
4 tool updates
v4.4.13- Changed
ask_peers1 field changed- changed
Input schema / properties / reasoning_effort_overrides / descriptionPrevious value: -"Optional per-peer reasoning_effort overrides for this call. Keys are peer ids (codex|claude|gemini|deepseek|grok|perplexity); missing keys fall back to global config. This is a shared scale: adapters normalize unsupported literals to the selected model's documented enum (`ultra` becomes max on GPT-5.6 and high on Grok 4.5; older GPT-5 families use their own ceilings)."New value: +"Optional per-peer reasoning_effort overrides for this call. Keys are peer ids (codex|claude|gemini|deepseek|grok|perplexity); missing keys fall back to global config. This is a shared scale: adapters normalize unsupported literals to the selected model's documented enum (`ultra` becomes max on GPT-5.6, Kimi K3 via Perplexity and DeepSeek, and xhigh on Grok 4.6; older GPT-5 families use their own ceilings)."
- Changed
run_until_unanimous1 field changed- changed
Input schema / properties / reasoning_effort_overrides / descriptionPrevious value: -"Optional per-peer reasoning_effort overrides for this call. Keys are peer ids (codex|claude|gemini|deepseek|grok|perplexity); missing keys fall back to global config. This is a shared scale: adapters normalize unsupported literals to the selected model's documented enum (`ultra` becomes max on GPT-5.6 and high on Grok 4.5; older GPT-5 families use their own ceilings)."New value: +"Optional per-peer reasoning_effort overrides for this call. Keys are peer ids (codex|claude|gemini|deepseek|grok|perplexity); missing keys fall back to global config. This is a shared scale: adapters normalize unsupported literals to the selected model's documented enum (`ultra` becomes max on GPT-5.6, Kimi K3 via Perplexity and DeepSeek, and xhigh on Grok 4.6; older GPT-5 families use their own ceilings)."
- Changed
session_start_round1 field changed- changed
Input schema / properties / reasoning_effort_overrides / descriptionPrevious value: -"Optional per-peer reasoning_effort overrides for this call. Keys are peer ids (codex|claude|gemini|deepseek|grok|perplexity); missing keys fall back to global config. This is a shared scale: adapters normalize unsupported literals to the selected model's documented enum (`ultra` becomes max on GPT-5.6 and high on Grok 4.5; older GPT-5 families use their own ceilings)."New value: +"Optional per-peer reasoning_effort overrides for this call. Keys are peer ids (codex|claude|gemini|deepseek|grok|perplexity); missing keys fall back to global config. This is a shared scale: adapters normalize unsupported literals to the selected model's documented enum (`ultra` becomes max on GPT-5.6, Kimi K3 via Perplexity and DeepSeek, and xhigh on Grok 4.6; older GPT-5 families use their own ceilings)."
- Changed
session_start_unanimous1 field changed- changed
Input schema / properties / reasoning_effort_overrides / descriptionPrevious value: -"Optional per-peer reasoning_effort overrides for this call. Keys are peer ids (codex|claude|gemini|deepseek|grok|perplexity); missing keys fall back to global config. This is a shared scale: adapters normalize unsupported literals to the selected model's documented enum (`ultra` becomes max on GPT-5.6 and high on Grok 4.5; older GPT-5 families use their own ceilings)."New value: +"Optional per-peer reasoning_effort overrides for this call. Keys are peer ids (codex|claude|gemini|deepseek|grok|perplexity); missing keys fall back to global config. This is a shared scale: adapters normalize unsupported literals to the selected model's documented enum (`ultra` becomes max on GPT-5.6, Kimi K3 via Perplexity and DeepSeek, and xhigh on Grok 4.6; older GPT-5 families use their own ceilings)."
15 tool updates
v4.4.12- Added
ask_peers - Added
contest_verdict - Added
escalate_to_operator - Added
probe_peers - Added
regenerate_caller_tokens - Changed
session_events2 fields changed- added
Input schema / properties / include_token_deltasAdded value: +{ + "default": false, + "type": "boolean" +} - added
Input schema / properties / limitAdded value: +{ + "default": 200, + "maximum": 1000, + "minimum": 1, + "type": "integer" +}
- Added
session_evidence_checklist_update - Added
session_evidence_judge_consensus_pass - Added
session_evidence_judge_pass - Added
session_finalize - Added
session_init - Added
session_judgment_precision_report - Added
session_list - Added
session_read - Added
session_sweep
14 tool updates
v4.4.11- Removed
ask_peers - Removed
contest_verdict - Removed
escalate_to_operator - Removed
probe_peers - Removed
regenerate_caller_tokens - Removed
session_evidence_checklist_update - Removed
session_evidence_judge_consensus_pass - Removed
session_evidence_judge_pass - Removed
session_finalize - Removed
session_init - Removed
session_judgment_precision_report - Removed
session_list - Removed
session_read - Removed
session_sweep
8 tool updates
v4.4.9- Changed
ask_peers8 fields changed- added
Input schema / properties / evidenceAdded value: +{ + "description": "Raw evidence from the authenticated AI caller. It is persisted automatically as durable, SHA-256-addressed caller_submitted_unverified material and transported to reviewers; no manual operator attachment is required. Do not call session_attach_evidence for this routine path.", + "maxLength": 200000, + "type": "string" +} - changed
Input schema / properties / reasoning_effort_overrides / descriptionPrevious value: -"Optional per-peer reasoning_effort overrides for this call. Keys are peer ids (codex|claude|gemini|deepseek|grok|perplexity); missing keys fall back to global config. Useful to dial down expensive peers (e.g. Grok grok-4.20-multi-agent xhigh = 16 agents, or Perplexity sonar-deep-research that bills citation + reasoning + search queries separately) for routine reviews without editing the host MCP configs."New value: +"Optional per-peer reasoning_effort overrides for this call. Keys are peer ids (codex|claude|gemini|deepseek|grok|perplexity); missing keys fall back to global config. This is a shared scale: adapters normalize unsupported literals to the selected model's documented enum (`ultra` becomes max on GPT-5.6 and high on Grok 4.5; older GPT-5 families use their own ceilings)." - changed
Input schema / properties / reasoning_effort_overrides / properties / claude / enumPrevious value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" -]New value: +[ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max", + "ultra" +] - changed
Input schema / properties / reasoning_effort_overrides / properties / codex / enumPrevious value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" -]New value: +[ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max", + "ultra" +] - changed
Input schema / properties / reasoning_effort_overrides / properties / deepseek / enumPrevious value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" -]New value: +[ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max", + "ultra" +] - changed
Input schema / properties / reasoning_effort_overrides / properties / gemini / enumPrevious value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" -]New value: +[ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max", + "ultra" +] - changed
Input schema / properties / reasoning_effort_overrides / properties / grok / enumPrevious value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" -]New value: +[ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max", + "ultra" +] - changed
Input schema / properties / reasoning_effort_overrides / properties / perplexity / enumPrevious value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" -]New value: +[ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max", + "ultra" +]
- Changed
run_until_unanimous10 fields changed- added
Input schema / properties / allow_auto_extensionAdded value: +{ + "default": false, + "description": "Opt in to at most two evidence-only auto-extensions. False keeps max_rounds rigid.", + "type": "boolean" +} - added
Input schema / properties / evidence / descriptionAdded value: +"Raw evidence from the authenticated AI caller. It is persisted automatically as durable, SHA-256-addressed caller_submitted_unverified material and transported to reviewers; no manual operator attachment is required. Do not call session_attach_evidence for this routine path." - added
Input schema / properties / max_rounds / descriptionAdded value: +"Hard review-round ceiling unless allow_auto_extension is explicitly true." - changed
Input schema / properties / reasoning_effort_overrides / descriptionPrevious value: -"Optional per-peer reasoning_effort overrides for this call. Keys are peer ids (codex|claude|gemini|deepseek|grok|perplexity); missing keys fall back to global config. Useful to dial down expensive peers (e.g. Grok grok-4.20-multi-agent xhigh = 16 agents, or Perplexity sonar-deep-research that bills citation + reasoning + search queries separately) for routine reviews without editing the host MCP configs."New value: +"Optional per-peer reasoning_effort overrides for this call. Keys are peer ids (codex|claude|gemini|deepseek|grok|perplexity); missing keys fall back to global config. This is a shared scale: adapters normalize unsupported literals to the selected model's documented enum (`ultra` becomes max on GPT-5.6 and high on Grok 4.5; older GPT-5 families use their own ceilings)." - changed
Input schema / properties / reasoning_effort_overrides / properties / claude / enumPrevious value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" -]New value: +[ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max", + "ultra" +] - changed
Input schema / properties / reasoning_effort_overrides / properties / codex / enumPrevious value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" -]New value: +[ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max", + "ultra" +] - changed
Input schema / properties / reasoning_effort_overrides / properties / deepseek / enumPrevious value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" -]New value: +[ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max", + "ultra" +] - changed
Input schema / properties / reasoning_effort_overrides / properties / gemini / enumPrevious value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" -]New value: +[ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max", + "ultra" +] - changed
Input schema / properties / reasoning_effort_overrides / properties / grok / enumPrevious value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" -]New value: +[ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max", + "ultra" +] - changed
Input schema / properties / reasoning_effort_overrides / properties / perplexity / enumPrevious value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" -]New value: +[ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max", + "ultra" +]
- Changed
session_cancel_job1 field changed- changed
Input schema / properties / reason / defaultPrevious value: -"operator_requested"New value: +"requester_requested"
- Changed
session_poll1 field changed- added
Input schema / properties / detailAdded value: +{ + "default": "summary", + "enum": [ + "summary", + "full" + ], + "type": "string" +}
- Added
session_preflight_check - Changed
session_start_round8 fields changed- added
Input schema / properties / evidenceAdded value: +{ + "description": "Raw evidence from the authenticated AI caller. It is persisted automatically as durable, SHA-256-addressed caller_submitted_unverified material and transported to reviewers; no manual operator attachment is required. Do not call session_attach_evidence for this routine path.", + "maxLength": 200000, + "type": "string" +} - changed
Input schema / properties / reasoning_effort_overrides / descriptionPrevious value: -"Optional per-peer reasoning_effort overrides for this call. Keys are peer ids (codex|claude|gemini|deepseek|grok|perplexity); missing keys fall back to global config. Useful to dial down expensive peers (e.g. Grok grok-4.20-multi-agent xhigh = 16 agents, or Perplexity sonar-deep-research that bills citation + reasoning + search queries separately) for routine reviews without editing the host MCP configs."New value: +"Optional per-peer reasoning_effort overrides for this call. Keys are peer ids (codex|claude|gemini|deepseek|grok|perplexity); missing keys fall back to global config. This is a shared scale: adapters normalize unsupported literals to the selected model's documented enum (`ultra` becomes max on GPT-5.6 and high on Grok 4.5; older GPT-5 families use their own ceilings)." - changed
Input schema / properties / reasoning_effort_overrides / properties / claude / enumPrevious value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" -]New value: +[ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max", + "ultra" +] - changed
Input schema / properties / reasoning_effort_overrides / properties / codex / enumPrevious value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" -]New value: +[ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max", + "ultra" +] - changed
Input schema / properties / reasoning_effort_overrides / properties / deepseek / enumPrevious value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" -]New value: +[ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max", + "ultra" +] - changed
Input schema / properties / reasoning_effort_overrides / properties / gemini / enumPrevious value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" -]New value: +[ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max", + "ultra" +] - changed
Input schema / properties / reasoning_effort_overrides / properties / grok / enumPrevious value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" -]New value: +[ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max", + "ultra" +] - changed
Input schema / properties / reasoning_effort_overrides / properties / perplexity / enumPrevious value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" -]New value: +[ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max", + "ultra" +]
- Changed
session_start_unanimous10 fields changed- added
Input schema / properties / allow_auto_extensionAdded value: +{ + "default": false, + "description": "Opt in to at most two evidence-only auto-extensions. False keeps max_rounds rigid.", + "type": "boolean" +} - added
Input schema / properties / evidence / descriptionAdded value: +"Raw evidence from the authenticated AI caller. It is persisted automatically as durable, SHA-256-addressed caller_submitted_unverified material and transported to reviewers; no manual operator attachment is required. Do not call session_attach_evidence for this routine path." - added
Input schema / properties / max_rounds / descriptionAdded value: +"Hard review-round ceiling unless allow_auto_extension is explicitly true." - changed
Input schema / properties / reasoning_effort_overrides / descriptionPrevious value: -"Optional per-peer reasoning_effort overrides for this call. Keys are peer ids (codex|claude|gemini|deepseek|grok|perplexity); missing keys fall back to global config. Useful to dial down expensive peers (e.g. Grok grok-4.20-multi-agent xhigh = 16 agents, or Perplexity sonar-deep-research that bills citation + reasoning + search queries separately) for routine reviews without editing the host MCP configs."New value: +"Optional per-peer reasoning_effort overrides for this call. Keys are peer ids (codex|claude|gemini|deepseek|grok|perplexity); missing keys fall back to global config. This is a shared scale: adapters normalize unsupported literals to the selected model's documented enum (`ultra` becomes max on GPT-5.6 and high on Grok 4.5; older GPT-5 families use their own ceilings)." - changed
Input schema / properties / reasoning_effort_overrides / properties / claude / enumPrevious value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" -]New value: +[ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max", + "ultra" +] - changed
Input schema / properties / reasoning_effort_overrides / properties / codex / enumPrevious value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" -]New value: +[ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max", + "ultra" +] - changed
Input schema / properties / reasoning_effort_overrides / properties / deepseek / enumPrevious value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" -]New value: +[ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max", + "ultra" +] - changed
Input schema / properties / reasoning_effort_overrides / properties / gemini / enumPrevious value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" -]New value: +[ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max", + "ultra" +] - changed
Input schema / properties / reasoning_effort_overrides / properties / grok / enumPrevious value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" -]New value: +[ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max", + "ultra" +] - changed
Input schema / properties / reasoning_effort_overrides / properties / perplexity / enumPrevious value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" -]New value: +[ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max", + "ultra" +]
- Changed
session_truthfulness_preflight_check1 field changed- added
Input schema / properties / callerAdded value: +{ + "default": "operator", + "enum": [ + "codex", + "claude", + "gemini", + "deepseek", + "grok", + "perplexity", + "operator" + ], + "type": "string" +}
30 tool updates
v4.4.8- First observed
ask_peers - First observed
contest_verdict - First observed
escalate_to_operator - First observed
probe_peers - First observed
regenerate_caller_tokens - First observed
run_until_unanimous - First observed
runtime_capabilities - First observed
server_info - First observed
session_attach_evidence - First observed
session_cancel_job - First observed
session_check_convergence - First observed
session_doctor - First observed
session_events - First observed
session_evidence_checklist_update - First observed
session_evidence_judge_consensus_pass - First observed
session_evidence_judge_pass - First observed
session_finalize - First observed
session_init - First observed
session_judgment_precision_report - First observed
session_list - First observed
session_metrics - First observed
session_peer_reliability_report - First observed
session_poll - First observed
session_read - First observed
session_recover_interrupted - First observed
session_report - First observed
session_start_round - First observed
session_start_unanimous - First observed
session_sweep - First observed
session_truthfulness_preflight_check
TDQS
Several tools overlap in function: session_init, session_start_round, ask_peers, run_until_unanimous, and session_start_unanimous all initiate or run review rounds with evidence handling. Distinct names help but the descriptions repeatedly impose the same evidence-persistence caveat, and session_preflight_check vs session_truthfulness_preflight_check are near-aliases despite the backward-compat note.
Most tools follow a consistent session_* or ask_/run_/probe_/contest_/regenerate_/escalate_ verb-noun pattern. The few deviations like session_evidence_checklist_update, session_evidence_judge_pass, and session_judgment_precision_report are longer but still reasonably predictable. Minor inconsistency: some begin with 'session_' while others start directly with verbs, but the overall catalog feels coherent.
With 31 tools, the server is on the heavier side but the domain (durable sessions, peer review, evidence broker, operator governance) is complex enough to justify many. Still, the count exceeds the typical 3-15 range, and several tools (e.g., session_truthfulness_preflight_check as an alias) could be merged or deprecated, pushing it toward the 'heavy' edge.
The surface covers the full session lifecycle: init, read, poll, start rounds, recover, cancel, finalize, sweep, plus evidence verification and judgment tools. Notable gaps: there's no tool to list or query evidence items directly (only checklist status updates), and no public tool to modify session metadata once created, but operators have finalize and recovery paths, so core workflows are largely complete.
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 unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
One MCP endpoint for Claude, GPT & Gemini: 100+ tools + no-code connectors + agent workers.
AI Reasoning Cache & Consensus Layer with 11 MCP tools via Streamable HTTP.
AI-native git hosting — repos, PRs, issues, CI gates, and AI code review over MCP (60 tools).
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server orchestrating local CLI agents (Claude Code, OpenAI Codex, Google Gemini) for cross-validation, second opinions, and persona-driven prompting.18MIT
- AlicenseAqualityAmaintenanceA multi-model AI orchestration MCP server for automated code review and LLM-powered analysis, integrating with Claude Code and OpenCode to orchestrate multiple AI models for code quality checks, security analysis, and multi-agent consensus.636MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that enables Claude Code to orchestrate multi-model AI consensus by querying GPT-5.2 and Gemini 3 Pro simultaneously, synthesizing high-confidence responses.81MIT

polydevofficial
AlicenseNot gradedqualityDmaintenanceQuery GPT-5, Claude, Gemini, and Grok simultaneously through one MCP server for multi-model AI perspectives in your coding agents.338MIT
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/LCV-Ideas-Software/cross-review'
If you have feedback or need assistance with the MCP directory API, please join our Discord server