Technical reference
MCP Server
Model Context Protocol server for AI agents and coding assistants. Verify decision trails natively without sitting in the pipeline or adding latency.
Overview
What is MCP?
How does the Model Context Protocol work with Decision Keep?
The Model Context Protocol (MCP) is an open standard that lets AI agents and coding assistants call external tools and resources in a structured way. Decision Keep's MCP server exposes the forensic witness as a first-class tool so agents can verify decision trails natively, without hitting the verification endpoint from application code.
The server is dependency-free (plain Node, no MCP SDK) and runs over stdio. It is designed for AI consumption: every response is a compact, hash-preserving summary that never exhausts an LLM context window and never exposes raw payloads.
Tools
Available tools
verify_receiptPublicVerify a receipt (content, chain, signature, sequence continuity, TSA, erasure). No token required.
Parameters
{ "receipt": "RCP-20260710-1A2B3C" }get_receiptMCP tokenFetch a stored decision as a compact, hash-preserving summary. Requires DECISIONKEEP_MCP_TOKEN.
Parameters
{ "receipt": "RCP-20260710-1A2B3C" }export_ledgerMCP tokenExport a compact, cryptographically-integrity-preserving summary of an org's ledger for capture-completeness auditing.
Parameters
{ "org_id": "org-abc", "limit": 100 }get_attestationMCP tokenFetch reconciliation/attestation summaries (the auditor's 'did you capture everything?' cross-check) for an org.
Parameters
{ "org_id": "org-abc" }Resources
Available resources
MCP resources expose data as URI-addressed documents. The Decision Keep server provides:
decisionkeep://verify/{receipt}Verification result for a receipt.
decisionkeep://org/{org_id}/ledger?limit=NPaginated, hash-preserving ledger summary.
Configuration
Configuration
How do I configure the Decision Keep MCP server?
The MCP server is configured via environment variables and registered in your MCP client's config file. The server requires Node >=18.
Environment variables
- DECISIONKEEP_BASE_URLYour instance URL.
- DECISIONKEEP_MCP_TOKENScoped read token (maps to server-side DK_MCP_TOKEN).
Server-side (operator)
- DK_MCP_TOKENBearer token for the /api/mcp read endpoint.
- DK_MCP_ORGThe org the token is scoped to.
Setup
Example usage
Register the server in your MCP client configuration. Below are examples for common clients.
Claude Desktop
{
"mcpServers": {
"decisionkeep": {
"command": "node",
"args": ["mcp/server.mjs"],
"env": {
"DECISIONKEEP_BASE_URL": "https://decisionkeep.com",
"DECISIONKEEP_MCP_TOKEN": "..."
}
}
}
}Cursor
{
"mcpServers": {
"decisionkeep": {
"command": "node",
"args": ["mcp/server.mjs"],
"cwd": "/path/to/decisionkeep",
"env": {
"DECISIONKEEP_BASE_URL": "https://decisionkeep.com",
"DECISIONKEEP_MCP_TOKEN": "..."
}
}
}
}Protocol
Protocol conformance
Version negotiation
Supports protocol revisions 2026-07-28, 2025-11-25, 2025-06-18, 2025-03-26 and 2024-11-05. On initialize the server echoes whichever supported revision you request, and offers its newest if you ask for one it does not know, so it works with both current and older clients. In the stateless (modern) era, where there is no initialize handshake, the per-request version in _meta is echoed back on every response.
Structured output and tool metadata
Every tool declares an outputSchema and returns typed structuredContent alongside the text block. Every tool also declares readOnlyHint, so clients can auto-approve these lookups instead of prompting for consent on a pure read.
Self-correcting errors
Tool failures - a missing argument, an unknown tool name, a rejected receipt - are returned as tool errors rather than protocol errors, and name the available tools. The model can read them and correct itself, which a transport-level error does not allow.
No batching
JSON-RPC batching was removed from MCP in revision 2025-06-18. Batched requests are rejected explicitly rather than silently dropped; send one request per line.
Security
Security
The MCP server enforces strict org scoping and token validation:
- •
verify_receiptis public and requires no token. - •
get_receipt,export_ledger, andget_attestationrequireDECISIONKEEP_MCP_TOKEN. - •The server-side
DK_MCP_TOKENis pinned to a single org viaDK_MCP_ORG. Tokens are compared in constant time to prevent timing attacks. - •Responses are hash-preserving summaries. Raw payloads are never exposed to the agent, protecting PII and preserving zero-knowledge guarantees.
Source
Source & issues
The MCP server lives in the mcp/ directory of the main repository.
See the Forensic Witness on your stack
Book a personalised demo and we'll map Decision Keep to your automated-decision obligations and show the evidence trail end to end.