acf.assess-autonomy
Décision d’autonomie isolée : faut-il que l’agent propose, décide ou exécute ? Quatre champs en entrée, un niveau ACF® (N0-N3) en sortie, avec critères go/no-go, seuils de gating, et conception du kill switch.
requires_human_review vaut toujours true. Les critères go/no-go en sortie ne sont valides qu’après revue humaine — ce n’est pas un verdict de mise en production.Quand l’utiliser
Utilisez cet outil quand la seule question qui bloque est : « quel niveau d’autonomie ACF® donner à cet agent ? ». Vous savez déjà ce qu’il fait, vous savez ce qui se passe en cas d’erreur — vous voulez un verdict structuré sur N0/N1/N2/N3 avec critères go/no-go associés. C’est la version chirurgicale de classify-agent quand seul l’axe autonomie est en débat.
Il répond à la question DDAO : « est-ce qu’on autorise cet agent à exécuter, ou seulement à proposer ? ». La sortie inclut une conception de kill switch à trois niveaux (freeze, redirect, revoke) directement utilisable dans la fiche ACF-07.
Paramètres d’entrée
Cinq champs en entrée, dont quatre obligatoires. Les énumérations sont strictes.
agent_descriptionstring (10-1500)requiredintended_actionsstring[] (1-20)requiredreversibility"fully" | "partially" | "irreversible"requiredaudit_requirements"none" | "internal" | "regulatory" | "forensic"requiredhuman_in_loop_cost"low" | "medium" | "high"locale"en" | "fr"default: "en"Schéma de sortie
Niveau recommandé, critères go/no-go, seuils de gating, conception de kill switch, fiches référencées, pied-de-page signé.
recommended_level{ level: "N0"|"N1"|"N2"|"N3", rationale: string }go_no_go_criteria{ criterion: string, status: "pass"|"conditional"|"fail" }[]gating_thresholds{ condition: string, escalation: string }[]kill_switch_design{ levels: string[], response_time_s: number[] }referenced_fichesstring[]confidence"low" | "medium" | "high"assumptionsstring[]gaps_to_validatestring[]rationale_per_rule{ rule_id, rule_version, fired, evidence }[]requires_human_reviewtrueExemple d’appel
Un agent procure qui rédige des bons de commande sous EUR 5k :
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.assess-autonomy",
arguments: {
agent_description:
"Procurement agent that drafts purchase orders for office supplies under EUR 5k and submits them to the ERP for approval.",
intended_actions: [
"draft purchase order from request",
"validate vendor against approved list",
"submit PO to ERP for human approval",
],
reversibility: "partially",
audit_requirements: "internal",
human_in_loop_cost: "medium",
locale: "en",
},
});
console.log(JSON.stringify(result.content, null, 2));Réponse
{
"recommended_level": {
"level": "N2",
"rationale": "Partial reversibility with internal audit allows bounded N2 execution within a documented mandate."
},
"go_no_go_criteria": [
{ "criterion": "Mandate signed by the named DDAO", "status": "conditional" },
{ "criterion": "Kill switch documented and tested", "status": "fail" },
{ "criterion": "Decision register format defined", "status": "conditional" },
{ "criterion": "Escalation thresholds named in numeric terms", "status": "fail" },
{ "criterion": "Sign-off from DPO if PII transits the agent", "status": "conditional" }
],
"gating_thresholds": [
{ "condition": "Any action above bounded perimeter", "escalation": "Block + DDAO ack before execution" },
{ "condition": "Drift > 10% on key metric vs baseline", "escalation": "Auto-suspend within 24h + post-mortem" },
{ "condition": "3 consecutive incidents in 24h", "escalation": "Auto-suspend + immediate DDAO review" }
],
"kill_switch_design": {
"levels": ["freeze (instant)", "redirect (≤5 min)", "revoke (≤1 h)"],
"response_time_s": [5, 300, 3600]
},
"referenced_fiches": ["ACF-07", "ACF-09", "ACF-12", "ACF-05"],
"confidence": "medium",
"assumptions": [
"Inference is deterministic over the 4 supplied dimensions; sector calibration not included."
],
"gaps_to_validate": [
"Confirm whether any intended action handles PII (Article 35 GDPR DPIA may apply).",
"Confirm whether the kill switch has been tested in the last quarter."
],
"requires_human_review": true,
"rationale_per_rule": [
{
"rule_id": "assess-autonomy.decision-tree",
"rule_version": "2026-06",
"fired": true,
"evidence": "reversibility=partially, audit=internal, hil_cost=medium"
}
],
"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",
"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-06-14T11:47:22.318Z",
"disclaimer": "Preliminary qualification only — not legal advice. Human review required."
}Erreurs courantes
InvalidEnumValue— reversibility ou audit_requirements reçoit une valeur hors liste (ex. reversibility: "reversible"). Corrigez vers une valeur canonique.InputTooShort— agent_description < 10 caractères ou intended_actions vide. L’outil ne devine pas — corrigez l’entrée.DoctrineSnapshotMismatch— le doctrine_hash demandé n’est pas chargé. Mettez acf-mcp à jour ou pointez vers la version archivée.
Outils liés
acf.classify-agent— élargir au-delà de la seule décision d’autonomie pour obtenir criticité, rôle régulatoire et sign-offs.acf.assign-ddao-controls— transformer le niveau recommandé en contrôles concrets à imposer côté DDAO.acf.evaluate-agent-mandate— auditer un mandat existant à la lumière du niveau d’autonomie recommandé.