decisions-judge-mcpBLOCK
Typed decisions for AI agents as an MCP tool: yes/no probability (noul), choice, and score in one fast request. Backed by the TypeSafe System One model.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
[](https://github.com/clouatre-labs/decisions-judge-mcp/actions/workflows/ci.yml) [](https://www.npmjs.com/package/decisions-judge-mcp) [](https://api.reuse.software/info/github.com/clouatre-labs/decisions-judge-mcp)
Typed decisions for AI agents, as an MCP tool. Ask yes/no probability (noul), choice among options, or score on ordered levels about any JSON application state — all questions answered in one fast request.
Backed by the TypeSafe System One model (Jev) via `@typesafe-ai/sdk`, with an opt-in Cloudflare Workers AI provider — see Providers.
Get started
Add to claude_desktop_config.json (~/Library/Application Support/Claude/) — the same JSON shape works for codex, goose, and pi:
{
"mcpServers": {
"decisions-judge": {
"command": "npx",
"args": ["-y", "decisions-judge-mcp"],
"env": { "TYPESAFE_API_KEY": "your-key-here" }
}
}
}Then ask your agent anything answerable with a judgment — it can call the judge tool.
Remote transport (opt-in)
By default the server speaks stdio. Set JUDGE_TRANSPORT=http to serve the MCP Streamable HTTP transport (spec revision 2026-07-28) at POST /mcp instead:
JUDGE_TRANSPORT=http HTTP_HOST=127.0.0.1 HTTP_PORT=8080 npx -y decisions-judge-mcp
JUDGE_TRANSPORT:stdio(default) orhttp. Any other value exits with an error.HTTP_HOST: bind address, default127.0.0.1.HTTP_PORT: port, default8080; must be 1-65535.
Serving is stateless: each request is handled independently, with no protocol-level sessions (GET/`DEL
0d874fa81514OBSERVED · 2026-10-11Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add decisions-judge-mcp --env CLOUDFLARE_API_TOKEN=${CLOUDFLARE_API_TOKEN} --env TYPESAFE_API_KEY=${TYPESAFE_API_KEY} --env TYPESAFE_API_KEYS=${TYPESAFE_API_KEYS} -- npx -y [email protected]{
"mcpServers": {
"decisions-judge-mcp": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"CLOUDFLARE_API_TOKEN": "${CLOUDFLARE_API_TOKEN}",
"TYPESAFE_API_KEY": "${TYPESAFE_API_KEY}",
"TYPESAFE_API_KEYS": "${TYPESAFE_API_KEYS}"
}
}
}
}Exposed tools (4)
4 read · 0 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
classify | read | Build a judge call that classifies the provided application state into one of several described options with balanced criteria. |
judge | read | |
route | read | Build a judge call that decides what the next decision should prepare for, with structured criteria per route. |
verify-claim | read | Build a judge call that checks a factual claim about the provided application state with atomic yes/no questions. |
Trust audit
BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | WARN |
| L2 | Instruction surface (what it tells the agent) | FAIL |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- declared (11 observation(s))
- Shell
- none-observed
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (11)
<!-- What actually happened? Include redacted error messages, stack traces, or unexpected output. Never post secrets, credentials, tokens, client data, or PII. -->
const ok = await fetch(`http://127.0.0.1:${port}/mcp`, { method: "OPTIONS" })const response = await fetch(`http://127.0.0.1:${port}/mcp`, {const res = await fetch(`http://127.0.0.1:${port}/mcp`, {const getResponse = await fetch(`http://127.0.0.1:${port}/mcp`, { method: "GET" }).catch(const oversized = await fetch(`http://127.0.0.1:${port}/mcp`, {.commitlintrc.yml
.markdownlint-cli2.jsonc
@modelcontextprotocol/server, @typesafe-ai/sdk, zod
Post-audit, three independent review delegates re-verified F1-F3 against the tree without access to this document's reasoning, each re-deriving evidence from `server.mjs`, the installed package source
`server.mjs:64` (`return (client ??= new TypeSafeClient());`) constructs `new TypeSafeClient()` with no `logLevel` or `logger` override, so the SDK's default `consoleLogger` (`node_modules/@typesafe-a
Gates applied: no_behavioural_pass.
0d874fa81514full audit observations/trust-audit/mcp-server/clouatre-labs__decisions-judge-mcp.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-11 | 0d874fa81514 | BLOCK | D | 69 | first audit |
Questions
What is the decisions-judge-mcp MCP server?
Typed decisions for AI agents as an MCP tool: yes/no probability (noul), choice, and score in one fast request. Backed by the TypeSafe System One model.
What tools does decisions-judge-mcp expose?
4 in total: 4 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is decisions-judge-mcp safe to connect to an agent?
No — not without reading the findings first. The audit graded it D (69/100) and found 1 critical or high issue in the source. Each one is listed on this page with the file and line it is on.
What credentials does decisions-judge-mcp need?
It reads CLOUDFLARE_API_TOKEN, TYPESAFE_API_KEY and TYPESAFE_API_KEYS from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does decisions-judge-mcp run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as decisions-judge-mcp at 1.6.0.
How current is this page?
The grade is for one exact copy of the source (0d874fa81514), read on 2026-10-11. The repository is watched and re-audited when it changes.