acf.identify-governance-gaps
Governance gap analysis tied to the 4 ACF® principles: an inventory and a process list in; out, a coverage score per principle, a list of gaps prioritised by severity, quick wins and remediation actions out.
requires_human_review is always true. Gaps not explicitly declared by the inventory are inferred, confirm the inferred / declared distinction before acting.When to use
Use this tool when you must answer the board-level question: “what does ACF® say we should have that we don’t?”. It takes an AI inventory (count of systems, high-risk, GPAI, known shadow AI) and a list of governance processes with their status (exists / documented), returns a coverage score for each of the 4 principles (P1 Decision Sovereignty, P2 Governance by Design, P3 Ultimate Human Control, P4 Traceable Accountability) and the prioritised list of gaps to close.
It is the audit tool. It serves to scope a roadmap, prioritise an AI governance budget, or prepare an AI committee review. First results are designed to land in an ACF-10 (Action Plan & Improvement) card.
Input parameters
Two required blocks (inventory + processes), two optional context fields.
current_inventory{ ai_systems_count, high_risk_count?, gpai_used?, shadow_ai_known? }requiredcurrent_processes{ process: string, exists: boolean, documented?: boolean }[]requiredsectorstring (≤80)locale"en" | "fr"default: "en"Output schema
Coverage score (overall and per principle), gap list, priority order, quick wins, signed footer.
maturity_score{ overall: number, by_principle: Record<"P1" | "P2" | "P3" | "P4", number> }gaps{ principle, severity: "low"|"medium"|"high"|"critical", description, remediation, fiches, estimated_effort_days }[]priority_orderstring[]quick_winsstring[]confidence"low" | "medium" | "high"assumptionsstring[]gaps_to_validatestring[]rationale_per_rule{ rule_id, rule_version, fired, evidence }[]requires_human_reviewtrueExample call
A bank with 14 AI systems including 2 high-risk, GPAI used, known shadow AI:
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.identify-governance-gaps",
arguments: {
current_inventory: {
ai_systems_count: 14,
high_risk_count: 2,
gpai_used: true,
shadow_ai_known: true,
},
current_processes: [
{ process: "ai_committee", exists: true, documented: true },
{ process: "executive_sponsor", exists: true, documented: true },
{ process: "ai_inventory", exists: true, documented: false },
{ process: "doctrine_published", exists: false },
{ process: "kill_switch_drill", exists: false },
{ process: "observability", exists: true, documented: false },
{ process: "ddao_appointed", exists: false },
{ process: "raci", exists: false },
{ process: "dpia", exists: false },
{ process: "article_49_register", exists: false },
{ process: "ai_act_qualification", exists: false },
{ process: "annual_audit", exists: true, documented: true },
{ process: "incident_review", exists: false },
],
sector: "banking",
locale: "en",
},
});
console.log(JSON.stringify(result.content, null, 2));Response
{
"maturity_score": {
"overall": 29,
"by_principle": {
"P1": 84,
"P2": 1,
"P3": 0,
"P4": 30
}
},
"gaps": [
{
"principle": "P1",
"severity": "medium",
"description": "Process 'ai_inventory' exists but is undocumented.",
"remediation": "Document 'ai_inventory' with the relevant ACF® card.",
"fiches": [
"ACF-02"
],
"estimated_effort_days": 2
},
{
"principle": "P2",
"severity": "medium",
"description": "Process 'doctrine_published' is missing for P2.",
"remediation": "Publish a doctrine note grounded in ACF® v1.0 to the relevant teams.",
"fiches": [],
"estimated_effort_days": 5
},
{
"principle": "P2",
"severity": "critical",
"description": "Process 'ai_act_qualification' is missing for P2.",
"remediation": "Run acf.classify-agent on each system to qualify under the AI Act.",
"fiches": [],
"estimated_effort_days": 5
},
{
"principle": "P2",
"severity": "critical",
"description": "Process 'dpia' is missing for P2.",
"remediation": "Stand up the DPIA workflow with ACF-12 as the template.",
"fiches": [
"ACF-12"
],
"estimated_effort_days": 10
},
{
"principle": "P3",
"severity": "high",
"description": "Process 'ddao_appointed' is missing for P3.",
"remediation": "Appoint a DDAO per agent that decides on its own, with a documented mandate.",
"fiches": [
"ACF-13"
],
"estimated_effort_days": 5
},
{
"principle": "P3",
"severity": "high",
"description": "Process 'kill_switch_drill' is missing for P3.",
"remediation": "Run a quarterly kill-switch drill per ACF-P7.",
"fiches": [
"ACF-07",
"ACF-P7"
],
"estimated_effort_days": 3
},
{
"principle": "P4",
"severity": "high",
"description": "Process 'raci' is missing for P4.",
"remediation": "Publish a RACI for agentic decisions including DDAO + DPO + CISO + sponsor.",
"fiches": [],
"estimated_effort_days": 5
},
{
"principle": "P4",
"severity": "medium",
"description": "Process 'observability' exists but is undocumented.",
"remediation": "Document 'observability' with the relevant ACF® card.",
"fiches": [
"ACF-06"
],
"estimated_effort_days": 2
},
{
"principle": "P4",
"severity": "critical",
"description": "Process 'article_49_register' is missing for P4.",
"remediation": "Prepare the Article 49 register for any high-risk system before go-live.",
"fiches": [
"ACF-09",
"ACF-12"
],
"estimated_effort_days": 5
},
{
"principle": "P4",
"severity": "medium",
"description": "Process 'incident_review' is missing for P4.",
"remediation": "Open a quarterly incident review forum with the AI committee.",
"fiches": [],
"estimated_effort_days": 5
},
{
"principle": "P1",
"severity": "high",
"description": "Shadow AI exists in the organisation.",
"remediation": "Run a discovery campaign + classify each shadow agent via acf.classify-agent.",
"fiches": [
"ACF-02"
],
"estimated_effort_days": 10
},
{
"principle": "P2",
"severity": "critical",
"description": "High-risk systems present but no DPIA process.",
"remediation": "Stand up the DPIA workflow before any new high-risk go-live.",
"fiches": [
"ACF-12"
],
"estimated_effort_days": 5
}
],
"priority_order": [
"P2: Process 'ai_act_qualification' is missing for P2.",
"P2: Process 'dpia' is missing for P2.",
"P4: Process 'article_49_register' is missing for P4.",
"P2: High-risk systems present but no DPIA process.",
"P3: Process 'ddao_appointed' is missing for P3.",
"P3: Process 'kill_switch_drill' is missing for P3.",
"P4: Process 'raci' is missing for P4.",
"P1: Shadow AI exists in the organisation.",
"P1: Process 'ai_inventory' exists but is undocumented.",
"P2: Process 'doctrine_published' is missing for P2.",
"P4: Process 'observability' exists but is undocumented.",
"P4: Process 'incident_review' is missing for P4."
],
"quick_wins": [
"Process 'ai_inventory' exists but is undocumented.",
"Process 'kill_switch_drill' is missing for P3.",
"Process 'observability' exists but is undocumented."
],
"confidence": "low",
"assumptions": [
"Coverage is unweighted across the 4 principles; sector-specific weights not yet calibrated."
],
"gaps_to_validate": [
"Confirm which gaps were inferred vs explicitly declared by your inventory.",
"Run acf.classify-agent on the high-risk subset to consolidate the qualification."
],
"requires_human_review": true,
"rationale_per_rule": [
{
"rule_id": "identify-gaps.principle-checklist",
"rule_version": "2026-06",
"fired": true,
"evidence": "13 processes evaluated"
}
],
"doctrine_version": "ACF framework v1.0 / rules 2026-06",
"doctrine_hash": "sha256:119819463363cde0649504ab8ed5a96982fdb8506441f2c5e76e7e3c3feb77f1",
"doctrine_signature": "ed25519:3R0oIiqL3Kgd…",
"doctrine_archive_url": "https://acfstandard.io/archive/doctrine/v1.0/doctrine-v1.0.json",
"regulatory_snapshot": "EU AI Act (Reg. 2024/1689, incl. Digital Omnibus deferral) + GDPR (Reg. 2016/679) + DORA (Reg. 2022/2554) + NIS2 (Dir. 2022/2555) + ISO 42001:2023: as of 2026-06-07",
"generated_at": "2026-11-01T12:06:31.065Z",
"disclaimer": "Preliminary qualification produced by the ACF® deterministic engine. Not legal advice. Human review required. Do not use for autonomous regulatory decision-making. See doctrine_archive_url for the version of the doctrine used."
}Common errors
- Invalid parameters: negative or non-integer ai_systems_count, or a current_processes item without process or exists. The call fails with a JSON-RPC error whose message lists the offending fields.
- Low confidence: when few context fields are provided, confidence is low and assumptions states what was assumed. Complete the input before relying on the result.
Related tools
acf.classify-agent: qualify each system identified as high-risk to consolidate the governance landscape.acf.advisor: drop from the organisational maturity score back to a single case when a gap deserves focus.acf.map-ai-act-obligations: get the exhaustive obligations to inscribe in the remediation plan for high-risk systems.