Skip to main content
Glama
julienkalamon

IGN API Carto MCP Server

IGN API Carto MCP Server

Serveur MCP (Model Context Protocol) pour interroger les données géographiques françaises via l'API Carto de l'IGN

License: MIT

📋 Table des matières

Related MCP server: French Open Data & IGN

À propos

Ce serveur MCP permet d'accéder aux riches données géographiques de l'IGN (Institut national de l'information géographique et forestière) directement depuis Claude Desktop ou tout autre client compatible MCP.

Il expose les principales API de l'écosystème IGN API Carto, permettant d'interroger des données cadastrales, agricoles, environnementales, d'urbanisme et administratives françaises en langage naturel.

Cas d'usage

  • 🏘️ Analyser des données cadastrales et parcellaires

  • 🌾 Consulter les déclarations agricoles (RPG)

  • 🌳 Identifier les zones naturelles protégées

  • 🏗️ Vérifier les règlements d'urbanisme (PLU, GPU)

  • 🍷 Localiser les appellations viticoles

  • 🗺️ Obtenir des données administratives géolocalisées

Fonctionnalités

Outils disponibles

Outil

Description

Cas d'usage

ign_get_communes_by_postal_code

Récupérer les communes associées à un code postal

Résolution d'adresses, statistiques postales

ign_get_cadastre_parcelles

Rechercher des parcelles cadastrales

Études foncières, analyse immobilière

ign_get_cadastre_communes

Obtenir les limites communales cadastrales

Délimitation territoriale, cartographie

ign_get_rpg

Interroger le Registre Parcellaire Graphique

Analyse agricole, environnement

ign_get_nature_areas

Espaces naturels protégés (Natura 2000, ZNIEFF, parcs)

Études environnementales, biodiversité

ign_get_gpu_urbanisme

Données d'urbanisme du Géoportail de l'Urbanisme

Vérification PLU, constructibilité

ign_get_aoc_viticoles

Zones d'appellations viticoles (AOC, IGP, VSIG)

Viticulture, géomarketing

ign_wfs_geoportail

Accès générique aux flux WFS du Géoportail

Données géographiques diverses

ign_get_administrative_limits

Limites administratives (communes, départements, régions)

Découpage territorial, statistiques

Prérequis

  • Node.js 16+ et npm

  • Claude Desktop ou un client MCP compatible

  • Connexion internet pour accéder aux API IGN

Installation

1. Cloner le dépôt

git clone https://github.com/votre-utilisateur/ign-apicarto-mcp-server.git
cd ign-apicarto-mcp-server

2. Installer les dépendances

npm install

3. Configurer les variables d'environnement

# Copier le fichier d'exemple
cp .env.example .env.local

Éditez .env.local et ajoutez votre clé API IGN si vous souhaitez utiliser l'endpoint AOC viticoles :

# Obtenir une clé gratuite : https://geoservices.ign.fr/
IGN_API_KEY=votre_cle_api

4. Compiler le projet

npm run build

Le serveur compilé sera disponible dans le dossier dist/.

Configuration

Configurez ce serveur MCP avec votre client IA préféré. Cliquez sur le client que vous utilisez pour voir les instructions détaillées.

Configuration Claude Desktop

Ajoutez la configuration suivante à votre fichier claude_desktop_config.json :

Emplacement du fichier :

Système

Chemin

macOS

~/Library/Application Support/Claude/claude_desktop_config.json

Windows

%APPDATA%\Claude\claude_desktop_config.json

Linux

~/.config/Claude/claude_desktop_config.json

Configuration :

{
  "mcpServers": {
    "ign-apicarto": {
      "command": "node",
      "args": ["/chemin/absolu/vers/ign-apicarto-mcp-server/dist/index.js"]
    }
  }
}

⚠️ Important : Remplacez /chemin/absolu/vers/ par le chemin complet vers votre installation.

Configuration Claude Code

Claude Code utilise un fichier .mcp.json pour la configuration des serveurs MCP.

Configuration projet (recommandée) :

Créez un fichier .mcp.json à la racine de votre projet :

{
  "mcpServers": {
    "ign-apicarto": {
      "command": "node",
      "args": ["/chemin/absolu/vers/ign-apicarto-mcp-server/dist/index.js"]
    }
  }
}

Configuration globale :

Pour une utilisation dans tous vos projets, créez le fichier dans ~/.claude/.mcp.json.

Activer le serveur :

Au premier lancement, Claude Code vous demandera d'approuver le serveur. Vous pouvez aussi l'activer automatiquement en ajoutant dans vos settings :

{
  "enableAllProjectMcpServers": true
}

Ou spécifiquement :

{
  "enabledMcpjsonServers": ["ign-apicarto"]
}

Configuration Cursor

Cursor utilise un fichier mcp.json pour la configuration MCP.

Emplacement du fichier :

Portée

Chemin

Projet

.cursor/mcp.json (à la racine du projet)

Global

~/.cursor/mcp.json

Configuration :

{
  "mcpServers": {
    "ign-apicarto": {
      "command": "node",
      "args": ["/chemin/absolu/vers/ign-apicarto-mcp-server/dist/index.js"]
    }
  }
}

Avec variables d'environnement (optionnel) :

{
  "mcpServers": {
    "ign-apicarto": {
      "command": "node",
      "args": ["${workspaceFolder}/ign-apicarto-mcp-server/dist/index.js"],
      "env": {}
    }
  }
}

Activer le serveur :

  1. Ouvrez les paramètres de Cursor (Cmd/Ctrl + ,)

  2. Recherchez "MCP"

  3. Activez les serveurs MCP

  4. Redémarrez Cursor

Configuration Codex CLI

OpenAI Codex CLI supporte également le protocole MCP via un fichier de configuration.

Emplacement du fichier :

~/.codex/mcp.json

Configuration :

{
  "mcpServers": {
    "ign-apicarto": {
      "command": "node",
      "args": ["/chemin/absolu/vers/ign-apicarto-mcp-server/dist/index.js"]
    }
  }
}

Note : Assurez-vous que Codex CLI est configuré pour utiliser les serveurs MCP. Consultez la documentation officielle Codex pour plus de détails sur l'activation des plugins MCP.

Configuration Google Antigravity

Google Antigravity est la plateforme de développement agentique de Google, disponible gratuitement en preview publique.

Accéder à la configuration MCP :

  1. Cliquez sur Agent session dans le panneau latéral

  2. Sélectionnez le menu "..." en haut du panneau

  3. Cliquez sur MCP ServersManage MCP Servers

  4. Sélectionnez View raw config pour éditer mcp_config.json

Configuration :

{
  "mcpServers": {
    "ign-apicarto": {
      "command": "node",
      "args": ["/chemin/absolu/vers/ign-apicarto-mcp-server/dist/index.js"]
    }
  }
}

Mode HTTP (alternatif) :

Antigravity supporte également les serveurs MCP via HTTP/SSE :

{
  "mcpServers": {
    "ign-apicarto": {
      "url": "http://localhost:3000/mcp"
    }
  }
}

Note : Antigravity limite le nombre total d'outils actifs. Si vous utilisez plusieurs serveurs MCP, gardez le total sous 50 outils pour des performances optimales.

Configuration générique

Ce serveur MCP est compatible avec tout client supportant le protocole MCP en mode stdio.

Paramètres de connexion :

Paramètre

Valeur

Transport

stdio

Commande

node

Arguments

["/chemin/vers/dist/index.js"]

Mode HTTP (alternatif) :

Pour les clients supportant HTTP/SSE, lancez le serveur en mode HTTP :

TRANSPORT=http PORT=3000 npm start

Puis configurez votre client avec l'URL : http://localhost:3000/mcp

Modes de transport

Le serveur supporte deux modes de communication :

Mode stdio (par défaut)

Mode standard pour une utilisation locale avec Claude Desktop :

npm start

Mode HTTP (optionnel)

Pour une utilisation en réseau ou depuis un client distant :

TRANSPORT=http PORT=3000 npm start

Variables d'environnement

Configurez le serveur via le fichier .env.local ou directement en ligne de commande :

Variable

Description

Défaut

TRANSPORT

Mode de transport (stdio ou http)

stdio

PORT

Port HTTP (mode HTTP uniquement)

3000

IGN_API_KEY

Clé API IGN pour l'endpoint AOC viticoles

-

Fichiers de configuration :

  • .env.example : Template avec toutes les variables disponibles

  • .env.local : Votre configuration locale (non versionné)

Utilisation

Une fois configuré dans Claude Desktop, vous pouvez interroger les données IGN en langage naturel. Le serveur traduira automatiquement vos requêtes en appels API appropriés.

Redémarrage après configuration

Après avoir modifié claude_desktop_config.json, redémarrez Claude Desktop pour que les changements soient pris en compte.

Projets réalisés

🍷 Analyse Territoriale de Margaux-Cantenac

Application interactive d'analyse territoriale pour la commune viticole de Margaux-Cantenac (Gironde), développée avec Claude et ce serveur MCP.

🔗 Voir la démo interactive

Fonctionnalités

L'application offre une analyse complète du territoire en 4 volets :

Module

Contenu

APIs utilisées

📍 Vue générale

Code INSEE, coordonnées WGS84, contexte viticole

ign_get_communes_by_postal_code, ign_get_administrative_limits

🏗️ Urbanisme

Plan Local d'Urbanisme avec 52 zones (A, U, N, AU)

ign_get_gpu_urbanisme

🌳 Environnement

Parc Naturel Régional du Médoc, zones ZNIEFF

ign_get_nature_areas

📐 Cadastre

Sections cadastrales, identifiants de parcelles

ign_get_cadastre_parcelles, ign_get_cadastre_communes

Technologies

  • Interface React avec navigation par onglets

  • Intégration de données IGN et INPN (Muséum National d'Histoire Naturelle)

  • Visualisation géographique (bounding box, coordonnées précises)

  • Codes couleur pour différencier les types de zones territoriales

Comment le reproduire ?

Créé une application React interactive pour analyser le territoire de la commune
de Margaux-Cantenac. Utilise les données IGN pour afficher :
- Les informations administratives
- Le zonage PLU complet
- Les zones naturelles protégées
- Les sections cadastrales

L'interface doit être organisée en onglets avec une navigation fluide.

💡 Vous avez créé un projet avec ce serveur MCP ? Partagez-le en ouvrant une issue GitHub !

Exemples détaillés

1. Recherche par code postal

Question :

Quelles communes sont associées au code postal 75001 ?

Réponse attendue :

  • Liste des communes avec code INSEE

  • Coordonnées géographiques

  • Limites administratives

Outil utilisé : ign_get_communes_by_postal_code


2. Recherche de parcelles cadastrales

Question :

Trouve les parcelles cadastrales de la commune avec le code INSEE 75101

Paramètres possibles :

  • Code INSEE de la commune

  • Section cadastrale

  • Numéro de parcelle

Outil utilisé : ign_get_cadastre_parcelles


3. Vérification du zonage d'urbanisme

Question :

Quel est le zonage PLU à ces coordonnées : {"type":"Point","coordinates":[2.35,48.85]} ?

Informations retournées :

  • Type de zone (U, AU, A, N)

  • Règlement d'urbanisme applicable

  • Restrictions de constructibilité

  • Date de mise à jour du PLU

Outil utilisé : ign_get_gpu_urbanisme


4. Zones naturelles protégées

Question :

Y a-t-il des zones Natura 2000 à proximité de ce point : {"type":"Point","coordinates":[-1.69,48.10]} ?

Types de zones retournées :

  • Sites Natura 2000 (ZSC, ZPS)

  • ZNIEFF (type I et II)

  • Parcs Nationaux et Régionaux

  • Réserves naturelles

Outil utilisé : ign_get_nature_areas


5. Registre Parcellaire Graphique (agriculture)

Question :

Quelles cultures sont déclarées sur cette parcelle agricole en 2023 ?
Géométrie : {"type":"Point","coordinates":[2.35,45.85]}

Données disponibles :

  • Type de culture

  • Surface déclarée

  • Code culture PAC

  • Année de déclaration (2010-2024)

Outil utilisé : ign_get_rpg


6. Appellations viticoles

Note : Cet endpoint nécessite une clé API IGN gratuite. Obtenez-la sur geoservices.ign.fr

Question :

Cette parcelle est-elle située dans une AOC viticole ?
Coordonnées : {"type":"Point","coordinates":[4.84,45.76]}

Informations retournées :

  • Type d'appellation (AOC, IGP, VSIG)

  • Nom de l'appellation

  • Identifiant de l'appellation

  • Géométrie de la zone

Outil utilisé : ign_get_aoc_viticoles

Configuration requise :

# Dans .env.local
IGN_API_KEY=votre_cle_api

7. Limites administratives

Question :

Dans quel département et quelle région se trouve la commune de Lyon ?

Données disponibles :

  • Limites communales

  • Contours départementaux

  • Contours régionaux

  • Codes officiels géographiques

Outil utilisé : ign_get_administrative_limits

Format des géométries

Les géométries doivent être au format GeoJSON en WGS84 (EPSG:4326) :

// Point
{"type":"Point","coordinates":[longitude, latitude]}

// Polygon
{"type":"Polygon","coordinates":[[[lon1,lat1],[lon2,lat2],[lon3,lat3],[lon1,lat1]]]}

// MultiPolygon
{"type":"MultiPolygon","coordinates":[[[[lon1,lat1],[lon2,lat2],...]],[...]]}

Limitations

Limites des API IGN

Type

Limite

Résultats max par requête

1000 (500 pour communes cadastrales)

Pagination

Disponible via _start et _limit

Projection géographique

WGS84 (EPSG:4326) uniquement

Timeout requête

30 secondes

Format de sortie

GeoJSON

Limitations fonctionnelles

  • ⚠️ Le module WFS-Geoportail est en version beta

  • Certaines données peuvent avoir un délai de mise à jour

  • Les géométries complexes peuvent nécessiter une simplification

  • Les données RPG sont disponibles de 2010 à 2024

Sources de données

Source

Données

Organisme

Mise à jour

PCI Express

Cadastre parcellaire

DGFiP

Annuelle

BD Parcellaire

Limites cadastrales

IGN

Trimestrielle

RPG

Registre Parcellaire Graphique

ASP

Annuelle

MNHN

Espaces naturels protégés

Muséum National d'Histoire Naturelle

Variable

GPU

Plans locaux d'urbanisme

Géoportail de l'Urbanisme

Continue

FranceAgriMer

Appellations viticoles

INAO

Annuelle

BAN

Base Adresse Nationale

IGN / La Poste

Hebdomadaire

Développement

Structure du projet

ign-apicarto-mcp-server/
├── src/
│   ├── index.ts          # Point d'entrée du serveur MCP
│   ├── api-client.ts     # Client HTTP pour l'API IGN
│   └── types.ts          # Types TypeScript
├── dist/                 # Fichiers compilés
├── .env.example          # Template des variables d'environnement
├── .env.local            # Configuration locale (non versionné)
├── .gitignore
├── package.json
├── tsconfig.json
└── README.md

Scripts disponibles

# Démarrer le serveur en mode développement
npm run dev

# Compiler le projet
npm run build

# Démarrer le serveur en production
npm start

# Lancer les tests (si disponibles)
npm test

# Vérifier le code
npm run lint

Contribuer

Les contributions sont les bienvenues ! Pour contribuer :

  1. Forkez le projet

  2. Créez une branche pour votre fonctionnalité (git checkout -b feature/AmazingFeature)

  3. Committez vos changements (git commit -m 'Add some AmazingFeature')

  4. Pushez vers la branche (git push origin feature/AmazingFeature)

  5. Ouvrez une Pull Request

Ajouter un nouvel outil

Pour ajouter un nouvel outil MCP :

  1. Créez un nouveau fichier dans src/tools/

  2. Définissez le schéma de l'outil avec ses paramètres

  3. Implémentez la logique d'appel à l'API IGN

  4. Enregistrez l'outil dans src/index.ts

  5. Documentez l'outil dans ce README

Dépannage

Le serveur ne démarre pas

Vérifications :

  • Node.js version 16+ est installé : node --version

  • Les dépendances sont installées : npm install

  • Le projet est compilé : npm run build

  • Le fichier dist/index.js existe

Claude Desktop ne détecte pas le serveur

Solutions :

  1. Vérifiez que le chemin dans claude_desktop_config.json est absolu et correct

  2. Redémarrez complètement Claude Desktop

  3. Vérifiez les logs de Claude Desktop :

    • macOS : ~/Library/Logs/Claude/

    • Windows : %APPDATA%\Claude\logs\

    • Linux : ~/.config/Claude/logs/

Erreurs d'API

Problèmes courants :

Erreur

Cause

Solution

Timeout

Requête trop complexe

Simplifier la géométrie ou réduire la zone

400 Bad Request

Paramètres invalides

Vérifier le format GeoJSON

404 Not Found

Données non disponibles

Vérifier les codes INSEE/postaux

500 Server Error

Problème côté IGN

Réessayer plus tard

Too many results

Plus de 1000 résultats

Ajouter des filtres ou paginer

Problèmes de géométrie

Les géométries doivent être en WGS84 (EPSG:4326) avec longitude avant latitude :

✅ Correct : {"type":"Point","coordinates":[2.35, 48.85]}
❌ Incorrect : {"type":"Point","coordinates":[48.85, 2.35]}

Performances lentes

Optimisations :

  • Utilisez des géométries simplifiées pour les grandes zones

  • Limitez le nombre de résultats avec le paramètre _limit

  • Utilisez des filtres spécifiques plutôt que des requêtes larges

  • Vérifiez votre connexion internet

Ressources

Documentation officielle

Outils utiles

Communauté

Licence

Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.

Données IGN

Les données IGN sont soumises à la Licence Ouverte v2.0.


Développé avec ❤️ pour la communauté géospatiale française

Available Tools

9 tools
ign_get_administrative_limitsGet administrative boundariesA
Read-onlyIdempotent

Query French administrative boundaries (communes, departments, regions).

This tool accesses administrative limit data from the IGN Admin Express dataset.

Args:

  • type (string): Boundary type - 'commune', 'departement', or 'region'

  • geom (string, optional): GeoJSON geometry to intersect

  • lon (number, optional): Longitude coordinate (use with lat)

  • lat (number, optional): Latitude coordinate (use with lon)

  • _limit (number): Max results (1-1000)

  • _start (number): Pagination offset

Note: Either provide geom OR (lon + lat), but not both.

Returns: GeoJSON FeatureCollection with administrative boundaries.

Examples:

  • "What commune is at this point?" -> type="commune", lon=2.35, lat=48.85

  • "What department is at this point?" -> type="departement", geom={"type":"Point",...}

  • "Get regions intersecting this polygon" -> type="region", geom=...

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesAdministrative boundary type
geomNoGeoJSON geometry string, e.g. {"type":"Point","coordinates":[2.35,48.85]}
lonNoLongitude coordinate (use with lat)
latNoLatitude coordinate (use with lon)
_limitNoMaximum number of results (1-1000)
_startNoStarting position for pagination
response_formatNoOutput format: 'markdown' for human-readable or 'json' for machine-readablemarkdown

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already provide strong behavioral hints (readOnlyHint: true, openWorldHint: true, idempotentHint: true, destructiveHint: false). The description adds valuable context by specifying the data source (IGN Admin Express dataset) and clarifying the return format (GeoJSON FeatureCollection). While it doesn't mention rate limits or authentication needs, it provides useful behavioral information beyond what annotations offer.

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?

The description is perfectly structured and front-loaded: purpose statement first, then data source, followed by parameter guidance, return format, and examples. Every sentence earns its place, with no redundant information. The examples are particularly efficient at demonstrating usage patterns.

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

Completeness5/5

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

For a query tool with comprehensive annotations (readOnly, openWorld, idempotent) and 100% schema coverage, the description provides excellent context. It explains the data source, clarifies parameter dependencies, specifies the return format (GeoJSON FeatureCollection), and includes practical examples. The absence of an output schema is compensated by the clear return format description.

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

Parameters4/5

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

With 100% schema description coverage, the baseline is 3. The description adds significant value by explaining parameter relationships ('Either provide geom OR (lon + lat), but not both') and providing concrete examples showing how parameters work together. It also clarifies the purpose of the 'type' parameter by listing the three boundary types, though this information is already in the schema's enum.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Query French administrative boundaries (communes, departments, regions)' and specifies it accesses data from the IGN Admin Express dataset. This distinguishes it from sibling tools like ign_get_communes_by_postal_code or ign_get_cadastre_communes by focusing specifically on administrative boundaries rather than postal codes or cadastral data.

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

Usage Guidelines5/5

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

The description provides explicit usage guidance: 'Either provide geom OR (lon + lat), but not both' and includes three concrete examples showing when to use different parameter combinations. The examples clearly demonstrate different use cases (point queries vs. intersection queries) with specific parameter configurations.

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

ign_get_aoc_viticolesGet wine appellations (AOC/IGP)A
Read-onlyIdempotent

Query wine appellation zones (AOC, IGP, VSIG) in France.

This tool accesses wine appellation data maintained by FranceAgriMer based on INAO data.

Args:

  • geom (string): GeoJSON geometry to intersect (required)

  • apikey (string, optional): IGN API key (required for this endpoint, get one at https://geoservices.ign.fr/)

  • source (string): Data source - 'prd' (production) or 'qlf' (qualification). Default: 'prd'

Returns: GeoJSON FeatureCollection with appellation zones including:

  • appellation: Appellation name

  • idapp: Appellation ID

  • type: AOC/IGP/VSIG

Examples:

  • "What wine appellations cover this vineyard?" -> geom={"type":"Point",...}, apikey="your-key"

  • "Find AOC zones in Bordeaux region" -> geom={"type":"Polygon",...}, apikey="your-key"

Note: This endpoint requires an IGN API key. Get one for free at https://geoservices.ign.fr/

ParametersJSON Schema
NameRequiredDescriptionDefault
geomYesGeoJSON geometry (required)
apikeyNoIGN API key (required - get one at https://geoservices.ign.fr/)
sourceNoData source: 'prd' (production) or 'qlf' (qualification)prd
response_formatNoOutput format: 'markdown' for human-readable or 'json' for machine-readablemarkdown

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate read-only, open-world, idempotent, and non-destructive behavior. The description adds valuable context beyond this: it discloses the data source (FranceAgriMer based on INAO data), notes that an IGN API key is required (with a link to obtain one), and specifies the return format (GeoJSON FeatureCollection with specific attributes). This enriches the agent's understanding of authentication needs and output structure.

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?

The description is well-structured and appropriately sized. It starts with a clear purpose statement, followed by data source info, a concise Args section, Returns details, practical examples, and a necessary note about API key requirements. Each sentence adds value without redundancy, making it efficient and easy to parse.

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

Completeness5/5

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

Given the tool's complexity (spatial query with authentication), the description is complete. It covers purpose, data source, parameters (with schema doing heavy lifting), return format, examples, and authentication requirements. Although there is no output schema, the description adequately explains the GeoJSON FeatureCollection structure, making it sufficient for agent use.

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%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema: it briefly mentions the 'geom' parameter as 'GeoJSON geometry to intersect' and notes the API key requirement, but does not provide additional syntax or format details. This meets the baseline for high schema coverage.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Query wine appellation zones (AOC, IGP, VSIG) in France.' It specifies the exact resource (wine appellations), geographic scope (France), and types (AOC/IGP/VSIG). This distinguishes it from sibling tools that handle administrative limits, cadastre, communes, etc., making the purpose specific and well-differentiated.

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool through examples ('What wine appellations cover this vineyard?' and 'Find AOC zones in Bordeaux region'), which implicitly guides usage for spatial queries about wine appellations. However, it does not explicitly state when NOT to use it or name alternatives among sibling tools, though the examples help infer appropriate scenarios.

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

ign_get_cadastre_communesGet cadastral commune boundariesA
Read-onlyIdempotent

Get commune (municipality) boundaries from the cadastral database.

Args:

  • geom (string, optional): GeoJSON geometry to intersect

  • code_insee (string, optional): INSEE commune code

  • code_dep (string, optional): Department code

  • _limit (number): Max results (default 500)

  • _start (number): Pagination offset

Returns: GeoJSON FeatureCollection with commune boundaries.

ParametersJSON Schema
NameRequiredDescriptionDefault
geomNoGeoJSON geometry string, e.g. {"type":"Point","coordinates":[2.35,48.85]}
code_inseeNo
code_depNo
_limitNoMaximum number of results (1-1000)
_startNoStarting position for pagination
response_formatNoOutput format: 'markdown' for human-readable or 'json' for machine-readablemarkdown

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true, destructiveHint=false, openWorldHint=true, and idempotentHint=true. The description adds valuable context about the return format ('GeoJSON FeatureCollection'), pagination behavior (through _limit and _start parameters), and the default response format (implied through the Returns section), which goes beyond what annotations provide.

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?

The description is well-structured with clear sections (purpose, Args, Returns) and uses bullet points for readability. It's appropriately sized at 5 sentences, though the Args section could be more concise by integrating parameter descriptions rather than listing them separately.

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

Completeness4/5

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

Given the tool's moderate complexity (6 parameters, no output schema), the description provides good coverage: clear purpose, parameter listing, return format specification, and pagination context. With annotations covering safety and idempotency, and the description adding return format details, it's mostly complete though could benefit from more usage guidance relative to siblings.

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 67% (4 of 6 parameters have descriptions). The description adds minimal parameter semantics beyond the schema - it lists parameters but doesn't provide additional meaning about how they interact (e.g., that geom and code_insee are alternative filtering methods). The schema already documents geom, _limit, _start, and response_format well, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the specific action ('Get commune boundaries') and resource ('from the cadastral database'), distinguishing it from siblings like 'ign_get_administrative_limits' or 'ign_get_communes_by_postal_code' by specifying it's cadastral data rather than administrative or postal-based data.

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

Usage Guidelines3/5

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

The description implies usage through parameter descriptions (e.g., using geom for intersection, code_insee for specific communes), but doesn't explicitly state when to use this tool versus alternatives like 'ign_get_administrative_limits' or 'ign_get_communes_by_postal_code'. No explicit when-not or alternative guidance is provided.

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

ign_get_cadastre_parcellesGet cadastral parcelsA
Read-onlyIdempotent

Search for cadastral parcels (land plots) in France.

This tool queries the IGN API Carto cadastre module to find parcels by geometry intersection or administrative codes. Useful for property identification, urban planning, and administrative procedures.

Args:

  • geom (string, optional): GeoJSON geometry to intersect

  • code_insee (string, optional): INSEE commune code (5 digits)

  • code_dep (string, optional): Department code (2-3 digits)

  • code_com (string, optional): Commune code within department (3 digits)

  • section (string, optional): Cadastral section (2 characters)

  • numero (string, optional): Parcel number

  • source (string): Data source - 'pci' (PCI Express, recommended) or 'bdparcellaire'

  • _limit (number): Max results (1-1000)

  • _start (number): Pagination offset

Returns: GeoJSON FeatureCollection with parcel geometries and properties including:

  • numero: Parcel number

  • feuille: Sheet number

  • section: Cadastral section

  • code_dep, code_com, com_abs, code_arr

  • geometry: MultiPolygon

Examples:

  • "Find parcels in commune 75101" -> code_insee="75101"

  • "Get parcel AB-0001 in section AB" -> section="AB", numero="0001"

ParametersJSON Schema
NameRequiredDescriptionDefault
geomNoGeoJSON geometry string, e.g. {"type":"Point","coordinates":[2.35,48.85]}
code_inseeNoINSEE commune code (5 digits)
code_depNoDepartment code
code_comNoCommune code within department
sectionNoCadastral section (2 chars)
numeroNoParcel number
sourceNoData source: 'pci' (recommended) or 'bdparcellaire'pci
_limitNoMaximum number of results (1-1000)
_startNoStarting position for pagination
response_formatNoOutput format: 'markdown' for human-readable or 'json' for machine-readablemarkdown

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true, destructiveHint=false, openWorldHint=true, and idempotentHint=true, covering safety and idempotency. The description adds valuable context about the API source ('IGN API Carto cadastre module'), data source options with a recommendation ('pci' recommended), and pagination behavior (via _limit and _start parameters). It doesn't contradict annotations and enhances understanding of the tool's operational context.

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?

The description is well-structured with clear sections (purpose, usage context, Args, Returns, Examples), each sentence adds value, and there's no redundancy. It efficiently conveys necessary information without verbosity, making it easy to scan and understand.

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

Completeness5/5

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

Given the tool's complexity (10 parameters, geographic data querying), the description provides comprehensive context: purpose, usage scenarios, parameter explanations with examples, return format details (GeoJSON FeatureCollection with specific properties), and data source guidance. Even without an output schema, the Returns section adequately describes the response structure and content.

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

Parameters4/5

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

With 100% schema description coverage, the schema already documents all parameters thoroughly. The description adds meaningful context by grouping parameters logically (geometry intersection vs. administrative codes), providing real-world examples that map use cases to parameter combinations, and explaining the Returns section in detail with property descriptions. This goes beyond the schema's technical definitions to show how parameters work together.

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

Purpose5/5

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

The description clearly states the specific action ('search for cadastral parcels'), resource ('in France'), and method ('queries the IGN API Carto cadastre module'). It distinguishes this tool from siblings by specifying it's for parcels rather than administrative limits, communes, or other geographic features, making its purpose unambiguous and differentiated.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool ('useful for property identification, urban planning, and administrative procedures') and provides concrete examples with parameter mappings (e.g., 'Find parcels in commune 75101' -> code_insee='75101'). This gives clear guidance on appropriate use cases and how to structure queries.

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

ign_get_communes_by_postal_codeGet communes by postal codeA
Read-onlyIdempotent

Retrieve French communes (municipalities) associated with a postal code.

This tool queries the IGN API Carto codes-postaux module to find all communes that share a given postal code. In France, a postal code can cover multiple communes, and this tool returns all of them.

Args:

  • code_postal (string): French postal code (5 digits, e.g. "75001", "69000")

  • response_format ('markdown' | 'json'): Output format (default: 'markdown')

Returns: For JSON format: [ { "codePostal": "75001", "codeCommune": "75101", "nomCommune": "Paris 1er Arrondissement", "libelleAcheminement": "PARIS" } ]

Examples:

  • "What communes are in postal code 75001?" -> code_postal="75001"

  • "Find cities for zip 69000" -> code_postal="69000"

ParametersJSON Schema
NameRequiredDescriptionDefault
code_postalYesFrench postal code (5 digits)
response_formatNoOutput format: 'markdown' for human-readable or 'json' for machine-readablemarkdown

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, and idempotentHint=true. The description adds valuable context beyond annotations: it specifies the API source (IGN API Carto codes-postaux module), explains the French postal code system behavior, and describes the return format options. No contradiction with annotations exists.

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?

The description is well-structured and appropriately sized. It starts with a clear purpose statement, adds necessary context about the French postal system, then provides structured sections for Args, Returns, and Examples. Every sentence adds value without redundancy.

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

Completeness5/5

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

For a read-only query tool with comprehensive annotations and 100% schema coverage, the description provides excellent completeness. It explains the tool's purpose, source API, French postal code nuance, parameter usage with examples, and return format details. The lack of an output schema is compensated by the detailed Returns section showing the JSON structure.

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?

With 100% schema description coverage, the schema already fully documents both parameters (code_postal pattern and response_format enum with defaults). The description adds minimal value beyond the schema: it provides example postal codes ('75001', '69000') and clarifies that response_format controls output format. This meets the baseline 3 for high schema coverage.

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

Purpose5/5

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

The description clearly states the specific action ('Retrieve French communes associated with a postal code'), identifies the resource ('communes/municipalities'), and distinguishes from siblings by specifying it queries the 'Carto codes-postaux module' for postal code to commune mapping. It explicitly mentions the French context where one postal code can cover multiple communes, which differentiates it from tools like administrative limits or cadastre queries.

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

Usage Guidelines4/5

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

The description provides clear context about when to use this tool: for finding all communes that share a given French postal code. It explains the French postal system nuance (one code can cover multiple communes). However, it doesn't explicitly state when NOT to use it or name specific alternatives among the sibling tools for different types of geographic queries.

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

ign_get_gpu_urbanismeGet urban planning data (GPU)A
Read-onlyIdempotent

Query the Géoportail de l'Urbanisme (GPU) for urban planning documents and zones.

This tool accesses French urban planning data including local urban plans (PLU), zoning, and public utility easements.

Available layers:

  • municipality: Check if commune is under RNU (national regulation)

  • document: Urban planning documents (PLU, PLUi, CC)

  • zone-urba: Urban zones (U, AU, A, N)

  • secteur-cc: Community map sectors

  • prescription-surf/lin/pct: Surface/linear/point prescriptions

  • info-surf/lin/pct: Informative zones

  • assiette-sup-s/l/p: Public utility easement footprints

  • generateur-sup-s/l/p: Public utility easement generators

Args:

  • layer (string): GPU layer to query

  • geom (string, optional): GeoJSON geometry to intersect

  • partition (string, optional): Document partition ID

  • categorie (string, optional): SUP category filter

  • _limit (number): Max results

  • _start (number): Pagination offset

Returns: GeoJSON FeatureCollection with urban planning data.

Examples:

  • "Is this commune under RNU?" -> layer="municipality", geom=...

  • "What's the zoning at this address?" -> layer="zone-urba", geom=...

  • "Find building prescriptions here" -> layer="prescription-surf", geom=...

ParametersJSON Schema
NameRequiredDescriptionDefault
layerYesGPU layer to query
geomNoGeoJSON geometry string, e.g. {"type":"Point","coordinates":[2.35,48.85]}
partitionNoDocument partition ID
categorieNoSUP category filter
_limitNoMaximum number of results (1-1000)
_startNoStarting position for pagination
response_formatNoOutput format: 'markdown' for human-readable or 'json' for machine-readablemarkdown

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover key traits (read-only, open-world, idempotent, non-destructive), so the bar is lower. The description adds valuable context beyond annotations by listing available layers (e.g., municipality, zone-urba) and specifying the return type (GeoJSON FeatureCollection), which helps the agent understand data structure and scope. It does not mention rate limits or authentication needs, but with annotations provided, this is sufficient for a high score.

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?

The description is well-structured and appropriately sized, with clear sections (overview, available layers, args, returns, examples). Every sentence adds value, such as explaining data types or providing practical examples. It could be slightly more concise by integrating the layer list into the schema context, but overall it is efficient and front-loaded with key information.

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

Completeness5/5

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

Given the complexity (7 parameters, 100% schema coverage, rich annotations), the description is complete enough. It covers purpose, data scope, parameters, return format, and usage examples. Although there is no output schema, the description specifies the return type (GeoJSON FeatureCollection), which compensates adequately. The annotations provide safety and behavioral context, making this description comprehensive for the tool's needs.

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%, so the baseline is 3. The description adds minimal parameter semantics beyond the schema: it lists layer options and provides examples linking parameters to use cases (e.g., layer='municipality' for RNU checks). However, it does not explain parameter interactions or provide additional syntax details, staying close to what the schema already documents.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Query the Géoportail de l'Urbanisme (GPU) for urban planning documents and zones.' It specifies the exact resource (French urban planning data) and distinguishes from siblings by focusing on urban planning rather than administrative limits, cadastre, or other geographic data. The title reinforces this with 'Get urban planning data (GPU).'

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool through examples (e.g., 'Is this commune under RNU?' or 'What's the zoning at this address?'), which implicitly guides usage. However, it does not explicitly state when to use alternatives or exclude specific scenarios, and it does not mention sibling tools like ign_get_cadastre_parcelles for comparison, leaving some guidance gaps.

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

ign_get_nature_areasGet protected natural areasA
Read-onlyIdempotent

Query protected natural areas in France (Natura 2000, ZNIEFF, national parks, etc.).

Available layers:

  • natura2000-oiseaux: Natura 2000 bird directive sites

  • natura2000-habitat: Natura 2000 habitat directive sites

  • rnc: Corsican natural reserves

  • rnn: National natural reserves

  • rncf: Hunting and wildlife natural reserves

  • pn: National parks

  • pnr: Regional natural parks

  • znieff1: ZNIEFF type 1 (remarkable ecological areas)

  • znieff2: ZNIEFF type 2 (large natural ensembles)

  • sic: Sites of Community Importance

  • zps: Special Protection Areas

Args:

  • layer (string): Nature layer to query

  • geom (string, optional): GeoJSON geometry to intersect

  • id_mnhn (string, optional): MNHN identifier

  • _limit (number): Max results

  • _start (number): Pagination offset

Returns: GeoJSON FeatureCollection with protected area boundaries and attributes.

Examples:

  • "Find Natura 2000 sites at this location" -> layer="natura2000-habitat", geom=...

  • "Get ZNIEFF zones near Paris" -> layer="znieff1", geom=...

ParametersJSON Schema
NameRequiredDescriptionDefault
layerYesNature layer to query
geomNoGeoJSON geometry string, e.g. {"type":"Point","coordinates":[2.35,48.85]}
id_mnhnNoMNHN (Natural History Museum) identifier
_limitNoMaximum number of results (1-1000)
_startNoStarting position for pagination
response_formatNoOutput format: 'markdown' for human-readable or 'json' for machine-readablemarkdown

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover read-only, open-world, idempotent, and non-destructive characteristics. The description adds valuable context about the specific geographic scope (France), available data layers with detailed explanations, and the return format (GeoJSON FeatureCollection). This goes beyond what annotations provide without contradicting them.

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?

The description is well-structured and front-loaded with the core purpose, followed by organized sections for layers, arguments, returns, and examples. Every sentence serves a clear purpose with zero wasted content, making it easy for an agent to parse and understand quickly.

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

Completeness4/5

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

Given the tool's moderate complexity (6 parameters, geographic queries) and rich annotations, the description provides good contextual coverage. It explains the geographic scope, available data layers, and return format. The main gap is the lack of an output schema, but the description compensates by specifying the return type as GeoJSON FeatureCollection.

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?

With 100% schema description coverage, the baseline is 3. The description adds minimal parameter semantics beyond the schema - it lists available layers with brief explanations and provides example usage patterns, but doesn't significantly enhance understanding of parameter interactions or edge cases beyond what's already documented in the schema.

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

Purpose5/5

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

The description clearly states the specific action ('Query protected natural areas in France') and resource types (Natura 2000, ZNIEFF, national parks, etc.). It distinguishes this tool from sibling tools by focusing exclusively on natural area data rather than administrative, cadastral, or other geographic data types.

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

Usage Guidelines3/5

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

The description provides implied usage through the examples showing when to use specific layer parameters, but lacks explicit guidance on when to choose this tool versus alternatives. No sibling tool comparisons or exclusion criteria are provided, leaving the agent to infer based on tool names alone.

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

ign_get_rpgGet agricultural parcels (RPG)A
Read-onlyIdempotent

Query the Registre Parcellaire Graphique (RPG) for agricultural parcel information.

The RPG contains agricultural land use data declared by farmers for CAP (Common Agricultural Policy) subsidies.

Two versions exist:

  • V1 (2010-2014): Anonymous farm blocks (îlots)

  • V2 (2015+): Graphic parcels with crop information

Args:

  • annee (number): Year of data (2010-2024)

  • geom (string): GeoJSON geometry (required)

  • code_cultu (string, optional): Crop culture code filter

  • _limit (number): Max results

  • _start (number): Pagination offset

Returns: GeoJSON FeatureCollection with:

  • V1: num_ilot, commune, surf_decla, code_cultu, nom_cultu

  • V2: id_parcel, surf_parc, code_cultu, code_group, culture_d1, culture_d2

Examples:

  • "Find crops at this location in 2023" -> annee=2023, geom={"type":"Point",...}

ParametersJSON Schema
NameRequiredDescriptionDefault
anneeYesYear (2010-2024)
geomYesGeoJSON geometry (required)
code_cultuNoCrop culture code
_limitNoMaximum number of results (1-1000)
_startNoStarting position for pagination
response_formatNoOutput format: 'markdown' for human-readable or 'json' for machine-readablemarkdown

TDQS

A4.7/5.0
Behavior4/5

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

The description adds valuable behavioral context beyond what annotations provide. While annotations already indicate read-only, open-world, idempotent, and non-destructive operations, the description explains the data source (RPG for CAP subsidies), version differences (V1 vs V2 with different data structures), and return format details (GeoJSON FeatureCollection with specific fields per version). This provides important operational context that annotations alone don't cover.

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?

The description is perfectly structured and concise. It starts with the core purpose, provides essential context about the RPG and version differences, then clearly lists parameters and returns with specific examples. Every sentence earns its place, and the information is front-loaded with the most important details first. The example at the end provides practical guidance without redundancy.

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

Completeness5/5

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

Given the tool's complexity (6 parameters, version differences, geographic queries) and the absence of an output schema, the description provides excellent completeness. It explains the data source, version differences, parameter purposes, return format details, and includes a practical example. The combination of annotations and description gives the agent everything needed to use this tool effectively in the context of its sibling tools.

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

Parameters4/5

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

With 100% schema description coverage, the baseline would be 3, but the description adds significant semantic value. It explains the significance of the 'annee' parameter in relation to data versions (V1 vs V2), provides context for 'code_cultu' as a crop culture code filter, and clarifies that 'geom' must be a GeoJSON geometry. The description also explains what the return data contains for each version, which helps understand parameter implications.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Query the Registre Parcellaire Graphique (RPG) for agricultural parcel information.' It specifies the exact resource (RPG agricultural land use data) and distinguishes it from siblings by focusing on agricultural parcels rather than administrative limits, cadastre, or other geographic data. The description provides context about CAP subsidies and version differences, making the purpose highly specific and differentiated.

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

Usage Guidelines5/5

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

The description provides explicit usage guidance by explaining when to use different versions (V1 for 2010-2014, V2 for 2015+), which helps the agent select appropriate parameters. It also distinguishes this tool from siblings by focusing specifically on agricultural parcel data, unlike administrative or cadastral tools. The example at the end further clarifies typical usage scenarios.

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

ign_wfs_geoportailQuery WFS Geoportail layersA
Read-onlyIdempotent

Generic query interface for Geoportail WFS layers.

This tool provides access to various WFS layers from the IGN Geoportail. It allows querying any WFS layer by intersection with a geometry.

Args:

  • source (string): WFS data source name (e.g., "BDTOPO_V3:commune", "LIMITES_ADMINISTRATIVES_EXPRESS.LATEST:commune")

  • geom (string): GeoJSON geometry to intersect (required, in WGS84/EPSG:4326)

  • _limit (number): Max results (1-1000)

  • _start (number): Pagination offset

Returns: GeoJSON FeatureCollection with features from the requested layer.

Note: Only WGS84 (EPSG:4326) geometries are supported.

Examples:

  • "Get BDTOPO communes at this point" -> source="BDTOPO_V3:commune", geom={"type":"Point","coordinates":[2.35,48.85]}

  • "Find buildings in this area" -> source="BDTOPO_V3:batiment", geom=...

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceYesWFS data source name (e.g., 'BDTOPO_V3:commune')
geomYesGeoJSON geometry (required, in WGS84/EPSG:4326)
_limitNoMaximum number of results (1-1000)
_startNoStarting position for pagination
response_formatNoOutput format: 'markdown' for human-readable or 'json' for machine-readablemarkdown

TDQS

A4.2/5.0
Behavior4/5

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

The description adds valuable behavioral context beyond annotations: it specifies the coordinate system limitation ('Only WGS84 geometries are supported'), describes the return format ('GeoJSON FeatureCollection'), and provides practical examples. While annotations cover safety (readOnly, non-destructive), the description adds implementation details that help the agent use the tool correctly.

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?

The description is well-structured with clear sections (purpose, args, returns, notes, examples) and front-loads the core functionality. While comprehensive, some redundancy exists between the description and schema (e.g., parameter descriptions), making it slightly less concise than ideal.

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

Completeness5/5

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

For a query tool with comprehensive annotations (readOnly, openWorld, idempotent) and full schema coverage, the description provides excellent contextual completeness. It explains the tool's generic nature, coordinate system constraints, return format, and includes practical examples - giving the agent everything needed to use this tool effectively.

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?

With 100% schema description coverage, the baseline is 3. The description adds minimal additional parameter semantics beyond what's in the schema - it repeats the source and geom descriptions and provides examples, but doesn't significantly enhance understanding of parameter usage or relationships.

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

Purpose5/5

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

The description clearly states the tool's purpose as a 'generic query interface for Geoportail WFS layers' that 'allows querying any WFS layer by intersection with a geometry.' It distinguishes itself from sibling tools by being generic rather than specific to particular datasets like administrative limits or cadastre parcels.

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool ('querying any WFS layer by intersection with a geometry') and includes a note about coordinate system limitations. However, it doesn't explicitly state when NOT to use it or provide direct alternatives among the sibling tools for specific use cases.

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

TDQS

A4.2/5.0
Disambiguation4/5

Most tools have distinct purposes targeting specific French geospatial datasets (e.g., administrative boundaries, cadastral parcels, wine appellations, urban planning), with clear separation by domain. However, some overlap exists between ign_get_administrative_limits and ign_get_cadastre_communes (both provide commune boundaries), and ign_wfs_geoportail is a generic tool that could duplicate functionality of others, potentially causing confusion.

Naming Consistency5/5

All tool names follow a consistent 'ign_get_*' or 'ign_wfs_*' pattern with snake_case, clearly indicating the server (IGN) and action (get/wfs). The naming is highly predictable and uniform across all nine tools, making it easy for agents to understand the pattern and purpose.

Tool Count5/5

With 9 tools, the count is well-scoped for a French geospatial API server, covering diverse datasets like administrative limits, cadastre, wine appellations, urban planning, and natural areas. Each tool serves a specific niche, and the number is neither too thin nor overwhelming for the domain.

Completeness4/5

The toolset provides comprehensive coverage for querying French geospatial data, including administrative, cadastral, agricultural, urban, and environmental layers. Minor gaps exist, such as no explicit tools for updating or deleting data (likely read-only by design) and some redundancy with the generic WFS tool, but core query workflows are well-supported.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Provides spatial context and geographic data access for LLMs through France's Géoplateforme services, including geocoding, altitude queries, administrative boundaries, cadastral data, and vector data exploration.
    10
    19
    26
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    France Data MCP lets AI agents query, cross-reference and automatically enrich multiple French public registries through a unified MCP interface. France Data MCP provides a French territorial intelligence layer designed for multi-source reasoning and agentic orchestration.
    36
    120
    3
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables discovery and inspection of French public open data on data.gouv.fr, including datasets, resources, organizations, and dataservices via natural language.
    9
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/julienkalamon/ign-apicarto-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server