GLPI MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@GLPI MCPcreate a high-priority ticket for a broken printer in accounting"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
GLPI MCP
Déploiement distant : Render gratuit avec MCP Streamable HTTP authentifié.
Français
Serveur MCP (Model Context Protocol) permettant à un assistant IA — comme Claude — d'interagir directement avec votre instance GLPI via son API REST.
Compatible GLPI 10 (endpoint apirest.php) et GLPI 11 (endpoint api.php/v1).
Une fois configuré, Claude peut consulter, créer et mettre à jour des tickets, ajouter des suivis et des tâches, poster des solutions, gérer la base de connaissances, tenir le registre des fournisseurs, contacts et contrats, et produire des statistiques, le tout en langage naturel depuis votre conversation.
Prérequis
1. GLPI
GLPI 10.x ou 11.x (l'API REST est activée par défaut)
L'API REST doit être activée : Configuration → Générale → API → Activer l'API Rest → Oui
Un App-Token créé dans GLPI : Configuration → Générale → API → Ajouter un client API
Un User-Token associé à votre compte : Mon profil → API → Régénérer
⚠️ Le compte associé au User-Token doit avoir les droits suffisants sur les tickets dans GLPI (lecture, écriture, suppression selon l'usage souhaité).
2. Python
Python 3.12 ou supérieur
uv (recommandé)
# Vérifier la version Python
python --version
# Installer uv si nécessaire
pip install uv3. Claude Desktop
Claude Desktop installé sur votre machine
Un compte Claude avec accès aux intégrations MCP (plan Pro ou supérieur)
Related MCP server: GLPI MCP
Installation
1. Cloner le dépôt
git clone https://github.com/svtica/glpi-mcp.git
cd glpi-mcp2. Installer les dépendances
uv syncConfiguration (par utilisateur)
Le serveur lit ses credentials depuis un fichier config.json situé dans le même dossier que server.py. Ce fichier est individuel à chaque utilisateur et ne doit jamais être versionné (il est dans .gitignore).
Créer votre config.json
Copiez le fichier exemple et renseignez vos valeurs :
cp config.example.json config.jsonLes valeurs doivent être encodées en base64 :
PowerShell :
[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("https://glpi.monentreprise.ca"))Linux / macOS :
echo -n "https://glpi.monentreprise.ca" | base64Renseignez ensuite les champs dans config.json :
Champ | Description |
| URL de base de votre instance GLPI (sans |
| App-Token créé dans la configuration API GLPI |
| User-Token de votre compte GLPI |
| Langue des libellés : |
| Version GLPI : |
| Validation du certificat TLS de GLPI : |
Vous pouvez aussi utiliser des variables d'environnement (
GLPI_URL,GLPI_APP_TOKEN,GLPI_USER_TOKEN,GLPI_LANG,GLPI_VERSION,GLPI_VERIFY_TLS) à la place du fichierconfig.json.
⚠️
VERIFY_TLSvautfalsepar défaut, ce qui désactive la validation du certificat de votre instance GLPI. C'est le réglage prévu pour un GLPI intranet derrière un certificat auto-signé ou une AC privée absente du magasincertifide Python. Passez àtruedès que l'AC interne est distribuée àcertifi: sur un GLPI accessible hors du réseau interne, laisserfalseexpose la connexion — et donc vos jetons d'API — à une interception.
Versions GLPI supportées
Version | Endpoint API | Authentification |
GLPI 10 |
| App-Token + User-Token → Session-Token |
GLPI 11 |
| App-Token + User-Token → Session-Token (même mécanisme) |
Le champ GLPI_VERSION détermine quel préfixe d'endpoint est utilisé. Les deux versions utilisent la même authentification par session (initSession). Tous les outils sont compatibles avec les deux versions.
Intégration avec Claude Desktop
Méthode 1 — Claude Extensions (recommandée)
Copiez le contenu du projet dans votre dossier Claude Extensions :
%APPDATA%\Claude\Claude Extensions\ant.dir.svtica.glpi-mcp\Créez-y votre config.json personnel avec vos credentials (voir section précédente).
Le dossier doit contenir un fichier manifest.json :
{
"manifest_version": "0.2",
"name": "GLPI-MCP",
"version": "0.1.0",
"description": "Serveur MCP pour l'integration GLPI",
"author": { "name": "Votre Nom", "url": "" },
"server": {
"type": "python",
"entry_point": "server.py",
"mcp_config": {
"command": "uv",
"args": ["--directory", "${__dirname}", "run", "python", "server.py"]
}
}
}Redémarrez Claude Desktop. Chaque utilisateur de la machine copie ses propres fichiers dans son dossier %APPDATA% avec son propre config.json.
Méthode 2 — claude_desktop_config.json (manuelle)
Ouvrez le fichier de configuration de Claude Desktop :
Windows :
%APPDATA%\Claude\claude_desktop_config.jsonmacOS :
~/Library/Application Support/Claude/claude_desktop_config.json
Ajoutez la section mcpServers :
Windows
{
"mcpServers": {
"glpi": {
"command": "uv",
"args": [
"--directory",
"C:\\Chemin\\vers\\glpi-mcp",
"run",
"python",
"server.py"
]
}
},
"preferences": {
"coworkScheduledTasksEnabled": false,
"sidebarMode": "code"
}
}macOS / Linux
{
"mcpServers": {
"glpi": {
"command": "uv",
"args": [
"--directory",
"/chemin/vers/glpi-mcp",
"run",
"python",
"server.py"
]
}
}
}⚠️ Assurez-vous que le JSON est valide — une accolade ou une virgule manquante suffit à empêcher Claude Desktop de charger la configuration. Utilisez un validateur JSON si nécessaire.
Redémarrez Claude Desktop. Si la configuration est correcte, une icône 🔌 apparaîtra dans la barre d'outils de Claude indiquant que le serveur MCP est connecté.
Outils disponibles
🔐 Session
Outil | Description |
| Ferme proprement la session GLPI active |
🎫 Tickets
Outil | Description |
| Liste les tickets avec pagination et filtres (statut, type) |
| Détail complet d'un ticket avec libellés lisibles |
| Recherche avancée par mots-clés, statut, type, catégorie, assigné |
| Crée un nouveau ticket |
| Modifie les champs d'un ticket existant |
| Supprime un ticket |
| Lie deux tickets entre eux (lié, doublon, enfant, parent) |
| Liste tous les liens d'un ticket |
| Fusionne des tickets source vers un ticket cible (copie suivis, lie comme doublon, ferme les sources) |
💬 Suivis
Outil | Description |
| Liste tous les suivis d'un ticket |
| Détail d'un suivi |
| Ajoute un suivi (public ou privé) |
| Modifie un suivi existant (contenu, visibilité) |
| Supprime un suivi — destructif, retire la pièce de la piste d'audit |
✅ Tâches
Outil | Description |
| Liste les tâches d'un ticket |
| Crée une tâche sur un ticket |
| Modifie une tâche (statut, durée, assigné) |
| Supprime une tâche |
💡 Solutions
Outil | Description |
| Lit la solution d'un ticket |
| Poste une solution (clôture le ticket selon la config GLPI) |
📊 Statistiques
Outil | Description |
| Nombre de tickets par statut |
| Répartition Incidents / Demandes de service |
| Tickets ouverts par priorité |
| Nombre de tickets par catégorie ITIL |
| Tickets par technicien assigné |
| Délai moyen de résolution des tickets |
| Tickets en retard par rapport au SLA |
📚 Base de connaissances
Outil | Description |
| Liste les articles avec pagination. Si |
| Détail complet d'un article |
| Recherche par mots-clés (titre par défaut ; passer |
| Crée un nouvel article (titre, contenu HTML, catégorie, FAQ) |
| Met à jour un article existant |
| Liste les catégories de la base de connaissances |
| Lit les règles de visibilité d'un article (profils, groupes, utilisateurs, entités) |
| Ajoute un profil à la visibilité d'un article |
| Ajoute un groupe à la visibilité d'un article |
| Modifie une règle de visibilité par profil existante |
| Modifie une règle de visibilité par groupe existante |
Note : La suppression de règles de visibilité n'est pas exposée volontairement afin de conserver un historique des procédures même obsolètes.
📋 Référentiels
Outil | Description |
| Liste les catégories ITIL disponibles |
| Liste les utilisateurs GLPI |
| Liste les groupes GLPI |
🏢 Fournisseurs, contacts et contrats
Outil | Description |
| Liste les fournisseurs (filtre |
| Crée un fournisseur ( |
| Crée un contact ; rattachement optionnel à un fournisseur via |
| Crée un contrat ; rattachement optionnel à un fournisseur via |
| Met à jour un fournisseur ( |
| Met à jour un contact |
| Met à jour un contrat |
| Met un fournisseur à la corbeille ; |
| Met un contact à la corbeille ; |
| Met un contrat à la corbeille ; |
Note :
list_suppliersfiltre sur les fournisseurs actifs par défaut. Passeronly_active=Falsepour inclure les fournisseurs désactivés.
Note : Pour
create_contract, les champsduration,notice,periodicityetbillings'expriment en mois (convention GLPI), etbegin_dateau formatAAAA-MM-JJ.
Note : Quand
supplier_idest fourni, l'entrée de liaison (Contact_Supplier/Contract_Supplier) est créée dans un second appel et son résultat est retourné sous la clé_supplier_link. Si la création du contact ou du contrat échoue, aucune liaison n'est tentée.
⚠️ Suppression — corbeille par défaut, purge sur demande. Sans argument,
delete_*place l'élément à la corbeille GLPI (is_deleted = 1) : il reste rattaché à ses contrats, contacts, matériels et tickets, et se restaure avec l'outilupdate_*correspondant et{"is_deleted": 0}. Avecpurge=True, la suppression est définitive et irréversible et casse ces rattachements. Réserver la purge aux doublons et aux saisies erronées.
Exemples d'utilisation avec Claude
« Montre-moi tous les incidents ouverts en haute priorité »
« Crée un ticket de demande de service pour l'installation d'Adobe Acrobat pour Marie Tremblay »
« Ajoute un suivi sur le ticket #4521 pour informer l'utilisateur que le problème est en cours d'investigation »
« Fusionne les tickets #4530 et #4531 vers le ticket #4521 »
« Lie le ticket #4530 au ticket #4521 comme doublon »
« Quelles sont les statistiques de tickets par statut ? »
« Quel est le délai moyen de résolution des tickets ? »
« Montre-moi les tickets en retard par rapport au SLA »
« Cherche dans la base de connaissances une solution pour les problèmes VPN »
« Qui peut voir l'article #120 de la base de connaissances ? »
« Ajoute le groupe Techniciens à la visibilité de l'article #120 »
« Quels fournisseurs avons-nous pour la téléphonie ? »
« Ajoute Acme Télécom au registre des fournisseurs, puis crée le contrat d'entretien CT-2026-014 qui débute le 1er avril pour 36 mois »
« Désactive le fournisseur Acme Télécom — on ne fait plus affaire avec eux, mais garde l'historique des contrats »
« Clôture le ticket #4102 avec comme solution : redémarrage du service résolvant le problème »
Mappings de référence
Statuts
Code | Libellé |
1 | Nouveau |
2 | En cours (attribué) |
3 | En cours (planifié) |
4 | En attente |
5 | Résolu |
6 | Clos |
Types
Code | Libellé |
1 | Incident |
2 | Demande de service |
Priorités / Urgences / Impacts
Code | Libellé |
1 | Très basse |
2 | Basse |
3 | Moyenne |
4 | Haute |
5 | Très haute |
6 | Majeure |
Types de liens entre tickets
Code | Libellé |
1 | Lié à |
2 | Duplique |
3 | Enfant de |
4 | Parent de |
Dépannage
Le serveur n'apparaît pas dans Claude Desktop
Vérifiez la syntaxe JSON du fichier de configuration (pas de virgule manquante ou en trop, pas d'accolade en trop)
Vérifiez que le chemin vers le dossier est correct et absolu
Redémarrez complètement Claude Desktop
Assurez-vous que le dossier
%APPDATA%\Claude\connectors\existe (créez-le si nécessaire)
Erreur 401 à chaque appel
Vérifiez que
GLPI_APP_TOKENetGLPI_USER_TOKENsont corrects dans votreconfig.jsonVérifiez que l'API REST est bien activée dans GLPI
Vérifiez que le client API dans GLPI est actif et que l'IP est autorisée
Erreur de connexion / timeout
Vérifiez que
GLPI_URLest accessible depuis la machine qui exécute le serveurVérifiez qu'aucun pare-feu ne bloque la connexion
Toutes les requêtes HTTP ont un délai maximal de 30 secondes (10 s pour la connexion). Au-delà, l'outil retourne un dict structuré avec les clés
erroretdetail(libellés tirés de la tableLANG) au lieu de pendre — par défaut en français :{"error": "Timeout HTTP", "detail": "Requête > 30s — voir GLPI logs"}. Si vous obtenez ce message de façon répétée, vérifiez les logs PHP-FPM/MySQL côté GLPI : la requête sous-jacente est probablement trop coûteuse (souvent une recherche full-text sans index).
Environnement corporatif — Proxy SSL intercepteur (Zscaler, Forcepoint, etc.)
En environnement d'entreprise, un proxy SSL peut intercepter les connexions HTTPS et remplacer les certificats par un certificat interne. Cela provoque l'erreur suivante lors de l'installation des dépendances par uv :
× Failed to download `python-dotenv==X.X.X`
╰─▶ invalid peer certificate: UnknownIssuerSolution : Forcer uv à utiliser le magasin de certificats Windows avec la variable d'environnement UV_NATIVE_TLS.
Pour tester manuellement dans PowerShell :
$env:UV_NATIVE_TLS=1
uv run python server.pyPour que Claude Desktop passe automatiquement cette variable au démarrage du serveur, ajoutez une section env dans votre claude_desktop_config.json :
{
"mcpServers": {
"glpi": {
"command": "uv",
"args": [
"--directory",
"C:\\Chemin\\vers\\glpi-mcp",
"run",
"python",
"server.py"
],
"env": {
"UV_NATIVE_TLS": "1"
}
}
}
}Environnement corporatif — Antivirus / EDR bloquant uv (Riskware)
Certains antivirus ou solutions EDR d'entreprise peuvent catégoriser uv.exe comme Riskware car il télécharge des exécutables et des packages depuis Internet. Si uv est bloqué par votre solution de sécurité :
Contactez votre équipe TI pour qu'elle ajoute une exception pour
uv.exe(situé dans%USERPROFILE%\.local\bin\uv.exe)Demandez également d'autoriser les domaines :
pypi.org,files.pythonhosted.org,astral.sh
En alternative, demandez à un collègue ayant uv fonctionnel de vous transmettre le dossier .venv déjà généré, ce qui évite tout téléchargement.
Alléger les dépendances
Le projet dépend de mcp[cli] qui inclut l'extra [cli] (typer, rich, click, shellingham, pygments, markdown-it-py…). Cet extra fournit les commandes de développement mcp dev et mcp inspect, utiles pour le débogage.
Si vous souhaitez réduire l'empreinte en production (environ 8 packages en moins), modifiez pyproject.toml :
# Avant (avec outillage CLI)
dependencies = ["mcp[cli]>=1.9.4", "httpx>=0.27"]
# Après (sans outillage CLI — production allégée)
dependencies = ["mcp>=1.9.4", "httpx>=0.27"]Puis relancez uv sync pour mettre à jour l'environnement.
English
MCP (Model Context Protocol) server that allows an AI assistant — such as Claude — to interact directly with your GLPI instance via its REST API.
Compatible with GLPI 10 (endpoint apirest.php) and GLPI 11 (endpoint api.php/v1).
Once configured, Claude can view, create and update tickets, add followups and tasks, post solutions, manage the knowledge base, maintain the supplier, contact and contract registry, and generate statistics, all in natural language from your conversation.
Prerequisites
1. GLPI
GLPI 10.x or 11.x (REST API is enabled by default)
REST API must be enabled: Setup → General → API → Enable Rest API → Yes
An App-Token created in GLPI: Setup → General → API → Add an API client
A User-Token associated with your account: My profile → API → Regenerate
⚠️ The account associated with the User-Token must have sufficient permissions on tickets in GLPI (read, write, delete as needed).
2. Python
Python 3.12 or higher
uv (recommended)
# Check Python version
python --version
# Install uv if needed
pip install uv3. Claude Desktop
Claude Desktop installed on your machine
A Claude account with access to MCP integrations (Pro plan or higher)
Installation
1. Clone the repository
git clone https://github.com/svtica/glpi-mcp.git
cd glpi-mcp2. Install dependencies
uv syncConfiguration (per user)
The server reads its credentials from a config.json file located in the same folder as server.py. This file is individual to each user and must never be version-controlled (it is in .gitignore).
Create your config.json
Copy the example file and fill in your values:
cp config.example.json config.jsonValues must be encoded in base64:
PowerShell:
[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("https://glpi.mycompany.com"))Linux / macOS:
echo -n "https://glpi.mycompany.com" | base64Then fill in the fields in config.json:
Field | Description |
| Base URL of your GLPI instance (without trailing |
| App-Token created in GLPI API configuration |
| User-Token from your GLPI account |
| Label language: |
| GLPI version: |
| Validate the GLPI TLS certificate: |
You can also use environment variables (
GLPI_URL,GLPI_APP_TOKEN,GLPI_USER_TOKEN,GLPI_LANG,GLPI_VERSION,GLPI_VERIFY_TLS) instead of theconfig.jsonfile.
⚠️
VERIFY_TLSdefaults tofalse, which disables certificate validation for your GLPI instance. That is the intended setting for an intranet GLPI behind a self-signed certificate or a private CA missing from Python'scertifibundle. Switch it totrueas soon as the internal CA is distributed tocertifi: on a GLPI reachable from outside the internal network, leaving itfalseexposes the connection — and therefore your API tokens — to interception.
Supported GLPI versions
Version | API Endpoint | Authentication |
GLPI 10 |
| App-Token + User-Token → Session-Token |
GLPI 11 |
| App-Token + User-Token → Session-Token (same mechanism) |
The GLPI_VERSION field determines which endpoint prefix is used. Both versions use the same session-based authentication (initSession). All tools are compatible with both versions.
Integration with Claude Desktop
Method 1 — Claude Extensions (recommended)
Copy the project contents to your Claude Extensions folder:
%APPDATA%\Claude\Claude Extensions\ant.dir.svtica.glpi-mcp\Create your personal config.json with your credentials (see previous section).
The folder must contain a manifest.json file:
{
"manifest_version": "0.2",
"name": "GLPI-MCP",
"version": "0.1.0",
"description": "MCP server for GLPI integration",
"author": { "name": "Your Name", "url": "" },
"server": {
"type": "python",
"entry_point": "server.py",
"mcp_config": {
"command": "uv",
"args": ["--directory", "${__dirname}", "run", "python", "server.py"]
}
}
}Restart Claude Desktop. Each user on the machine copies their own files to their %APPDATA% folder with their own config.json.
Method 2 — claude_desktop_config.json (manual)
Open the Claude Desktop configuration file:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Add the mcpServers section:
Windows
{
"mcpServers": {
"glpi": {
"command": "uv",
"args": [
"--directory",
"C:\\Path\\to\\glpi-mcp",
"run",
"python",
"server.py"
]
}
},
"preferences": {
"coworkScheduledTasksEnabled": false,
"sidebarMode": "code"
}
}macOS / Linux
{
"mcpServers": {
"glpi": {
"command": "uv",
"args": [
"--directory",
"/path/to/glpi-mcp",
"run",
"python",
"server.py"
]
}
}
}⚠️ Make sure the JSON is valid — a missing brace or comma is enough to prevent Claude Desktop from loading the configuration. Use a JSON validator if needed.
Restart Claude Desktop. If the configuration is correct, a 🔌 icon will appear in the Claude toolbar indicating the MCP server is connected.
Available tools
🔐 Session
Tool | Description |
| Gracefully closes the active GLPI session |
🎫 Tickets
Tool | Description |
| List tickets with pagination and filters (status, type) |
| Full ticket details with readable labels |
| Advanced search by keywords, status, type, category, assignee |
| Create a new ticket |
| Update fields of an existing ticket |
| Delete a ticket |
| Link two tickets (linked, duplicate, child, parent) |
| List all links for a ticket |
| Merge source tickets into a target (copies followups, links as duplicate, closes sources) |
💬 Followups
Tool | Description |
| List all followups for a ticket |
| Followup details |
| Add a followup (public or private) |
| Update an existing followup (content, visibility) |
| Delete a followup — destructive, removes it from the audit trail |
✅ Tasks
Tool | Description |
| List tasks for a ticket |
| Create a task on a ticket |
| Update a task (status, duration, assignee) |
| Delete a task |
💡 Solutions
Tool | Description |
| Read the solution for a ticket |
| Post a solution (closes the ticket per GLPI config) |
📊 Statistics
Tool | Description |
| Ticket count by status |
| Incidents vs Service Requests breakdown |
| Open tickets by priority |
| Ticket count by ITIL category |
| Tickets per assigned technician |
| Average ticket resolution time |
| Tickets overdue against SLA |
📚 Knowledge Base
Tool | Description |
| List articles with pagination. If |
| Full article details |
| Search by keywords (title only by default ; pass |
| Create a new article (title, HTML content, category, FAQ) |
| Update an existing article |
| List knowledge base categories |
| Read visibility rules for an article (profiles, groups, users, entities) |
| Add a profile to an article's visibility |
| Add a group to an article's visibility |
| Update an existing profile visibility rule |
| Update an existing group visibility rule |
Note: Deleting visibility rules is intentionally not exposed in order to preserve a history of procedures, even obsolete ones.
📋 Reference data
Tool | Description |
| List available ITIL categories |
| List GLPI users |
| List GLPI groups |
🏢 Suppliers, contacts and contracts
Tool | Description |
| List suppliers ( |
| Create a supplier ( |
| Create a contact; optionally attach it to a supplier via |
| Create a contract; optionally attach it to a supplier via |
| Update a supplier ( |
| Update a contact |
| Update a contract |
| Move a supplier to the trash; |
| Move a contact to the trash; |
| Move a contract to the trash; |
Note:
list_suppliersreturns active suppliers only by default. Passonly_active=Falseto include disabled ones.
Note: For
create_contract, theduration,notice,periodicityandbillingfields are expressed in months (GLPI convention), andbegin_dateuses theYYYY-MM-DDformat.
Note: When
supplier_idis provided, the junction entry (Contact_Supplier/Contract_Supplier) is created in a second call and its result is returned under the_supplier_linkkey. If the contact or contract creation fails, no link is attempted.
⚠️ Deletion — trash by default, purge on request. With no argument,
delete_*moves the item to the GLPI trash (is_deleted = 1): it stays attached to its contracts, contacts, assets and tickets, and can be restored with the matchingupdate_*tool and{"is_deleted": 0}. Withpurge=True, deletion is permanent and irreversible and breaks those attachments. Reserve purging for duplicates and data-entry mistakes.
Usage examples with Claude
"Show me all open high-priority incidents"
"Create a service request ticket for installing Adobe Acrobat for Jane Smith"
"Add a followup to ticket #4521 to inform the user that the issue is being investigated"
"Merge tickets #4530 and #4531 into ticket #4521"
"Link ticket #4530 to ticket #4521 as a duplicate"
"What are the ticket statistics by status?"
"What is the average ticket resolution time?"
"Show me tickets that are overdue against the SLA"
"Search the knowledge base for VPN troubleshooting solutions"
"Who can see knowledge base article #120?"
"Add the Technicians group to the visibility of article #120"
"Which suppliers do we have for telephony?"
"Add Acme Telecom to the supplier registry, then create maintenance contract CT-2026-014 starting April 1st for 36 months"
"Deactivate the Acme Telecom supplier — we no longer do business with them, but keep the contract history"
"Close ticket #4102 with the solution: service restart resolved the issue"
Reference mappings
Statuses
Code | Label (fr) | Label (en) |
1 | Nouveau | New |
2 | En cours (attribué) | In progress (assigned) |
3 | En cours (planifié) | In progress (planned) |
4 | En attente | Pending |
5 | Résolu | Solved |
6 | Clos | Closed |
Types
Code | Label (fr) | Label (en) |
1 | Incident | Incident |
2 | Demande de service | Service request |
Priorities / Urgencies / Impacts
Code | Label (fr) | Label (en) |
1 | Très basse | Very low |
2 | Basse | Low |
3 | Moyenne | Medium |
4 | Haute | High |
5 | Très haute | Very high |
6 | Majeure | Major |
Ticket link types
Code | Label (fr) | Label (en) |
1 | Lié à | Linked to |
2 | Duplique | Duplicates |
3 | Enfant de | Child of |
4 | Parent de | Parent of |
Troubleshooting
Server does not appear in Claude Desktop
Check the JSON syntax of the configuration file (no missing or extra commas/braces)
Verify the folder path is correct and absolute
Fully restart Claude Desktop
Make sure the
%APPDATA%\Claude\connectors\folder exists (create it if needed)
401 error on every call
Verify that
GLPI_APP_TOKENandGLPI_USER_TOKENare correct in yourconfig.jsonCheck that the REST API is enabled in GLPI
Verify that the API client in GLPI is active and the IP is authorized
Connection error / timeout
Verify that
GLPI_URLis reachable from the machine running the serverCheck that no firewall is blocking the connection
All HTTP requests have a hard ceiling of 30 seconds (10 s for connect). Beyond that, the tool returns a structured dict with
erroranddetail(labels taken from theLANGtable) instead of hanging — in English:{"error": "HTTP timeout", "detail": "Request > 30s — see GLPI logs"}. If you hit this repeatedly, inspect the PHP-FPM/MySQL logs on the GLPI side: the underlying query is likely too expensive (typically a full-text search without an index).
Corporate environment — SSL-intercepting proxy (Zscaler, Forcepoint, etc.)
In corporate environments, an SSL proxy may intercept HTTPS connections and replace certificates with an internal certificate. This causes the following error when installing dependencies with uv:
× Failed to download `python-dotenv==X.X.X`
╰─▶ invalid peer certificate: UnknownIssuerSolution: Force uv to use the Windows certificate store with the UV_NATIVE_TLS environment variable.
To test manually in PowerShell:
$env:UV_NATIVE_TLS=1
uv run python server.pyTo have Claude Desktop automatically pass this variable when starting the server, add an env section to your claude_desktop_config.json:
{
"mcpServers": {
"glpi": {
"command": "uv",
"args": [
"--directory",
"C:\\Path\\to\\glpi-mcp",
"run",
"python",
"server.py"
],
"env": {
"UV_NATIVE_TLS": "1"
}
}
}
}Corporate environment — Antivirus / EDR blocking uv (Riskware)
Some corporate antivirus or EDR solutions may categorize uv.exe as Riskware because it downloads executables and packages from the Internet. If uv is blocked by your security solution:
Contact your IT team to add an exception for
uv.exe(located at%USERPROFILE%\.local\bin\uv.exe)Also request authorization for the domains:
pypi.org,files.pythonhosted.org,astral.sh
As an alternative, ask a colleague with a working uv to share the .venv folder, which avoids any downloads.
Reducing dependencies
The project depends on mcp[cli] which includes the [cli] extra (typer, rich, click, shellingham, pygments, markdown-it-py…). This extra provides the development commands mcp dev and mcp inspect, useful for debugging.
If you want to reduce the footprint in production (about 8 fewer packages), modify pyproject.toml:
# Before (with CLI tooling)
dependencies = ["mcp[cli]>=1.9.4", "httpx>=0.27"]
# After (without CLI tooling — lightweight production)
dependencies = ["mcp>=1.9.4", "httpx>=0.27"]Then run uv sync again to update the environment.
Available Tools
52 toolsadd_followupA
Ajoute un suivi à un ticket.
is_private : True pour un suivi visible uniquement par les techniciens
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | ||
| ticket_id | Yes | ||
| is_private | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the burden. It discloses the meaning of is_private (visible only to technicians), which is a useful behavioral trait beyond the schema. However, it does not mention permissions, reversibility, or what happens on success/failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the purpose, and includes only the crucial parameter semantic. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-parameter mutation with no output schema, the description is minimally sufficient but lacks broader context like prerequisites (e.g., ticket existence) or permissions. It is not as complete as it could be.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains is_private semantics, which is the least obvious parameter, but leaves ticket_id and content without any added detail beyond their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Ajoute' (adds) and identifies the resource 'un suivi à un ticket' (a follow-up to a ticket). This clearly distinguishes it from sibling read tools like list_followups and get_followup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives, such as list_followups or add_task. The description only states what it does without any context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_kb_article_visibility_groupC
Ajoute un groupe dans la visibilité d'un article KB.
groups_id : ID du groupe GLPI
| Name | Required | Description | Default |
|---|---|---|---|
| groups_id | Yes | ||
| article_id | Yes | ||
| entities_id | No | ||
| is_recursive | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It only says a group is added to an article's visibility and does not disclose mutation side effects, permission requirements, whether existing visibility entries are replaced or appended, or how entities_id and is_recursive affect behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded, and structured with a parameter bullet. It avoids filler, though its brevity is partly due to omitted information rather than disciplined concision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with four parameters, no annotations, no output schema, and 0% schema description coverage, the description is incomplete. It omits the required article_id, the optional entity/recursive behavior, and any return or permission context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate. It defines only groups_id as a GLPI group ID, leaving the required article_id and optional entities_id and is_recursive completely unexplained in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Ajoute') and resource ('un groupe dans la visibilité d'un article KB'), making the core action clear. It distinguishes itself from profile-visibility siblings by naming a group rather than a profile, but it does not explicitly contrast with update_kb_article_visibility_group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as update_kb_article_visibility_group or add_kb_article_visibility_profile. Usage is only implied by the tool name and the brief action statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_kb_article_visibility_profileB
Ajoute un profil dans la visibilité d'un article KB.
profiles_id : ID du profil GLPI
entities_id : 0 = entité racine
is_recursive : appliquer aux sous-entités
| Name | Required | Description | Default |
|---|---|---|---|
| article_id | Yes | ||
| entities_id | No | ||
| profiles_id | Yes | ||
| is_recursive | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only states the basic add operation and explains the effect of is_recursive and entities_id. It omits critical traits such as permission requirements, idempotency/deduplication behavior, side effects on existing visibility, and error cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the tool's purpose and uses a compact bullet list for parameter clarifications. Every sentence and bullet earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with four parameters, no annotations, and no output schema, the description is too thin. It fails to document the required article_id, does not describe permissions or side effects, and gives no indication of what happens when a visibility entry already exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must supply parameter meaning. It explains profiles_id, entities_id (0 = root entity), and is_recursive (apply to sub-entities), adding value beyond the bare schema. However, it completely omits the required article_id parameter, leaving a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ("Ajoute") and resource ("un profil dans la visibilité d'un article KB"), clearly distinguishing it from the sibling add_kb_article_visibility_group (group vs profile) and update variants. An agent can tell what it does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives, or on prerequisites such as required permissions or whether the article/profile must already exist. The description simply states what it does, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_solutionA
Poste une solution sur un ticket (le clôture automatiquement selon la config GLPI).
solution_type_id : ID du type de solution si applicable
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | ||
| ticket_id | Yes | ||
| solution_type_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It explicitly mentions a key side effect: 'le clôture automatiquement selon la config GLPI' (automatically closes it according to GLPI config). However, it does not disclose other potential behaviors such as permissions, reversibility, or what happens if the ticket is already closed, leaving gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, consisting of two short sentences that state the primary function and a key side effect. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 parameters, no output schema), the description covers the main action and one parameter, but it does not mention what the tool returns, any prerequisites (e.g., ticket must exist), or error cases. It is adequate but has notable omissions for a complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must compensate. It adds meaning only for solution_type_id ('ID du type de solution si applicable'), but does not explain ticket_id or content, which are essential. The description provides minimal added value beyond the schema's parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Poste une solution sur un ticket' (Post a solution on a ticket), which specifies the verb and resource. It also distinguishes from sibling tools like add_followup (which posts a follow-up) and get_solution (which retrieves a solution) by focusing on posting a solution, not just any comment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it is used to post a solution on a ticket, and it automatically closes the ticket depending on GLPI configuration. It does not explicitly mention alternatives or exclusions, but the action and auto-close behavior imply when it should be used (when a solution is ready to be submitted).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_taskB
Crée une tâche sur un ticket.
status : 1=À faire 2=Terminée
duration_seconds : durée en secondes (ex. 3600 = 1h)
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | ||
| content | Yes | ||
| ticket_id | Yes | ||
| is_private | No | ||
| assigned_user_id | No | ||
| duration_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the core action and explains two parameter values (status, duration_seconds), but omits side effects, permissions, error behavior, or return value. For a mutation tool with zero annotations, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the purpose, followed by a concise bullet list for two parameters. Every sentence earns its place with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 6 parameters, no annotations, and no output schema, the description is not sufficiently complete. It does not explain what the tool returns, any prerequisites (e.g., ticket must exist), or the meaning of is_private and assigned_user_id, leaving significant gaps for safe autonomous use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides useful semantics for status (1=To do, 2=Done) and duration_seconds (in seconds with example), but ignores ticket_id, content, is_private, and assigned_user_id, leaving four of six parameters unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Crée une tâche sur un ticket' (Creates a task on a ticket), providing a specific verb, resource, and context. This distinguishes it from sibling tools like list_tasks, update_task, and delete_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the name and description: use this to add a task to a ticket. However, there are no explicit alternatives or exclusions mentioned, and no guidance on when to prefer this over related tools like add_followup or update_task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_contactA
Crée un contact (personne-ressource chez un fournisseur).
name : nom de famille (seul champ obligatoire)
contact_type_id : ID d'un ContactType existant (optionnel)
supplier_id : si fourni, le contact est rattaché à ce fournisseur via Contact_Supplier. Le résultat contient alors la clé "_supplier_link".
comment : texte libre, en HTML compatible GLPI (jamais de Markdown)
| Name | Required | Description | Default |
|---|---|---|---|
| fax | No | ||
| name | Yes | ||
| town | No | ||
| No | |||
| phone | No | ||
| mobile | No | ||
| phone2 | No | ||
| address | No | ||
| comment | No | ||
| country | No | ||
| postcode | No | ||
| firstname | No | ||
| supplier_id | No | ||
| contact_type_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It usefully discloses a non-obvious side effect (supplier_id triggers a Contact_Supplier link and adds a '_supplier_link' key to the result) and an input-format constraint (comment must be HTML, never Markdown). It doesn't mention auth requirements, failure modes, or duplicate handling, but the two disclosures are meaningful behavioral value beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose followed by a bulleted parameter legend that is easy to scan. Efficient for what it covers, though bullets are somewhat terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A 14-parameter mutation tool with no annotations, no output schema, and 0% schema coverage. The description discloses the key required param, the supplier-link side effect, and the comment format, but leaves most optional fields (address, phone, email, etc.) undocumented and says nothing about permissions or response beyond the '_supplier_link' key. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema names 14 parameters with no explanation. The description compensates partially by explaining name, contact_type_id, supplier_id, and comment, but leaves 10 parameters (fax, town, email, phone, mobile, phone2, address, country, postcode, firstname) undocumented. Marginal value added, not full compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Crée) and resource (contact / personne-ressource chez un fournisseur) that clearly distinguishes it from update_contact and delete_contact in the sibling list. The parenthetical gloss on what a contact is adds useful specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage context through the parameter explanations (e.g., 'si fourni, le contact est rattaché'), but never explicitly says when to use this versus update_contact or how it relates to create_supplier in a workflow. No exclusions or prerequisites stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_contractA
Crée un contrat.
name : intitulé du contrat (seul champ obligatoire)
num : numéro de contrat chez le fournisseur
begin_date : date de début, format AAAA-MM-JJ
duration / notice / periodicity / billing : en MOIS (convention GLPI)
supplier_id : si fourni, le contrat est rattaché à ce fournisseur via Contract_Supplier. Le résultat contient alors la clé "_supplier_link".
comment : texte libre, en HTML compatible GLPI (jamais de Markdown)
| Name | Required | Description | Default |
|---|---|---|---|
| num | No | ||
| name | Yes | ||
| notice | No | ||
| billing | No | ||
| comment | No | ||
| duration | No | ||
| begin_date | No | ||
| periodicity | No | ||
| supplier_id | No | ||
| contract_type_id | No | ||
| accounting_number | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does a decent job: it declares name as the sole required field, states that duration/notice/periodicity/billing are in MONTHS (GLPI convention), that supplier_id triggers a Contract_Supplier linkage, and that the result then contains the '_supplier_link' key. It omits auth/permission needs and other side effects, but the disclosed conventions are genuinely useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the bullet list keeps each sentence focused on one parameter. No filler; the structure maps cleanly to the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter creation tool with no annotations and no output schema, the description is mostly complete but leaves contract_type_id and accounting_number entirely undocumented and gives only a partial picture of the return shape. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does for 8 of 11 params: it adds date format (AAAA-MM-JJ), the month unit convention for four numeric fields, the HTML-not-Markdown constraint for comment, and the behavioral effect of supplier_id. contract_type_id and accounting_number are left undocumented, keeping it short of 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Crée un contrat'), which is unambiguous. It does not, however, distinguish itself from siblings like update_contract or delete_contract beyond the verb. Clear but not sibling-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus update_contract or when a contract should instead be linked to a supplier/type. Field-level docs are provided, but no usage context, prerequisites, or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_kb_articleB
Crée un nouvel article dans la base de connaissances.
name : titre de l'article
answer : contenu / solution (HTML accepté)
category_id : ID de la catégorie KB (optionnel)
is_faq : True pour publier dans la FAQ publique
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| answer | Yes | ||
| is_faq | No | ||
| category_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose useful behavior beyond the schema: answer accepts HTML, and is_faq=True publishes into the public FAQ (a visibility side effect). However, it omits permissions/auth requirements, whether creation is reversible, and validation behavior for category_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose in one line, then a tight bullet list per parameter with zero filler. Well sized for a four-parameter mutation tool, though the bullets simply mirror the schema keys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers purpose and all parameters but says nothing about the returned article identifier, required permissions, or error conditions. Adequate but leaves notable gaps for a write operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and it largely does, defining all four parameters: name as the article title, answer as content/solution with HTML accepted, category_id as an optional KB category ID, and is_faq as public-FAQ publishing. It lacks format details for category_id (how to discover valid IDs) but adds real meaning over the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Crée un nouvel article dans la base de connaissances.' An agent can tell this creates a KB article, distinguishing it from create_ticket/create_supplier, though it never explicitly contrasts with siblings like update_kb_article or add_solution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives such as add_solution or update_kb_article. The agent must infer from the name alone when this tool is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_supplierC
Crée un fournisseur.
name : raison sociale (seul champ obligatoire)
supplier_type_id : ID d'un SupplierType existant (optionnel)
comment : texte libre, en HTML compatible GLPI (jamais de Markdown)
| Name | Required | Description | Default |
|---|---|---|---|
| fax | No | ||
| name | Yes | ||
| town | No | ||
| No | |||
| state | No | ||
| address | No | ||
| comment | No | ||
| country | No | ||
| website | No | ||
| postcode | No | ||
| is_active | No | ||
| phonenumber | No | ||
| supplier_type_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It adds one useful behavioral constraint (comment must be GLPI-compatible HTML, never Markdown), but says nothing about permissions, what happens on duplicate names, what the response contains, or side effects of creating a supplier.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise and front-loaded: the purpose sentence precedes three terse field bullets with no wasted words. The structure is efficient, though the bullets only cover a fraction of the actual parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter mutation tool with no annotations and no output schema, the description is materially incomplete: ten parameters are unexplained and there is no account of authorization, validation, or result behavior. The HTML/Markdown constraint is helpful but isolated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, yet it documents only 3 of 13 parameters (name, supplier_type_id, comment). The HTML-not-Markdown note and the 'only required field' marker add real value, but the other 10 fields (fax, town, email, state, address, country, website, postcode, is_active, phonenumber) are undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('Crée un fournisseur'), which clearly identifies the create operation and implicitly distinguishes it from update_supplier, delete_supplier and list_suppliers. It does not, however, explicitly name or route away from those siblings, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no prerequisites for creation, and no mention of the sibling tools it competes with. Only the field list is provided, which is parameter documentation rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ticketB
Crée un nouveau ticket.
type : 1=Incident 2=Demande de service
priority : 1 (très basse) → 6 (majeure)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| type | No | ||
| content | Yes | ||
| priority | No | ||
| category_id | No | ||
| assigned_user_id | No | ||
| assigned_group_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It adds the type and priority code mappings, which is useful, but it does not disclose side effects (e.g., notifications), whether authentication is required, what happens on successful creation, or whether the created ticket's ID is returned. This is minimal transparency for a create operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise, consisting of one sentence and a short bullet list. It front-loads the main purpose and immediately provides the necessary value mappings for type and priority. Every line earns its place with no wasteful verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 7 parameters, no output schema, and no annotations, the description is incomplete. It does not explain the return value, required field semantics beyond names, or any post-creation behavior. An agent would lack critical context about the outcome of the operation and how to interpret the optional assignee/category fields. The description is minimally viable at best.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must compensate. It explains the meaning of 'type' (1=Incident, 2=Service request) and 'priority' (1 very low to 6 major), but it does not explain the other five parameters, including required 'name' and 'content' or optional fields like 'category_id', 'assigned_user_id', and 'assigned_group_id'. Some names are self-explanatory, but the description adds meaning to only 2 of 7 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Crée un nouveau ticket' (Creates a new ticket), which uses a specific verb and resource. This distinguishes it from sibling tools like update_ticket, delete_ticket, and list_tickets within the same ticket domain. The additional type and priority mappings reinforce what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description does not mention that update_ticket should be used for existing tickets, nor does it state any prerequisites or context such as requiring a valid category or assignee. The usage is implied by the tool name but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_contactA
Supprime un contact.
purge=False (défaut) : mise à la corbeille, réversible via update_contact(contact_id, {"is_deleted": 0})
purge=True : suppression définitive et IRRÉVERSIBLE.
| Name | Required | Description | Default |
|---|---|---|---|
| purge | No | ||
| contact_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so well: it discloses that the default is a reversible trash operation with a concrete restore path, and that purge=True is definitive and IRRÉVERSIBLE. It omits permission requirements and error behavior, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight bullet points, front-loaded with the basic action and then the flag trade-off; every clause carries decision-relevant information with no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter destructive tool with no annotations and no output schema, the description supplies the crucial reversibility semantics an agent needs. Minor gaps remain around permissions, failure cases, and whether dependent records are affected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate — and it fully explains the non-obvious purge parameter, including its default and the semantic difference between the two modes. contact_id is left implicit but is self-evident from the resource name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (supprime) and resource (un contact) unambiguously. It does not explicitly contrast with sibling deletion tools (delete_ticket, delete_supplier, delete_contract) or with update_contact's soft-delete flag, so it is clear but not sibling-differentiating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purge flag guidance effectively tells the agent when to use each mode: default for recoverable removal, purge=True only when permanent deletion is intended. It also names the recovery alternative update_contact(contact_id, {"is_deleted": 0}), though it does not state exclusions or warn about when NOT to purge.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_contractA
Supprime un contrat.
purge=False (défaut) : mise à la corbeille, réversible via update_contract(contract_id, {"is_deleted": 0})
purge=True : suppression définitive et IRRÉVERSIBLE, qui retire aussi les rattachements du contrat à ses matériels et à son fournisseur.
| Name | Required | Description | Default |
|---|---|---|---|
| purge | No | ||
| contract_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does so well: it discloses that purge=False is reversible, purge=True is permanent and irreversible, and that purge=True also removes the contract's links to its equipment and supplier. It also gives the exact update_contract call for reversing a soft delete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a one-line purpose, then uses a compact bullet structure to explain the two purge modes. Every sentence provides necessary operational information, with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a deletion tool with no annotations, no output schema, and low schema description coverage, the description is complete enough to invoke correctly and safely. It covers the purpose, the parameter-dependent behavior, the irreversibility warning, the cascade side effect, and the reversal mechanism.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It thoroughly explains the non-obvious 'purge' parameter, including default value and both boolean effects, and contract_id is implied by the tool name plus the example update_contract(contract_id, ...). The contract_id parameter itself is not separately defined, but its meaning is unambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Supprime un contrat.' This clearly distinguishes it from sibling deletion tools for suppliers, contacts, tickets, tasks, and follow-ups. The added purge semantics further pin down what kind of deletion operation this is.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly explains the default behavior (purge=False -> trash) and the irreversible mode (purge=True), and it names update_contract as the reversal path. However, it does not explicitly state when to prefer this tool over update_contract for soft deletion or when not to use it, so it falls just short of a full when/when-not/alternatives statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_followupA
Supprime un suivi.
ATTENTION : opération destructive et non réversible depuis cet outil — le
suivi disparaît de la piste d'audit du ticket. Ne l'utiliser que sur un
suivi publié par erreur (mauvais ticket, doublon). Pour corriger un
contenu, utiliser update_followup ; pour nuancer une conclusion,
add_followup.
| Name | Required | Description | Default |
|---|---|---|---|
| followup_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it declares the operation destructive, non-reversible from this tool, and notes the followup vanishes from the ticket's audit trail — non-obvious consequence an agent would otherwise assume away.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose in one short sentence, then a clearly marked ATTENTION block for the irreversible warning and alternatives. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No annotations or output schema exist, so the description must supply behavior — and it covers destructiveness, irreversibility, and routing. Only permission/auth requirements and the exact post-delete state of the ticket are unstated, which is a small residual gap for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter followup_id is never explained in the description. Its integer id nature is inferable from the name, so the gap is minor, but the description adds nothing about format or scope.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Supprime un suivi'), naming exactly what is deleted. Combined with the alternatives it names (update_followup, add_followup), an agent can distinguish it from every sibling without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly restricts use to followups published by mistake (wrong ticket, duplicate) and routes two distinct correct alternatives: update_followup for content fixes and add_followup for qualifying a conclusion. When-to-use, when-not-to-use, and alternatives are all present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_supplierA
Supprime un fournisseur.
purge=False (défaut) : mise à la corbeille, réversible via update_supplier(supplier_id, {"is_deleted": 0})
purge=True : suppression définitive et IRRÉVERSIBLE, qui retire aussi les rattachements du fournisseur à ses contrats, contacts, matériels et tickets. À n'utiliser que sur un doublon ou une saisie erronée.
| Name | Required | Description | Default |
|---|---|---|---|
| purge | No | ||
| supplier_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses key traits: soft-delete vs permanent deletion, reversibility, and cascade effects on related entities. It does not mention required permissions or rate limits, but the core destructive behavior and side effects are clearly surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action, then uses a bullet list for the purge modes and a final caution. Every sentence adds necessary information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter mutation tool with no output schema and no annotations, the description covers the essential behavioral details: default vs purge behavior, reversibility, cascade effects, and usage context. Nothing critical is missing that would prevent correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It thoroughly explains the purge parameter (default false, reversible vs irreversible, cascade effects), though supplier_id is only implied by context and not further described. This adds substantial meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Supprime') and resource ('un fournisseur'), making clear it deletes a supplier. It also distinguishes this from the recovery path via update_supplier, so an agent can tell it apart from siblings like update_supplier and delete_contact.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly describes two modes: purge=False (reversible via update_supplier) and purge=True (irreversible, also removes links to contracts, contacts, materials, and tickets). It ends with a clear condition: only use it on a duplicate or an erroneous entry, which is exactly the when-to-use guidance needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_taskC
Supprime une tâche.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only mentions that a task is deleted, but does not clarify whether deletion is permanent, whether it cascades to related data, or what happens on error. The basic action is stated, but no additional behavioral traits are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the verb, but it is under-specified for a destructive operation. It is a single short sentence that conveys the core action, but lacks any additional context that could be expected in a tool description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation with one parameter, the description is incomplete: it does not explain success/failure behavior, whether the action is reversible, or mention any side effects. Given that no annotations or output schema exist, the description should provide more context but does not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter, task_id, which is self-explanatory by name and title, but the description adds no meaning beyond it. Since schema_description_coverage is 0%, the description fails to compensate by clarifying the parameter's purpose, constraints, or error behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Supprime une tâche' clearly states the action (delete) and the resource (task) with a specific verb, distinguishing it from sibling tools like list_tasks, add_task, and update_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites, permissions, or consequences. It simply states the action without any contextual instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_ticketB
Supprime un ticket par son ID.
| Name | Required | Description | Default |
|---|---|---|---|
| ticket_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states only that it deletes a ticket by ID, but does not disclose whether deletion is permanent, whether it cascades to linked items (e.g., followups, links), or if any permissions are required. This is a destructive operation with significant missing context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence: 'Supprime un ticket par son ID.' It is front-loaded with the action and has zero wasted words, making it highly concise and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive operation with no annotations and no output schema, the description is incomplete. It does not explain the consequences of deletion (irreversibility, cascading effects), whether the operation is confirmable, or what happens if the ticket does not exist. While the tool is simple, an agent still lacks critical context to correctly assess the side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has a single required parameter 'ticket_id' (integer) with no description, so schema coverage is 0%. The description 'par son ID' (by its ID) does add minimal clarification that the parameter corresponds to the ticket's ID. However, since the parameter name is self-explanatory and the description adds no format or constraint details, it only partially compensates for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Supprime un ticket par son ID' uses a specific verb ('Supprime' = deletes) and resource ('ticket') with a clear scope ('par son ID' = by its ID). This clearly states what the tool does and distinguishes it from sibling tools like update_ticket, get_ticket, and search_tickets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites. The intended usage (deleting a ticket) is implied by the verb, but there is no explicit context such as 'use when a ticket should be permanently removed' or 'do not use if you need to archive instead'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_followupB
Retourne le détail d'un suivi spécifique.
| Name | Required | Description | Default |
|---|---|---|---|
| followup_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states that it returns details, but does not mention error behavior for nonexistent IDs, authentication requirements, or any side effects. For a read operation, the behavior is predictable, but the lack of any behavioral detail is a gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear, front-loaded sentence. It conveys the essential action and object with no wasted words, earning a perfect score for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter get-by-ID tool, the description is minimally sufficient to understand its purpose. However, it omits return format, error scenarios, and any prerequisites. Given the absence of annotations and output schema, the description is not fully complete but adequate for basic selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the followup_id parameter beyond the schema. While the parameter name is self-explanatory, the description adds no semantic value, and the rubric requires compensation for low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Retourne') and resource ('détail d'un suivi spécifique'), clearly indicating it fetches a single follow-up record. This differentiates it from sibling tools like list_followups (list) and add_followup (create), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: this tool is for retrieving one follow-up by ID, especially when a list is already available. However, there is no explicit guidance on when to use it versus alternatives like list_followups or get_ticket, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_groupsA
Liste les groupes GLPI.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must fully disclose behavioral traits. It only says 'lists groups,' omitting any details on read-only nature, authentication requirements, pagination, or side effects. For a simple list tool, this is minimal but leaves important context undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence that is front-loaded and contains no filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description tells what the tool does but does not explain the return value shape, any limits, or broader context. Since no output schema exists, the agent is left without knowing what fields a group contains or if the list is paginated. This is a meaningful gap, though acceptable for a very simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the schema completely covers parameter semantics. The baseline of 4 is appropriate as there is no additional parameter meaning the description could add.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (list) and resource (GLPI groups), distinguishing it from sibling tools like list_tickets or get_users. It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor any preconditions or context. It simply states the function without usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_kb_articleC
Retourne le détail complet d'un article de la base de connaissances.
| Name | Required | Description | Default |
|---|---|---|---|
| article_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read ('Retourne le détail complet') but omits whether visibility restrictions apply (relevant given sibling visibility tools), whether it errors on unknown/missing articles, and what the returned detail includes. For a tool with zero annotation coverage, this is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words. It is efficient, though the brevity is partly under-specification rather than true concision, and the French text sits inconsistently alongside the English sibling toolset.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and an undocumented parameter, the description should do more work. For a lookup tool it is not catastrophic, but key details – visibility behavior, error cases, and parameter meaning – are all absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for article_id and the description says nothing about the parameter's format, source, or constraints. The intent ('un article') hints at an identifier, but the description does not compensate for the undocumented parameter as it ideally should when coverage is this low.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Retourne') and resource ('le détail complet d'un article de la base de connaissances'), which maps cleanly to get_kb_article. It does not, however, explicitly distinguish itself from siblings like get_solution, search_kb_articles, or list_kb_articles, so the boundary is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus search_kb_articles or list_kb_articles, nor any stated prerequisites such as needing a known article_id. The agent must infer the usage context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_kb_article_visibilityB
Retourne les règles de visibilité d'un article KB : profils, groupes, utilisateurs et entités ayant accès.
| Name | Required | Description | Default |
|---|---|---|---|
| article_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. 'Retourne' implies a read-only operation, and the listed entity types add useful context, but permissions, authorization requirements, and any rate limits are not disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two compact lines with the action and returned entity types front-loaded. Every clause adds information, and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained in detail. The description names the visibility categories returned and is sufficient for a simple one-parameter read operation, though it lacks alternative-tool routing guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate. 'D'un article KB' implies that article_id identifies the target article, but it does not specify the parameter name, expected format, or type. For a single simple parameter this is minimally adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Retourne') and resource ('règles de visibilité d'un article KB'), and enumerates the returned entity types (profils, groupes, utilisateurs, entités). It does not explicitly differentiate itself from sibling add/update visibility tools, but the read-oriented purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as add_kb_article_visibility_profile, update_kb_article_visibility_group, or get_kb_article. The agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_solutionC
Retourne la solution d'un ticket.
| Name | Required | Description | Default |
|---|---|---|---|
| ticket_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only says 'returns' which implies read-only, but does not disclose error behavior, permissions, or return format. For a get tool this is somewhat expected, but the lack of any behavioral detail beyond the name leaves gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It is front-loaded and easy to parse, achieving conciseness without sacrificing the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but with no output schema and no annotations, the description should explain what 'solution' means and what the return value looks like. It does not, and it also lacks any contextual guidance, making it incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the single parameter ticket_id, and the description does not mention or explain it. The description offers no compensation for the schema's lack of parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Retourne la solution d'un ticket' clearly states the tool retrieves a ticket's solution. It has a specific verb and resource, and while it doesn't explicitly differentiate from siblings, the sibling 'add_solution' is the write counterpart, and no other get-solution sibling exists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs alternatives like get_ticket or search. There is no mention of prerequisites, context, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ticketB
Retourne le détail complet d'un ticket, avec libellés lisibles.
| Name | Required | Description | Default |
|---|---|---|---|
| ticket_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the output includes readable labels ('avec libellés lisibles'), adding useful context beyond the tool name. However, with no annotations provided, it does not cover potential edge cases, auth requirements, or error behaviors, leaving gaps in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loaded with the action and resource. It avoids unnecessary wording and is appropriately sized for a simple get operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, output schema present), the description covers the core function and adds a note about readable labels. However, it lacks usage guidance and parameter-level detail, which is partially compensated by the self-explanatory parameter name and output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not specifically explain the ticket_id parameter; it only refers to 'un ticket', which is already evident from the parameter name. With 0% schema description coverage, the description fails to add meaningful semantics beyond the schema's field name and type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the complete detail of a ticket, using the verb 'Retourne' and identifying the resource ('un ticket'). It distinguishes from list/search tools by emphasizing a single ticket's full detail, though it does not explicitly name alternative tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like list_tickets or search_tickets. There is no mention of exclusions or prerequisites, leaving the agent without context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usersB
Liste les utilisateurs GLPI.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should carry the full burden of behavioral disclosure, but it offers no additional insights. It restates the tool's name ('get_users' vs 'Liste les utilisateurs') without revealing read-only status, authentication needs, response formats, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no filler, repetitive, or extraneous content. It is appropriately sized for a parameterless, simple listing tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description is minimally adequate: it states the core action and resource. However, it lacks any detail about return data, scope, or usage context, leaving the agent without useful operational specifics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the baseline for parameter semantics is 4. The description has nothing to add since there are no parameter details to explain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'List' (list) and 'utilisateurs GLPI' (GLPI users), clearly indicating the tool's action and resource. Since no sibling tool targets users, it successfully distinguishes itself from alternatives without needing explicit differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus others. The description only states what it does, not when it should be preferred, and there is no mention of alternatives, exclusions, or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kill_sessionA
Ferme proprement la session GLPI active.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The phrase 'Ferme proprement' adds a behavioral nuance beyond the name, indicating a graceful shutdown rather than an abrupt kill. However, with no annotations, the description does not disclose side effects, authentication requirements, or idempotency, leaving the agent with limited understanding of consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is direct and front-loaded, immediately conveying the action. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the operation and the existence of an output schema, the description covers the core action but omits contextual details such as when to close the session, whether it affects ongoing operations, or any cleanup behaviors beyond 'cleanly'. This is adequate but leaves some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the description rightfully does not attempt to explain parameters. Per the baseline for 0-parameter tools, the description provides sufficient semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool closes the active GLPI session, using a specific verb (closes) and resource (session). It clearly distinguishes from sibling tools that handle tickets, users, and knowledge base.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool or any exclusion criteria. There is no mention of prerequisites, alternatives, or timing relative to other operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
link_ticketsB
Crée un lien entre deux tickets.
link_type : 1=Lié à, 2=Duplique, 3=Enfant de, 4=Parent de
| Name | Required | Description | Default |
|---|---|---|---|
| link_type | No | ||
| ticket_id_1 | Yes | ||
| ticket_id_2 | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does not mention anything about the effect of existing links, directionality, permissions, idempotency, or return values. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of a single clear sentence plus a bullet list for link_type values. Every element earns its place with no unnecessary wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with only three parameters and no output schema. The description covers the main purpose and the link_type values, but it fails to explain directional semantics (which ticket is parent/child) or any behavioral outcomes. It is adequate but has clear gaps, especially given the lack of annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
For ticket_id_1 and ticket_id_2, the schema provides only names, and the description adds no semantic meaning. However, the description does add meaning for link_type by enumerating its possible values, which is valuable. The coverage is incomplete, as the order/role of the two ticket IDs is not clarified, and the default value is not mentioned in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Crée un lien') and the resource ('deux tickets'), which is specific and unambiguous. It does not explicitly distinguish from siblings like list_ticket_links or merge_tickets, but the core purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates when to use the tool (when you need to link two tickets), but does not provide explicit guidance on when not to use it or mention alternatives. It meets the 'implied usage' level but lacks direct exclusions or alternative references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_followupsB
Liste tous les suivis d'un ticket.
| Name | Required | Description | Default |
|---|---|---|---|
| ticket_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. The verb 'Liste' signals a read operation, but the description does not disclose ordering, pagination, response format, or error behavior, which is a notable gap for a list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that immediately states the action and object. It contains no redundant words or filler, achieving maximum clarity in minimal space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with a single parameter, the description covers the core purpose, which is adequate. However, the lack of annotations and output schema, combined with missing behavioral details, leaves some ambiguity about the exact return shape and edge cases, though the tool itself is simple enough that the core intent is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, ticket_id, is described only by its type and name in the schema (0% schema description coverage). The description mentions 'd'un ticket' but adds no additional meaning about the parameter's role, format, or constraints beyond what is already obvious from the name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Liste') and resource ('tous les suivis d'un ticket') to clearly state that it lists all follow-ups for a ticket. This distinguishes it from sibling tools like get_followup (single follow-up) and add_followup (create).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose is inferred from the name and description, but there is no explicit statement of when to use it versus alternatives such as get_followup. The description does not mention exclusions or preconditions, but the usage is easily implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_itil_categoriesA
Liste toutes les catégories ITIL disponibles (Incident, Demande, Changement, Problème).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the full burden of behavioral disclosure. It only lists category examples but does not describe the return format (e.g., an array of strings), whether the list is static or filtered by ITIL process type, or if any localization is applied. The description largely repeats the tool's name without adding operational insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded with the action and resource, followed by clarifying examples. Every word earns its place, and there is no redundant or verbose content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, list-only tool, the description is largely complete: it states the tool's purpose and gives examples of the expected content. However, it omits any detail about the return structure (e.g., whether it returns a JSON array, or if categories are returned as strings or objects), which would be useful given the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, and the input schema is empty; thus the baseline of 4 applies. The description's examples are irrelevant to parameter semantics but do not detract. There is no parameter information needed beyond what the schema already conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Liste toutes') and resource ('catégories ITIL disponibles'), with concrete examples (Incident, Demande, Changement, Problème). It distinctly separates this from sibling tools like list_kb_categories by specifying ITIL categories.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided, such as when to use this tool versus alternatives like list_kb_categories for knowledge base categories. The description does not mention prerequisites or typical use cases, leaving the agent to infer the tool's purpose from its name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_kb_articlesA
List GLPI knowledge base articles with pagination.
Each KnowbaseItem returned by the API embeds the full HTML answer. On large KBs this makes the JSON response heavy: in production we observed that range_start > 60 combined with range_limit > 10 is enough to exceed PHP-FPM memory_limit on the GLPI side and the request fails. To stay below that ceiling, range_limit is auto-clamped to 10 when range_start > 60. When clamping kicks in the response is wrapped in a dict carrying _clamped_range_limit and _warning so callers can detect the change. Behaviour is unchanged for range_start <= 60.
| Name | Required | Description | Default |
|---|---|---|---|
| range_limit | No | ||
| range_start | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses the heavy response payload, the memory limit issue, auto-clamping behavior, and the response wrapper dict with _clamped_range_limit and _warning. It also states the unchanged behavior for range_start <= 60, giving the agent a complete behavioral model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured, starting with the core purpose, then explaining the behavioral caveat, the clamp rule, and the warning wrapper. Each sentence contributes essential information with no fluff, and the length is justified by the complexity of the behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, but the description covers the return format (dict with _clamped_range_limit and _warning) when clamping occurs. It addresses potential memory failures, making the description complete for safe usage. No additional details are necessary for a simple listing tool with pagination.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains how range_start and range_limit interact (range_start > 60 combined with range_limit > 10 triggers clamping) and clarifies the clamping effect. While it doesn't define them as offset/limit, it gives meaningful context that helps the agent choose appropriate values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'List GLPI knowledge base articles with pagination' with a specific verb and resource, clearly distinguishing it from siblings like get_kb_article (single article) and search_kb_articles (search).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies usage for listing with pagination, but does not explicitly compare to alternatives such as search_kb_articles or mention when not to use this tool. The pagination and memory caveats provide context but not direct usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_kb_categoriesB
Liste toutes les catégories de la base de connaissances.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, yet it says nothing about whether the list is paginated, ordered, scoped to a knowledge base, or returns only visible categories. For a trivial read-only list the risk is low, but the disclosure is essentially absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or redundancy. Every word earns its place for a tool this small.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the main open question is what the returned category list contains and whether it is complete or filtered. That is unaddressed, leaving a modest but real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema cannot add meaning and the baseline is 4. There is nothing parameter-related for the description to compensate for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Liste) and resource (catégories de la base de connaissances), and the KB qualifier implicitly separates it from list_itil_categories. It does not explicitly name that sibling or any other alternative, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no indication of when to reach for this tool versus list_itil_categories or list_kb_articles, nor any prerequisite context. Usage is only inferable from the name and the absence of parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_suppliersB
Liste les fournisseurs enregistrés dans GLPI.
name_contains : filtre optionnel sur le nom (recherche partielle)
only_active : n'inclure que les fournisseurs actifs (is_active = 1)
range_start / range_limit : pagination
| Name | Required | Description | Default |
|---|---|---|---|
| only_active | No | ||
| range_limit | No | ||
| range_start | No | ||
| name_contains | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the filtering semantics and pagination, which is useful, but says nothing about permissions, default ordering, what fields are returned, or that only_active defaults to true. For a listing tool with zero annotation coverage this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose followed by a tight bulleted parameter list. No wasteful sentences, though the parameter bullets are somewhat terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 4 params, no annotations, and no output schema, the description covers intent and parameter meaning but leaves behavioral gaps: return format, ordering, and permission requirements are absent. Adequate but not complete for an unannotated tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate — and it does, explaining each of the four parameters: name_contains is a partial-match filter, only_active maps to is_active=1, and range_start/range_limit handle pagination. It omits the defaults (e.g., only_active=true), but meaningfully documents every parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: listing suppliers registered in GLPI. This clearly distinguishes it from create_supplier, update_supplier, and delete_supplier siblings by verb. However it does not explicitly name which sibling to prefer or when, so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The read-only listing nature is implied by the verb and by the filter/pagination params, but the description never says when to use this tool versus alternatives, nor any prerequisites. Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tasksA
Liste toutes les tâches d'un ticket.
| Name | Required | Description | Default |
|---|---|---|---|
| ticket_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states the basic operation without disclosing that it is a read-only listing, what the return format looks like, ordering, or any side effects. This is a significant transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no filler or redundant information. It is front-loaded and efficient for such a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one required parameter and no output schema, the description is minimally sufficient. Yet, the lack of any information about the return structure, ordering, or potential empty results leaves meaningful gaps in understanding what the tool delivers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The phrase 'd'un ticket' adds meaning by implying that ticket_id identifies the ticket whose tasks are listed. However, the description does not elaborate on the parameter's role, format, or constraints beyond what the schema already provides (integer, required).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Liste toutes les tâches d'un ticket' clearly states the verb (list), the resource (tasks), and the scope (of a ticket). This differentiates it from sibling tools like list_tickets, get_ticket, and add_task, which have different resources or purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you need to retrieve all tasks belonging to a specific ticket, identified by ticket_id. However, it does not explicitly state when not to use it or mention alternatives such as get_followup or add_task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ticket_linksB
Liste tous les liens d'un ticket avec d'autres tickets.
| Name | Required | Description | Default |
|---|---|---|---|
| ticket_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It only states the action without mentioning return format, pagination, permissions, or any side effects. The read-only nature is implicit but not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that clearly communicates the purpose without any extra fluff. It is front-loaded and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema, no annotations), the description covers the core purpose and parameter meaning. However, it lacks any mention of return value or usage context, so it is not fully complete for an agent to invoke it correctly in all situations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, but the description's phrase 'd'un ticket' clarifies that ticket_id refers to the ticket whose links are listed. This adds meaning beyond the bare schema, but it doesn't provide additional detail about the parameter's format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: it lists all links of a ticket with other tickets. The verb 'liste' and resource 'liens d'un ticket' are specific, and it distinguishes itself from sibling tools like get_ticket or link_tickets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It doesn't mention that this is for viewing existing links, nor does it contrast with link_tickets or any other sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ticketsC
Liste les tickets avec pagination optionnelle.
status : 1=Nouveau 2=En cours(attribué) 3=En cours(planifié) 4=En attente 5=Résolu 6=Clos
type : 1=Incident 2=Demande de service
range_start / range_limit : pagination
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | ||
| range_limit | No | ||
| range_start | No | ||
| ticket_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden of behavioral disclosure. It does not explicitly state that the tool is read-only, has no side effects, or any constraints on use. While 'list' implies read-only behavior, the description does not mention sorting, scope, or any other behavioral traits beyond listing and pagination parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the primary action, followed by bullet-point parameter clarifications. It is free of fluff, but the 'type' vs 'ticket_type' inconsistency and the slight repetition of pagination information prevent a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides essential filter code mappings but lacks explicit confirmation that filters are optional, fails to clarify the relationship between 'type' and 'ticket_type', and does not explain pagination mechanics beyond naming. Given no annotations and 0% schema description coverage, this is only partially complete for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds valuable numeric mappings for status and type values, which is necessary given the schema provides no enums. However, it refers to 'type' while the schema parameter is 'ticket_type', creating a mismatch that could lead to incorrect usage. Pagination parameters are only described as 'pagination' without explaining offset/limit behavior, so the compensation for the 0% schema coverage is incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists tickets with optional pagination, using a specific verb and resource. However, it does not distinguish this from sibling tools like search_tickets, which also retrieves ticket data, so it misses the opportunity for explicit differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no exclusions, and no context about appropriate use cases. The description merely states functionality without clarifying relationships to sibling tools like search_tickets or get_ticket.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_ticketsA
Fusionne un ou plusieurs tickets source vers un ticket cible.
Lie chaque ticket source au ticket cible comme doublon (link_type=2)
Copie les suivis des tickets source vers le ticket cible (si add_followups=True)
Ferme les tickets source avec un suivi explicatif (si close_source=True)
Paramètres :
target_ticket_id : ID du ticket cible (celui qui reste ouvert)
source_ticket_ids : liste des IDs de tickets à fusionner dans le cible
add_followups : copier les suivis des tickets source vers le cible
close_source : fermer les tickets source après la fusion
| Name | Required | Description | Default |
|---|---|---|---|
| close_source | No | ||
| add_followups | No | ||
| target_ticket_id | Yes | ||
| source_ticket_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden of behavioral disclosure. It does so well: it states that source tickets are linked as duplicates (link_type=2), that follow-ups are copied conditionally, and that source tickets are closed with an explanatory follow-up. It also clarifies that the target ticket remains open. Missing details like reversibility or permission requirements, but the core actions are explicitly disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear one-line summary followed by bullet points of the tool's actions, then a parameter list. It is front-loaded, uses concise language, and every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 params, conditional behaviors) and the lack of annotations, the description is remarkably complete. It covers all actions, parameter semantics, and conditional outcomes. The presence of an output schema means return values need not be described. There are no significant gaps for an agent to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains all four parameters beyond the schema, providing meaningful context: target_ticket_id is 'the one that stays open', source_ticket_ids are the tickets to merge, and the boolean flags are explained with their conditions (e.g., 'copier les suivis... si add_followups=True'). This fully compensates for the 0% schema description coverage and adds value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Fusionne un ou plusieurs tickets source vers un ticket cible' (merges one or more source tickets into a target ticket). It clearly distinguishes the merge operation from mere linking by detailing the side effects (linking as duplicates, copying follow-ups, closing source tickets). This differentiates it from sibling tools like link_tickets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for merging duplicate tickets but does not explicitly state when to use this tool versus alternatives (e.g., link_tickets). It provides no exclusions or known alternative recommendations. The context is clear enough for an agent to infer, but there is no explicit guidance about when this tool should be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_kb_articlesA
Search knowledge base articles by keyword.
By default the search runs only against the title column, which is fast on any GLPI instance. Set search_content=True to also match against the full HTML body. On a GLPI instance that has no MySQL FULLTEXT index on knowbaseitems.answer, that branch produces a LIKE '%keyword%' scan on the answer column which routinely exceeds the 30 second client timeout on KBs with sizeable HTML payloads.
Field IDs are discovered at runtime via listSearchOptions/KnowbaseItem and looked up by column name ("name", "answer") so the tool works on both GLPI 10 and GLPI 11 (where numeric IDs may differ). When discovery fails the legacy GLPI 10 IDs (6 for title, 7 for body) are used as a fallback.
Parameters:
keywords: text to search for
range_start, range_limit: pagination
search_content: also match against the article body (default False). Only enable when the GLPI database has a FULLTEXT index on knowbaseitems.answer, otherwise the request will be slow.
| Name | Required | Description | Default |
|---|---|---|---|
| keywords | Yes | ||
| range_limit | No | ||
| range_start | No | ||
| search_content | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and excels. It discloses performance implications (LIKE '%keyword%' scan, 30-second timeout), runtime ID discovery with fallback, and version compatibility across GLPI 10 and 11. This goes far beyond a basic description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence provides actionable value: purpose, default behavior, performance warnings, version compatibility, and parameter explanations. It is well-structured with a clear parameters list and no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool complexity, absence of annotations, and lack of output schema, the description covers purpose, parameters, performance caveats, fallback behavior, and version support. It is fully self-contained and leaves no critical gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains keywords, search_content behavior and defaults, and lists range_start/range_limit as pagination. While the range parameters get minimal detail, the tool still adds substantial meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Search knowledge base articles by keyword,' a specific verb+resource statement. It clearly distinguishes this from sibling tools like list_kb_articles and get_kb_article by focusing on keyword-based search rather than listing or retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool and when to enable search_content, warning about performance risks on instances without FULLTEXT indexes. However, it does not explicitly name alternative tools or state when not to use this tool in favor of list_kb_articles.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_ticketsA
Recherche avancée de tickets via l'API GLPI /search/Ticket. Tous les paramètres sont optionnels et combinables (combinés en ET).
Trois portées de recherche textuelle, à ne pas confondre :
keywords: le titre seulement. Rapide, mais aveugle au corps du ticket et aux suivis. C'est la portée historique de cet outil.content_keywords: la description du ticket (corps initial).followup_keywords: le contenu des suivis. Indispensable pour l'analyse historique : sur la plupart des instances, l'essentiel de la connaissance d'investigation vit dans les suivis, pas dans les titres. Le nom d'un outil ou d'un correctif mentionné uniquement en cours de diagnostic ne se trouve que par cette portée.
Note de performance : content_keywords et followup_keywords
produisent un LIKE '%motif%' côté MySQL. Sans index FULLTEXT, ces
recherches sont sensiblement plus lentes que par titre — les combiner
avec status, category_id ou ticket_type pour réduire l'ensemble
balayé.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | ||
| keywords | No | ||
| category_id | No | ||
| range_limit | No | ||
| range_start | No | ||
| ticket_type | No | ||
| assigned_user_id | No | ||
| content_keywords | No | ||
| followup_keywords | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses that parameters are AND-combined and that content/followup searches use MySQL LIKE '%motif%' and are slower without a FULLTEXT index — real behavioral value. It omits return format, pagination behavior and any auth/permission notes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well front-loaded: purpose first, then the three scopes, then the performance caveat. The bulleted structure is scannable. Slightly longer than strictly necessary but essentially every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter search tool with no annotations, no output schema and 0% schema coverage, the description covers the hardest-to-guess semantics well. However it omits pagination (range_limit default 50, range_start) and assigned_user_id, which an agent needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It richly explains the three non-obvious text parameters (keywords=title, content_keywords=body, followup_keywords=followups) and names three filters. It leaves range_limit, range_start and assigned_user_id undocumented, so it does not fully cover the 9 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Recherche), resource (tickets) and even the underlying API endpoint (/search/Ticket). It clearly distinguishes the tool's three text scopes from each other. It does not differentiate from sibling list_tickets/get_ticket, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives strong when-to-use guidance for the three keyword scopes ('à ne pas confondre', followup_keywords indispensable pour l'analyse historique) and advises combining filters with status/category_id/ticket_type to limit the scan. It never states when to prefer this over list_tickets, so no explicit alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stats_by_assigneeA
Retourne le nombre de tickets par technicien assigné.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states the basic result (count per assignee) but does not mention whether it includes all tickets regardless of status, how zero-count technicians are handled, or any other behavioral nuances. This is minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that immediately conveys the tool's purpose. There is no wasted wording, and it is efficiently front-loaded with the action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (no parameters) and the presence of an output schema, the description sufficiently covers what the agent needs to know to invoke the tool. It explains the core functionality without needing to elaborate on return values, as those are defined by the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. There is no parameter information to add, and the description correctly focuses on the tool's output rather than input, making it appropriate for a no-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb 'retourne' and the resource: the number of tickets per assigned technician. It distinguishes itself from sibling stats tools like stats_by_priority and stats_by_status by focusing specifically on assignee.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It simply states what it does without any context about use cases, prerequisites, or exclusions. The agent must infer its usage solely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stats_by_categoryA
Retourne le nombre de tickets par catégorie ITIL.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool returns a count, but it does not explicitly confirm that it is a read-only operation, does not mention any prerequisites or side effects, and lacks details about scope (e.g., all tickets vs. a subset). The description is too minimal to provide full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that directly states the tool's purpose. There is no redundant information, and it is appropriately sized for a tool with no parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no params, no annotations) and the presence of an output schema, the description sufficiently explains what the tool returns. It could be slightly more complete by explicitly noting that it is a read-only aggregate, but overall it covers the essential context for an agent to select and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there is nothing for the description to clarify. According to the rubric, a baseline of 4 applies for 0 parameters. No additional information is needed or provided, which is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the number of tickets by ITIL category ('Retourne le nombre de tickets par catégorie ITIL'), which is a specific verb+resource combination. It distinguishes itself from sibling stats tools like stats_by_priority and stats_by_status by explicitly mentioning the category grouping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: if you need ticket counts grouped by ITIL category, this is the tool. However, it does not explicitly state when to use this tool over alternatives or mention any exclusions, such as filtering options. The guidance is only implied through the tool's purpose, not articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stats_by_priorityA
Retourne le nombre de tickets ouverts par priorité.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the return value ('number of open tickets by priority') without clarifying output format, whether historical data is included, or whether the operation is read-only. While the verb 'Retourne' implies reading, this is minimal disclosure for a tool with no annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that directly states the tool's purpose without redundancy. It is front-loaded with the action and the key output details, earning full marks for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and an output schema available, the description adequately states the core functionality. It could be more complete by mentioning the return format (e.g., mapping of priority to count), but the presence of an output schema reduces the need for such detail. The description is sufficient for a simple stats query.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the input schema confirms this with 100% coverage. The description adds no parameter details because there are none to document, so the baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Retourne' = returns) and resource ('le nombre de tickets ouverts par priorité' = number of open tickets by priority). It distinguishes itself from sibling stats tools like stats_by_status, stats_by_type, and stats_by_category by explicitly naming the aggregation dimension (priority).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its use for querying ticket counts grouped by priority, and the sibling tool names provide context for when to choose this over other stats tools. However, it does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stats_by_statusA
Retourne le nombre de tickets ouverts par statut.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing behavior. It reveals that the tool counts open tickets and groups them by status, which is a read-only statistical operation. However, it does not clarify details like whether all statuses are included, if there are any date filters, or the exact output structure beyond what the schema already provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the core functionality. It contains no redundant words and effectively communicates the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of an output schema, the description sufficiently conveys what the tool does. It counts open tickets grouped by status, which is a complete purpose for a stats tool. A slight gap is the lack of context about potential filters or edge cases, but these are not necessary for a basic stats retrieval.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema is empty, so the description is not required to explain parameter semantics. The baseline for zero params is set to 4, and the description appropriately focuses on the operation itself rather than parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool returns the number of open tickets per status, using a specific verb ('Retourne') and resource ('tickets ouverts par statut'). This distinguishes it from sibling stats tools like stats_by_priority, which focus on different dimensions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used to get ticket counts grouped by status, but it does not explicitly state when to use it over alternatives or provide exclusions. Since the purpose is straightforward, the usage context is implied rather than clearly outlined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stats_by_typeA
Retourne le nombre de tickets par type (Incident / Demande de service).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It only states the basic aggregation and does not clarify data scope, whether the count is global or filtered, or any assumptions about ticket states. No extra context beyond the obvious operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, succinct sentence that is front-loaded with the core action and resource. It avoids redundancy and is appropriately sized for a parameterless stats tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple aggregation tool with no parameters and an output schema available, the description is mostly complete. It could explicitly state that it covers all tickets, but the lack of parameters implies global scope. The output schema covers return details, so no further description is necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema provides no parameter semantics. The baseline for 0 params is 4, and the description adds no parameter information, but it doesn't need to. The description covers the only relevant semantic aspect by naming the ticket types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: returning the number of tickets by type, with the two types explicitly listed (Incident / Service Request). This specific verb+resource combination distinguishes it from sibling stats tools like stats_by_priority or stats_by_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention scenarios, exclusions, or related tools. The user must infer usage solely from the purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stats_overdueA
Retourne les tickets en retard (date d'échéance dépassée et non résolus). Utilise le champ time_to_resolve de GLPI.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It explains the filtering logic (due date passed and unresolved) and the specific field used, making the behavior transparent. It doesn't explicitly state read-only nature, but the verb 'Retourne' implies a query operation, and there is no indication of side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two short sentences. The first sentence defines the core behavior, and the second adds the technical detail about the field. Every word contributes, with no redundancy or filler, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple zero-parameter stats tool with an output schema present. The description fully covers what the tool does, including the exact criteria. With no parameters, there are no additional inputs to document, and the output schema handles return value details. The description is complete for this level of complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description does not need to explain parameters beyond the schema, which is empty. It adds no parameter information, which is appropriate since there are none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns overdue tickets (due date passed and unresolved), using a specific verb 'Retourne' and defining exactly what qualifies. This distinguishes it from sibling stats tools like stats_by_priority or stats_by_status, which focus on other dimensions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context: use this tool to get overdue tickets. It mentions the underlying GLPI field 'time_to_resolve', which helps the agent understand the data source. It doesn't explicitly state exclusions or alternatives, but for a zero-parameter stats tool, the intended use is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stats_resolution_timeA
Retourne le délai moyen de résolution des tickets résolus ou clos.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It adds the scope of 'tickets résolus ou clos' but does not clarify the measurement basis (e.g., from creation to resolution), units (days, hours), or whether a time window applies. This is a read-only stat tool, but the description could be more explicit about the exact definition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence in French with no waste. It conveys the essential purpose and scope efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-parameter tool with an output schema, the description provides the core purpose and scope. It could add detail about the calculation method or units, but the output schema likely covers return values, making it reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema is empty, so there is no parameter information to add. Following the baseline for 0-parameter tools, the description adequately suffices.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the average resolution time for resolved or closed tickets. It uses a specific verb ('retourne') and specifies the resource and scope, effectively distinguishing it from sibling stats tools like stats_by_priority or stats_overdue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving average resolution time of resolved/closed tickets but offers no explicit guidance on when to choose this tool over alternatives or any exclusion criteria. It lacks a direct comparison to sibling stats tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_contactB
Met à jour un contact. Passer uniquement les champs à modifier. Exemples de champs : name, firstname, contacttypes_id, phone, mobile, email, comment Pour restaurer un contact mis à la corbeille : {"is_deleted": 0}
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | ||
| update_fields | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose two important behavioral traits: partial update semantics and how to restore a deleted contact. It still omits permissions, reversibility, side effects, and response behavior for this mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, leading with the core action and the partial-update rule before examples. The example JSON is useful, though the formatting could separate the restoration example more cleanly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation tool with no annotations, no output schema, and 0% schema coverage, the description covers the basic purpose, partial-update behavior, example fields, and a restoration case. It still leaves the required contact_id parameter and the tool's response or permission requirements undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It lists example update_fields keys and shows a special is_deleted: 0 restoration payload, which adds meaning for update_fields. However, contact_id is not documented at all, and the update_fields schema remains open-ended.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'Met à jour un contact' (updates a contact). It distinguishes itself implicitly from create_contact and delete_contact by being the update operation, but it does not explicitly name sibling alternatives or contrast scopes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives useful partial-update guidance ('Passer uniquement les champs à modifier') and a restoration scenario using is_deleted: 0. However, it does not say when to prefer this tool over alternatives such as create_contact, delete_contact, or other update tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_contractB
Met à jour un contrat. Passer uniquement les champs à modifier. Exemples de champs : name, num, contracttypes_id, begin_date, duration, notice, periodicity, billing, accounting_number, comment Les durées sont en MOIS et begin_date au format AAAA-MM-JJ. Pour restaurer un contrat mis à la corbeille : {"is_deleted": 0}
| Name | Required | Description | Default |
|---|---|---|---|
| contract_id | Yes | ||
| update_fields | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses that this is a partial update and explains how to restore a soft-deleted contract, but it omits permissions, side effects, overwrite behavior, and whether the operation is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and then adds practical field examples and formatting rules. It is reasonably tight, though the field list is somewhat long and could be organized more clearly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and 0% schema description coverage, the description covers partial update semantics, field examples, formats, and restore behavior. It remains incomplete because contract_id semantics, authentication needs, error behavior, and return information are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides useful examples of updatable fields under update_fields, including duration units and date format, plus the special is_deleted restore value. It does not explain the required contract_id parameter or the update_fields object structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action and resource: 'Met à jour un contrat'. It also clarifies that only fields to modify should be passed, which sharpens the purpose. It does not explicitly distinguish this tool from siblings like create_contract or delete_contract.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives operational guidance such as passing only fields to modify and using {'is_deleted': 0} to restore a trashed contract. However, it does not state when to choose this tool over alternatives like create_contract, delete_contract, or other update_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_followupA
Met à jour un suivi existant. Exemples de champs : content, is_private.
Le champ content doit être en HTML compatible GLPI, jamais en Markdown
(cf. instructions du serveur).
Note : un suivi est une pièce horodatée et signée du dossier. Corriger le
contenu d'un suivi déjà publié réécrit l'historique visible par l'équipe —
à réserver aux corrections d'erreurs factuelles récentes. Pour un
changement de fond, préférer l'ajout d'un nouveau suivi via add_followup,
qui conserve la trace du raisonnement antérieur.
| Name | Required | Description | Default |
|---|---|---|---|
| followup_id | Yes | ||
| update_fields | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it discloses that a followup is timestamped and signed, that editing rewrites visible history, and that edits should be limited to recent factual corrections. It still does not cover permissions, return behavior, or what exactly happens to the existing signature/timestamp metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, then gives field examples, format constraints, and the key safety note. Each sentence adds distinct value without unnecessary repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and 0% schema description coverage, the description covers the important behavioral and usage context well. It remains incomplete on parameter details and return/error behavior, but the critical historical-rewrite warning is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It names example update fields ('content', 'is_private') and gives an important format constraint for content (HTML, not Markdown), but it does not explain followup_id or the general structure of update_fields beyond examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Met à jour un suivi existant') and immediately distinguishes it from the sibling add_followup. An agent can tell this is an edit operation on an existing followup, not a creation or retrieval call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it (recent factual error corrections) and when to prefer an alternative ('Pour un changement de fond, préférer l'ajout d'un nouveau suivi via add_followup'). The guidance is actionable and names the sibling to use instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_kb_articleC
Met à jour un article de la base de connaissances. Exemples de champs : name, answer, is_faq, knowbaseitemcategories_id
| Name | Required | Description | Default |
|---|---|---|---|
| article_id | Yes | ||
| update_fields | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It never states required permissions, whether unspecified fields are preserved or wiped, whether the update is partial or full replacement, or what the result looks like — all critical for a mutation on a freeform object.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, purpose first and field examples second, with no filler. Efficient and front-loaded, though the example list is too terse to be fully actionable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and a freeform nested object, the description is thin: it omits permissions, partial-update semantics, and the range of acceptable keys. An agent can identify the tool but not safely invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the nested update_fields object has additionalProperties:true, so the description's examples (name, answer, is_faq, knowbaseitemcategories_id) genuinely add value about accepted keys. However, article_id receives no explanation and the examples are prefixed 'exemples', giving no indication of the authoritative field set.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource ('Met à jour un article de la base de connaissances'), which lets an agent separate it from create/get/list/search KB siblings. It doesn't explicitly name or contrast with those siblings, so it falls short of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The verb 'met à jour' implies the article must already exist, but there is no explicit when-to-use, no prerequisites, and no routing to alternatives like create_kb_article or get_kb_article. Nothing tells the agent when this is the wrong tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_kb_article_visibility_groupA
Met à jour une règle de visibilité par groupe d'un article KB.
visibility_id : ID de l'entrée KnowbaseItem_Group (obtenu via get_kb_article_visibility)
update_fields : champs à modifier, ex: {"entities_id": 1, "is_recursive": 1}
| Name | Required | Description | Default |
|---|---|---|---|
| update_fields | Yes | ||
| visibility_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden for a mutation tool. It says nothing about permissions, reversibility, side effects on related rules, or what the response looks like – only that fields get modified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A front-loaded main sentence followed by two short bullets, each earning its place by documenting a required parameter. No padding, though the bullets are terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation tool with no annotations and no output schema, the description covers the inputs adequately but leaves out behavioral context (permissions, effects, return). It is workable but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does: it explains what visibility_id refers to (a KnowbaseItem_Group entry) and its source, and gives a concrete example of update_fields keys ('entities_id', 'is_recursive') that the schema itself does not document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Met à jour une règle de visibilité par groupe d'un article KB'), clearly distinguishing this group-scoped rule updater from the profile/parent variants. It does not name the sibling tools explicitly, but the group scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete prerequisite for the key identifier ('visibility_id : ... obtenu via get_kb_article_visibility'), which tells the agent how to acquire the input before calling. There is no explicit when-not or comparison to update_kb_article_visibility_profile, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_kb_article_visibility_profileB
Met à jour une règle de visibilité par profil d'un article KB.
visibility_id : ID de l'entrée KnowbaseItem_Profile (obtenu via get_kb_article_visibility)
update_fields : champs à modifier, ex: {"entities_id": 1, "is_recursive": 1}
| Name | Required | Description | Default |
|---|---|---|---|
| update_fields | Yes | ||
| visibility_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says the tool updates a rule, but does not disclose permissions, reversibility, side effects, or how omitted fields are treated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the tool purpose and then lists parameters compactly. Every sentence contributes useful information with no visible padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a mutation tool with no annotations, no output schema, 0% schema description coverage, and a nested update_fields object, the description is incomplete. It covers the ID source and an example, but lacks permissions, field constraints, and side-effect details needed to invoke safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains that visibility_id is the KnowbaseItem_Profile entry ID obtained via get_kb_article_visibility and gives an example for update_fields, but does not fully specify allowed fields or nested update semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: updating a visibility rule by profile for a KB article. It distinguishes the operation as profile-based rather than group-based, though it does not explicitly name the sibling update_kb_article_visibility_group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear prerequisite for visibility_id, telling the agent to obtain it via get_kb_article_visibility. However, it gives no explicit guidance on when to use this tool versus add_kb_article_visibility_profile or update_kb_article_visibility_group.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_supplierA
Met à jour un fournisseur. Passer uniquement les champs à modifier. Exemples de champs : name, suppliertypes_id, address, town, phonenumber, email, website, comment, is_active Pour restaurer un fournisseur mis à la corbeille : {"is_deleted": 0}
| Name | Required | Description | Default |
|---|---|---|---|
| supplier_id | Yes | ||
| update_fields | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses partial-update semantics and soft-delete restoration via is_deleted, but omits permissions, side effects, output behavior, and whether unspecified fields are preserved or cleared.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then compact usage guidance and a concrete restore example. The field list is useful rather than filler, and no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an unannotated mutation tool with no output schema and 0% schema coverage, the description gives useful field examples and restore behavior but omits permission requirements, error semantics, and supplier_id meaning. Enough to attempt a call, not enough to call confidently in all cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It enumerates example update_fields and documents the special is_deleted restore pattern, which is valuable beyond the bare schema; however, supplier_id remains undocumented and the field list is explicitly non-exhaustive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Met à jour un fournisseur') and distinguishes it from create_supplier, delete_supplier, and list_suppliers in the sibling set. The partial-update instruction further clarifies how it differs from bulk field replacement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: pass only the fields to modify, and use is_deleted:0 specifically to restore a trashed supplier. It does not explicitly name alternatives or list when-not-to-use cases, but the usage context is unambiguous for an update tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_taskA
Met à jour une tâche. Exemples : state (1/2), content, actiontime, users_id_tech
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| update_fields | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states that the tool updates a task and lists example fields, without disclosing side effects, permissions, error behavior, or whether the update is partial or full, leaving significant behavioral context unknown.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded: a single action sentence followed by a short list of examples. Every word earns its place, with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an open-ended update_fields object, no output schema, and no annotations. The description provides only a few examples without explaining update semantics (e.g., partial vs full update), error cases, or return behavior, leaving notable gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds value beyond the schema by listing example keys (state, content, actiontime, users_id_tech) and hinting at valid values for state (1/2). Since update_fields is an arbitrary object with no schema descriptions, these examples help clarify expected structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Met à jour une tâche' (Updates a task) and gives example fields, making the tool's purpose specific and distinct from siblings like add_task, delete_task, and update_ticket.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for modifying existing tasks but does not explicitly state when to use it versus alternatives, nor does it mention any prerequisites, exclusions, or when not to use it. The examples hint at usage but provide no explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_ticketA
Met à jour un ticket. Passer uniquement les champs à modifier. Exemples de champs : status, priority, name, content, itilcategories_id
| Name | Required | Description | Default |
|---|---|---|---|
| ticket_id | Yes | ||
| update_fields | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It does convey a key behavioral trait: the update is partial (only pass fields to change), which is valuable. However, it does not disclose authentication requirements, return values, or error behavior. While it is not misleading, it lacks depth expected for a mutation tool without annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences. The first states the purpose, and the second provides usage guidance and examples. Every word earns its place, with no fluff or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 2 parameters, no output schema, and no annotations, the description covers the essential aspects: what it does and how to use it (partial update). It could be more complete by mentioning the return value or indicating that a ticket must already exist, but the provided guidance is sufficient for basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It lists example fields (status, priority, name, content, itilcategories_id) and clarifies that update_fields should contain only the fields to modify. This adds significant meaning to an otherwise opaque object with additionalProperties. ticket_id is self-explanatory from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Met à jour un ticket' (Updates a ticket), which is a specific verb+resource combination. Since sibling tools include create_ticket, delete_ticket, and get_ticket, the use of 'update' distinguishes the intended action, and 'ticket' makes the resource unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Passer uniquement les champs à modifier' (Only pass the fields to modify), which tells the agent how to structure the update_fields object. It also gives example field names. However, it does not mention when not to use this tool or alternatives, so it just misses the top score.
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.
52 tool updates
v0.1.0- First observed
add_followup - First observed
add_kb_article_visibility_group - First observed
add_kb_article_visibility_profile - First observed
add_solution - First observed
add_task - First observed
create_contact - First observed
create_contract - First observed
create_kb_article - First observed
create_supplier - First observed
create_ticket - First observed
delete_contact - First observed
delete_contract - First observed
delete_followup - First observed
delete_supplier - First observed
delete_task - First observed
delete_ticket - First observed
get_followup - First observed
get_groups - First observed
get_kb_article - First observed
get_kb_article_visibility - First observed
get_solution - First observed
get_ticket - First observed
get_users - First observed
kill_session - First observed
link_tickets - First observed
list_followups - First observed
list_itil_categories - First observed
list_kb_articles - First observed
list_kb_categories - First observed
list_suppliers - First observed
list_tasks - First observed
list_ticket_links - First observed
list_tickets - First observed
merge_tickets - First observed
search_kb_articles - First observed
search_tickets - First observed
stats_by_assignee - First observed
stats_by_category - First observed
stats_by_priority - First observed
stats_by_status - First observed
stats_by_type - First observed
stats_overdue - First observed
stats_resolution_time - First observed
update_contact - First observed
update_contract - First observed
update_followup - First observed
update_kb_article - First observed
update_kb_article_visibility_group - First observed
update_kb_article_visibility_profile - First observed
update_supplier - First observed
update_task - First observed
update_ticket
TDQS
Scored across 52 tools
Each tool has a clearly distinct purpose, with resource+action naming that separates e.g. list_tickets vs search_tickets and profile vs group visibility tools. A few tools (stats_by_*) follow similar patterns but target different metrics, so confusion is unlikely.
All tool names follow a consistent snake_case verb_noun pattern (list_tickets, add_followup, update_supplier), with only minor deviations like stats_resolution_time and kill_session. No mixed conventions are present.
52 tools is far above the typical 3–15 range; while GLPI is a broad domain, the granular CRUD for each entity could be consolidated. The count is excessive and likely burdens tool selection.
Core ticketing, followups, tasks, and KB articles have near-complete lifecycles, but there are notable gaps: no list/get for contacts and contracts, no update/delete for solutions, no asset/problem/change management, and KB category CRUD is missing. These gaps limit the server's coverage of GLPI.
Maintenance
Related MCP Connectors
- PlixanaOAuthcom.plixana
Operate the Plixana CRM from any AI: contacts, deals, quotes, WhatsApp and metrics.
Connect any AI assistant to Syncro: manage tickets, invoices, customers, assets, and more.
Monetize and manage your Tip4Serv store directly from your LLM.
Enable Large Language Model clients to interact seamlessly with any MediaWiki wiki. Perform action…
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to create, search, and manage OTRS tickets and configuration items via the OTRS API.7Apache 2.0
- AlicenseBqualityCmaintenanceMCP server allowing an AI assistant to interact directly with your GLPI instance via its REST API, enabling ticket management, knowledge base operations, and statistics.404-
- AlicenseBqualityCmaintenanceIntegrates with GLPI IT4Solução API v2.3 (OAuth2) to manage tickets, computer inventory, and configuration parameters, with safety features like dry-run and rollback.24MIT
- AlicenseNot gradedqualityDmaintenanceConnects AI assistants to GLPI IT Service Management, enabling ticket management, asset search, and ITIL processes via natural language.9 npm3MIT