ACF
acfstandard.io
Developer docs
EN
REASON

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 d’autonomie déléguée en sortie (suggestif, co-décision, autonome supervisé ou autonome), avec critères go/no-go, seuils de gating, et conception du kill switch.

!Attention
Évaluation préliminaire fondée sur un arbre de décision déterministe à quatre dimensions. 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 le niveau d’autonomie déléguée (suggestif, co-décision, autonome supervisé, autonome) 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)required
Description courte de l’agent (rôle, périmètre). Le contenu sert au rationale, pas à l’inférence.
intended_actionsstring[] (1-20)required
Liste des actions prévues. Les verbes comptent : « search », « summari* », « propose », « suggest » donnent le niveau suggestif quand l’audit est interne et la réversibilité totale.
reversibility"fully" | "partially" | "irreversible"required
Réversibilité des actions. « irreversible » sous audit réglementaire ou forensique garde la décision finale humaine : co-décision au plus.
audit_requirements"none" | "internal" | "regulatory" | "forensic"required
Niveau d’auditabilité attendu. « regulatory » ou « forensic » plafonne au niveau co-décision : l’agent propose, un humain valide.
human_in_loop_cost"low" | "medium" | "high"
Coût humain de la mise en boucle. « high » + actions réversibles + aucun audit autorisent le niveau autonome, dans le mandat.
locale"en" | "fr"default: "en"
Langue de la sortie textuelle.

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: "suggestive"|"co_decision"|"supervised_autonomous"|"autonomous", rationale: string }
Niveau ACF® recommandé par l’arbre de décision et sa justification.
go_no_go_criteria{ criterion: string, status: "pass"|"conditional"|"fail" }[]
Cinq critères de validation go-live (mandat DDAO, kill switch, registre, seuils, sign-off DPO) avec leur statut inféré.
gating_thresholds{ condition: string, escalation: string }[]
Conditions de blocage et l’escalade associée, directement utilisables dans le mandat (ACF-13).
kill_switch_design{ levels: string[], response_time_s: number[] }
Trois niveaux de kill switch : freeze (instant), redirect (≤5 min), revoke (≤1 h).
referenced_fichesstring[]
Fiches ACF® à mobiliser pour le niveau recommandé (ex. ACF-07, ACF-P6, ACF-13, ACF-09).
confidence"low" | "medium" | "high"
Confiance globale de la recommandation.
assumptionsstring[]
Hypothèses explicites prises par l’arbre de décision.
gaps_to_validatestring[]
Points à confirmer en revue humaine, notamment PII (DPIA Article 35) et test trimestriel du kill switch.
rationale_per_rule{ rule_id, rule_version, fired, evidence }[]
Trace de la règle déclenchée avec sa preuve (les valeurs d’entrée concaténées).
requires_human_reviewtrue
Constant. Aucun appel ne le retourne false.

Exemple d’appel

Un agent procure qui rédige des bons de commande sous EUR 5k :

assess-autonomy.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.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

response.jsonjson
{
  "recommended_level": {
    "level": "supervised_autonomous",
    "rationale": "Partial reversibility with internal audit allows supervised autonomy 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-P6",
    "ACF-13",
    "ACF-09"
  ],
  "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: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.043Z",
  "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."
}

Erreurs courantes

  • Paramètres invalides : reversibility, audit_requirements ou human_in_loop_cost hors énumération, ou intended_actions vide. L’appel échoue avec une erreur JSON-RPC dont le message liste les champs en cause.
  • Confiance basse : quand peu de champs de contexte sont fournis, confidence vaut low et assumptions dit ce qui a été supposé. Complétez l’entrée avant de vous appuyer sur le résultat.
  • 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é.