Documentation
Trois outils, un schéma asynchrone, un jeu stable de codes d'erreur.
Se connecter
Les instructions client par client sont sur les pages d'installation. Une requête sans clé reçoit 401 avec un en-tête WWW-Authenticate ; une clé au-delà de la limite de débit reçoit 429 avec Retry-After.
Le schéma asynchrone
Récupérer un dépôt veut dire appeler la Banque nationale, télécharger un dépôt et analyser du XBRL — trop lent pour garder un appel d'outil ouvert, et bien trop lent quand le dépôt est un PDF qui demande un LLM. C'est pourquoi get_annual_accounts renvoie une opération que vous interrogez.
- Appelez
get_annual_accounts. Normalement vous recevez {"operation_id": "…", "status": "pending", "poll_after_seconds": 3}.
- Attendez
poll_after_seconds, puis appelez get_operation avec cet identifiant. Répétez tant que le statut est pending ou processing.
- Arrêtez-vous à
completed (les comptes sont dans result) ou failed (il y a un objet error avec un code du tableau ci-dessous).
Deux raccourcis sont intégrés. Un dépôt déjà en cache revient immédiatement de get_annual_accounts avec status: "completed" et cached: true — sans interrogation. Un dépôt en cache dont le JSON est trop gros pour être inclus (plus de 100 Ko, ce qui arrive avec raw: true) revient comme opération avec cached: true, et la première interrogation répond instantanément.
Ne relancez pas la requête pendant qu'une opération tourne.
Les requêtes identiques sont dédupliquées côté serveur : redemander renvoie le même identifiant d'opération et dépense un appel facturable pour rien.
Les opérations appartiennent à la clé d'API qui les a créées. Interroger l'identifiant de quelqu'un d'autre répond exactement comme interroger un identifiant inexistant. Les opérations terminées sont nettoyées 30 jours après leur fin.
Codes d'erreur
Une opération en échec porte error.code, et ces chaînes sont stables — un client peut s'y brancher.
Les erreurs qui ne sont pas des échecs d'opération
Une entrée invalide, un quota épuisé et un identifiant d'opération inconnu reviennent comme erreur d'outil (MCP isError: true) avec un message explicatif, et non comme une opération à interroger — il n'y a rien qui tourne.
Limites
Les quotas sont remis à zéro le 1er de chaque mois.
Le JSON de résultat
Tout résultat terminé de get_annual_accounts a la même forme :
Langues
language accepte nl, fr, de et en, et vaut nl par défaut. Les libellés proviennent des linkbases de libellés de taxonomie de la Banque nationale elle-même, pas d'un moteur de traduction : ils correspondent donc aux termes des formulaires officiels.
Si un libellé manque dans la langue demandée, la réponse retombe dans cet ordre : langue demandée → langue dans laquelle le dépôt a été introduit → nl → fr → en. Les chiffres ne changent jamais avec la langue, et meta.response_language vous dit ce que vous avez réellement reçu.
Le site lui-même est publié dans les mêmes quatre langues ; le sélecteur est dans la navigation et votre choix est retenu dans un cookie.
Sources des données et réserves
meta.data_source dit comment un résultat a été produit, et c'est le champ à lire avant de faire confiance à un chiffre :
Réserves connues
- Seuls les dépôts que la Banque nationale a acceptés sont servis. Un dépôt corrigé plus tard mène à la correction, pas à l'original.
- La recherche par nom utilise le fichier open data des dénominations de la BCE/KBO, renouvelé chaque mois. Une entreprise créée ces dernières semaines peut être trouvable par numéro avant de l'être par nom.
- Plusieurs entreprises peuvent porter le même nom.
search_company renvoie des candidats avec un score de correspondance et attend de l'appelant qu'il tranche, plutôt que de deviner.
- Les dépôts plus anciens utilisent des générations de taxonomie antérieures. Là où une génération n'est pas encore cartographiée, la réponse le dit (
pdf_fallback_required) au lieu de renvoyer des chiffres partiels.
- Ce service n'a aucun lien avec la Banque nationale de Belgique et n'ajoute aucune interprétation : ce qui est déposé est ce que vous recevez, y compris les erreurs commises par le déposant.