Skip to main content
Glama

Services publics NexAura

Tu peux consulter huit API publiques françaises et internationales, sans clé. Les conditions de chaque source restent applicables. Les outils sont fabriqués avec FastMCP.from_openapi depuis des descriptions locales : aucun outil métier n'est écrit à la main.

Installer et lancer

Depuis ce dossier, avec Python 3.11 ou plus récent :

python3 -m venv .venv
.venv/bin/pip install -e '.[test]'
.venv/bin/python -m nexaura_services_publics adresse

Remplace adresse par le nom d’un connecteur du tableau ci-dessous. Le serveur échange par l'entrée et la sortie standard ; ses messages techniques restent sur la sortie d'erreur. Aucune description n'est téléchargée au démarrage. Les fichiers specs/ et connecteurs/ sont inclus dans la distribution Python.

Related MCP server: eu-company-mcp-server

Les huit connecteurs

Connecteur

Source

Outils

adresse

Géoplateforme / BAN

chercher_adresse, adresse_depuis_position

geo

API Geo

chercher_communes, commune_par_code, departements, regions

jours-feries

Etalab

jours_feries

calendrier-scolaire

Éducation nationale

vacances_scolaires

bodacc

DILA / BODACC

annonces_entreprise

tva-europe

Commission européenne / VIES

verifier_tva, etat_service_tva

jours-feries-europe

OpenHolidays API

jours_feries, vacances_scolaires_europe, pays, regions_du_pays

taux-de-change

Frankfurter

taux_de_change, taux_entre_devises, devises_disponibles

Outils disponibles

adresse

Outil

Ce qu’il fait

Limite

chercher_adresse

Cherche une adresse avec q et renvoie ses coordonnées et les adresses proposées.

50 appels/seconde/IP ; ce connecteur se limite à 40 appels/seconde.

adresse_depuis_position

Donne lon et lat : tu reçois les adresses proches de cette position.

50 appels/seconde/IP ; ce connecteur se limite à 40 appels/seconde.

Données : Licence Ouverte 2.0 (BAN, index address uniquement). Licence et source. Quota.

geo

Outil

Ce qu’il fait

Limite

chercher_communes

Cherche avec nom ou codePostal : tu reçois les communes correspondantes.

50 appels/seconde/IP ; ce connecteur se limite à 40 appels/seconde.

commune_par_code

Donne un code INSEE : tu reçois les informations de cette commune.

50 appels/seconde/IP ; ce connecteur se limite à 40 appels/seconde.

departements

Consulte les départements : tu reçois leurs noms et codes.

50 appels/seconde/IP ; ce connecteur se limite à 40 appels/seconde.

regions

Consulte les régions : tu reçois leurs noms et codes.

50 appels/seconde/IP ; ce connecteur se limite à 40 appels/seconde.

Données : Licence Ouverte 2.0 (données administratives INSEE) ; sources géographiques sous licences Open Data. Licence et source. Quota.

jours-feries

Outil

Ce qu’il fait

Limite

jours_feries

Choisis une zone et une année : tu reçois les dates et les noms des jours fériés.

quota officiel non communiqué ; cadence locale de 1 appel/seconde.

Données : Licence Ouverte 2.0. Licence et source. Quota.

calendrier-scolaire

Outil

Ce qu’il fait

Limite

vacances_scolaires

Consulte les vacances du calendrier scolaire officiel pour ta zone et ton année scolaire. Dans where, écris par exemple : zones = 'Zone A' AND annee_scolaire = '2026-2027' ; tu reçois les périodes et académies, parfois répétées.

quota officiel non communiqué ; cadence locale de 1 appel/seconde.

Données : Licence Ouverte 2.0. Licence et source. Quota.

bodacc

Outil

Ce qu’il fait

Limite

annonces_entreprise

Donne where: "registre = '444608442'" pour consulter les annonces de ton entreprise, de la plus récente à la plus ancienne.

Quota officiel non communiqué ; 1 appel/seconde, 20 annonces au maximum par appel (20 par défaut).

Données : Licence Ouverte / Open Licence (fr-lo), fiche DILA. Le jeu annonces-commerciales est fixé dans le chemin ; registre et dateparution sont les vrais champs vérifiés dans les métadonnées officielles. Le filtre natif exige exactement un SIREN de neuf chiffres. order_by est fixé à dateparution DESC ; offset permet la suite, entre 0 et 9980, sans pagination automatique. Aucune recherche générique sur d’autres jeux.

tva-europe

Outil

Ce qu’il fait

Limite

verifier_tva

Donne countryCode: FR et vatNumber: "40444608442", sans répéter le pays dans le numéro.

1 appel/seconde, une requête à la fois ; une seule relance après 3 s sur MS_UNAVAILABLE ou MS_MAX_CONCURRENT_REQ.

etat_service_tva

Consulte la disponibilité de VIES et des services nationaux.

Même limite partagée avec la vérification.

Quota officiel chiffré non communiqué. Pour la France, le nom et l’adresse reviennent souvent vides : tu obtiens surtout « valide » ou « non valide » (isValid sur le GET). Une erreur ou une indisponibilité n’est jamais un verdict « non valide ». Les erreurs restent des réponses de la source, sans faux résultat. Le verrou couvre la réponse entière, l’attente de 3 s et la seconde tentative, pour tous les outils d’un même serveur. Aucune autre relance, même sur délai d’attente ou erreur HTTP seule.

Données : conditions VIES et droits des administrations nationales, sans licence ouverte uniforme annoncée. Description OpenAPI 3.0 écrite par NexAura d’après la documentation officielle ; la description Swagger désormais liée par cette documentation décrit la vérification en POST, pas le GET demandé ici. Aucun POST n’est exposé.

jours-feries-europe

Outil

Ce qu’il fait

Limite

jours_feries

Jours fériés du pays : countryIsoCode: BE, validFrom: 2026-01-01, validTo: 2026-12-31 obligatoires ; région subdivisionCode facultative.

Trois ans au maximum ; quota officiel non communiqué, cadence locale de 1 appel/seconde.

vacances_scolaires_europe

Vacances scolaires avec les mêmes paramètres.

Même période maximale et cadence partagée.

pays

Pays disponibles.

Même cadence partagée.

regions_du_pays

Régions pertinentes du pays countryIsoCode obligatoire.

Même cadence partagée.

Données OpenHolidays API (ODbL). Licence ODbL-1.0 des données ; FAQ : accès gratuit, usage commercial autorisé. Aucun quota chiffré annoncé sur la page d’accueil ni dans la FAQ : 1/s est une cadence locale, sans garantie de quota journalier. Attribution à conserver ; les obligations ODbL s’appliquent à la réutilisation, notamment au partage des bases dérivées.

Les quatre outils demandent languageIsoCode: FR par défaut ; tu peux choisir une autre langue ISO 639-1. Le français n’est pas disponible pour tous les pays ; les traductions dépendent de la source. Les régions renvoyées sont celles pertinentes pour les calendriers, sans promesse d’exhaustivité administrative. La couverture varie par pays et type de calendrier ; ce connecteur comprend aussi les pays hors Europe disponibles dans la source.

Description officielle OpenAPI 3.0.4 conservée intacte. Elle exige les deux dates mais n’exprime pas leur écart maximal : la documentation des erreurs confirme la limite de trois ans. Le transport vérifie les dates civiles, leur ordre et cette durée avant réseau, y compris les années bissextiles. Aucun filtre de groupe ni outil mondial par date n’est exposé.

taux-de-change

Outil

Ce qu’il fait

Limite

taux_de_change

Choisis base et obligatoirement quotes (par exemple EUR et CHF,USD), avec date facultative.

1 appel/seconde ; cibles obligatoires, pas de séries de dates.

taux_entre_devises

Choisis base et quote, avec date facultative.

Même cadence partagée.

devises_disponibles

Consulte les devises ; scope: all inclut les anciennes.

Même cadence partagée.

Taux de référence indicatif, pas un cours de banque. Sans date, tu reçois le dernier taux disponible, qui peut dater d’un jour ouvré précédent. Frankfurter annonce l’absence de quota journalier ou mensuel, avec protection contre les abus ; le connecteur limite sa cadence à 1 appel/seconde. Les champs providers, from, to, group et expand sont exclus ; aucun outil de fournisseurs n’est exposé. Les devises cibles sont requises aussi dans le transport HTTP, pas seulement dans le schéma MCP.

Données : taux agrégés Frankfurter librement utilisables, y compris commercialement. Pas de licence de données distincte nommée ; MIT concerne le code. Les requêtes directes aux fournisseurs sont exclues de ce connecteur.

Brancher dans Hermès

Dans ta configuration Hermès, remplace chaque chemin /chemin/absolu/services-publics/.venv/bin/python par celui de ton installation. Tu peux garder les huit entrées ou seulement celles qui t'intéressent.

mcp_servers:
  services-publics-adresse:
    command: /chemin/absolu/services-publics/.venv/bin/python
    args: ["-m", "nexaura_services_publics", "adresse"]
    tools:
      include: [chercher_adresse, adresse_depuis_position]
  services-publics-geo:
    command: /chemin/absolu/services-publics/.venv/bin/python
    args: ["-m", "nexaura_services_publics", "geo"]
    tools:
      include: [chercher_communes, commune_par_code, departements, regions]
  services-publics-jours-feries:
    command: /chemin/absolu/services-publics/.venv/bin/python
    args: ["-m", "nexaura_services_publics", "jours-feries"]
    tools:
      include: [jours_feries]
  services-publics-calendrier-scolaire:
    command: /chemin/absolu/services-publics/.venv/bin/python
    args: ["-m", "nexaura_services_publics", "calendrier-scolaire"]
    tools:
      include: [vacances_scolaires]
  services-publics-bodacc:
    command: /chemin/absolu/services-publics/.venv/bin/python
    args: ["-m", "nexaura_services_publics", "bodacc"]
    tools:
      include: [annonces_entreprise]
  services-publics-tva-europe:
    command: /chemin/absolu/services-publics/.venv/bin/python
    args: ["-m", "nexaura_services_publics", "tva-europe"]
    tools:
      include: [verifier_tva, etat_service_tva]
  services-publics-jours-feries-europe:
    command: /chemin/absolu/services-publics/.venv/bin/python
    args: ["-m", "nexaura_services_publics", "jours-feries-europe"]
    tools:
      include: [jours_feries, vacances_scolaires_europe, pays, regions_du_pays]
  services-publics-taux-de-change:
    command: /chemin/absolu/services-publics/.venv/bin/python
    args: ["-m", "nexaura_services_publics", "taux-de-change"]
    tools:
      include: [taux_de_change, taux_entre_devises, devises_disponibles]

Calendrier scolaire : filtre natif

L'outil officiel de consultation prend un filtre where. Il reste exposé tel quel, avec une forme limitée à une zone et une année scolaire :

{"where": "zones = 'Zone A' AND annee_scolaire = '2026-2027'", "limit": 100, "offset": 0}

Utilise Zone A, Zone B, Zone C, ou le libellé exact de la zone publié par le ministère (Corse et outre-mer). L'outil ne traduit pas les noms des territoires. La présence de chaque zone et de chaque année dépend du jeu officiel : une réponse vide ne prouve pas l'absence de vacances. Le jeu est fixé à fr-en-calendrier-scolaire dans le chemin ; tu ne peux pas consulter d'autres jeux. Les périodes peuvent se répéter par académie. La réponse conserve les enregistrements officiels sans les fusionner.

Si tu veux deux champs simples zone et annee_scolaire, il faut soit une description officielle spécialisée, soit autoriser une petite adaptation manuelle. Ici, aucun faux paramètre ni conversion maison en requête n'est ajouté.

Limites connues

  • Les quotas de l'Adresse et de Geo sont de 50 appels/seconde/IP ; chaque processus espace ses appels à 40/seconde, sans rafale. Les fiches data.gouv des deux calendriers donnent rate_limiting: null : quota officiel non communiqué, cadence locale prudente de 1/seconde. Aucun quota journalier n'est connu. Plusieurs processus ou logiciels sur la même IP doivent partager ce budget de leur côté.

  • Chaque connecteur ne contacte que sa base HTTPS fixe, en GET, sur les chemins autorisés. Pas de redirection ni de proxy hérité de l'environnement ni de vérification de mise à jour FastMCP. Seule exception aux appels sans relance : VIES, pour les deux codes documentés ci-dessus. Délai d'attente HTTP : 15 secondes par phase (comportement httpx), pas une échéance totale de l'opération ; l'attente du limiteur s'y ajoute.

  • Adresse reste sur l'index BAN address. Geo demande du JSON et une géométrie de centre par défaut ; tu peux demander un contour explicitement si le paramètre officiel le permet.

  • Au-delà de 200 000 octets décompressés, la lecture s'arrête. Tu reçois une enveloppe JSON avec avertissement: réponse tronquée et un extrait UTF-8. Cet extrait est du texte, pas un objet JSON partiel utilisable comme une réponse complète. L'enveloppe elle-même reste sous 200 Ko ; réduis la recherche ou consulte la page suivante.

  • Calendrier scolaire : 100 enregistrements par défaut, pas de pagination automatique. Si total_count dépasse le nombre renvoyé, utilise offset. Les autres filtres génériques de l'API sont retirés de cet outil.

  • Aucun schéma de sortie MCP : les descriptions publiques sont imprécises. Les réponses JSON sont conservées, y compris les valeurs nulles. FastMCP enveloppe les tableaux HTTP dans result.data["result"] côté client Python.

  • Normalisations de syntaxe avant fabrication : codes HTTP YAML numériques convertis en chaînes ; le type non standard any de la description Éducation devient un schéma libre {}. Les originaux restent intacts. Geo, fourni en Swagger 2.0, a été converti avec swagger2openapi 7.0.8 ; Éducation est déjà en OpenAPI 3.0.3.

  • Tests réels : seule la zone A 2026-2027 a été vérifiée pour le calendrier scolaire ; Corse et outre-mer ne sont pas vérifiés. Les réponses dépendent de la disponibilité et des données de chaque éditeur.

  • Deux avertissements de dépréciation Authlib peuvent apparaître avec les dépendances transitives actuelles ; les trois dépendances directes sont épinglées, les transitives ne sont pas verrouillées.

Les URL, dates, empreintes et commandes de conversion sont dans specs/SOURCES.md. Le code est sous licence MIT, les données gardent leur propre licence.

Vérifier

.venv/bin/python -m pytest -q
BANC_RESEAU=1 .venv/bin/python -m pytest -q -m reseau

Le premier passage n’accède pas au réseau et saute les huit tests réels. Le second fait un appel d’outil par connecteur : adresse Ségur, Paris 75056, jours fériés métropole 2026, vacances zone A 2026-2027, BODACC SIREN 444608442, VIES FR 40444608442 (forme de réponse et booléen, aucun verdict imposé), jours fériés OpenHolidays BE du 2026-01-01 au 2026-12-31 et EUR vers CHF. Pas de pagination ; seule VIES peut faire une seconde requête dans les deux cas prévus. Les autres outils sont vérifiés avec des réponses simulées, pas par des appels réels. Les cadences et le verrou sont locaux à un serveur : plusieurs processus doivent coordonner leur budget.

Pour vérifier uniquement OpenHolidays (un seul appel GET, sans relance) :

BANC_RESEAU=1 .venv/bin/python -m pytest -q -m reseau -k europe

Le cas réseau TVA porte l’identifiant vies pour que ce filtre ne contacte qu’OpenHolidays.

Available Tools

2 tools
adresse_depuis_positionB

Donne lon et lat : tu reçois les adresses proches de cette position. Limite : 50 appels/seconde/IP ; ce connecteur se limite à 40 appels/seconde.

NameRequiredDescriptionDefault
latNoSi searchgeom est utilisé, il s'agit de la latitude du point d'ordonnancement. C'est le point à partir duquel est calculée la distance, puis le score permettant l'ordonnancement des résultats. Dans un soucis de rétro-compatibilité, si searchgeom n'est pas utilisé, il s'agit de la latitude du point de recherche. À partir de ce point, un cercle est créé pour effectuer la recherche. En plus, ce sera aussi la latitude du point d'ordonnancement.
lonNoSi searchgeom est utilisé, il s'agit de la longitude du point d'ordonnancement. C'est le point à partir duquel est calculée la distance, puis le score permettant l'ordonnancement des résultats. Dans un soucis de rétro-compatibilité, si searchgeom n'est pas utilisé, il s'agit de la longitude du point de recherche. À partir de ce point, un cercle est créé pour effectuer la recherche. En plus, ce sera aussi la longitude du point d'ordonnancement.
cityNoFiltre pour les index address et parcel. Il permet de filtrer par nom de commune.
typeNoFiltre pour l'index address. Il permet de filtrer par type de données adresse : numéro de maison, rue, commune, ...
indexNoindex de recherche : - <b>address</b> pour la recherche par adresse - <b>parcel</b> pour la recherche par parcelle cadastrale - <b>poi</b> pour la recherche par lieu et unité administrative Il est possible de spécifier plusieurs indexes séparés par une virgule. Exemples: - /search?index=parcel - /search?index=poi,address address
limitNoNombre maximum de résultats retournés. La valeur ne peut pas dépasser 50. Dans le cas où returntruegeometry est activé, la valeur est automatiquement ramenée à 20.
sheetNoFiltre pour l'index parcel. Il permet de filtrer par feuille.
numberNoFiltre pour l'index parcel. Il permet de filtrer par numéro.
sectionNoFiltre pour l'index parcel. Il permet de filtrer par section.
categoryNoFiltre pour l'index poi. Il permet de filtrer par catégorie de poi. Les valeurs possibles sont listées dans le getCapabilities du service de géocodage. Accepte plusieurs valeurs séparées par des virgules (maximum 10).
citycodeNoFiltre pour les index address et poi. Il permet de filtrer les résultats par code INSEE. Accepte plusieurs valeurs séparées par des virgules (maximum 50).
postcodeNoFiltre pour les index address et poi. Il permet de filtrer les résultats par code postal. Accepte plusieurs valeurs séparées par des virgules (maximum 50).
searchgeomNoGéométrie de recherche. La géométrie est réalisé par intersection géométrique. Si ce paramètre est utilisé seul, c''est que l''on souhaite une recherche sans ordonnancement des résultats (tous les objets intersectant la géométrie de recherche ont un score de 1). Si on veut ordonner les résultats, on peut alors utiliser les paramètres lon et lat pour préciser un point d''ordonnancement. Ce paramètre n''est pas obligatoire pour des raisons de rétro-compatibilité. Si searchgeom n''est pas utilisé alors les paramètres lon et lat doivent l''être et on parle de point de recherche. Lorsque la recherche est réalisée par intersection géométrique. Les types géométrique autorisés sont : - Point - LineString - Polygon - Circle Exemple de géométrie de type Circle : { &nbsp;&nbsp;&nbsp;&nbsp;"type": "Circle", &nbsp;&nbsp;&nbsp;&nbsp;"coordinates": [2.294469, 48.858244], &nbsp;&nbsp;&nbsp;&nbsp;"radius": 100 } Pour l''index <b>address</b>, seules les géométries de type ''Polygon'' et ''Circle'' sont autorisées. Le plus grand côté du rectangle d’emprise de la géométrie ne doit pas excéder 1000 mètres.
districtcodeNoFiltre pour l'index parcel. Il permet de filtrer par code d'arrondissement.
departmentcodeNoFiltre pour l'index parcel. Il permet de filtrer par code de département.
municipalitycodeNoFiltre pour l'index parcel. Il permet de filtrer par code de commune.
returntruegeometryNoindique si la vraie géométrie doit être retournée
oldmunicipalitycodeNoFiltre pour l'index parcel. Il permet de filtrer par code d'ancienne commune.

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With zero annotations the description carries the full burden, and it does contribute real behavioral information: the 50 calls/second/IP upstream limit and the connector's self-imposed 40 calls/second ceiling, which an agent cannot infer from the schema. However, it says nothing about what the response contains, whether the configurable index changes the kind of result (address/parcel/poi), or what happens with the default limit of 10.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no padding, and the core capability is front-loaded before the rate-limit caveat. The first clause is slightly garbled by addressing the reader as the parameter-giver, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a complex 18-parameter tool with no annotations and no output schema, yet the description covers only two of the parameters and a rate limit. It omits the index modes (address/parcel/poi), geometry-based search, the result cap interactions, and any hint of the return shape, leaving substantial gaps for an agent that must call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the 18 parameter descriptions are unusually detailed (including the searchgeom geometry rules and the 1000 m bounding-box cap), so the schema does the heavy lifting. The description only names lon and lat and adds no format or semantics beyond what the schema already states, making baseline 3 correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The phrase "tu reçois les adresses proches de cette position" states a specific resource (nearby addresses) and an implicit operation (reverse geocoding from a point). The verb is framed as an instruction to the caller ("Donne lon et lat") rather than a description of the tool, and it never distinguishes this from the sibling chercher_adresse, but an agent can still tell what comes back.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not statement and no reference to the sibling chercher_adresse as the alternative for text-based lookup. The only usage signal is the implied need to supply lon and lat, which the schema already makes evident.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chercher_adresseB

Cherche une adresse avec q et renvoie ses coordonnées et les adresses proposées. Limite : 50 appels/seconde/IP ; ce connecteur se limite à 40 appels/seconde.

NameRequiredDescriptionDefault
qNochaîne décrivant la localisation à rechercher Exemples de requêtes: - /search?q=73 Avenue de Paris Saint-Mandé - /search?q=cimetière Vincennes - /search?q=75056104AE0003 Note: L'absence de valeur est autorisée sur le type parcel pour réaliser une recherche structurée. Par exemple: /search?q=&index=parcel&departmentcode=75&municipalitycode=056&section=AV
latNolatitude d'un localisant pour favoriser les candidats les plus proches.
lonNolongitude d'un localisant pour favoriser les candidats les plus proches.
cityNoFiltre pour les index address et poi. Il permet de filtrer par nom de commune.
typeNoFiltre pour l'index address. Il permet de filtrer par type de données adresse : numéro de maison, rue, commune, ...
indexNoindex(es) de recherche : - <b>address</b> pour la recherche par adresse - <b>parcel</b> pour la recherche par parcelle cadastrale - <b>poi</b> pour la recherche par lieu et unité administrative Il est possible de spécifier plusieurs indexes séparés par une virgule. Exemples: - /search?index=parcel - /search?index=poi,address address
limitNoNombre maximum de résultats retournés. La valeur ne peut pas dépasser 50. Dans le cas où returntruegeometry est activé, la valeur est automatiquement ramenée à 20.
sheetNoFiltre pour l'index parcel. Il permet de filtrer par feuille.
numberNoFiltre pour l'index parcel. Il permet de filtrer par numéro.
depcodeNoFiltre pour les index address et poi. Il permet de filtrer les résultats par code départmeent. Accepte plusieurs valeurs séparées par des virgules (maximum 10).
sectionNoFiltre pour l'index parcel. Il permet de filtrer par section.
categoryNoFiltre pour l'index poi. Il permet de filtrer par catégorie de poi. Les valeurs possibles sont listées dans le getCapabilities du service de géocodage. Accepte plusieurs valeurs séparées par des virgules (maximum 10).
citycodeNoFiltre pour les index address et poi. Il permet de filtrer les résultats par code INSEE. Accepte plusieurs valeurs séparées par des virgules (maximum 200).
postcodeNoFiltre pour les index address et poi. Il permet de filtrer les résultats par code postal. Accepte plusieurs valeurs séparées par des virgules (maximum 50).
autocompleteNoindique si la recherche doit être effectuée en mode auto-complétion (comportement par défaut). 1
districtcodeNoFiltre pour l'index parcel. Il permet de filtrer par code d'arrondissement.
departmentcodeNoFiltre pour l'index parcel. Il permet de filtrer par code de département.
municipalitycodeNoFiltre pour l'index parcel. Il permet de filtrer par code de commune.
returntruegeometryNoindique si la vraie géométrie doit être retournée
oldmunicipalitycodeNoFiltre pour l'index parcel. Il permet de filtrer par code d'ancienne commune.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does contribute valuable operational context: an upstream rate limit of 50 calls/s/IP and a connector-level cap of 40 calls/s. It also names the return payload (coordinates plus candidate addresses). However, it omits error/empty-result behavior, the 50-result cap and its reduction to 20 with returntruegeometry, and the structured parcel search mode — all relevant for a mutation-free but heavily parameterized tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with zero filler: purpose and return first, then the rate-limit caveat. Nothing is buried and every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 20-parameter geocoder with no annotations and no output schema, the description covers purpose, return shape, and rate limits, and the schema covers the parameters thoroughly. It still leaves out the result-count ceiling, autocomplete default behavior, and the q-empty structured parcel mode, so it is adequate rather than complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% across 20 parameters, so the schema already documents index, filters, limit behavior, and confusable pairs like depcode/departmentcode. The description mentions only q, adding no syntax or interaction details beyond the schema — baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (cherche) and resource (adresse), names the primary input q, and says what is returned (coordonnées + adresses proposées). It does not distinguish itself from the sibling adresse_depuis_position, so an agent must infer that this is the text-query path and the sibling is the coordinate path.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit statement of when to use this tool versus adresse_depuis_position, and no prerequisites or exclusions. 'avec q' only weakly implies a text-based lookup; an agent gets no routing guidance beyond that.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv0.1.0
    • First observedadresse_depuis_position
    • First observedchercher_adresse

TDQS

B3.4/5.0

Scored across 2 tools

Disambiguation5/5

The two tools cover complementary, non-overlapping directions: searching an address from a text query and reverse geocoding from coordinates. An agent can pick the right one unambiguously based on its input.

Naming Consistency3/5

Both names are French and descriptive, but they mix conventions: chercher_adresse is verb-first while adresse_depuis_position is noun-first. Readable, yet no single predictable pattern.

Tool Count3/5

Two tools is thin for a geocoding service, though each is a genuine primitive. It sits at the borderline where a bit more surface (e.g. batch or commune lookup) would help.

Completeness4/5

Forward and reverse geocoding covers the core of the domain with no dead ends for typical lookups. Minor gaps remain: no batch mode, no configurable result limits or filtering beyond the returned suggestions.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that enables interaction with Datagouv APIs, primarily allowing users to search for up-to-date information about companies registered in France.
    11
    -
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for EU company and business data. 9 tools: company search (GLEIF, 2M+ entities), LEI lookup, corporate structures (parent/subsidiaries), trade register search, EU VAT validation (VIES), GDP, unemployment, inflation, and business demography (Eurostat). All APIs free, no keys required.
    9
    6
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for exploring French public open data via APIs like data.gouv.fr, geo.api.gouv.fr, INSEE Sirene, and Radio France.
    11
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides AI agents with access to French public registries including company records, property sale prices, housing energy performance, and short-term rental rates via MCP tools.
    -