@decionis/mcp is a local stdio MCP server: an agent reads the repository's DECIONIS_POLICY.md and evaluates a candidate action with the real Decionis evaluator before it commits, deploys or migrates anything. Native PreToolUse hooks enforce the same decision outside the model's discretion. The hosted Protocol MCP does it for an organization's agents and records signed Decision Dossiers.
Point any MCP client at npx. Each client keeps its own config; the server is the same.
claude mcp add decionis -- npx -y @decionis/mcpOr, for one repository, in .mcp.json at its root:
{
"mcpServers": {
"decionis": {
"command": "npx",
"args": ["-y", "@decionis/mcp"]
}
}
}In ~/.codex/config.toml, or a trusted project's .codex/config.toml:
[mcp_servers.decionis]
command = "npx"
args = ["-y", "@decionis/mcp"]
required = trueThe same block as Claude Code, in .cursor/mcp.json.
Install it globally so the hook command is on PATH for the templates below.
npm install -g @decionis/mcpFive core tools are read-only and local: no credentials, no network, nothing recorded. Two Presence tools appear only with a Presence tenant key. Six Shield tools are always listed and work once the assistant is paired with the user's Shield; they call the Shield service, and four of them change state there.
The policy file resolves from the tool's path argument, then $DECIONIS_POLICY_PATH, then ./DECIONIS_POLICY.md. With a policy pack, its bundle is seeded into the local evaluator once and its exact version is pinned on every evaluation.
They call presence.decionis.com with your tenant key, reusing the hosted handlers, so the loop is the hosted loop. Presence
Pair with the code from the Shield app, or set DECIONIS_SHIELD_API_KEY and DECIONIS_SHIELD_APP_ID. Shield answers in its own vocabulary: ALLOW, ASK, BLOCK.
An MCP tool runs only when the model chooses to ask. The hook intercepts every supported tool call regardless: Codex, GitHub Copilot and Claude Code are normalized into one tool-call contract.
decionis-agent-hook <codex|copilot|claude>| Host | Template in the package | Where it goes |
|---|---|---|
| Codex | templates/CodexHooks.json | .codex/hooks.json |
| Claude Code | templates/ClaudeSettings.json | .claude/settings.json |
| GitHub Copilot (CLI, cloud agent, VS Code) | templates/CopilotHooks.json | .github/hooks/Decionis.json |
The hook loads DECIONIS_POLICY.md into the real in-process evaluator and enforces the result with no network and no credentials.
Evaluate through your organization's policy graph and signed decision pipeline. Set all four; a partial remote configuration is refused.
DECIONIS_AGENT_GATE_MODE=remote
DECIONIS_AGENT_GATE_URL=https://protocol.decionis.com/v1/protocol/evaluate-decision
DECIONIS_API_KEY=<org-scoped key>
DECIONIS_ORG_ID=<organization id>For agents connected to an organization, when the decision has to be recorded. Connect with OAuth or an organization API key and ask in plain language; evaluations create evidence but never execute the downstream action.
https://protocol.decionis.com/v1/protocol/mcpDirectory clients that connect with OAuth get seven conversational capabilities: get started, evaluate, explain, requirements, request Presence, Presence status and the dossier. Clients with an organization API key get the full tool catalog.
To gate the tools of an MCP server you run, inside your own service, see MCP execution interception in AgentSafe. A local evaluation mints no Decision Dossier. For the verifiable record, use the hosted surface, or decionis/govern in CI. Contracts: evaluate-decision · protocol hooks · policy encoding