A local MCP server for cross-agent adversarial code review — Claude Code and Codex CLI critique each other's work over their own subscriptions, with full repo access.
paranoia-local defines 5 tools with comprehensive schemas and detailed descriptions. All tools have explicit input schemas with typed parameters and descriptions. Tool names are action-oriented (critique_*, query, rebut, arbitrate). Descriptions are substantive (150-300+ chars), explaining WHAT, WHEN, and context. However, output schemas are not documented, LLMs cannot predict response structure. Error handling guidance is absent. Parameters like 'engine' and 'model' lack validation constraints. The 'round' parameter is REQUIRED for convergence but this constraint is buried in description text, not enforced via JSON Schema. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all tools being READ_ONLY operations.
Arbitrate a dispute between two reviewers. Both engines read the repo and evidence, then vote on a decision with severity tags and structured reasoning.
Adversarially review a git branch/diff. A cold, strongest-frontier reviewer on the OTHER engine reads the repo directly (full read access, its own subscription) and returns a five-section critique with severity tags. Reviews an isolated worktree of the ref by default; can review the dirty working tree with include_uncommitted.
Review an implementation contract (plan) against a frozen diff. The reviewer reads the repo, the plan, and the diff; returns a five-section critique with severity tags and optional evidence bindings.
Ask the reviewer a question about the repo. The reviewer reads the repo directly and returns a conversational answer.
Respond to a prior review. The other engine reads the repo and the prior review, and returns a rebuttal with severity tags.
Output schemas not documented. LLMs cannot predict response structure (five-section critique format, severity tags, evidence bindings). Agents must guess field names and types, risking parsing errors and wasted tokens.
No tool annotations despite all tools being READ_ONLY. Missing readOnlyHint in inputSchema prevents MCP clients from optimizing caching and safety policies.
'round' parameter is REQUIRED for convergence mode but this constraint is only documented in description text, not enforced via JSON Schema (no 'required' array). LLMs may omit it, causing silent failures.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 70 | 2026-07-28+ | v2 |
Parameter 'engine' accepts enum [codex, claude] but no description explains what each engine is, when to choose one, or what happens if the selected engine is not available locally. LLMs cannot reason about the choice.
No error handling guidance. Descriptions do not explain what errors are possible, which are retryable, or what the LLM should do if a review fails (e.g., engine unavailable, repo not found, permission denied).