DESCARTES

an mcp server for the chronically unsure

doubt, until what
remains is certain.

Dubito, ergo cogito, ergo commit.

Descartes doubts every decision in your plan, doubts its own doubts, and answers each one from real evidence, or hands it back to you. No unexamined assumption reaches the work, so hallucination has nowhere to hide.

R Descartes
René Descartes

the recursive doubt loop

Draft, doubt, doubt the doubts, answer from evidence, then doubt the answer and recurse. Every grounded finding is banked into a knowledge base that feeds the next round and the final plan. It stops the instant a pass produces no new load-bearing doubt.

Descartes pondering
pondering…
draft doubt doubt the doubts answer doubt the answer ↻ knowledge base revise converged

“The question behind the question is where the work hides.”

a doubt, examined

Every answer resolves against real evidence (your codebase, or a cited Exa fact), or it becomes a question only you can answer. Low-confidence is never asserted.

two engines, one method

Bring a key, or bring nothing. Descartes degrades instead of failing.

the panel

A panel of distinct Fireworks model families argues it out. Where they agree, it’s settled. Where they disagree, that is real uncertainty.

FIREWORKS_API_KEY

claude alone

No keys at all? The client’s own Claude model runs the full loop via MCP sampling. It resolves what it can from your code, and asks you about the rest.

no keys needed

it asks, never guesses

If even sampling is unavailable, Descartes refuses to fake an answer. It surfaces every doubt as a question for you, and never hard-fails.

the floor

three steps to certainty

1 · installpip install -e . — and the descartes command appears.
2 · (optional) keysCopy .env.example, add your own. Missing keys just degrade.
3 · wire it upAdd to your Claude Code MCP config and start doubting.
# 1. install
git clone https://github.com/pranjalbhatia710/descartes-mcp && cd descartes-mcp
pip install -e .

# 2. prove the loop converges (no keys needed)
descartes --selftest

# 3. then ask Claude: "use descartes to doubt this plan"

by the numbers

On a seeded fixture of 6 plans with 19 load-bearing assumptions. A plan you just ship examines none of them. Both benchmarks run in CI on every push.

100% → 0%

assumptions reaching the work unexamined, ship-as-is versus Descartes

12 of 19

grounded by Descartes itself; only 7 are handed back to you

depth + 1

passes to converge, capped at 20, never a spiral

part of a bigger idea

Descartes has a sibling. Where Descartes doubts, The Asker asks. Two halves of one thesis: the right question beats the confident answer.

The Asker

Today’s AI answers. This one asks.

An RL agent that learns to understand any subject by asking the sharpest questions, watching a field of candidates collapse to the truth in as few questions as possible. The Asker asks to understand; Descartes doubts to be certain. Same enemy: hallucination, which is only confident guessing.

github.com/pranjalbhatia710/the-asker →