{
 "version": 1,
 "site": "https://numero-audit.pages.dev",
 "langue": "fr",
 "outils": [
  {
   "name": "describe_dataset",
   "description": "Décrit le jeu : couverture, source officielle, licence, date de collecte et clés de jointure.",
   "inputSchema": {
    "type": "object",
    "properties": {}
   },
   "chemin": "/api/v1/manifest.json",
   "url": "https://numero-audit.pages.dev/api/v1/manifest.json",
   "statut": "servi",
   "annotations": {
    "readOnlyHint": true
   }
  },
  {
   "name": "get_sample",
   "description": "Rend un extrait réel du jeu, pour juger sa forme avant de le demander.",
   "inputSchema": {
    "type": "object",
    "properties": {}
   },
   "chemin": "/api/v1/echantillon.json",
   "url": "https://numero-audit.pages.dev/api/v1/echantillon.json",
   "statut": "servi",
   "annotations": {
    "readOnlyHint": true
   }
  },
  {
   "name": "resolve_code",
   "description": "Rend l'audit énergétique portant ce numéro : validité, étiquette de départ et visée, coût estimé des travaux par étape, facture, DPE cité. ⚠️ La fiche vit dans un fragment DÉSIGNÉ PAR HACHAGE : appeler le serveur MCP, ou appliquer la recette `resolution` ci-dessous.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "code": {
      "type": "string",
      "description": "numéro d'audit énergétique (13 caractères, commence par A)"
     }
    },
    "required": [
     "code"
    ]
   },
   "url": "https://mcp-registres.cloudflare33-7aa.workers.dev/mcp",
   "chemin": "/api/v1/tools.json",
   "appel": {
    "transport": "mcp",
    "endpoint": "https://mcp-registres.cloudflare33-7aa.workers.dev/mcp",
    "arguments": {
     "registre": "numero-audit",
     "code": "<numéro d'audit énergétique (13 caractères, commence par A)>"
    }
   },
   "resolution": {
    "algorithme": "FNV-1a 32 bits",
    "offset_basis": 2166136261,
    "prime": 16777619,
    "module": 997,
    "chemin_fragment": "/d/{hachage}.json",
    "format_ligne": [
     "n_audit",
     "date_etablissement",
     "date_fin_validite",
     "etiquette_depart",
     "ges_depart",
     "facture_depart",
     "etiquette_une_etape",
     "cout_une_etape",
     "facture_une_etape",
     "nb_etapes",
     "etiquette_par_etapes",
     "cout_par_etapes",
     "facture_par_etapes",
     "etapes",
     "commune",
     "code_postal",
     "numero_dpe",
     "audit_remplace"
    ],
    "separateur": "|",
    "note": "hachage = fnv1a(code) modulo module ; le fragment est un tableau de lignes, la clé est le premier champ."
   },
   "statut": "servi",
   "annotations": {
    "readOnlyHint": true
   }
  },
  {
   "name": "get_schema",
   "description": "Rend les champs du jeu avec leur TAUX DE REMPLISSAGE : ce qui est présent, et ce qui manque.",
   "inputSchema": {
    "type": "object",
    "properties": {}
   },
   "chemin": "/api/v1/champs.json",
   "url": "https://numero-audit.pages.dev/api/v1/champs.json",
   "statut": "servi",
   "annotations": {
    "readOnlyHint": true
   }
  },
  {
   "name": "request_dataset",
   "description": "Demande le jeu complet ou une extraction. ⚠️ L'agent remplit, un humain envoie.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "email": {
      "type": "string"
     },
     "message": {
      "type": "string"
     },
     "volume": {
      "type": "string"
     }
    },
    "required": [
     "email",
     "message"
    ]
   },
   "chemin": "/pro/",
   "url": "https://numero-audit.pages.dev/pro/",
   "methode": "POST",
   "endpoint": "https://formspree.io/f/xppzalak",
   "appel": {
    "transport": "formulaire",
    "methode": "POST",
    "action": "https://formspree.io/f/xppzalak",
    "champs": [
     "email",
     "message",
     "volume"
    ],
    "note": "L'agent PREPARE l'envoi ; c'est un humain qui le declenche. On n'automatise pas la soumission d'un formulaire au nom de quelqu'un."
   },
   "source_lead": "numero-audit · MCP",
   "statut": "servi",
   "annotations": {
    "readOnlyHint": false,
    "consequentialHint": true
   }
  },
  {
   "name": "changes_since",
   "description": "Ce qui a changé depuis une date. ⚠️ Exige deux captures : tant qu'il n'y en a qu'une, la profondeur utile est zéro.",
   "inputSchema": {
    "type": "object",
    "properties": {}
   },
   "chemin": "/api/v1/changements.json",
   "url": "https://numero-audit.pages.dev/api/v1/changements.json",
   "statut": "reserve",
   "annotations": {
    "readOnlyHint": true
   }
  },
  {
   "name": "export_dataset",
   "description": "Décrit le téléchargement de masse : combien de fragments, à quelle adresse, dans quel format. Gratuit.",
   "inputSchema": {
    "type": "object",
    "properties": {}
   },
   "chemin": "/api/v1/jeu-complet.json",
   "url": "https://numero-audit.pages.dev/api/v1/jeu-complet.json",
   "statut": "servi",
   "annotations": {
    "readOnlyHint": true
   }
  }
 ],
 "paiement": {
  "statut": "non_active",
  "note": "Les pages HTML et les outils qui les lisent sont gratuits et le restent. Seule la couche FABRIQUÉE — réconciliation, croisement, historique — peut être tarifée."
 }
}