cross-review
Cross-review is an MCP server that orchestrates API-first cross-review sessions among six AI peers (Codex, Claude, Gemini, DeepSeek, Grok, Perplexity) with unanimous convergence gates, evidence custody, and budget controls.
Initialize, list, read, and recover durable review sessions.
Run real API review rounds (ask_peers, session_start_round) and full until-unanimous loops (run_until_unanimous, session_start_unanimous) with ship/review/circular modes.
Poll session progress, read events, metrics, and convergence state.
Attach and automatically persist caller evidence (SHA-256-addressed, caller_submitted_unverified) via the evidence field or out-of-band attachment.
Run evidence judge passes (single or multi-peer consensus) to close checklist items with verified confidence.
Inspect operational health: session_doctor, peer reliability reports, judgment precision reports, preflight checks.
Cancel jobs, sweep idle sessions, finalize sessions as aborted, and formally contest verdicts to open new deliberation cycles.
Probe provider availability, inspect runtime capabilities, and retrieve server info.
All actions require verified caller identity tokens; read-only tools are open, mutating tools are petitioner-scoped.
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 "Deploy 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 v09.02.02 (package 9.2.2).
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:
v09.02.02 (23/09/2026): The xAI peer now defaults to Grok 4.7 and reads assistant text from typed Responses output, ignoring encrypted reasoning items.
Release | Scope |
| Perplexity requests no longer ask |
| One re-creation after a bare asynchronous Perplexity failure: a background run the provider accepted and then reported |
| A provider failure preserves the provider's own error object instead of discarding it: the optional |
| Major: a circular session is refused when the output-ceiling screen would drop ANY rotator, instead of quietly continuing with the rest. The initial screen ran once and a dropped peer never returned, so a session could finalize |
| Major: |
| Major: the operator identity is retired from the protocol. |
| Major: the five legacy Sonar rate-card keys ( |
| 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 — the directive quoted verbatim in pt-BR, "sem fallback é sem fallback", + Codex v3.7.2 review 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, quoted verbatim in pt-BR: "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-6-astra", "User")
[Environment]::SetEnvironmentVariable("CROSS_REVIEW_OPENAI_REASONING_EFFORT", "max", "User")
[Environment]::SetEnvironmentVariable("CROSS_REVIEW_ANTHROPIC_MODEL", "claude-fable-5-1", "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.7", "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", "high", "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-6-astra, 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 Astra's lowest active API
effort, low — Astra documents low|medium|high|xhigh|max and does NOT list
none, so none is raised to low rather than sent and rejected. 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.
There is no second supported Claude model. cross-review runs the top model of
each provider, so the canonical pin is the whole admissible set. 128,000 output
tokens is the model's synchronous API ceiling — the most the provider will
accept, not the budget this package ships with. Unconfigured,
maxOutputTokensForPeer() falls through max_output_tokens_by_peer to the
global CROSS_REVIEW_MAX_OUTPUT_TOKENS, whose default is 20,000. Raising it to
the provider ceiling is part of setup, documented with the other per-peer
ceilings in docs/api-keys.md; the relator output-ceiling screen measures the
configured value, so a draft sized against 128,000 is refused until it is.
For Grok, GROK_API_KEY is canonical. The default pin is grok-4.7; 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. Both of those long roles run in Agent API background mode
(background: true, retrieved with GET /v1/agent/{id}) because Perplexity
severs a synchronous request at about 300 seconds; a background response has
to be retrievable, so those two requests send store: true and Perplexity
retains them. The probe stays synchronous and keeps store: false. See
docs/architecture.md for the retention consequence.
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 durable attachment channel; AI callers normally use the automaticevidencefield on review starterssession_evidence_judge_passsession_evidence_judge_consensus_passsession_judgment_precision_reportcontest_verdictsession_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 CALLER-SUBMITTED / UNVERIFIED, which is the only
provenance an attachment can carry. 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.
session_attach_evidence is an optional durable attachment channel, open to
the session's own petitioner. It is never required for an ordinary review: the
runtime directs callers to the automatically persisted evidence field, and
the attachment carries exactly the same provenance either way. 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. There is no tier above caller-submitted, so no
attachment promotes itself: a generic attachment does not by itself prove an
unrelated claim.
Terminal closure is different. The runtime alone seals converged; the
persisted session petitioner closes its own
non-terminal session as aborted through session_finalize; max-rounds
is written only by the runtime or the idle sweep; and sessions left open by a
dead petitioner are aborted by the boot-time stale sweep after 24 hours. No
tool escalates to a human: the MCP surface has no such actor.
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 a terminal item.
On an existing session, review starters require the persisted petitioner token. Evidence is attributed to the authenticated invoker rather than inherited from the session owner, so a peer cannot inherit another caller's provenance by continuing its session.
Caller identity uses six distinct local capabilities, one per peer. A seventh
existed for an operator identity whose token was meant to live in a separate
human console; that host does not exist, because the whole surface is MCP and
is exercised by agents, so the capability bound a secret to nobody and is gone.
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, contest_verdict and session_finalize accept only the
explicitly persisted session petitioner with its peer token. A legacy session
without an explicit petitioner yields no derivable owner and is refused; the
idle sweep closes it after 24 hours.
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
28 toolsask_peersAsk PeersA
Run a real API review round against selected peers. AI evidence supplied in evidence is persisted durably and transported automatically; no separate attachment step is required. Runtime default uses real provider APIs; stubs run only when CROSS_REVIEW_STUB=1. When session_id names an existing session, requires the verified capability token of that session's persisted petitioner; opening a new session does not.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | ||
| draft | Yes | ||
| peers | No | ||
| caller | Yes | ||
| 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. This is the routine path; `session_attach_evidence` attaches the same material out of band and grants it no additional provenance. | |
| 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-6 Astra, 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 annotations (which mark non-read-only, non-idempotent, open-world), the description adds evidence durability and automatic transport, provider-API runtime behavior, stub gating, and a capability-token requirement for existing sessions. This is meaningful context not inferable from annotations, though it leaves out cost and blocking 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?
Three sentences, each introducing a distinct facet: core action, evidence handling, and runtime/auth conditions. No filler; the most decision-relevant facts are front-loaded.
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 no output schema, the description gives the operational essentials (real vs stub, auth, evidence handling) but omits what the call returns, whether it blocks, and the semantics of required inputs like `task` and `draft`. The rich sibling set partially compensates, but an agent would still be guessing about the outcome and required content.
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?
Only 30% of parameters carry schema descriptions, so the description must compensate. It does clarify `evidence` (durable, SHA-256-addressed, auto-transported) and `session_id` (verified capability token needed), but leaves required `task`, `draft`, and `caller` without additional explanation; the coverage gap is only partially filled.
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 pair ('Run a real API review round against selected peers'), names the exact input vector ('evidence') and how it is transported, and distinguishes the real-provider path from stubbed mode. This clearly separates it from session-management siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states when the real API path is used vs stubs ('stubs run only when CROSS_REVIEW_STUB=1') and explains the session auth condition, plus the implicit alternative to session_attach_evidence in the evidence parameter description ('attaches the same material out of band'). It does not explicitly name competing siblings like session_start_round or when to prefer them.
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 (pass caller explicitly as that peer identity). Petitioner READY → nothing to do: the runtime already sealed converged; petitioner NOT_READY → 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 | Yes | ||
| 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?
The description richly discloses side effects and invariants beyond the write-only annotation: it stamps a contestation record on the original session, initializes a new session with a back-link, preserves chain of custody, and throws specific errors for in-flight sessions. It also notes the authentication requirement (capability token). This fully covers the behavioral profile even though annotations are minimal.
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 and verbose, but it is front-loaded with the core purpose and then provides necessary details. The sentence structure is logical (purpose, constraints, preconditions, side effects, invariants). While it could be trimmed, the complexity of the operation justifies most of the length. Every sentence contributes to understanding 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 complex tool with no output schema, the description covers preconditions, postconditions, side effects, error conditions, and invariants. It does not describe the return value or what the new session's response looks like, which could be important, but the absence of an output schema makes it acceptable. Overall, it is reasonably complete for an agent to invoke 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 coverage is 0%, so the description must explain all parameters. It only mentions `caller` and `reason` (with the 4000-character limit), but leaves `session_id`, `new_task`, `new_caller`, `response_format`, and `new_initial_draft` undocumented. For a 7-parameter tool, this is a significant gap. The description adds some value for two parameters but doesn't compensate for the rest.
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 contest a final verdict and open a new deliberation cycle. It uses specific verbs and resource nouns ('contest', 'final verdict', 'new deliberation cycle'), and the context clearly differentiates it from sibling tools like session_init or session_finalize. The chain-of-custody detail further clarifies its unique role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit conditional guidance: use it when petitioner is NOT_READY, not when READY, and only against a final-state session. It also warns about contesting the latest session and that a session cannot be contested twice. While it doesn't name specific alternative tools, these conditions are sufficient to guide selection. The precondition about the capability token is also clearly stated.
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 | Yes | ||
| response_format | No | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering safety. The description adds useful behavioral context beyond annotations: it performs outbound calls to provider APIs, relies on current API keys, applies a selection heuristic, and checks reachability.
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 dense sentence with no filler and a front-loaded verb, making it easy to scan. Every phrase contributes meaning.
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 two simple enum parameters, the description adequately conveys the tool's function and side-effect profile. However, there is no output schema and the description does not explicitly state what the tool returns, which is a notable gap given that return values must be inferred from the described actions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter meaning, but it does not mention either parameter by name. The enum values are self-explanatory, and the phrase 'provider APIs' hints at the caller parameter, but response_format is never addressed.
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 specific verbs and a clear resource: it queries official provider APIs, discovers available models for the current API keys, selects the highest-capability documented model, and verifies provider reachability. This clearly distinguishes it from sibling session/peer tools, even without naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case: when an agent needs to know what models are available/authorized under current API keys and whether providers are reachable. However, it provides no explicit comparison to alternatives like ask_peers and no exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runtime_capabilitiesRuntime CapabilitiesBRead-onlyIdempotent
Return the stable cross-review runtime capability contract and active tool list.
| Name | Required | Description | Default |
|---|---|---|---|
| caller | Yes | ||
| 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, so the safety profile is clear. The description adds 'stable' which aligns with idempotency, and mentions 'active tool list' giving some context on output. However, it does not elaborate on what the contract contains or any operational nuances, so it only partially supplements 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 a single, concise sentence that front-loads the verb and object. There is no filler or redundancy; every word 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?
With only two simple parameters and no output schema, the description provides a basic idea of what is returned (contract and tool list) but lacks detail on the structure or content of the contract. Given that the tool likely serves as a discovery mechanism, more detail on output format would be helpful. However, the annotations cover safety and the tool is low-complexity, so the description is minimally adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for undocumented parameters. It does not mention 'caller' or 'response_format' at all. The parameter names and enums are somewhat self-explanatory (caller identifies the runtime, response_format chooses format), but the description offers no additional meaning, leaving the agent to rely solely on naming conventions. This is a notable 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 a 'stable cross-review runtime capability contract and active tool list'. The verb 'return' with the specific resource distinguishes it from session_* and other sibling tools that focus on session operations or server info. This is a specific and unambiguous 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?
There is no guidance on when to use this tool versus alternatives like server_info or probe_peers. The description simply states what it does without explaining context, prerequisites, or exclusions. An agent would have to infer usage from the name alone, which is insufficient given many sibling tools.
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 separate attachment step 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 panels), 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 | Yes | ||
| 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. This is the routine path; `session_attach_evidence` attaches the same material out of band and grants it no additional provenance. | |
| 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-6 Astra, 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 only flag readOnly=false, idempotent=false, and openWorld=true. The description adds valuable behavioral context: evidence is 'persisted durably and transported automatically,' review rounds hit 'real API' peers, and an explicit lead_peer === caller is rejected server-side via 'caller_cannot_be_lead_peer' as a 'workspace HARD GATE.' This goes beyond the annotations, though it does not cover side effects like session creation or response 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?
The description is dense but not bloated. The core purpose is front-loaded in the first sentence, followed by evidence-transport behavior and the relator-lottery rules. The 'judicial panels' metaphor is mild color but supports understanding. The version marker and hard-gate detail are useful, though the description is longer than strictly necessary for the tool's most common invocation.
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?
This is a complex, open-world, mutating tool with 14 parameters and no output schema. The description explains the main loop, evidence flow, and relator constraint, but it does not describe return values, output format, session-related side effects, cost behavior, or how to set up peers and initial drafts. An agent could call it correctly with task and caller, but many behavioral expectations remain underspecified.
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 36%, so the description must compensate. It does add meaningful semantics for key parameters: evidence (durable, SHA-256-addressed, no attachment needed), caller and lead_peer (relator lottery, non-caller constraint, server rejection), and max_rounds (termination ceiling). However, most other parameters — mode, peers, initial_draft, response_format, until_stopped, and reasoning_effort_overrides — are left to the schema or omitted entirely, leaving a partial compensation 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 opens with a specific verb and resource: 'Generate or revise a draft and continue real API peer-review rounds until unanimous READY or the configured max_rounds is reached.' This clearly states the tool's core behavior and terminal condition, making it distinguishable from sibling session-control tools like session_start_round or session_poll.
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 operational guidance: evidence is automatically persisted and transported, so 'no separate attachment step is required' — a direct hint about when not to use the sibling session_attach_evidence. It also explains how to use the relator lottery via caller and lead_peer, including the rejection rule. It stops short of explicitly naming when to prefer run_until_unanimous over session_start_unanimous or ask_peers, so no exclusions are given.
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 | Yes | ||
| 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. The description adds useful context about the server being API-only and the specific runtime fields returned, but it does not disclose additional behavioral traits such as response behavior or potential errors. It is consistent with the annotations, so no contradiction exists.
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, compact sentence that front-loads the core action and then lists the specific data returned. There is no filler or redundant phrasing, and every part of the sentence adds meaningful information.
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 informational tool with strong annotations and a self-explanatory schema, the description covers the essential purpose and output contents. It is slightly incomplete in that it does not clarify how response_format changes the response, but no output schema exists and the description names the key fields, which is sufficient for basic invocation.
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 provides no information about the 'caller' or 'response_format' parameters, and schema description coverage is 0%. The input schema's enums and default value are self-documenting, which mitigates the gap, but the description itself makes no attempt to 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 states a specific verb ('Return runtime information') and resource ('API-only Cross Review MCP server'), and enumerates the returned items: version, data directory, and active security mode. It is clear on its own, but it does not explicitly distinguish itself from sibling tools like runtime_capabilities, which could plausibly 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 such as runtime_capabilities or session_*. The description implies a general informational purpose but does not state use cases, exclusions, or conditions under which a sibling tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_attach_evidenceAttach Session Evidence (Optional)A
Attach one durable evidence artifact to an existing session, out of band from a review round. Only the session's own petitioner may call it, and the artifact carries the same caller_submitted_unverified provenance as material passed through the evidence field of a review starter — this tool promotes nothing. Prefer the evidence field for the routine path; this one exists for material that does not belong to a specific round. Requires the verified capability token of the persisted session petitioner; a peer cannot attach evidence to someone else's session.
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | ||
| caller | Yes | ||
| 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 only indicate a non-read-only mutation, so the description carries the burden of behavior. It adds valuable context: the artifact is durable, carries `caller_submitted_unverified` provenance, promotes nothing, and requires the petitioner's verified capability token. No contradiction with annotations, though it stops short of describing removal or overwrite 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?
Three sentences deliver the core action, scope, provenance, and usage guidance without obvious padding. It is dense but well front-loaded, though the long middle sentence about provenance could be slightly streamlined.
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 7 parameters and no output schema, this description covers the why, when, and who well, but leaves parameter semantics and return behavior unaddressed. An agent can understand the tool's role, but may still struggle to craft a fully correct call without additional schema descriptions.
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 never explains session_id, label, content, extension, content_type, or response_format. It only gestures at 'artifact' and provenance, leaving the agent to infer parameter meaning from names alone. The enums and defaults in the schema help, but the description does not compensate for the coverage 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?
States a specific verb and resource: attach one durable evidence artifact to an existing session, out of band from a review round. It explicitly contrasts itself with the routine `evidence` field and clarifies that this tool 'promotes nothing', distinguishing it from review-round evidence tooling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs when to use it: for material that does not belong to a specific round, and to prefer the `evidence` field for the routine path. It also states the auth constraint that only the session's own petitioner may call it, so an agent knows when not to attempt it.
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 JobAIdempotent
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; another peer cannot cancel the job. Provider calls receive AbortSignal where the provider client supports it.
| Name | Required | Description | Default |
|---|---|---|---|
| caller | Yes | ||
| 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?
Annotations already indicate non-read-only, non-destructive, and idempotent behavior. The description adds meaningful behavioral detail: cancellation is a request, the reason is capped at 300 characters, only the original petitioner can cancel, and providers receive an AbortSignal when supported. No contradiction with 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?
Three concise sentences with no filler: the first states the purpose, the second covers constraints and authorization, and the third describes provider-side behavior. The structure is front-loaded and each 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?
With no output schema and zero parameter descriptions, the tool lacks critical context such as what a successful cancellation returns, how the optional job_id affects scope, and what errors may occur. The auth and AbortSignal details are useful, but an agent still cannot fully predict the outcome of an invocation.
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 carry the parameter-documentation burden, but it only restates the reason max length that is already in the schema. It does not explain session_id, job_id, caller, or response_format, and leaves the optional job_id behavior ambiguous. This provides almost no added meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('cancel') and a specific resource ('running background jobs in a durable session'), making the tool's purpose immediately clear and distinguishable from siblings like session_poll or session_sweep. The phrase 'Request cancellation' is slightly indirect, but the intent is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: it targets running background jobs in a durable session and explicitly states that another peer cannot cancel the job, which acts as a when-not for non-petitioners. It does not name an alternative tool, but the condition is strong enough for the common case.
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. The read-only pass needs no token; repair requires your own verified capability token and touches only the sessions you own.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| caller | Yes | ||
| 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?
It discloses default read-only behavior, the opt-in write path, a token requirement for repair, scope to the caller's own sessions, and a precise constraint on what repair changes. This adds substantial context beyond the annotations, which only signal idempotent/non-destructive and not-readonly.
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 text is a single dense paragraph and somewhat long, but every clause adds operational detail and the main purpose is front-loaded. It could benefit from bullets, but nothing is 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?
For a complex tool with no output schema, it covers the key behaviors, scope, security, version caveats, and flag-driven variants, and even names response elements like totals.self_lead_metadata and the repaired array. It does not sketch the full response shape, but the essentials for correct invocation are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description carries the burden and does explain the meaningful flags: include_terminal_findings, include_legacy, and repair. It does not explain limit, caller, or response_format, though their schema types/enum values are largely self-explanatory.
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 ('audit') and a precise resource ('durable sessions'), then enumerates the distinct categories it covers (open/stale/blocked cases, legacy metadata, evidence asks, Grok errors, token-event noise). This semantically separates it from sibling list/read/metrics tools even without naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for when to invoke the tool and how to adjust scope via include_terminal_findings, include_legacy, and repair. It does not explicitly name sibling alternatives or state when not to use this tool, so it stops short of full exclusion 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_judge_consensus_passRun Evidence Judge Consensus PassA
Multi-peer evidence judgment. Requires 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. Requires the verified capability token of the persisted session petitioner, because the pass spends that petitioner's budget on paid provider calls.
| Name | Required | Description | Default |
|---|---|---|---|
| draft | Yes | ||
| round | No | ||
| caller | Yes | ||
| 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?
Despite annotations already setting readOnlyHint=false, the description adds substantial non-obvious behavior: self-judge causes fail-closed consensus, promotion requires unanimous verified-satisfied judgments with non-empty rationales and zero parser warnings, shadow mode never mutates state (implying active mode does), and the pass spends the petitioner's budget on paid provider calls. No contradiction with the annotations; this is exactly the kind of context annotations can't express.
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?
Four dense sentences, front-loaded with the core purpose and requirements; every sentence earns its place. The opening 'Multi-peer evidence judgment' is a fragment rather than a true verb-phrase, and 'multi-peer' slightly overlaps with 'at least two distinct enabled judge peers,' but overall it is tight and well-ordered.
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 9-parameter, mutating, budget-spending tool with no output schema, the description covers the critical constraints well (peer minimums, fail-closed self-judge rule, promotion criteria, mode semantics, billing). Gaps remain: what 'draft' and 'item_ids' refer to, what review_focus does, how the output is returned, and how the verified capability token is supplied given it is not a parameter.
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 schema description coverage at 0%, the description carries the full burden—yet it only partially clarifies judge_peers (requires at least two distinct) and shadow_mode (non-mutating). The remaining seven parameters—draft, round, caller, item_ids, session_id, review_focus, response_format—receive no semantic guidance, and the 'verified capability token' mentioned has no corresponding parameter at all.
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 opening phrase 'Multi-peer evidence judgment' plus the title 'Run Evidence Judge Consensus Pass' conveys a specific action—running a consensus pass over evidence across multiple judge peers—and the active-mode sentence clarifies that unanimous satisfied judgments get promoted. However, it never names or contrasts its nearest sibling 'session_evidence_judge_pass', so an agent must infer the differentiation rather than having it stated.
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 clear operational context: it requires at least two distinct enabled judge peers, a verified capability token of the session petitioner, and it explains when to use active vs shadow mode. It stops short of naming alternatives like run_until_unanimous or session_evidence_judge_pass, so there are no explicit exclusions—just clear context.
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
LLM satisfied-detection for the Evidence Broker. 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 statuses and already-addressed items are never touched. Optional shadow_mode records non-mutating decisions. Requires the verified capability token of the persisted session petitioner, because the pass spends that petitioner's budget on paid provider calls.
| Name | Required | Description | Default |
|---|---|---|---|
| draft | Yes | ||
| round | No | ||
| caller | Yes | ||
| 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?
Annotations provide only hints, so the description carries the full burden. It discloses that the tool mutates state (promotes items), explains the promotion rule (satisfied=true AND confidence='verified'), states that terminal/already-addressed items are untouched, notes the self-judging prohibition, mentions shadow_mode for non-mutating runs, and requires a verified capability token because it spends the petitioner's budget. This is comprehensive and adds significant value 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 dense but efficient, with no filler. It front-loads the purpose and then covers key behaviors and constraints. The length is justified by the complexity of the operation, though a slightly tighter organization could improve readability.
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 mutating behavior, the description covers the most critical aspects: promotion logic, auth requirements, and non-mutating mode. However, it lacks details on the return format (only 'structured judgment') and does not explain several parameters or the relationship to the consensus variant, leaving some gaps for the 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. It explicitly references 'draft', 'judge_peer', and 'shadow_mode', but it does not explain other parameters like item_ids, round, review_focus, response_format, or caller. Many parameters remain undocumented in both schema and description, leaving the agent to infer their meaning.
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 action: running a judge pass for evidence checklist items against a draft. It explains the promotion criteria and scope. However, it does not explicitly contrast with the sibling tool session_evidence_judge_consensus_pass, so it lacks direct sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (for judging evidence items against a draft) and mentions shadow_mode for non-mutating runs, but it does not explicitly state when to prefer this over the consensus pass variant or other session tools. No exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_finalizeFinalize SessionAIdempotent
Close a non-terminal durable session as aborted with an optional reason of at most 200 characters. Requires the verified capability token of the persisted session petitioner: the peer host must pass caller explicitly as its own identity, and a caller that contradicts that host's own token or clientInfo is refused as identity forgery. converged is sealed only by the runtime, when the petitioner and every required peer are READY and every evidence gate passes; max-rounds is written only by the runtime or the idle sweep.
| Name | Required | Description | Default |
|---|---|---|---|
| caller | Yes | ||
| 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?
The description goes beyond annotations by disclosing the identity forgery check, requiring the caller to match the peer host's token/clientInfo, and stating that the 'converged' outcome is only sealed by the runtime. It also notes the max characters for reason and that 'max-rounds' is only written by runtime/sweep. These are significant behavioral traits not present in the annotations (which only provide idempotentHint/destructiveHint). There is 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?
The description is dense but appropriately sized for the complexity, covering the core purpose first, then auth requirements, then runtime constraints. The sentences are structured logically, front-loading the primary action. It could be slightly more concise by cutting the last clause about 'max-rounds-sweep', which is tangential, but it's acceptable.
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 (auth checks, runtime-only outcomes, limited outcomes), the description covers the essential use case and constraints. It lacks explicit mention of return values (no output schema, so description could mention what is returned, e.g., confirmation or error details), and it doesn't explain what happens if the session is already terminal. However, most critical decision-making info is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain parameters, and it does partially. It explains 'reason' (optional, max 200 chars) and 'caller' (must be host's own identity, forgery check), but does not explain 'session_id' format (though schema has pattern) or 'response_format' (schema has default). It doesn't add much beyond the schema for session_id, but for caller it adds crucial semantics. With 0% coverage, description should carry more, but it covers the most important behavioral parameter.
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 that the tool closes a non-terminal durable session as 'aborted' with an optional reason, which is a specific action on a specific resource. It does not explicitly differentiate from siblings, but the outcome enum (only 'aborted') and the mention of 'non-terminal' make its purpose distinct, though not explicitly naming alternatives.
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 some context on when to use it: it's for aborted sessions, and it explains that 'converged' is only sealed by the runtime, not by this tool. However, it doesn't explicitly say 'use this instead of session_cancel_job' or similar, and doesn't mention when-not-to-use it (e.g., if the session is already terminal). The guidance is implied through the outcome constraint but not explicit.
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 | Yes | ||
| 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 only provide flags (readOnlyHint false, openWorldHint true, idempotentHint false, destructiveHint false), so the description carries the burden of behavioral disclosure. It adds meaningful context: the session is durable, the tool does not invoke reviewer models, and the runtime persists evidence automatically. This goes beyond the annotations, though it does not cover duplicate-call behavior or return details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose in the first sentence. The remaining two sentences add behavioral and workflow context without excessive fluff. The third sentence is slightly tangential to the tool itself but still earns its place by preventing misuse of session_attach_evidence.
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?
There is no output schema, and the description does not state what the tool returns (e.g., a session ID needed by session_read, session_poll, or session_start_round). It also leaves the relationship to 'probing provider availability and model selection' ambiguous. For an initialization tool that subsequent siblings depend on, this is a significant completeness gap.
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 50%; task and review_focus have descriptions, while caller and response_format are only represented by enums/defaults. The description does not elaborate on any current parameters, only mentions the evidence field of a subsequent step. The parameters are reasonably inferable from the schema, so this is adequate but not enhanced by the description.
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 adds useful scope by noting it does not call reviewer models yet, which distinguishes it from round-starting siblings like session_start_round. However, it does not explicitly name sibling alternatives, so it falls short of full 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 implied sequencing: 'after probing provider availability and model selection' and a workflow note about submitting evidence without session_attach_evidence. But the description never explicitly says when to choose this tool over session_preflight_check, session_start_round, or session_start_unanimous. Usage context is present but not explicit.
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 separate attachment step.
| Name | Required | Description | Default |
|---|---|---|---|
| task | No | ||
| draft | No | ||
| caller | Yes | ||
| 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, idempotentHint, and non-destructive behavior. The description adds valuable context beyond annotations: providers are not called, and inline/structured evidence is treated as review material without an attachment step. No contradiction with the annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with the central behavior front-loaded: 'Run the same enabled evidence and truthfulness gates used by a real review round, without calling providers.' Every clause earns its place, and there is no filler or repetition of schema/annotation details.
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 six-parameter tool with no output schema and no parameter descriptions, the description does not specify what the preflight result contains or how task/draft/evidence relate to the gates. However, the concise behavioral statement plus annotations make it minimally viable for an agent to choose and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for undocumented parameters. It only hints at evidence as 'inline/structured' and gives no semantics for task, draft, caller, session_id, or response_format. This leaves most parameters underspecified for an agent trying to construct a correct call.
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 concrete action: 'Run the same enabled evidence and truthfulness gates used by a real review round, without calling providers.' It clearly identifies the resource as submission preflights and distinguishes itself from a real review round. However, it does not explicitly differentiate from the sibling 'session_truthfulness_preflight_check', so it stops short of full sibling 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?
The description implies use before a real review round to validate gates without provider calls, and it explicitly notes that peer-submitted inline/structured evidence requires no separate attachment step, steering agents away from session_attach_evidence. It lacks explicit when-not-to-use guidance or named alternatives, but the context is clear enough for an agent to select it appropriately.
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. Requires your own verified capability token, and recovers only the sessions you own.
| Name | Required | Description | Default |
|---|---|---|---|
| caller | Yes | ||
| response_format | No | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotent=true and destructive=false, and the description does not contradict them. It adds useful behavioral context: only stale in-flight rounds are affected, only the caller's own sessions are recovered, and a verified capability token is required.
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 focused sentences: the first front-loads the core action and context, the second adds necessary constraints. No filler or 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?
The description covers what, when, and preconditions, which is largely sufficient for a simple two-parameter tool. However, it does not define what qualifies as 'stale,' explain the return/output behavior, or clarify how response_format affects the result, and there is no output schema to fill that gap.
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 mention the caller or response_format parameters at all. The enum values are somewhat self-explanatory, but the description adds no guidance on how these parameters affect recovery or the output.
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 action with a concrete resource: marking unfinished sessions with stale in-flight rounds as recovered after an MCP host restart. This clearly distinguishes the tool from sibling list/read/poll/finalize tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for when to use the tool (after a host restart, before explicit resumption) and adds restrictive conditions (owned sessions only, verified capability token required). It does not name alternative tools or explicitly state when not to use it, but the context is sufficient.
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 RoundA
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 separate attachment step is required. When session_id names an existing session, requires the verified capability token of that session's persisted petitioner; opening a new session does not.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | ||
| draft | Yes | ||
| peers | No | ||
| caller | Yes | ||
| 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. This is the routine path; `session_attach_evidence` attaches the same material out of band and grants it no additional provenance. | |
| 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-6 Astra, 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: the operation is asynchronous, returns immediately, persists evidence durably, transports it automatically, and imposes capability-token requirements when resuming an existing session. Annotations only convey readOnlyHint=false, openWorldHint=true, idempotentHint=false, and destructiveHint=false; the description enriches that with execution and authentication 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?
The description is three dense, front-loaded sentences with no filler. The core action and return behavior appear first, followed by evidence handling and the session capability caveat. Every sentence earns its place and no information is repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex async tool with 10 parameters and no output schema, the description covers the key operational essentials: it starts a background round, returns a pollable ID, persists evidence, and clarifies auth requirements. It does not explain the polling lifecycle or the meaning of task/draft/caller beyond their names, and without an output schema some return-format detail is left unspecified, but the description is still reasonably complete for selecting and invoking the tool 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 low at 30%, so the description must compensate for many parameters. It does add meaning for `evidence` (durable persistence, automatic transport) and `session_id` (capability-token requirement), which are genuinely helpful. However, the other seven parameters — task, draft, caller, peers, caller_status, response_format, and reasoning_effort_overrides — receive no additional semantic clarification in the main description, leaving gaps for a low-coverage schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: "Start a real peer-review round in the background and return immediately with a session_id/job_id for polling." This clearly distinguishes the tool from read-oriented siblings like session_read or session_poll, and from the related start_unanimous tool by emphasizing a background, pollable 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 concrete usage context: it positions itself as the routine path by saying evidence is "transported automatically; no separate attachment step is required," implicitly routing away from session_attach_evidence. It also clarifies the existing-session condition: opening a new session does not require the petitioner's capability token, while resuming does. It does not explicitly compare against alternatives like ask_peers or session_start_unanimous, so it falls just short of a 5.
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 separate attachment step is required. v2.11.0: same caller + relator-lottery semantics as run_until_unanimous — see that tool for details. When session_id names an existing session, requires the verified capability token of that session's persisted petitioner; opening a new session does not.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | ship | |
| task | Yes | ||
| peers | No | ||
| caller | Yes | ||
| 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. This is the routine path; `session_attach_evidence` attaches the same material out of band and grants it no additional provenance. | |
| 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-6 Astra, 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 behavioral detail beyond the annotations: background/asynchronous execution, durable persistence of evidence, automatic transport to reviewers, and a token requirement for existing sessions. This is consistent with annotations declaring readOnly=false and idempotent=false, and it gives the agent a clearer picture of side effects and prerequisites.
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 well-organized: the first sentence states the core purpose, the second covers evidence behavior, the third points to sibling semantics, and the fourth addresses session security. There is little wasted text, and important information is front-loaded.
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?
This is a complex 15-parameter background job with no output schema, yet the description does not explain the return value, how to monitor progress, or how parameters such as task, mode, peers, and lead_peer interact. Delegating key semantics to run_until_unanimous helps, but the definition is not self-sufficient for an agent trying to invoke it correctly in diverse situations.
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 adds semantics for key parameters: evidence is persisted durably, session_id has a token requirement, caller semantics are delegated to run_until_unanimous, and termination depends on max_rounds or budget. However, schema description coverage is only 33%, and the description still leaves many parameters — such as task, mode, peers, lead_peer, initial_draft, and response_format — without meaningful explanation.
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 and resource: starting real API generation/revision rounds in the background. It states termination conditions (unanimity, max_rounds, or budget limit) and distinguishes itself from siblings by emphasizing background execution and referencing run_until_unanimous. This is sufficient for an agent to identify what the tool does and how it differs from 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 provides clear context: uses background rounds, persists evidence automatically so no separate attachment step is needed, and explains the capability-token requirement when resuming an existing session. It does not fully articulate when not to use this tool versus other siblings, but the context is clear enough for most selection decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_sweepSweep Idle SessionsADestructiveIdempotent
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. Requires a verified capability token. Sweep is the one mutation that acts ACROSS owners, so the token is not the affected petitioner's — but a self-declared identity is refused, and it is therefore no way out of a token-file failure.
| Name | Required | Description | Default |
|---|---|---|---|
| caller | Yes | ||
| 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?
Annotations already declare destructiveHint and idempotentHint, but the description adds significant behavioral detail: it removes stale quarantine entries only when prune_corrupt is opted in, requires a verified capability token, and clarifies that the token belongs to a different identity than the affected petitioner. This goes well beyond what the 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 description is dense but compact: three sentences front-load the core purpose and then add auth and version-specific behavior. The token-file warning is slightly elaborate but relevant to safe invocation, so no sentence is pure 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 covers purpose, auth requirements, and destructive scope, which are critical safety aspects. However, there is no output schema, yet the description does not mention return values or response_format behavior, and most parameters remain semantically unexplained. It is adequate for safety but incomplete for confident invocation.
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 carries the burden of explaining parameters. It only clarifies reason's 200-character limit and prune_corrupt's quarantine behavior. The other five parameters—caller, outcome, idle_minutes, response_format, and corrupt_min_age_days—are left undocumented, which is insufficient for a 7-parameter 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 states a specific verb and resource: 'Finalize unfinished sessions whose metadata has been idle for at least 24 hours.' It also distinguishes the tool from siblings by noting it is 'the one mutation that acts ACROSS owners,' which prevents confusion with per-owner session mutations.
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 clear usage context: sweep is for idle unfinished sessions and is uniquely cross-owner, which helps an agent select it over owner-scoped alternatives. It also provides an exclusion by warning that a self-declared identity is refused and this is 'no way out of a token-file failure.' It does not explicitly name alternate tools, so it stops short of a 5.
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 | Yes | ||
| 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 establish read-only, idempotent, non-destructive behavior. Description adds that the top-level pass reflects both enabled runtime gates and no longer emits truthfulness-only false positives, but does not define 'runtime gates' or the pass semantics, so the added value is real but incomplete.
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 short sentences, no filler; the alias fact and the behavior delta are front-loaded. However, it is concise at the expense of content, so this is efficiency rather than fully informative structure.
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 6 params, no output schema, and many preflight-related siblings, the description does not cover what the check returns, what inputs mean, when to use it, or how the two gates interrelate. An agent has no basis to invoke it correctly beyond guessing compatibility with session_preflight_check.
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?
All six parameters are undocumented in the schema (0% coverage), and the description names none of task, draft, evidence, caller, session_id, or response_format. The schema only gives structural constraints like enums/pattern, so an agent cannot know what values mean.
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 identifies this as a backward-compatible alias for session_preflight_check, so an agent can map it to a known sibling, but it never states the underlying operation independently. The title adds 'Check Submission Preflights,' yet the actual checks, inputs, and decision criteria are left to inference.
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 advice on when to call this vs session_preflight_check or any sibling. 'Backward-compatible alias' and 'Legacy Alias' imply the canonical sibling is preferred, but this is implicit, not an explicit routing rule.
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.
22 tool updates
v4.4.18- Changed
ask_peers5 fields changed- removed
Input schema / properties / caller / defaultRemoved value: -"operator" - changed
Input schema / properties / caller / enumPrevious value: -[ - "codex", - "claude", - "gemini", - "deepseek", - "grok", - "perplexity", - "operator" -]New value: +[ + "codex", + "claude", + "gemini", + "deepseek", + "grok", + "perplexity" +] - changed
Input schema / properties / evidence / descriptionPrevious 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."New 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. This is the routine path; `session_attach_evidence` attaches the same material out of band and grants it no additional provenance." - 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, Kimi K3 via Perplexity and DeepSeek, and xhigh on Grok 4.6; 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-6 Astra, GPT-5.6, Kimi K3 via Perplexity and DeepSeek, and xhigh on Grok 4.6; older GPT-5 families use their own ceilings)." - changed
Input schema / requiredPrevious value: -[ - "task", - "draft" -]New value: +[ + "task", + "draft", + "caller" +]
- Changed
contest_verdict4 fields changed- removed
Input schema / properties / caller / defaultRemoved value: -"operator" - changed
Input schema / properties / caller / enumPrevious value: -[ - "codex", - "claude", - "gemini", - "deepseek", - "grok", - "perplexity", - "operator" -]New value: +[ + "codex", + "claude", + "gemini", + "deepseek", + "grok", + "perplexity" +] - changed
Input schema / properties / new_caller / enumPrevious value: -[ - "codex", - "claude", - "gemini", - "deepseek", - "grok", - "perplexity", - "operator" -]New value: +[ + "codex", + "claude", + "gemini", + "deepseek", + "grok", + "perplexity" +] - changed
Input schema / requiredPrevious value: -[ - "session_id", - "reason", - "new_task" -]New value: +[ + "session_id", + "reason", + "new_task", + "caller" +]
- Removed
escalate_to_operator - Changed
probe_peers3 fields changed- removed
Input schema / properties / caller / defaultRemoved value: -"operator" - changed
Input schema / properties / caller / enumPrevious value: -[ - "codex", - "claude", - "gemini", - "deepseek", - "grok", - "perplexity", - "operator" -]New value: +[ + "codex", + "claude", + "gemini", + "deepseek", + "grok", + "perplexity" +] - added
Input schema / requiredAdded value: +[ + "caller" +]
- Removed
regenerate_caller_tokens - Changed
run_until_unanimous5 fields changed- removed
Input schema / properties / caller / defaultRemoved value: -"operator" - changed
Input schema / properties / caller / enumPrevious value: -[ - "codex", - "claude", - "gemini", - "deepseek", - "grok", - "perplexity", - "operator" -]New value: +[ + "codex", + "claude", + "gemini", + "deepseek", + "grok", + "perplexity" +] - changed
Input schema / properties / evidence / descriptionPrevious 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."New 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. This is the routine path; `session_attach_evidence` attaches the same material out of band and grants it no additional provenance." - 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, Kimi K3 via Perplexity and DeepSeek, and xhigh on Grok 4.6; 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-6 Astra, GPT-5.6, Kimi K3 via Perplexity and DeepSeek, and xhigh on Grok 4.6; older GPT-5 families use their own ceilings)." - changed
Input schema / requiredPrevious value: -[ - "task" -]New value: +[ + "task", + "caller" +]
- Changed
runtime_capabilities3 fields changed- removed
Input schema / properties / caller / defaultRemoved value: -"operator" - changed
Input schema / properties / caller / enumPrevious value: -[ - "codex", - "claude", - "gemini", - "deepseek", - "grok", - "perplexity", - "operator" -]New value: +[ + "codex", + "claude", + "gemini", + "deepseek", + "grok", + "perplexity" +] - added
Input schema / requiredAdded value: +[ + "caller" +]
- Changed
server_info3 fields changed- removed
Input schema / properties / caller / defaultRemoved value: -"operator" - changed
Input schema / properties / caller / enumPrevious value: -[ - "codex", - "claude", - "gemini", - "deepseek", - "grok", - "perplexity", - "operator" -]New value: +[ + "codex", + "claude", + "gemini", + "deepseek", + "grok", + "perplexity" +] - added
Input schema / requiredAdded value: +[ + "caller" +]
- Changed
session_attach_evidence3 fields changed- removed
Input schema / properties / caller / defaultRemoved value: -"operator" - changed
Input schema / properties / caller / enumPrevious value: -[ - "codex", - "claude", - "gemini", - "deepseek", - "grok", - "perplexity", - "operator" -]New value: +[ + "codex", + "claude", + "gemini", + "deepseek", + "grok", + "perplexity" +] - changed
Input schema / requiredPrevious value: -[ - "session_id", - "label", - "content" -]New value: +[ + "session_id", + "label", + "content", + "caller" +]
- Changed
session_cancel_job3 fields changed- removed
Input schema / properties / caller / defaultRemoved value: -"operator" - changed
Input schema / properties / caller / enumPrevious value: -[ - "codex", - "claude", - "gemini", - "deepseek", - "grok", - "perplexity", - "operator" -]New value: +[ + "codex", + "claude", + "gemini", + "deepseek", + "grok", + "perplexity" +] - changed
Input schema / requiredPrevious value: -[ - "session_id" -]New value: +[ + "session_id", + "caller" +]
- Changed
session_doctor3 fields changed- removed
Input schema / properties / caller / defaultRemoved value: -"operator" - changed
Input schema / properties / caller / enumPrevious value: -[ - "codex", - "claude", - "gemini", - "deepseek", - "grok", - "perplexity", - "operator" -]New value: +[ + "codex", + "claude", + "gemini", + "deepseek", + "grok", + "perplexity" +] - added
Input schema / requiredAdded value: +[ + "caller" +]
- Removed
session_evidence_checklist_update - Changed
session_evidence_judge_consensus_pass3 fields changed- removed
Input schema / properties / caller / defaultRemoved value: -"operator" - changed
Input schema / properties / caller / enumPrevious value: -[ - "codex", - "claude", - "gemini", - "deepseek", - "grok", - "perplexity", - "operator" -]New value: +[ + "codex", + "claude", + "gemini", + "deepseek", + "grok", + "perplexity" +] - changed
Input schema / requiredPrevious value: -[ - "session_id", - "judge_peers", - "draft" -]New value: +[ + "session_id", + "judge_peers", + "draft", + "caller" +]
- Changed
session_evidence_judge_pass3 fields changed- removed
Input schema / properties / caller / defaultRemoved value: -"operator" - changed
Input schema / properties / caller / enumPrevious value: -[ - "codex", - "claude", - "gemini", - "deepseek", - "grok", - "perplexity", - "operator" -]New value: +[ + "codex", + "claude", + "gemini", + "deepseek", + "grok", + "perplexity" +] - changed
Input schema / requiredPrevious value: -[ - "session_id", - "judge_peer", - "draft" -]New value: +[ + "session_id", + "judge_peer", + "draft", + "caller" +]
- Changed
session_finalize4 fields changed- removed
Input schema / properties / caller / defaultRemoved value: -"operator" - changed
Input schema / properties / caller / enumPrevious value: -[ - "codex", - "claude", - "gemini", - "deepseek", - "grok", - "perplexity", - "operator" -]New value: +[ + "codex", + "claude", + "gemini", + "deepseek", + "grok", + "perplexity" +] - changed
Input schema / properties / outcome / enumPrevious value: -[ - "converged", - "aborted", - "max-rounds" -]New value: +[ + "aborted" +] - changed
Input schema / requiredPrevious value: -[ - "session_id", - "outcome" -]New value: +[ + "session_id", + "outcome", + "caller" +]
- Changed
session_init3 fields changed- removed
Input schema / properties / caller / defaultRemoved value: -"operator" - changed
Input schema / properties / caller / enumPrevious value: -[ - "codex", - "claude", - "gemini", - "deepseek", - "grok", - "perplexity", - "operator" -]New value: +[ + "codex", + "claude", + "gemini", + "deepseek", + "grok", + "perplexity" +] - changed
Input schema / requiredPrevious value: -[ - "task" -]New value: +[ + "task", + "caller" +]
- Changed
session_preflight_check3 fields changed- removed
Input schema / properties / caller / defaultRemoved value: -"operator" - changed
Input schema / properties / caller / enumPrevious value: -[ - "codex", - "claude", - "gemini", - "deepseek", - "grok", - "perplexity", - "operator" -]New value: +[ + "codex", + "claude", + "gemini", + "deepseek", + "grok", + "perplexity" +] - changed
Input schema / requiredPrevious value: -[ - "session_id" -]New value: +[ + "session_id", + "caller" +]
- Changed
session_recover_interrupted3 fields changed- removed
Input schema / properties / caller / defaultRemoved value: -"operator" - changed
Input schema / properties / caller / enumPrevious value: -[ - "codex", - "claude", - "gemini", - "deepseek", - "grok", - "perplexity", - "operator" -]New value: +[ + "codex", + "claude", + "gemini", + "deepseek", + "grok", + "perplexity" +] - added
Input schema / requiredAdded value: +[ + "caller" +]
- Changed
session_start_round5 fields changed- removed
Input schema / properties / caller / defaultRemoved value: -"operator" - changed
Input schema / properties / caller / enumPrevious value: -[ - "codex", - "claude", - "gemini", - "deepseek", - "grok", - "perplexity", - "operator" -]New value: +[ + "codex", + "claude", + "gemini", + "deepseek", + "grok", + "perplexity" +] - changed
Input schema / properties / evidence / descriptionPrevious 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."New 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. This is the routine path; `session_attach_evidence` attaches the same material out of band and grants it no additional provenance." - 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, Kimi K3 via Perplexity and DeepSeek, and xhigh on Grok 4.6; 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-6 Astra, GPT-5.6, Kimi K3 via Perplexity and DeepSeek, and xhigh on Grok 4.6; older GPT-5 families use their own ceilings)." - changed
Input schema / requiredPrevious value: -[ - "task", - "draft" -]New value: +[ + "task", + "draft", + "caller" +]
- Changed
session_start_unanimous5 fields changed- removed
Input schema / properties / caller / defaultRemoved value: -"operator" - changed
Input schema / properties / caller / enumPrevious value: -[ - "codex", - "claude", - "gemini", - "deepseek", - "grok", - "perplexity", - "operator" -]New value: +[ + "codex", + "claude", + "gemini", + "deepseek", + "grok", + "perplexity" +] - changed
Input schema / properties / evidence / descriptionPrevious 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."New 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. This is the routine path; `session_attach_evidence` attaches the same material out of band and grants it no additional provenance." - 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, Kimi K3 via Perplexity and DeepSeek, and xhigh on Grok 4.6; 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-6 Astra, GPT-5.6, Kimi K3 via Perplexity and DeepSeek, and xhigh on Grok 4.6; older GPT-5 families use their own ceilings)." - changed
Input schema / requiredPrevious value: -[ - "task" -]New value: +[ + "task", + "caller" +]
- Changed
session_sweep3 fields changed- removed
Input schema / properties / caller / defaultRemoved value: -"operator" - changed
Input schema / properties / caller / enumPrevious value: -[ - "codex", - "claude", - "gemini", - "deepseek", - "grok", - "perplexity", - "operator" -]New value: +[ + "codex", + "claude", + "gemini", + "deepseek", + "grok", + "perplexity" +] - added
Input schema / requiredAdded value: +[ + "caller" +]
- Changed
session_truthfulness_preflight_check3 fields changed- removed
Input schema / properties / caller / defaultRemoved value: -"operator" - changed
Input schema / properties / caller / enumPrevious value: -[ - "codex", - "claude", - "gemini", - "deepseek", - "grok", - "perplexity", - "operator" -]New value: +[ + "codex", + "claude", + "gemini", + "deepseek", + "grok", + "perplexity" +] - changed
Input schema / requiredPrevious value: -[ - "session_id" -]New value: +[ + "session_id", + "caller" +]
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
Scored across 28 tools
Most tools have distinct roles, but there is meaningful overlap among state-inspection tools (session_read, session_poll, session_events, session_check_convergence) and between the synchronous/asynchronous round-starting variants. The deliberate alias session_truthfulness_preflight_check also adds avoidable ambiguity.
The dominant session_* family is consistently snake_case and action-oriented, and even the non-session tools use clear lowercase_snake names. Minor deviations like server_info, runtime_capabilities, and run_until_unanimous break the strict pattern but are not seriously confusing.
At 28 tools, the surface is above the comfortable range and feels bloated, with several maintenance, telemetry, and inspection variants that could plausibly be consolidated. While the domain is complex, the alias tool and overlapping read/state operations suggest the count is not fully justified.
The lifecycle is well covered: session creation, reading, polling, round execution, evidence handling, judgment, convergence checking, reporting, cancellation, recovery, finalization, and contestation are all present. Minor gaps like explicit session export or deletion exist, but the append-only session design makes those omissions reasonable.
Maintenance
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
- AlicenseAqualityBmaintenanceA 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.612 PyPI35MIT
- 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.5 npm1MIT
- AlicenseNot gradedqualityBmaintenanceMCP servers that let Claude Code delegate to other coding CLIs (Copilot, Codex, Gemini) for cross-model second opinions, structured reviews, and multi-engine consultations.MIT