ACF
acfstandard.io
Developer docs
FR
READ

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.

Tip
READ tools return signed corpus content with no inference layer. 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"required
Canonical six-char card code, exact case. Any other form (“acf-6”, “ACF6”, “ACF-006”) is rejected.
locale"en" | "fr"default: "en"
Requested locale. If the card is not available in that locale, the fallback chain kicks in and served_locale + is_fallback flag it in the output.

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.

codestring
The requested code, echoed back for tracing.
uristring
Canonical resource URI (acf://fiche/ACF-XX).
served_locale"en" | "fr"
Locale actually served after applying the fallback chain.
is_fallbackboolean
true if served_locale ≠ requested locale — signal to the user that the translation is not available.
frontmatter{ code, title, version, keywords[], related_principles[], related_dimensions[], related_fiches[] }
Structured card metadata. related_principles, related_dimensions and related_fiches are codes you can resolve via acf.search or resources/read.
bodystring (markdown)
Full card body: purpose, required elements, example, anti-patterns. Standard markdown, ready to render.
doctrine_versionstring
Doctrine version frozen for this call.
doctrine_hashstring
SHA-256 hash of the served corpus.
doctrine_signaturestring
Ed25519 signature of hash + version.
doctrine_archive_urlstring
URL of the immutable archive matching doctrine_hash.
generated_atstring (ISO-8601)
UTC timestamp of the response.
disclaimerstring
Constant reminder: cite the code and version when reusing the content.

Example call

The agent fetches ACF-06 (kill switch) while drafting a DORA audit answer:

fiche-lookup.tstypescript
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

response.jsonjson
{
  "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.
  • 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).