ACF
acfstandard.io
Developer docs
FR
Resources

Resources: reference

Cross-cutting resources: ACF® glossary index, doctrine metadata (version, hash, signature, archive URL, supported locales) and the archive bundle shipped with the package. The corpus infrastructure layer, the one that lets you check which doctrine a tool output relies on.

→Tip
The acf://meta resource is the pivot of the ACF® trust model. It exposes the doctrine content_hash and its Ed25519 signature. Pin it in your audit pipeline and you get a single entry point to verify that a tool output matches a precise doctrine version.

What this contains

Three cross-cutting resources: (1) acf://glossary, the canonical ACF® term index; (2) acf://meta, the doctrine’s technical metadata; (3) the archive bundle, a JSON file shipped in the npm package. None is bulky: they all fit in a client cache.

Exhaustive list

Glossary

acf://glossaryJSONFR + EN

Canonical index of ACF® terms

Structured list of official terms (DDAO, Decision Sovereignty, delegated autonomy, N0 to N3 maturity, kill switch, mandate, decision register, etc.) with bilingual definitions and cross-refs to principles, cards and regulator articles.

See also: READ tool acf.glossary.define for the canonical definition of a specific term.

Doctrine metadata

acf://metaJSONneutral

Version, hash, signature, planned archive URL, served locales

Short document (JSON, ~1 KB) describing the doctrine version currently served: semantic framework_version, ISO 8601 content_build, SHA-256 content_hash, Ed25519 doctrine_signature, doctrine_public_key, permanent_archive_url, rules_version, fallback_locale and the exhaustive list of supported locales (V1.0: fr, en, es, de, pt, it, nl, ru, ar, tr, ja, zh, ko, only fr and en are actually served, the rest fall back to en).

Archive bundle

node_modules/acf-mcp/dist/archive/doctrine-v1.0.jsonJSON

Shipped in every npm release, with its manifest

The archive bundle is not an MCP resource (no acf:// URI): it is a file holding the full corpus of the release, each file with its SHA-256 hash, plus the global hash, the Ed25519 signature and the public key. The manifest (manifest-v1.0.json) carries the same hashes without the content. Keep it in your audit file: it verifies offline, without the MCP server.

Metadata shape

What acf://meta returns (real values of acf-mcp 2.0.1):

meta.jsonjson
{
  "framework_version": "1.0",
  "content_build": "2026-11-01T11:15:31.220Z",
  "content_hash": "sha256:119819463363cde0649504ab8ed5a96982fdb8506441f2c5e76e7e3c3feb77f1",
  "permanent_archive_url": "https://acfstandard.io/archive/doctrine/v1.0/doctrine-v1.0.json",
  "rules_version": "2026-06",
  "locales": [
    "fr",
    "en"
  ],
  "fallback_locale": "en",
  "doctrine_signature": "ed25519:3R0oIiqL3KgdVAemSy4oEprbUZnRWE4OEQQgD+2JnMzKhAL2xrmYjwrwbpkbew0T5B4YKvEYkycWFQ+paADFCQ==",
  "doctrine_public_key": "MCowBQYDK2VwAyEAojtKfh20SGGV63LMETjZBXRWo2tY0viAYziG/y3/L0s="
}

Fetching reference resources

In practice, a client typically starts by reading acf://meta once at startup to pin the doctrine version and obtain the verification public key. The glossary follows and is usually cached on the client side afterwards, since it only changes with the doctrine itself.

fetch-reference.tsts
// 1. Pin the doctrine version on startup
const metaResp = await client.readResource({ uri: "acf://meta" });
const meta = JSON.parse(metaResp.contents[0].text);

const pinnedVersion = meta.framework_version;        // "1.0"
const pinnedHash = meta.content_hash;                // "sha256:1198..."
const verificationKey = meta.doctrine_public_key;    // base64 SPKI Ed25519

// 2. Read the glossary index
const glossaryResp = await client.readResource({ uri: "acf://glossary" });
const glossary = JSON.parse(glossaryResp.contents[0].text);
// Index of the terms; each one reads at acf://glossary/{term}

// 3. Every later tool output must embed the same content_hash,
//    otherwise the doctrine has shifted and the client must refresh.

See also

The Signatures page details offline Ed25519 verification and provides Node / Python / Go reference implementations. The Architecture page explains why the signature contract is built around acf://meta rather than a per-resource signature.