acf.fiche.lookup
Fetch the signed content of an ACF® methodological card (ACF-00 to ACF-16) — frontmatter (related principles, dimensions, cards), markdown body, example and anti-patterns. No interpretation, the canonical archived text.
acf.fiche.lookup serves the card verbatim with its hash and signature — if you quote it to a regulator, you quote exactly what the standard publishes.When to use
Use this tool once you have identified the relevant card (via acf.search, via acf.classify-agent, or because the user cited it explicitly) and you need its canonical content to answer. Typical cases: drafting a DDAO mandate, designing a kill switch, justifying a sign-off, citing a card in an audit.
Always cite the code (ACF-06), not the translated title. Cards are the operational layer of the doctrine — each card maps to one or more principles (P-XX) and one or more dimensions (D-XX) the user can explore next.
Input parameters
Two fields. The code is strictly validated against /^ACF-(0[0-9]|1[0-6])$/ — no path traversal possible.
code"ACF-00" .. "ACF-16"requiredlocale"en" | "fr"default: "en"Output schema
Structured frontmatter + markdown body + signed footer. The output is a JSON object; the body is a markdown string you can render as-is.
codestringuristringserved_locale"en" | "fr"is_fallbackbooleanfrontmatter{ code, title, version, keywords[], related_principles[], related_dimensions[], related_fiches[] }bodystring (markdown)doctrine_versionstringdoctrine_hashstringdoctrine_signaturestringdoctrine_archive_urlstringgenerated_atstring (ISO-8601)disclaimerstringExample call
The agent fetches ACF-06 (kill switch) while drafting a DORA audit answer:
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"],
});
const client = new Client({ name: "demo", version: "1.0" }, {});
await client.connect(transport);
const result = await client.callTool({
name: "acf.fiche.lookup",
arguments: {
code: "ACF-06",
locale: "en",
},
});
console.log(JSON.stringify(result.content, null, 2));Response
{
"code": "ACF-06",
"uri": "acf://fiche/ACF-06",
"served_locale": "en",
"is_fallback": false,
"frontmatter": {
"code": "ACF-06",
"title": "Kill switch and degraded modes",
"version": "1.0",
"keywords": ["kill switch", "degraded mode", "escalation", "DDAO", "reversibility"],
"related_principles": ["P-04", "P-07"],
"related_dimensions": ["D-03", "D-05"],
"related_fiches": ["ACF-04", "ACF-08", "ACF-12"]
},
"body": "## Purpose\n\nThis card defines the mandatory shutdown path for any agent operating at autonomy level N2 or above. The kill switch is the last line of defence: any DDAO must be able to fire it at any time, without prior sign-off, and the agent must stop within the bounded recovery window.\n\n## Required elements\n\n1. **Trigger surface** — a documented endpoint, button or runbook command the DDAO can fire in under 60 seconds.\n2. **Stop semantics** — the agent must commit no further external action after the trigger fires, and ongoing operations must roll back to a safe state.\n3. **Degraded mode** — a fallback that keeps the business function alive at a lower autonomy (typically N1 with human approval per decision).\n4. **Quarterly test** — the DDAO runs a documented kill-switch test every 90 days; the signed register records the test result.\n\n## Example\n\nA fraud-scoring agent (N2) has a Slack /kill-fraud-agent command bound to the DDAO group. Firing it switches the agent to N1 degraded mode where every score is queued for human review. The quarterly test is run in production with a synthetic transaction and recorded in ACF-08.\n\n## Anti-patterns\n\n- A kill switch that requires the deployer’s sign-off to fire (defeats the purpose).\n- A degraded mode that simply stops the function (the business stops too — kill switches must not be all-or-nothing).\n- A kill switch that was never tested in production (untested switch ≈ no switch).",
"doctrine_version": "ACF framework v1.0 / rules 2026-06",
"doctrine_hash": "sha256:bf0b6d8e4731ebdc58f6d6338702c5b74af47874cf0ad3dc958cde5c5b30b9dc",
"doctrine_signature": "ed25519:…",
"doctrine_archive_url": "https://acfstandard.io/doctrine/v1.0/archive.json",
"generated_at": "2026-06-14T11:47:22.318Z",
"disclaimer": "Canonical ACF® card content — quote verbatim or paraphrase, always cite the code and version."
}Common errors
InvalidFicheCode— code out of /^ACF-(0[0-9]|1[0-6])$/. Check format: ACF- prefix, two digits between 00 and 16, exact case.FicheNotFound— the code is valid but the card exists in neither the requested locale nor any fallback locale. The V1.0 corpus publishes ACF-00 to ACF-16; ACF-17+ is V1.1.DoctrineSnapshotMismatch— the requested doctrine_hash is not loaded. Update acf-mcp or point at the archived version.
Related tools
acf.search— find the relevant card code before fetching it in detail.acf.regulation.article— trace from regulatory text back to the cards that operationalise it.acf.classify-agent— get the list of cards applicable to an agent (applicable_fiches in the output).