Le serveur MCP relie directement les annonces d’insolvabilité allemandes aux agents IA. Claude, Cursor ou votre propre agent peut contrôler un fournisseur, lire une procédure ou surveiller un client au fil d’une conversation, sans que personne n’écrive de client d’API.
Dernière mise à jour: 2026-09-29
Les clés sont attribuées à la main. Décrivez-nous brièvement ce que vous souhaitez construire et le volume attendu : l’accès est en général actif sous un jour ouvré.
Le Model Context Protocol est un standard ouvert qui définit comment un agent IA accède à des outils et données externes. Au lieu de programmer une interface, vous ajoutez une fois le serveur à la configuration de l’agent. Le modèle sait dès lors quels outils existent et les appelle lui-même quand la conversation l’exige.
Notre serveur expose les mêmes données que l’API REST : annonces, fiches d’entreprise, chiffres de bilan, statistiques et liste de suivi. La différence tient à la présentation. Les descriptions des outils sont rédigées pour qu’un modèle comprenne quand un contrôle d’insolvabilité a du sens, quelles précisions il doit demander et où se situent les limites des données.
L’adresse est https://germanyinsolvencies.com/api/mcp. Le serveur utilise les mêmes clés que l’API REST. Si vous exploitez les deux en parallèle, vous verrez la même liste de suivi dans les deux mondes.
Questions typiques auxquelles un agent répond ainsi : « Notre fournisseur est-il insolvable ? », « Lesquelles de nos 40 factures ouvertes sont touchées par une procédure ? », « Combien d’entreprises du bâtiment ont fait faillite en Bavière ce trimestre ? »
La démarche est la même que pour l’API REST : les clés sont attribuées à la main. Utilisez le formulaire de contact ou écrivez à [email protected] en précisant brièvement quel agent vous voulez connecter et ce qu’il doit faire.
Si vous avez déjà une clé d’API, vous n’en avez pas besoin d’une seconde : la même clé ouvre le serveur MCP. Les équipes qui veulent donner accès au serveur à plusieurs personnes peuvent, sur demande, recevoir plusieurs clés sur un même compte, afin que l’on puisse retracer qui a contrôlé quoi.
Le serveur parle MCP via Streamable HTTP, le transport que les clients actuels utilisent par défaut. Aucun processus local n’est nécessaire, il n’y a rien à installer.
L’authentification utilise le même en-tête que l’API REST : X-API-Key, ou bien Authorization: Bearer. Les clients qui ne parlent que stdio atteignent le serveur via mcp-remote comme passerelle, voir la configuration de Claude Desktop ci-dessous.
Client et serveur négocient la version du protocole à la connexion. Nous prenons en charge la révision actuelle et la précédente, de sorte qu’une mise à jour du client n’entraîne jamais de rupture brutale.
curl https://germanyinsolvencies.com/api/mcp/health
Dans Claude Code, une seule commande suffit. La clé doit provenir d’une variable d’environnement, pas du presse-papiers.
claude mcp add --transport http insolvency \
https://germanyinsolvencies.com/api/mcp \
--header "X-API-Key: $INSOLVENCY_API_KEY"
Claude Desktop lit sa liste de serveurs dans claude_desktop_config.json. L’entrée fait le pont vers le transport HTTP via mcp-remote.
{
"mcpServers": {
"insolvency": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://germanyinsolvencies.com/api/mcp",
"--header", "X-API-Key:${INSOLVENCY_API_KEY}"
],
"env": { "INSOLVENCY_API_KEY": "YOUR_API_KEY" }
}
}
}
Cursor, Windsurf, Zed et la plupart des autres clients prennent directement l’URL du serveur et acceptent leurs propres en-têtes, aucune passerelle n’est donc nécessaire.
{
"mcpServers": {
"insolvency": {
"url": "https://germanyinsolvencies.com/api/mcp",
"headers": { "X-API-Key": "${env:INSOLVENCY_API_KEY}" }
}
}
}
Après l’ajout, le client doit afficher onze outils. Si la liste reste vide, la cause est presque toujours l’en-tête : une clé expirée ou mal saisie produit une liste d’outils vide plutôt qu’une erreur visible.
Le serveur fournit onze outils. Les outils en écriture sont signalés comme tels, afin que les clients puissent demander une confirmation là où ils le souhaitent.
| Outil | Nature | Description |
|---|---|---|
| search_filings | read | Recherche des annonces par période, type, Land, tribunal ou nom. Renvoie un court résumé par résultat, le texte intégral via get_filing. |
| get_filing | read | Renvoie une annonce avec texte intégral, tribunal, numéro de dossier et type. |
| check_counterparty | read | Contrôle une entreprise et renvoie statut, dernière annonce et qualité de la correspondance. L’outil le plus important, voir ci-dessous. |
| search_companies | read | Trouve des fiches d’entreprise par nom, ville, numéro de registre ou statut. |
| get_company | read | Renvoie une fiche d’entreprise avec toutes les annonces rattachées, par ordre chronologique. |
| get_financials | read | Renvoie les chiffres de bilan publiés des derniers exercices. |
| get_stats | read | Compte les annonces par jour, mois, Land, tribunal, type ou forme juridique. |
| list_filing_types | read | Nomme les neuf types d’annonces avec code, alias et signification. Les agents devraient l’appeler une fois plutôt que de deviner des codes. |
| list_watchlist | read | Liste les entreprises suivies avec la date du dernier résultat. |
| watch_company | write | Ajoute une entreprise à la liste de suivi. |
| unwatch_company | write | Retire une entreprise de la liste de suivi. |
Tous les outils de lecture sont idempotents et peuvent être appelés sans demander. watch_company et unwatch_company modifient votre compte et se signalent au client comme outils en écriture.
L’outil qui compte est check_counterparty. Son schéma est volontairement étroit : un nom ou un numéro de registre, éventuellement la ville et une date de début. Moins un modèle a de décisions à prendre, moins il invente de valeurs.
{
"name": "check_counterparty",
"description": "Check whether a German company appears in official insolvency announcements. Use before extending credit, signing a supplier or chasing an overdue invoice. Prefer register number over name when you have it. Never guess a register number.",
"annotations": { "readOnlyHint": true },
"inputSchema": {
"type": "object",
"properties": {
"name": { "type": "string", "description": "Company name as written on the invoice or contract." },
"city": { "type": "string", "description": "Registered seat, narrows ambiguous names." },
"register": { "type": "string", "description": "e.g. HRB 123456 B" },
"register_court": { "type": "string", "description": "e.g. Charlottenburg (Berlin)" },
"since": { "type": "string", "format": "date", "description": "Only filings on or after this date. Default: 3 years ago." }
},
"anyOf": [ { "required": ["name"] }, { "required": ["register"] } ]
}
}
La description indique explicitement au modèle de privilégier le numéro de registre et de ne jamais en deviner un. Un numéro de registre erroné mène à un « aucune annonce » assuré pour la mauvaise entreprise, ce qui est pire qu’une réponse ambiguë.
Si un nom n’est pas unique, l’outil n’en choisit pas un mais renvoie un texte d’erreur avec les candidats. Le modèle demande alors à l’utilisateur la ville ou le numéro de registre. Ce comportement est voulu et traité dans la section gestion des erreurs.
Sans since, l’outil remonte trois ans en arrière. Les procédures plus anciennes sont en général closes et sans intérêt pour les décisions actuelles ; si elles en ont, passez une date plus ancienne.
Les outils répondent sur deux voies : un bloc de texte pour le modèle et structuredContent pour le client. Le bloc de texte est formulé pour que le modèle puisse le transmettre à l’utilisateur sans avoir à l’interpréter : entreprise, numéro de registre, stade, tribunal, numéro de dossier, date.
{
"content": [
{
"type": "text",
"text": "Musterbau GmbH (HRB 123456 B, Berlin): insolvency proceedings OPENED on 2026-09-28 by Amtsgericht Charlottenburg, case 36a IN 4711/26. Earlier: protective measures on 2026-08-14. Source: official announcement."
},
{
"type": "resource_link",
"uri": "insolvency://filing/fil_8Kq2Zp4RwT",
"name": "Announcement 36a IN 4711/26",
"mimeType": "application/json"
}
],
"structuredContent": {
"match": "exact",
"company_id": "cmp_3n8Kd2ZpQv",
"status": "opened",
"filings": [
{ "id": "fil_8Kq2Zp4RwT", "date": "2026-09-28", "type_code": "2" },
{ "id": "fil_2Hd7Vb1Xe", "date": "2026-08-14", "type_code": "0" }
]
},
"isError": false
}
Les textes intégraux des annonces reviennent sous forme de liens de ressource, non intégrés. Un client qui veut afficher le texte résout le lien ; celui qui ne le veut pas garde sa fenêtre de contexte petite. Une seule annonce peut compter plusieurs milliers de caractères.
Outre les outils, le serveur fournit des ressources sous le schéma insolvency://. Les clients qui prennent en charge les ressources peuvent les afficher ou les joindre au modèle sans appeler d’outil.
insolvency://filing/{id} one announcement incl. full text
insolvency://company/{id} company profile and status
insolvency://company/{id}/filings all announcements of a company
insolvency://company/{id}/financials published balance sheet figures
insolvency://watchlist your watched companies
insolvency://types filing types with codes and aliases
La ressource de liste de suivi change lorsqu’une nouvelle annonce concerne une entreprise suivie. Le serveur envoie alors une notification de changement, afin que les clients puissent actualiser leur affichage.
Pour les tâches récurrentes, des prompts prêts à l’emploi existent. Ils recueillent ce dont la tâche a besoin, puis appellent les outils appropriés. Dans les clients qui prennent en charge les prompts, ils apparaissent comme des commandes rapides.
{
"name": "counterparty_check",
"description": "Check a list of customers or suppliers for insolvency filings and summarise the risk.",
"arguments": [
{ "name": "companies", "description": "One company per line: name, city or register number.", "required": true },
{ "name": "since", "description": "Look-back start date, default 3 years.", "required": false }
]
}
Sont actuellement disponibles counterparty_check (contrôler une liste d’entreprises), weekly_briefing (nouvelles annonces de la semaine pour des Länder ou secteurs choisis) et proceeding_timeline (historique d’une procédure expliqué en langage clair). Si vous préférez votre propre déroulement, ignorez les prompts et appelez directement les outils.
Voici à quoi cela ressemble en pratique. L’agent contrôle trois débiteurs, explique les résultats en termes simples, redemande là où le nom est ambigu, puis met en place la surveillance.
Utilisateur : Peux-tu vérifier nos trois plus grosses factures ouvertes ?
Musterbau GmbH à Berlin, Nordlicht Handels GmbH et
Beispiel Logistik à Hambourg.
Agent : [check_counterparty name="Musterbau GmbH" city="Berlin"]
[check_counterparty name="Nordlicht Handels GmbH"]
[check_counterparty name="Beispiel Logistik" city="Hamburg"]
Agent : Musterbau GmbH : la procédure a été ouverte le 28 septembre
2026 (AG Charlottenburg, 36a IN 4711/26). Les créances doivent
désormais être déclarées auprès de l’administrateur judiciaire,
un paiement direct est improbable.
Beispiel Logistik UG : mesures conservatoires depuis le
22 septembre 2026, un administrateur provisoire est désigné.
Nordlicht Handels GmbH : deux entreprises portent ce nom,
aucune n’a d’annonce. Quelle est votre ville ?
Utilisateur : Hambourg. Et surveille les trois dès maintenant, s’il te plaît.
Agent : [watch_company name="Nordlicht Handels GmbH" city="Hamburg"]
[watch_company company_id="cmp_3n8Kd2ZpQv"]
[watch_company company_id="cmp_7Yb3Rt5Mn"]
C’est fait. Vous recevrez un webhook dès qu’une nouvelle
annonce paraîtra.
L’étape importante est la troisième : face à un nom ambigu, l’agent pose la question au lieu de choisir. C’est exactement à cela que sert le texte d’erreur de l’outil.
Chaque clé porte des autorisations. Par défaut, elle peut lire les annonces, les entreprises et les statistiques ; l’écriture dans la liste de suivi doit être activée séparément.
| Scope | Signification |
|---|---|
| filings:read | Rechercher et lire des annonces. |
| companies:read | Fiches d’entreprise, chiffres de bilan et contrôle de contreparties. |
| stats:read | Statistiques agrégées. |
| watchlist:write | Ajouter et retirer des entreprises de la liste de suivi. |
Les outils pour lesquels la clé n’a pas d’autorisation n’apparaissent tout simplement pas dans la liste des outils. C’est plus agréable qu’une erreur en pleine conversation, car le modèle ne propose alors jamais ce qu’il ne peut de toute façon pas faire.
Les erreurs reviennent comme un résultat d’outil normal avec isError: true, pas comme une erreur de protocole. Le texte s’adresse au modèle et lui indique ce qu’il doit faire ensuite, afin que l’agent puisse réagir de façon sensée au cours de la conversation.
{
"content": [
{
"type": "text",
"text": "No unique match: 2 companies are called \"Nordlicht Handels GmbH\" (Hamburg, Kiel). Ask the user for the city or the register number and call check_counterparty again. Do not pick one yourself."
}
],
"isError": true
}
De véritables erreurs de protocole ne surviennent qu’avec une clé invalide, une autorisation manquante ou une requête mal formée. Tout ce qui peut mal se passer côté contenu, comme un nom ambigu, un ID inconnu ou une période trop longue, revient sous forme de texte.
Les mêmes limites que pour l’API REST s’appliquent : 120 appels d’outil par minute et par clé, 31 jours au plus par recherche d’annonces, 24 mois dans les statistiques. Pour des valeurs plus élevées, un e-mail suffit.
Le dépassement d’une limite ne produit pas d’erreur brutale mais un résultat texte indiquant quand la suite est possible. Les agents doivent alors patienter plutôt que de rappeler aussitôt.
Le serveur renvoie des annonces publiques, mais elles contiennent des données personnelles. Les mêmes règles que pour l’API REST s’appliquent : délais de suppression de l’ordonnance allemande sur les publications d’insolvabilité, pas de publication d’annonces concernant des particuliers, pas de décisions automatisées sur des personnes physiques fondées uniquement sur ces données.
Un agent peut résumer une annonce, mais cela ne remplace pas un conseil juridique. Les textes des outils mentionnent donc toujours le tribunal et le numéro de dossier, afin que l’utilisateur puisse vérifier l’original. Nous recommandons que votre agent le rappelle aussi lorsqu’il en tire des recommandations d’action.
Ce que l’agent envoie au serveur (noms d’entreprises, vos références) sert uniquement à répondre à la requête et n’est pas transmis à des tiers. Si votre agent traite des données sur vos clients, un contrat de sous-traitance est disponible.
Le serveur tourne sur la même infrastructure que l’API REST. Les fenêtres de maintenance sont annoncées par e-mail à l’adresse enregistrée, et les modifications des schémas d’outils sont uniquement additives.
Lorsqu’un nouvel outil est ajouté, le serveur envoie une notification de changement. Les clients qui y réagissent voient l’outil sans redémarrer. Les outils existants gardent leur nom et leurs champs obligatoires.
Questions, limites plus élevées, prompts ou outils propres à un workflow précis : [email protected] ou le formulaire de contact.
Si vous préférez travailler en HTTP simple, les mêmes données sont documentées comme interface REST dans la documentation de l’API. Les deux voies partagent clés, limites et contrat.
Les clés sont attribuées à la main. Décrivez-nous brièvement ce que vous souhaitez construire et le volume attendu : l’accès est en général actif sous un jour ouvré.