Resources reference
The acf-mcp server exposes the ACF® corpus as MCP resources — canonical URIs, typed MIME, read-only access, signed content. Every resource is addressable by its acf://… URI and served in the locale negotiated with the client.
acf-mcp resources are the raw matter: whitepaper, cards, regulator articles, glossary, metadata. READ tools (e.g. acf.fiche.lookup) are enriched access points to the same resources with context and cross-refs.What is an MCP resource
In the Model Context Protocol specification, a resource is content identified by a URI, accompanied by a MIME type and exposed read-only through the resources/list and resources/read methods. The client negotiates the content, the server serves it. It is the doctrinal equivalent of an HTTP GET — no mutation, no side effect.
Every acf-mcp resource is signed at the source: the doctrine version is frozen in the content_hash exposed by acf://meta, signed Ed25519 and archived on acfstandard.com. A client can therefore cite a resource in a user reply and prove, offline and years later, that it was read exactly as it stands today.
By category
ACF® resources are organised into four logical categories. Click for the exhaustive list and a fetch example.
The founding corpus — whitepaper, four principles (P1–P4), four autonomy levels (N0–N3), six maturity dimensions (D1–D6), the DDAO role, the manual and the deck.
The 17 canonical ACF® cards (ACF-00 to ACF-16), bilingual, served as Markdown with frontmatter. The operational backbone of the standard.
Operational reading of AI Act, GDPR, DORA, NIS2 and ISO 42001 — each guide cross-mapped to the relevant principles, dimensions and fiches.
Glossary index, doctrine metadata (version, hash, archive URL, locales) and the permanent archive bundle.
By URI pattern
All resources are addressed by a URI of the form acf://category/identifier. The locale is negotiated outside the URI via the Accept-Language header or the ACF_MCP_LOCALE variable — not in the URI itself, so that each piece of content has a single canonical URI.
acf://whitepaper— the founding ACF® whitepaper (Markdown)acf://deck— the standard’s presentation deck (Markdown)acf://manual,acf://manual/toc,acf://manual/section/{N}— the full pedagogical manual, its table of contents, and each part individually (9 parts)acf://framework/principle/{P1..P4}— the 4 founding principles (structured JSON)acf://framework/autonomy-level/{N0..N3}— the 4 autonomy levels (structured JSON)acf://framework/dimension/{D1..D6}— the 6 maturity dimensions (structured JSON)acf://framework/ddao— the canonical definition of the DDAO roleacf://fiche/{ACF-00..ACF-16}— one of the 17 methodological cards (Markdown with frontmatter)acf://guide/{ai-act|gdpr|dora|nis2|iso-42001}— the operational guide for a regulator (Markdown)acf://glossary— the canonical index of ACF® termsacf://meta— doctrine metadata — version, hash, archive URL, locales
Fetching a resource
An MCP client calls the resources/read method with the target URI. The server returns a contents array with the MIME type and the text. The actually-served locale is exposed in the served_locale frontmatter (for Markdown) or in the served_locale / is_fallback envelope (for JSON), so a client can detect a fallback to English.
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
const transport = new StdioClientTransport({
command: "npx",
args: ["-y", "acf-mcp@latest"],
env: { ACF_MCP_LOCALE: "fr" },
});
const client = new Client({ name: "acf-demo", version: "1.0.0" }, {});
await client.connect(transport);
// List every resource
const { resources } = await client.listResources();
// Read one — here ACF-07 (Kill switch)
const { contents } = await client.readResource({
uri: "acf://fiche/ACF-07",
});
console.log(contents[0].mimeType); // "text/markdown"
console.log(contents[0].text); // frontmatter + bodySigning
Signing does not target each resource individually — it targets the content_hash of the full doctrine, exposed by acf://meta and embedded in every tool output footer. That hash is what makes the whole corpus defensible: if a single card changes, the hash changes, and the entire doctrine receives a new version. Cryptographic details and verification code: Signatures page.