tenth-man-mcp
by keeganthewhi
README.md
# 10th Man Protocol MCP
> When everyone agrees, someone has to disagree.
Adversarial review system for autonomous AI coding agents. Before your agent executes a critical change, 3 independent contrarian reviewers challenge the proposal ā catching what a solo agent misses.
```bash
npm install -g tenth-man-mcp
claude mcp add tenth-man -- npx tenth-man-mcp
```
That's it. On first run, the protocol auto-injects a behavioral trigger into your `CLAUDE.md` and sets up `.tenth-man/` in your repo (gitignored).
## How It Works
When your agent is about to make a critical change ā touching auth, refactoring architecture, modifying 3+ files, running migrations ā the protocol spawns 3 independent reviewers:
| Agent | Role | What They Do |
|-------|------|-------------|
| š“ Devil's Advocate | Break it | Finds every failure mode, race condition, security hole |
| š” Architecture Critic | Question it | Evaluates structural impact, coupling, pattern consistency |
| š¢ Pragmatist | Reality-check it | Rollback strategy, scope creep, simpler alternatives |
Each agent reads the codebase independently in an **isolated context window**. Zero opinion contamination between reviewers.
## Agent Resolution
The protocol uses the best available models, falling back gracefully:
| Available CLIs | What Happens |
|---|---|
| Codex + Gemini | All 3 run in parallel (~1-3 min) |
| One external agent | External + 2 isolated Claude subagents (~2-4 min) |
| Neither | 3 isolated Claude subagents (~3-5 min) |
**Models**: `gpt-5.3-codex`, `gemini-3-pro-preview`, `claude-opus-4-6`. Top-tier only. This is for people who need reliability over cost.
## Workflow
### Standard Mode (default)
```
Agent detects critical change
ā Calls tenth_man_review
ā "š 10th Man Protocol activated ā CRITICAL severity.
Spawning 3 agents... expect 2-5 minutes."
ā Review complete
ā Agent: "3 agents reviewed your JWT refactor:
š“ Devil's Advocate BLOCKS ā token refresh race condition
š” Architecture Critic says PROCEED ā recommends adapter pattern
š¢ Pragmatist says PROCEED ā wants it split into 3 phases
How would you like to proceed?"
ā You: "go ahead, address the race condition"
ā Agent creates execution plan ā you confirm ā agent executes
ā Everything archived to .tenth-man/history/
```
### Auto Mode
Same review, no pauses. Agent incorporates findings into its plan and proceeds immediately. For fire-and-forget workflows.
After completion, the agent includes a one-liner:
```
ā ļø 10th Man: Proceed with changes. 2 critical issues addressed, 4 recommendations.
```
## Directory Structure
```
.tenth-man/ # Auto-added to .gitignore
config.json # Optional repo config
active/
REVIEW.md # Current review (standard mode)
PLAN.md # Current plan (after approval)
history/
2026-02-12T14-30-00Z_a3f8c2/
review.md
plan.md
outcome.json
index.json # Manifest for history queries
```
## Requirements
- Node.js ā„ 20
- Claude Code (host agent)
- Optional: [Codex CLI](https://github.com/openai/codex) for cross-model review
- Optional: [Gemini CLI](https://github.com/google-gemini/gemini-cli) for cross-model review
## Bypass / YOLO Mode
If you run Claude Code with `--dangerously-skip-permissions`, the protocol defaults to **standard** mode (waits for approval) ā which means the agent will pause and wait for you. If you're walking away, set auto mode once:
```bash
# In Claude Code, run:
Use tenth_man_configure with default_mode "auto"
```
Or create `.tenth-man/config.json` in your repo:
```json
{
"default_mode": "auto"
}
```
Now the protocol reviews, plans internally, executes, and archives ā no pauses. You come back to finished work + full audit trail.
> **Why not auto-detect?** Claude Code [cannot detect](https://github.com/anthropics/claude-code/issues/17603) whether it's running in bypass mode. It always thinks it's interactive. So this is a one-time config per repo.
---
## Reference
### MCP Tools
#### `tenth_man_review`
Main entry point. Triggers adversarial review.
```json
{
"task_description": "Refactor auth from session-based to JWT",
"proposed_changes": "Replace express-session with jsonwebtoken...",
"affected_files": ["src/auth/*", "src/middleware/auth.ts"],
"severity": "critical",
"mode": "standard"
}
```
**Severity levels:**
- `high` ā 3+ files affected
- `critical` ā Auth, data, architecture changes
- `blocker` ā Breaking changes, migrations
**Modes:**
- `standard` ā Review ā user approval ā plan ā user confirms ā execute
- `auto` ā Review ā agent plans internally ā execute ā audit trail
#### `tenth_man_compile`
Finalizes review after Claude subagent results are collected. Called automatically by the host agent after spawning subagents.
#### `tenth_man_configure`
View or update repo-level settings.
```json
{
"timeout_seconds": 240,
"default_mode": "auto",
"available_agents": ["codex"]
}
```
#### `tenth_man_history`
Query past audits.
```json
{
"last_n": 10,
"severity": "critical"
}
```
### Configuration
Optional `.tenth-man/config.json`:
```json
{
"available_agents": ["codex", "gemini"],
"timeout_seconds": 180,
"default_mode": "standard",
"auto_trigger_patterns": [
"**/auth/**",
"**/migrations/**",
"**/*.schema.*"
]
}
```
## License
MIT
TDQS
A4.1/5.0
Scored across 3 tools
Disambiguation5/5
Each tool serves a distinct purpose: configuration, history query, and triggering a review. There is no ambiguity or overlap between them.
Naming Consistency5/5
All tool names follow the same pattern: 'tenth_man_' followed by a verb (configure, history, review). This is consistent and predictable.
Tool Count5/5
With only 3 tools, the server is tightly scoped to its core functionality (configure, review, history). This is appropriate for a focused protocol like the 10th Man.
Completeness4/5
The tools cover the essential lifecycle: configuration, triggering a review, and querying history. A minor gap is the lack of a tool for approval or execution plan creation, but these are described as manual steps outside the tool surface.
Maintenance
ActivityInactive
ResponsivenessNo issues