acf.advisor
ACF® governance advice from a free-text case, one paragraph in, one structured evaluation out: activated principles, autonomy level, risk class, applicable articles, first actions, operational risks. This is the conversion tool from documentation library to governance advisor.
requires_human_review is always true. For a more defensible qualification, re-run through acf.classify-agent with qualified enums.When to use
Use this tool when a case owner (CIO, business line, consultant) arrives with a prose description of their AI agent and needs a structured first verdict on the applicable ACF® governance: which principles fire, which delegated autonomy level fits, which regulatory obligations trigger, which fiches to mobilise in what order. It is the “first step” tool before rigorous qualification.
It answers the board-level question: “where do we start on this case?”. The output is designed to be served to an AI committee or a DDAO who will decide the next steps.
Input parameters
One required field (the case description), three optional context fields that tighten the calibration.
case_descriptionstring (20-2000)requiredsectorstring (≤80)jurisdiction"eu" | "uk" | "us" | "ca" | "ch" | "br" | "jp" | "other"deployment_scale"pilot" | "department" | "enterprise" | "public"locale"en" | "fr"default: "en"Output schema
Output is a structured object with autonomy level, risk level, activated principles, prioritised fiches, applicable articles, first actions, operational risks, signed footer.
autonomy_level{ level: "suggestive"|"co_decision"|"supervised_autonomous"|"autonomous", rationale: string }risk_level{ level: "low"|"medium"|"high"|"unacceptable", rationale: string }activated_principles{ code: string, why: string }[]priority_fiches{ code: string, order: number, why: string }[]applicable_articles{ regulation: string, article: string, why: string }[]first_actionsstring[] (≤5)operational_risksstring[]confidence"low" | "medium" | "high"assumptionsstring[]gaps_to_validatestring[]rationale_per_rule{ rule_id, rule_version, fired, evidence }[]requires_human_reviewtrueExample call
An internal HR assistant proposing a shortlist validated by a recruiter:
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.advisor",
arguments: {
case_description:
"We are rolling out an internal HR assistant that summarises candidate CVs, proposes a shortlist score, and writes the shortlist to our ATS. A recruiter validates each shortlist before any candidate is contacted. The agent reads structured candidate profiles (name, email, education) and uses a GPAI under the hood for the summarisation.",
sector: "human-resources",
jurisdiction: "eu",
deployment_scale: "department",
locale: "en",
},
});
console.log(JSON.stringify(result.content, null, 2));Response
{
"autonomy_level": {
"level": "co_decision",
"rationale": "No clear autonomy threshold matched the declared inputs; defaulting to co-decision (the agent proposes, a human validates). Confirm with the team."
},
"risk_level": {
"level": "medium",
"rationale": "Combination of personal_data_level + financial_exposure not yet calibrated; defaulting to medium for safety."
},
"activated_principles": [
{
"code": "P1",
"why": "Decision sovereignty applies to every agentic deployment, regardless of autonomy."
}
],
"priority_fiches": [
{
"code": "ACF-01",
"order": 1,
"why": "Start here: the sovereignty score is the entry point of the toolkit."
}
],
"applicable_articles": [],
"first_actions": [
"Identify or appoint the DDAO accountable for the agent (cf. ACF-13).",
"Document the agent constitution (decision perimeter, allowed/forbidden actions: cf. ACF-04).",
"Open the decision register and define the retention policy (cf. ACF-09 + ACF-P14)."
],
"operational_risks": [],
"confidence": "low",
"assumptions": [
"human_approval, external_actions and personal_data_level were inferred from the free-text description; pass classify-agent with qualified enums for higher confidence."
],
"gaps_to_validate": [
"re-run via acf.classify-agent with structured enums for a more defensible qualification."
],
"requires_human_review": true,
"rationale_per_rule": [
{
"rule_id": "ai-act-annex-iii.annex-iii-1a-biometric-identity",
"rule_version": "2026-06",
"fired": false,
"evidence": ""
},
{
"rule_id": "ai-act-annex-iii.annex-iii-2-critical-infrastructure",
"rule_version": "2026-06",
"fired": false,
"evidence": ""
},
{
"rule_id": "ai-act-annex-iii.annex-iii-3-educational",
"rule_version": "2026-06",
"fired": false,
"evidence": ""
},
{
"rule_id": "ai-act-annex-iii.annex-iii-4-employment",
"rule_version": "2026-06",
"fired": false,
"evidence": ""
},
{
"rule_id": "ai-act-annex-iii.annex-iii-5b-credit-scoring",
"rule_version": "2026-06",
"fired": false,
"evidence": ""
},
{
"rule_id": "ai-act-annex-iii.annex-iii-5c-insurance-pricing",
"rule_version": "2026-06",
"fired": false,
"evidence": ""
},
{
"rule_id": "ai-act-annex-iii.annex-iii-6-law-enforcement",
"rule_version": "2026-06",
"fired": false,
"evidence": ""
},
{
"rule_id": "ai-act-annex-iii.annex-iii-7-migration-asylum",
"rule_version": "2026-06",
"fired": false,
"evidence": ""
},
{
"rule_id": "ai-act-annex-iii.annex-iii-8-justice-democracy",
"rule_version": "2026-06",
"fired": false,
"evidence": ""
},
{
"rule_id": "ai-act-annex-i.annex-i-medical-device",
"rule_version": "2026-06",
"fired": false,
"evidence": ""
},
{
"rule_id": "ai-act-annex-i.annex-i-vehicle-safety",
"rule_version": "2026-06",
"fired": false,
"evidence": ""
},
{
"rule_id": "ai-act-annex-i.annex-i-machinery",
"rule_version": "2026-06",
"fired": false,
"evidence": ""
},
{
"rule_id": "gpai-triggers",
"rule_version": "2026-06",
"fired": false,
"evidence": ""
},
{
"rule_id": "autonomy-inference.default-co_decision",
"rule_version": "2026-06",
"fired": true,
"evidence": "inferred human_approval=sometimes, external=read_only from description"
},
{
"rule_id": "criticality-matrix.default-medium",
"rule_version": "2026-06",
"fired": true,
"evidence": "inferred pii=standard, financial=none from description"
}
],
"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.037Z",
"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.",
"conversion_cta": "Continue this assessment with the auditable ACF® Compliance workspace at https://acfstandard.com/compliance?ref=mcp"
}Common errors
- Invalid parameters: case_description too short (under 20 characters): the tool does not guess, provide a minimal description of the case. 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: re-run with qualified enums as soon as the case is precise, to gain confidence.acf.assess-autonomy: drill into the autonomy-level decision alone when it is the blocking question.acf.identify-governance-gaps: broaden from the isolated case to a global governance audit of the organisation.