acf.evaluate-agent-mandate
Audit préliminaire d’un mandat d’agent existant — huit checks canoniques (DDAO nommé, périmètre, actions interdites, seuils d’escalade, kill switch, registre, version doctrine, sign-off) → verdict approve / approve_with_changes / reject + additions requises.
TBD, « à compléter » ou ??? dans le texte abaisse automatiquement le score de 20 points et classe le mandat « non signable » — c’est par design. requires_human_review reste constant.Quand l’utiliser
Utilisez cet outil quand un mandat d’agent a déjà été rédigé — par une équipe métier, un cabinet, un DDAO — et qu’il faut le passer au filtre ACF® avant signature ou inspection. L’outil applique huit checks regex canoniques sur le texte et calcule un score de conformité 0-100 pondéré, puis tranche en approve / approve_with_changes / reject.
La question board que la sortie tranche : « Ce mandat est-il signable en l’état ? » Si non, les required_additions donnent les rédactions à ajouter, fiche ACF® de référence par fiche. Le pénalty automatique sur les placeholders TBD/??? rend les mandats à trous immédiatement rejetables.
Paramètres d’entrée
Quatre champs, dont deux obligatoires. Le mandate_text est passé brut à l’évaluateur — pas de pré-nettoyage côté outil.
mandate_textstring (50-10000)requiredagent_purposestring (10-500)requireddeployment_contextstring (≤500)locale"en" | "fr"default: "en"Schéma de sortie
La sortie est un objet structuré contenant un verdict, le score de conformité, les forces, les gaps, les additions à intégrer et le pied-de-page signé.
verdict"approve" | "approve_with_changes" | "reject"rationalestringstrengthsstring[]identified_gaps{ area: string, severity: "low" | "medium" | "high" | "critical", description: string }[]required_additions{ section: string, suggested_text: string, fiche_reference: string }[]reference_fichesstring[]acf_compliance_scorenumber (0-100)confidence"low" | "medium" | "high"assumptionsstring[]gaps_to_validatestring[]requires_human_reviewtrueExemple d’appel
Un mandat d’agent de réconciliation de trésorerie, complet, à valider avant sign-off :
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 mandateText = `
Agent: Treasury Settlement Agent
DDAO: Marie Dupont, Head of Treasury Ops
ACF® doctrine version: v1.0
Decision perimeter (allowed): reconcile intra-day settlement breaks under 10k EUR, post matching entries to the GL.
Forbidden actions: any FX trade, any payment instruction outside the pre-approved counterparty list, any change to the ledger structure.
Escalation thresholds: any break > 10k EUR, any pattern of 3+ breaks from the same counterparty within 24h.
Kill switch: Ops can suspend the agent within 2 minutes via the ACF-07 panel. Drilled quarterly.
Audit log: every action logged with input, decision, signature; 6-month retention in the ACF-08 register.
Sign-off: DDAO + CISO + Head of Compliance.
`;
const result = await client.callTool({
name: "acf.evaluate-agent-mandate",
arguments: {
mandate_text: mandateText,
agent_purpose:
"Reconcile intra-day settlement breaks and post matching journal entries up to 10k EUR.",
deployment_context: "EU bank, internal treasury, 24/7 ops.",
locale: "en",
},
});
console.log(JSON.stringify(result.content, null, 2));Réponse
{
"verdict": "approve",
"rationale": "All canonical mandate sections are present; no critical placeholders detected.",
"strengths": [
"Identification du DDAO: present.",
"Périmètre de décision: present.",
"Actions interdites: present.",
"Seuils d'escalade: present.",
"Kill switch: present.",
"Audit log / decision register: present.",
"Doctrine version: present.",
"Sign-off: present."
],
"identified_gaps": [],
"required_additions": [],
"reference_fiches": ["ACF-03", "ACF-07", "ACF-09", "ACF-12"],
"acf_compliance_score": 100,
"confidence": "high",
"assumptions": [
"Mandate evaluation uses an 8-check canonical baseline — sector-specific extras not yet implemented."
],
"gaps_to_validate": [
"Confirm with the DDAO that the named escalation thresholds reflect real organisational SLAs.",
"Confirm that the kill switch drill has been run in the last quarter."
],
"requires_human_review": true,
"rationale_per_rule": [
{
"rule_id": "evaluate-mandate.ddao_appointed",
"rule_version": "2026-06",
"fired": true,
"evidence": "Identification du DDAO check"
},
{
"rule_id": "evaluate-mandate.decision_perimeter",
"rule_version": "2026-06",
"fired": true,
"evidence": "Périmètre de décision check"
},
{
"rule_id": "evaluate-mandate.forbidden_actions",
"rule_version": "2026-06",
"fired": true,
"evidence": "Actions interdites check"
},
{
"rule_id": "evaluate-mandate.escalation_thresholds",
"rule_version": "2026-06",
"fired": true,
"evidence": "Seuils d'escalade check"
},
{
"rule_id": "evaluate-mandate.kill_switch",
"rule_version": "2026-06",
"fired": true,
"evidence": "Kill switch check"
},
{
"rule_id": "evaluate-mandate.audit_log",
"rule_version": "2026-06",
"fired": true,
"evidence": "Audit log / decision register check"
},
{
"rule_id": "evaluate-mandate.doctrine_version",
"rule_version": "2026-06",
"fired": true,
"evidence": "Doctrine version check"
},
{
"rule_id": "evaluate-mandate.sign_off",
"rule_version": "2026-06",
"fired": true,
"evidence": "Sign-off check"
}
],
"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 2024/1689 · GDPR 2016/679 · ISO 42001:2023 · NIST AI RMF 1.0 · COBIT 2019 — frozen 2026-06",
"generated_at": "2026-06-14T12:14:52.778Z",
"disclaimer": "Preliminary qualification only — not legal advice. Human review required."
}Erreurs courantes
InputTooShort— mandate_text < 50 caractères ou agent_purpose < 10 caractères. Un mandat aussi court ne contient pas les huit sections canoniques — rédigez ou rejetez.InputTooLong— mandate_text > 10000 caractères. Découpez le mandat en sections évaluées séparément, ou retirez les annexes non auditables (ex. politiques internes citées en référence).DoctrineSnapshotMismatch— le moteur de checks ne correspond pas au doctrine_hash demandé. Mettez acf-mcp à jour ou pointez vers la version archivée.
Outils liés
acf.assign-ddao-controls— obtenir le jeu de contrôles à coller dans le mandat avant l’audit.acf.classify-agent— qualifier l’agent en amont si le mandat ne précise pas encore son niveau d’autonomie ou son rôle régulatoire.acf.fiche.lookup— récupérer le détail des fiches référencées (ACF-03, ACF-07, ACF-09, ACF-12) pour rédiger les required_additions.