ACF
acfstandard.io
Developer docs
FR
Security

Doctrine signatures

The ACF® doctrine served by acf-mcp is Ed25519-signed, and every reasoning tool output carries the hash and signature of the doctrine that produced it. Verify offline, with the ACF® public key, that this doctrine is the one that was published.

→Tip
Verification needs no network call: the public key is embedded in every acf-mcp npm release. Three canonical reference implementations are provided: Node.js, Python, Go.

Anatomy of a signed output

Every reasoning tool output ends with six traceability fields. The signature is taken over the doctrine content hash, not over the output itself: it proves which doctrine the reasoning relied on, not that the output was left unchanged afterwards.

signed-footer.jsonjson
{
  "doctrine_version": "ACF framework v1.0 / rules 2026-06",
  "doctrine_hash": "sha256:119819463363cde0649504ab8ed5a96982fdb8506441f2c5e76e7e3c3feb77f1",
  "doctrine_signature": "ed25519:3R0oIiqL3KgdVAemSy4oEprbUZnRWE4OEQQgD+2JnMzKhAL2xrmYjwrwbpkbew0T5B4YKvEYkycWFQ+paADFCQ==",
  "doctrine_archive_url": "https://acfstandard.io/archive/doctrine/v1.0/doctrine-v1.0.json",
  "regulatory_snapshot": "EU AI Act (Reg. 2024/1689, incl. Digital Omnibus deferral) + GDPR (Reg. 2016/679) + DORA (Reg. 2022/2554) + NIS2 (Dir. 2022/2555) + ISO 42001:2023: as of 2026-06-07",
  "generated_at": "2026-11-01T12:06:31.043Z"
}

The two properties

1. Ed25519

The signature is Ed25519 (RFC 8032), elliptic-curve on Curve25519. Chosen for: (1) no suspect parameters (no NIST-suspected curves), (2) deterministic and constant-time verification, (3) compact sizes (32 bytes public key, 64 bytes signature). The ACF® public key ships in base64 SPKI encoding.

2. SHA-256 doctrine hash

The hash (doctrine_hash) is a SHA-256 computed over all the doctrine content files. If a single card, guide or rule changes, the hash changes and the signature no longer verifies: any alteration of the corpus becomes detectable.

The current public key

The doctrine public key for acf-mcp ≥ 1.1.0, unchanged in 2.0:

acf-doctrine-pubkey.txttext
MCowBQYDK2VwAyEAojtKfh20SGGV63LMETjZBXRWo2tY0viAYziG/y3/L0s=

See the full history (root rotations, prior versions).

Why this matters

A governance recommendation is only worth something if you know which framework it relies on. The signature lets an auditor check, without depending on you, that the reasoning produced by acf-mcp rests on the published ACF® doctrine and not on a modified version. Signing the decisions themselves, in the organisation’s register (ACF-09), is the job of ACF Compliance, not of the MCP server.