Epistemic guard for AI coding: tracks uncertain values and blocks writes until verified.
MCPpedia last refreshed this data
io.github.Lakshmi-Chakradhar-Vijayarao/credence is an MCP server that epistemic guard for AI coding: tracks uncertain values and blocks writes until verified. Its tool list has not been published yet over stdio and sse, requires no API key, and scores 79/100 on MCPpedia's security, maintenance and efficiency rubric.
Config is the same across clients - only the file and path differ.
{
"mcpServers": {
"credence": {
"command": "credence-server"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Epistemic guard for AI coding: tracks uncertain values and blocks writes until verified.
Run this in your terminal to verify the server starts. Then let us know if it worked - your result helps other developers.
uvx 'credence-guard' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories - click any category to see the underlying evidence.
No known CVEs.
Checked credence-guard against OSV.dev.
Click any tool to inspect its schema.
Be the first to review
Have you used this server?
Share your experience - it helps other developers decide.
Sign in to write a review.
Others in other
Private-by-default, local-first memory/context/task orchestrator for MCP apps and agents.
Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 60-95% fewer tokens, same answers. Library, proxy, MCP server.
SQL for Android APK and DEX files: classes, methods, strings, references and smali.
System 1 decision models (Jev, Laya, Cua-S1) as brain for agents: Browser use, computer use, games and robotics
MCP Security Weekly
Get CVE alerts and security updates for io.github.Lakshmi-Chakradhar-Vijayarao/credence and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
AI doesn't remember what it wasn't sure about. Credence does.
pip install credence-guard
credence demo # 30-second smoke test, no API key required
[mcp] adds the FastMCP server for Claude Code. Core package has zero hard dependencies.
You say: "The rate limit is probably around 50 — I haven't confirmed it yet."
Fifteen turns later, Claude writes:
RATE_LIMIT = 50 # no warning. no flag. shipped.
The API rejects every request at 2am. The real limit was 10. Claude forgot you weren't sure.
This isn't hallucination. The model reproduced exactly what it read. What it read had the qualifier stripped — by context compression, fifteen turns back.
Tracks uncertain values the moment you state them. Blocks writes that embed those values until you confirm them.
you say "rate limit is probably 50"
→ observer registers it (before Claude responds)
→ Claude writes: RATE_LIMIT = 50 # ⚠ CREDENCE[unverified]
→ write blocked until you confirm
Every other tool warns. Credence enforces.
# Claude generates this. Credence intercepts before it ships.
class StripeClient:
API_VERSION = "2023-10-16" # ⚠⚠ CREDENCE[stale]: API date versions change on release — verify before shipping
RATE_LIMIT = 100 # ⚠ CREDENCE[unverified]: I think Stripe rate limit is around 100 req/min
TOKEN_EXPIRY = 3600 # ⚠⚠ CREDENCE[stale]: Token/session lifetime values are set by the vendor — verify
MAX_RETRIES = 3
TIMEOUT_MS = 5000
credence: blocked Edit — 2 unverified value(s)
→ I think Stripe rate limit is around 100 req/min | TOKEN_EXPIRY = 3600
Verify first, then retry. Use credence_constraints to see all pending.
After you confirm: "Confirmed — rate limit is 100 req/min per stripe.com/docs" → gate clears.

1. Add to .mcp.json:
{ "mcpServers": { "credence": { "command": "credence-server" } } }
2. Add to .claude/settings.json:
{
"hooks": {
"UserPromptSubmit": [
{ "hooks": [{ "type": "command", "command": "python3 -m credence.observer" }] }
],
"PreToolUse": [
{
"matcher": "Write|Edit|Bash|NotebookEdit",
"hooks": [{ "type": "command", "command": "python3 -m credence.hooks" }]
}
]
}
}
Done. No API key required.
Registry: Credence creates
epistemic_registry.dbin your working directory. Add*.dbto your.gitignore, or setCREDENCE_DB=~/.credence/registry.dbto keep it global.Session tracking: Set
CREDENCE_SESSION_ID=my-projectto keep constraints stable across directory changes and terminal restarts.Event log: The gate writes block/allow events to
~/.credence/events.jsonl(local only, never sent anywhere). SetCREDENCE_NO_LOG=1to disable.Constraint cap: The registry allows up to 500 constraints per session by default. Override with
CREDENCE_MAX_CONSTRAINTS=<n>.
Two layers, neither requires model cooperation:
| Layer | Hook | Role |
|---|---|---|
| Observer | UserPromptSubmit | Passive listener — registers uncertain values before Claude generates anything |
| Gate | PreToolUse | Blocks writes that embed unverified values |
The observer fires before the model processes your message. If you say "I think the rate limit is 50", the registry has that entry before C