tools/call before it reaches the real tool:
- out-of-policy or over-budget calls are blocked — they never run;
- high-stakes calls pause for a human in the Studio;
- PII in arguments is redacted;
- and every decision emits a tamper-evident receipt you can stream to the Glass Box.
Install
1. Describe what to wrap
Create acertior-mcp.json next to your project. Pick a boundary
profile and list the upstream servers to put behind it:
2. See the verdicts (dry run)
check connects to each upstream, infers the capability for every tool, and
shows exactly what the firewall would do — before you wire it into a host.
3. Install it into your host
certior entry to your host’s mcpServers config (.mcp.json by
default) that launches the firewall. Restart the host and your agent now talks
to the upstream tools through Certior. Point your host at a different file
with --target.
Tip — stream receipts to the Studio. Runcertior login(or setCERTIOR_DSN) first. Every blocked or approved tool call then shows up in your Glass Box: the graph, the alerts feed, and the pending-approvals queue. Without it, the firewall still enforces locally — the receipt comes back inline.
How a call is decided
For each tool call the firewall resolves a canonical capability likegithub:write or payments:transfer (from the MCP readOnlyHint /
destructiveHint annotations, a verb heuristic over the tool name, and any
explicit overrides), then applies three layers, hard to soft:
- Profile block globs → block outright (e.g.
researchblocks*:write). - Capability ceiling + cumulative budget + content scan (the Certior
Guard) → block over-budget or out-of-ceiling calls; redact PII in arguments. - Profile approval globs → pause for a human (e.g.
financegatespayments:*).
Capabilities are inferred — override when you want
Unknown tools are treated as mutating (fail safe), so a read-only profile gates anything it doesn’t recognise. To pin a specific tool, add an override:Configuration reference
A few keys also read from the environment:
CERTIOR_MCP_PROFILE,
CERTIOR_MCP_BUDGET_CENTS, CERTIOR_MCP_REDACT_RESULTS,
CERTIOR_MCP_APPROVAL_FALLBACK, and CERTIOR_REPORT=0 to silence streaming.
Commands
certior-mcp console script, so a host
entry can launch it directly without the top-level dispatcher.
Limitations
- Structured tool output (
outputSchema) is flattened to content blocks so the firewall can answer with a block message or redacted text. - The human-approval gate is synchronous (it blocks the call until a verdict), which is the right behaviour for the stdio tool-call model.