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.
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 + ENCanonical 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://metaJSONneutralVersion, 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.jsonJSONShipped 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):
{
"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.
// 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.