ACF
acfstandard.io
Developer docs
EN
READ

acf.search

Recherche plein-texte sur l’ensemble du corpus ACF® — principes, niveaux d’autonomie, dimensions, DDAO, fiches, guides réglementaires, glossaire, whitepaper. Renvoie une liste classée d’URIs canoniques à lire ensuite.

Astuce
Les outils READ renvoient le contenu signé du corpus, sans couche d’inférence. acf.search ne réécrit pas, ne résume pas et ne devine pas : il classe des URIs acf://… qu’un autre appel ira lire.

Quand l’utiliser

Utilisez cet outil quand l’agent doit répondre à une question opérationnelle ou réglementaire et ne sait pas quelle ressource ACF® citer en priorité. La requête peut être un mot-clé technique (« kill switch »), une question métier (« qui doit signer le go-live ? ») ou une référence externe (« GDPR Art. 35 »). La sortie donne les URIs candidats classés par pertinence, pas leur contenu.

Étape de cadrage uniquement : enchaînez avec acf.fiche.lookup, acf.regulation.article ou un appel resources/read pour récupérer le contenu signé avant de répondre à l’utilisateur. Le score de lunr est pondéré pour promouvoir le corpus framework (principes, niveaux, dimensions) au-dessus des synonymes glossaire.

Paramètres d’entrée

Quatre champs simples. La requête est normalisée (diacritiques retirés, minuscules) avant indexation lunr.

querystring (1-200)required
Termes recherchés. Accents et casse sont normalisés (« souveraineté » matche le token « souverainete »).
scope"all" | "framework" | "fiche" | "guide" | "whitepaper" | "glossary"default: "all"
Restreint la recherche à un sous-corpus. framework regroupe principes, niveaux d’autonomie, dimensions et DDAO.
locale"en" | "fr"default: "en"
Langue du corpus interrogé. Les documents existent en FR et EN ; aucune traduction n’est inventée.
limitinteger (1-20)default: 10
Nombre maximum de résultats à renvoyer après tri par score pondéré.

Schéma de sortie

Une liste de hits classés par score décroissant, plus le pied-de-page signé qui identifie la version du corpus interrogé.

querystring
La requête telle que reçue (pas la version normalisée). Utile pour l’audit trail.
scopestring
Sous-corpus effectivement interrogé.
locale"en" | "fr"
Langue effectivement servie.
hits{ uri, title, snippet, score, category, locale }[]
Tableau des résultats. uri est un acf://… à passer à resources/read ou à un autre outil READ. category prend les valeurs principle, autonomy_level, dimension, ddao, fiche, guide, whitepaper, glossary.
doctrine_versionstring
Version doctrinale figée pour cet appel.
doctrine_hashstring
Hash SHA-256 du corpus servi. Permet de vérifier qu’aucune réécriture silencieuse n’a eu lieu entre deux appels.
doctrine_signaturestring
Signature Ed25519 du hash + version. Vérifiable indépendamment via la clé publique publiée.
doctrine_archive_urlstring
URL de l’archive doctrinale immuable correspondant à doctrine_hash.
generated_atstring (ISO-8601)
Horodatage UTC de la réponse.
disclaimerstring
Rappel constant : les scores classent des candidats, ils ne valident pas une réponse.

Exemple d’appel

L’agent cherche les ressources liées au kill switch pour préparer une réponse à l’audit DORA :

search.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.search",
  arguments: {
    query: "kill switch escalation thresholds",
    scope: "all",
    locale: "en",
    limit: 5,
  },
});

console.log(JSON.stringify(result.content, null, 2));

Réponse

response.jsonjson
{
  "query": "kill switch escalation thresholds",
  "scope": "all",
  "locale": "en",
  "hits": [
    {
      "uri": "acf://fiche/ACF-06",
      "title": "ACF-06 — Kill switch and degraded modes",
      "snippet": "Defines the mandatory shutdown paths, the escalation thresholds that fire them, and the quarterly test cadence required for any N2+ agent.",
      "score": 8.42,
      "category": "fiche",
      "locale": "en"
    },
    {
      "uri": "acf://framework/principle/P-04",
      "title": "Principle P-04 — Reversibility",
      "snippet": "Every autonomous decision must remain reversible by a human operator within a bounded recovery window.",
      "score": 6.18,
      "category": "principle",
      "locale": "en"
    },
    {
      "uri": "acf://framework/autonomy-level/N2",
      "title": "Autonomy level N2 — Supervised autonomy",
      "snippet": "The agent decides and executes on its own; the DDAO sets escalation thresholds, a kill switch, and a signed decision register.",
      "score": 5.71,
      "category": "autonomy_level",
      "locale": "en"
    },
    {
      "uri": "acf://fiche/ACF-08",
      "title": "ACF-08 — Signed decision register",
      "snippet": "Every escalation event is logged in the signed register with the trigger threshold that fired it.",
      "score": 4.92,
      "category": "fiche",
      "locale": "en"
    },
    {
      "uri": "acf://glossary/kill%20switch",
      "title": "kill switch",
      "snippet": "Mandatory shutdown path that any DDAO can fire at any time, without prior sign-off, to stop an agent.",
      "score": 3.65,
      "category": "glossary",
      "locale": "en"
    }
  ],
  "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",
  "generated_at": "2026-06-14T11:47:22.318Z",
  "disclaimer": "Search results rank candidate resources by relevance — read the cited resources before quoting them."
}

Erreurs courantes

  • InvalidEnumValue scope reçoit une valeur hors liste (ex. scope: "fiches" au pluriel). Corrigez vers une des six valeurs canoniques.
  • QueryTooLong query > 200 caractères. acf.search est conçu pour des mots-clés, pas pour des paragraphes entiers — résumez l’intention en quelques tokens.
  • EmptyHits aucun résultat ne dépasse le seuil de pertinence. Élargissez le scope à "all", retirez les caractères spéciaux ou reformulez.
  • acf.fiche.lookup lire le contenu signé d’une fiche ACF® candidate identifiée par acf.search.
  • acf.regulation.article récupérer le texte vérifié d’un article réglementaire quand la requête pointe vers un guide AI Act, RGPD, DORA, NIS2 ou ISO 42001.
  • acf.classify-agent quand la recherche débouche sur une qualification d’agent, basculer vers l’outil REASON dédié.