dekimu-mcp

Verifiable action receipts + reproducible GDPR checks for any agent. Local-first, no telemetry.

Documentation

dekimu-mcp

A local-first MCP server that gives any agent verifiable action receipts + reproducible GDPR checks.

Local-first, no telemetry, no network egress at runtime.

Install

npx @dekimuhq/dekimu-mcp

Odysseus

Add to your MCP config:

{
  "mcpServers": {
    "dekimu": {
      "command": "npx",
      "args": ["-y", "@dekimuhq/dekimu-mcp"]
    }
  }
}

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or the equivalent path on your OS:

{
  "mcpServers": {
    "dekimu": {
      "command": "npx",
      "args": ["-y", "@dekimuhq/dekimu-mcp"]
    }
  }
}

Tools

Three local-first tools — no network, no credentials:

ToolWhat it does
mint_action_receiptMint a tamper-evident, offline-verifiable dekimu.mcp.action.v1 receipt for any agent action, self-signed by a local key.
verify_receiptVerify the structure and signature of a receipt offline. Returns a result, never throws.
gdpr_obligation_checkRun a reproducible GDPR obligation check on a described processing activity against a bundled regulation snapshot (not legal advice).

Honesty box: Receipts are self-signed by your local key — they are tamper-evident and offline-verifiable, but the issuer is YOU, not a Dekimu trusted issuer. They verify offline with verify_receipt; the public verifier at https://verify.dekimu.com reports them as self-signed / unknown-key, never as Dekimu-trusted.

To anchor against Dekimu's trusted issuer (verifier domain + transparency log + third-party-verifiable provenance), see Hub at https://app.dekimu.com.

GDPR obligation ids

gdpr_obligation_check reports each obligation under the ecosystem's canonical id — the same strings used by the public Regulation-as-Code GDPR profile (manifest gdpr 1.2.0) and by Dekimu Hub. This server evaluates the subset a described activity can answer on its own:

idGDPR articleMet when
gdpr.lawful-basisArt. 6 — lawfulness of processinglawfulBasis is given
gdpr.purpose-limitationArt. 5(1)(b) — purpose limitationpurpose is given
gdpr.retentionArt. 5(1)(e) — storage limitationretention is given

The remaining profile obligations (gdpr.privacy-notice, gdpr.subject-rights, gdpr.erasure, gdpr.dpia, gdpr.prior-consultation) need an evidence corpus and are not evaluated here. dataCategories and dataSubjects are accepted as input but do not drive an obligation (there is no data-minimisation obligation in the profile).

Ecosystem tools (also registered)

The server also registers three tools for agents that operate inside the Dekimu ecosystem. They are no-ops without configuration and never add network egress to the three tools above.

ToolWhat it doesNeeds
operate_capabilityOnline. Signs a proof-of-possession with the configured agent credential and invokes a gated capability (gdpr.scan, ropa.compile, dpia.run, erasure.execute, compass.passport.read, operator.draft-reminder) through Dekimu Hub's capability door. Returns the door verdict (ok / checkpoint / denied) and any receipt id. Fail-closed: missing or mismatched configuration, or a disabled door, returns a clear status and does nothing.DEKIMU_AGENT_CREDENTIAL + DEKIMU_AGENT_TERMINAL_KEY (optional DEKIMU_DOOR_URL, DEKIMU_VERIFY_URL)
autonomy_policy_queryRead-only. Returns the autonomy tier for a policy domain (engineering-ops, content, money, legal, strategy) from a small bundled table.—
ecosystem_digest_latestRead-only. Returns the latest ecosystem digest JSON from a local file. Reports available: false when unset or unreadable.ECOSYSTEM_DIGEST_PATH

Anchored provenance (optional, OFF by default)

By default mint_action_receipt emits a local self-signed dekimu.mcp.action.v1 receipt and the server runs standalone with zero extra dependencies.

When an anchored issuer is configured, the mint path can instead (or also) emit a registered ar.action.v1 (AActR) provenance receipt for the tool call — the tool becomes the verb, the inputs/result become salted commits (raw payloads never enter the receipt), and, when the call ran under a capability mandate, credential_id + caveats_consumed bind the authorizing mandate into the signed body. An anchored envelope can optionally be wrapped as a W3C Verifiable Credential for VC-native consumers.

Configuration (all optional — unset ⇒ local mode, unchanged):

EnvEffect
DEKIMU_RECEIPT_MODElocal (default) · anchored · both
DEKIMU_ANCHORED_ISSUER_MODULEModule exporting createAnchoredIssuer() (or a default factory) that signs + anchors the AActR body. Absent ⇒ anchored requests degrade to a local receipt with a notice.
DEKIMU_ANCHORS_VC_MODULEOptional W3C-VC carrier module (used only when a tool call sets wrapVc). Absent ⇒ VC wrap is skipped, the anchored receipt is unaffected.

The signing/anchoring keys live in the injected issuer, never in this server. Both integrations are loaded dynamically and degrade gracefully when absent. See docs/anchored-provenance-pattern.md.

Scope: an anchored receipt proves the tool call happened as recorded — not that the tool's result is correct or safe.

Development

npm ci && npm test && npm run build

Tests are offline. LIVE_VERIFIER=1 npm test additionally asks the public verifier (POST https://verify.dekimu.com/api/lookup-by-hash) about the recorded conformance fixture and asserts the loose, stable fact about a self-signed receipt: it is not anchored (no transparency-log claim). The by-value verdict runs in the browser at https://verify.dekimu.com/verify-receipt and is reported as a self-signed / not-trusted status, never verified. Override the host with LIVE_VERIFIER_URL.

Learn more

License

MIT

Part of the Dekimu ecosystem

Built and maintained by Dekimu. The Dekimu ecosystem — Dekimu Hub and the public verifier at verify.dekimu.com — is the reference implementation for this project. Sibling projects: anchors-spec · agents.txt · regulation-as-code · claude-memory. All of them: https://dekimu.com/open-source.