Skip to main content
Glama

GLPI MCP

License: Unlicense

đŸ‡«đŸ‡· Français | 🇬🇧 English


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 uv

3. 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: mcp-otobo

Installation

1. Cloner le dépÎt

git clone https://github.com/svtica/glpi-mcp.git
cd glpi-mcp

2. Installer les dépendances

uv sync

Configuration (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.json

Les 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" | base64

Renseignez ensuite les champs dans config.json :

Champ

Description

GLPI_URL

URL de base de votre instance GLPI (sans / final)

GLPI_APP_TOKEN

App-Token créé dans la configuration API GLPI

GLPI_USER_TOKEN

User-Token de votre compte GLPI

LANG

Langue des libellĂ©s : fr (dĂ©faut) ou en — non encodĂ© en base64

GLPI_VERSION

Version GLPI : 10 (dĂ©faut) ou 11 — non encodĂ© en base64

VERIFY_TLS

Validation du certificat TLS de GLPI : false (dĂ©faut) ou true — boolĂ©en simple, non encodĂ© en base64

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 fichier config.json.

⚠ VERIFY_TLS vaut false par 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 magasin certifi de Python. Passez Ă  true dĂšs que l'AC interne est distribuĂ©e Ă  certifi : sur un GLPI accessible hors du rĂ©seau interne, laisser false expose la connexion — et donc vos jetons d'API — Ă  une interception.

Versions GLPI supportées

Version

Endpoint API

Authentification

GLPI 10

apirest.php

App-Token + User-Token → Session-Token

GLPI 11

api.php/v1

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.json

  • macOS : ~/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

kill_session

Ferme proprement la session GLPI active

đŸŽ« Tickets

Outil

Description

list_tickets

Liste les tickets avec pagination et filtres (statut, type)

get_ticket

Détail complet d'un ticket avec libellés lisibles

search_tickets

Recherche avancée par mots-clés, statut, type, catégorie, assigné

create_ticket

Crée un nouveau ticket

update_ticket

Modifie les champs d'un ticket existant

delete_ticket

Supprime un ticket

link_tickets

Lie deux tickets entre eux (lié, doublon, enfant, parent)

list_ticket_links

Liste tous les liens d'un ticket

merge_tickets

Fusionne des tickets source vers un ticket cible (copie suivis, lie comme doublon, ferme les sources)

💬 Suivis

Outil

Description

list_followups

Liste tous les suivis d'un ticket

get_followup

Détail d'un suivi

add_followup

Ajoute un suivi (public ou privé)

update_followup

Modifie un suivi existant (contenu, visibilité)

delete_followup

Supprime un suivi — destructif, retire la piùce de la piste d'audit

✅ Tñches

Outil

Description

list_tasks

Liste les tĂąches d'un ticket

add_task

Crée une tùche sur un ticket

update_task

Modifie une tùche (statut, durée, assigné)

delete_task

Supprime une tĂąche

💡 Solutions

Outil

Description

get_solution

Lit la solution d'un ticket

add_solution

Poste une solution (clĂŽture le ticket selon la config GLPI)

📊 Statistiques

Outil

Description

stats_by_status

Nombre de tickets par statut

stats_by_type

Répartition Incidents / Demandes de service

stats_by_priority

Tickets ouverts par priorité

stats_by_category

Nombre de tickets par catégorie ITIL

stats_by_assignee

Tickets par technicien assigné

stats_resolution_time

Délai moyen de résolution des tickets

stats_overdue

Tickets en retard par rapport au SLA

📚 Base de connaissances

Outil

Description

list_kb_articles

Liste les articles avec pagination. Si range_start > 60 et range_limit > 10, range_limit est auto-clampé à 10 (les contenus HTML complets dans la réponse JSON dépassent souvent le memory_limit PHP-FPM cÎté GLPI au-delà). Quand le clamp s'applique, la réponse est un dict {"_clamped_range_limit": 10, "_warning": "...", "items": [...]} au lieu d'une liste.

get_kb_article

Détail complet d'un article

search_kb_articles

Recherche par mots-clĂ©s (titre par dĂ©faut ; passer search_content=True pour inclure le corps HTML — lent sans index FULLTEXT MySQL sur knowbaseitems.answer)

create_kb_article

Crée un nouvel article (titre, contenu HTML, catégorie, FAQ)

update_kb_article

Met Ă  jour un article existant

list_kb_categories

Liste les catégories de la base de connaissances

get_kb_article_visibility

Lit les rÚgles de visibilité d'un article (profils, groupes, utilisateurs, entités)

add_kb_article_visibility_profile

Ajoute un profil à la visibilité d'un article

add_kb_article_visibility_group

Ajoute un groupe à la visibilité d'un article

update_kb_article_visibility_profile

Modifie une rÚgle de visibilité par profil existante

update_kb_article_visibility_group

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

list_itil_categories

Liste les catégories ITIL disponibles

get_users

Liste les utilisateurs GLPI

get_groups

Liste les groupes GLPI

🏱 Fournisseurs, contacts et contrats

Outil

Description

list_suppliers

Liste les fournisseurs (filtre name_contains, only_active, pagination)

create_supplier

Crée un fournisseur (name obligatoire, coordonnées optionnelles)

create_contact

Crée un contact ; rattachement optionnel à un fournisseur via supplier_id

create_contract

Crée un contrat ; rattachement optionnel à un fournisseur via supplier_id

update_supplier

Met Ă  jour un fournisseur (update_fields : champs Ă  modifier uniquement)

update_contact

Met Ă  jour un contact

update_contract

Met Ă  jour un contrat

delete_supplier

Met un fournisseur à la corbeille ; purge=True pour supprimer définitivement

delete_contact

Met un contact à la corbeille ; purge=True pour supprimer définitivement

delete_contract

Met un contrat à la corbeille ; purge=True pour supprimer définitivement

Note : list_suppliers filtre sur les fournisseurs actifs par défaut. Passer only_active=False pour inclure les fournisseurs désactivés.

Note : Pour create_contract, les champs duration, notice, periodicity et billing s'expriment en mois (convention GLPI), et begin_date au format AAAA-MM-JJ.

Note : Quand supplier_id est 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'outil update_* correspondant et {"is_deleted": 0}. Avec purge=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_TOKEN et GLPI_USER_TOKEN sont corrects dans votre config.json

  • VĂ©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_URL est accessible depuis la machine qui exĂ©cute le serveur

  • VĂ©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 error et detail (libellĂ©s tirĂ©s de la table LANG) 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: UnknownIssuer

Solution : 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.py

Pour 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 uv

3. 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-mcp

2. Install dependencies

uv sync

Configuration (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.json

Values 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" | base64

Then fill in the fields in config.json:

Field

Description

GLPI_URL

Base URL of your GLPI instance (without trailing /)

GLPI_APP_TOKEN

App-Token created in GLPI API configuration

GLPI_USER_TOKEN

User-Token from your GLPI account

LANG

Label language: fr (default) or en — not base64-encoded

GLPI_VERSION

GLPI version: 10 (default) or 11 — not base64-encoded

VERIFY_TLS

Validate the GLPI TLS certificate: false (default) or true — plain boolean, not base64-encoded

You can also use environment variables (GLPI_URL, GLPI_APP_TOKEN, GLPI_USER_TOKEN, GLPI_LANG, GLPI_VERSION, GLPI_VERIFY_TLS) instead of the config.json file.

⚠ VERIFY_TLS defaults to false, 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's certifi bundle. Switch it to true as soon as the internal CA is distributed to certifi: on a GLPI reachable from outside the internal network, leaving it false exposes the connection — and therefore your API tokens — to interception.

Supported GLPI versions

Version

API Endpoint

Authentication

GLPI 10

apirest.php

App-Token + User-Token → Session-Token

GLPI 11

api.php/v1

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

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.json

  • macOS: ~/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

kill_session

Gracefully closes the active GLPI session

đŸŽ« Tickets

Tool

Description

list_tickets

List tickets with pagination and filters (status, type)

get_ticket

Full ticket details with readable labels

search_tickets

Advanced search by keywords, status, type, category, assignee

create_ticket

Create a new ticket

update_ticket

Update fields of an existing ticket

delete_ticket

Delete a ticket

link_tickets

Link two tickets (linked, duplicate, child, parent)

list_ticket_links

List all links for a ticket

merge_tickets

Merge source tickets into a target (copies followups, links as duplicate, closes sources)

💬 Followups

Tool

Description

list_followups

List all followups for a ticket

get_followup

Followup details

add_followup

Add a followup (public or private)

update_followup

Update an existing followup (content, visibility)

delete_followup

Delete a followup — destructive, removes it from the audit trail

✅ Tasks

Tool

Description

list_tasks

List tasks for a ticket

add_task

Create a task on a ticket

update_task

Update a task (status, duration, assignee)

delete_task

Delete a task

💡 Solutions

Tool

Description

get_solution

Read the solution for a ticket

add_solution

Post a solution (closes the ticket per GLPI config)

📊 Statistics

Tool

Description

stats_by_status

Ticket count by status

stats_by_type

Incidents vs Service Requests breakdown

stats_by_priority

Open tickets by priority

stats_by_category

Ticket count by ITIL category

stats_by_assignee

Tickets per assigned technician

stats_resolution_time

Average ticket resolution time

stats_overdue

Tickets overdue against SLA

📚 Knowledge Base

Tool

Description

list_kb_articles

List articles with pagination. If range_start > 60 and range_limit > 10, range_limit is auto-clamped to 10 (full HTML article bodies in the JSON response often exceed the GLPI PHP-FPM memory_limit beyond that). When clamping kicks in, the response is a dict {"_clamped_range_limit": 10, "_warning": "...", "items": [...]} instead of a list.

get_kb_article

Full article details

search_kb_articles

Search by keywords (title only by default ; pass search_content=True to also match the HTML body — slow without a MySQL FULLTEXT index on knowbaseitems.answer)

create_kb_article

Create a new article (title, HTML content, category, FAQ)

update_kb_article

Update an existing article

list_kb_categories

List knowledge base categories

get_kb_article_visibility

Read visibility rules for an article (profiles, groups, users, entities)

add_kb_article_visibility_profile

Add a profile to an article's visibility

add_kb_article_visibility_group

Add a group to an article's visibility

update_kb_article_visibility_profile

Update an existing profile visibility rule

update_kb_article_visibility_group

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_itil_categories

List available ITIL categories

get_users

List GLPI users

get_groups

List GLPI groups

🏱 Suppliers, contacts and contracts

Tool

Description

list_suppliers

List suppliers (name_contains and only_active filters, pagination)

create_supplier

Create a supplier (name required, contact details optional)

create_contact

Create a contact; optionally attach it to a supplier via supplier_id

create_contract

Create a contract; optionally attach it to a supplier via supplier_id

update_supplier

Update a supplier (update_fields: changed fields only)

update_contact

Update a contact

update_contract

Update a contract

delete_supplier

Move a supplier to the trash; purge=True to delete permanently

delete_contact

Move a contact to the trash; purge=True to delete permanently

delete_contract

Move a contract to the trash; purge=True to delete permanently

Note: list_suppliers returns active suppliers only by default. Pass only_active=False to include disabled ones.

Note: For create_contract, the duration, notice, periodicity and billing fields are expressed in months (GLPI convention), and begin_date uses the YYYY-MM-DD format.

Note: When supplier_id is provided, the junction entry (Contact_Supplier / Contract_Supplier) is created in a second call and its result is returned under the _supplier_link key. 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 matching update_* tool and {"is_deleted": 0}. With purge=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

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_TOKEN and GLPI_USER_TOKEN are correct in your config.json

  • Check 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_URL is reachable from the machine running the server

  • Check 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 error and detail (labels taken from the LANG table) 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: UnknownIssuer

Solution: 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.py

To 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

40 tools
add_followupA

Ajoute un suivi Ă  un ticket.

  • is_private : True pour un suivi visible uniquement par les techniciens

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYes
ticket_idYes
is_privateNo

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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 visibilite d'un article KB.

  • groups_id : ID du groupe GLPI

ParametersJSON Schema
NameRequiredDescriptionDefault
groups_idYes
article_idYes
entities_idNo
is_recursiveNo

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility for behavioral disclosure. It only states the add operation without revealing side effects, idempotency, permission requirements, or implications for the other parameters. 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.

Conciseness3/5

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

The description is succinct with no redundant words, but it is under-specified, omitting essential parameter details and usage context. It is concise but not adequately informative.

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

Completeness2/5

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

Given the tool has four parameters, no annotations, and no output schema, the description is incomplete. It only covers one parameter and provides no information about behavior, return values, or when to use it.

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

Parameters2/5

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

The schema has no descriptions (0% coverage), and the description only clarifies 'groups_id' as the GLPI group ID. The remaining three parameters (article_id, entities_id, is_recursive) remain unexplained, so the description compensates only partially.

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

Purpose4/5

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

The description clearly states the action (add a group) and the resource (KB article visibility), which distinguishes it from the sibling tool for profile visibility. 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.

Usage Guidelines2/5

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 are any prerequisites or exclusion criteria mentioned. The description only explains one parameter and does not address usage context.

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_profileA

Ajoute un profil dans la visibilite d'un article KB.

  • profiles_id : ID du profil GLPI

  • entities_id : 0 = entite racine

  • is_recursive : appliquer aux sous-entites

ParametersJSON Schema
NameRequiredDescriptionDefault
article_idYes
entities_idNo
profiles_idYes
is_recursiveNo

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only explains parameter semantics (profiles_id, entities_id, is_recursive) but does not disclose behavioral traits such as whether the operation is idempotent, what happens on duplicate entry, permission requirements, or any side effects. For a mutation tool, this lack of behavioral disclosure 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.

Conciseness5/5

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

The description is concise, using a short sentence followed by three bullet points for parameter clarifications. Every line contributes relevant information with no redundant or filler content.

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

Completeness3/5

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

Given no output schema and no annotations, the description covers the core parameters but misses other contextual needs: no return value information, no prerequisites, no mention of how this relates to sibling visibility tools (e.g., update vs add). It is adequate for a basic understanding but incomplete for full autonomous invocation.

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

Parameters4/5

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

The schema has 0% description coverage per context signals. The description provides meaningful explanations for profiles_id, entities_id (with default 0 meaning root entity), and is_recursive (apply to sub-entities), which adds substantial value beyond the bare schema titles. However, article_id is not explained, though it is fairly self-evident as the target KB article.

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

Purpose5/5

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

The description clearly states 'Ajoute un profil dans la visibilite d'un article KB' (Add a profile to a KB article's visibility), specifying a concrete verb and resource. It distinguishes from sibling tool add_kb_article_visibility_group by focusing on 'profil' (profile) rather than group.

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

Usage Guidelines3/5

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

The description implies usage for adding a profile visibility entry, but does not explicitly mention when to use this tool versus alternatives like add_kb_article_visibility_group or the update variations. No exclusion or alternative guidance is provided, leaving the agent to infer from sibling names.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYes
ticket_idYes
solution_type_idNo

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo
contentYes
ticket_idYes
is_privateNo
assigned_user_idNo
duration_secondsNo

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_kb_articleA

Cree un nouvel article dans la base de connaissances.

  • name : titre de l'article

  • answer : contenu / solution (HTML accepte)

  • category_id : ID de la categorie KB (optionnel)

  • is_faq : True pour publier dans la FAQ publique

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
answerYes
is_faqNo
category_idNo

TDQS

A4.5/5.0
Behavior4/5

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 that 'answer' accepts HTML and that 'is_faq=True' publishes to the public FAQ, adding meaningful context beyond the schema. However, it does not mention potential side effects, required permissions, or response behavior, preventing a perfect score.

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

Conciseness5/5

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

The description is compact: a single opening sentence followed by a bullet-point list of parameters. Each bullet is concise and front-loaded with the parameter name and a short explanation. There is no redundant or unnecessary text.

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

Completeness4/5

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

All four parameters are adequately described, and the tool's input semantics are clear. However, with no output schema, the description does not specify what the tool returns (e.g., created article ID or confirmation), leaving a minor gap for a create operation.

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

Parameters5/5

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

Schema description coverage is 0%, so the description fully compensates by explaining each parameter: name as title, answer as content/solution, category_id as optional, and is_faq with its default and effect. This adds significant meaning beyond the bare parameter names and types.

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

Purpose5/5

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

The description clearly states the action: 'Cree un nouvel article dans la base de connaissances' (Create a new article in the knowledge base). The verb 'create' and the resource 'article' make the purpose unambiguous and distinguish it from sibling tools like update_kb_article or list_kb_articles.

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

Usage Guidelines4/5

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

The description implies usage for creating new KB articles and provides contextual guidance on optional parameters (category_id, is_faq) and their effects. However, it does not explicitly exclude alternatives or mention when to use a different tool (e.g., update_kb_article for modifications), so it falls 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.

create_ticketB

Crée un nouveau ticket.

  • type : 1=Incident 2=Demande de service

  • priority : 1 (trĂšs basse) → 6 (majeure)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
typeNo
contentYes
priorityNo
category_idNo
assigned_user_idNo
assigned_group_idNo

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_taskC

Supprime une tĂąche.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ticket_idYes

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
followup_idYes

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_articleB

Retourne le detail complet d'un article de la base de connaissances.

ParametersJSON Schema
NameRequiredDescriptionDefault
article_idYes

TDQS

B3.3/5.0
Behavior2/5

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

There are no annotations, so the description carries full responsibility for disclosing behavioral traits. It only says 'returns the complete detail' without addressing return format, error conditions, authentication needs, or whether the article must be visible/published. For a read operation, this is minimal disclosure but lacks any behavioral context beyond the basic action.

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

Conciseness5/5

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

The description is a single, concise sentence in French (8 words). It is front-loaded with the action 'Retourne' and immediately specifies the object. There is no waste, and it is appropriately sized for the tool's simplicity.

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

Completeness3/5

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

The tool is simple (1 parameter, no output schema, no annotations) and the description states the core purpose. However, it lacks context about what 'complete detail' includes, whether the article must be in a certain state, or any related sibling interactions. Given the low complexity, the description is minimally viable but leaves room for more details about return values and conditions.

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

Parameters3/5

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

The schema has 1 parameter (article_id) with 0% description coverage. The description does not explicitly mention the parameter, but the phrase 'd'un article' implies that article_id identifies the article. Given that the parameter is a simple integer ID and its purpose is self-evident from the schema, the description provides marginal added meaning but does not fully compensate for the lack of schema description.

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

Purpose5/5

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

The description clearly states the verb 'Retourne' (returns) and the resource 'le detail complet d'un article de la base de connaissances' (complete detail of a knowledge base article). It distinguishes itself from sibling tools like list_kb_articles and search_kb_articles by focusing on retrieving a single article's full detail.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention any exclusions, prerequisites, or context for choosing get_kb_article over search_kb_articles or list_kb_articles. The agent receives no 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_article_visibilityA

Retourne les regles de visibilite d'un article KB : profils, groupes, utilisateurs et entites ayant acces.

ParametersJSON Schema
NameRequiredDescriptionDefault
article_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the core behavior (returns visibility rules) and adds detail on the content (profiles, groups, users, entities). However, it does not explicitly state that it is read-only, require no side effects, or mention any permission requirements. Basic behavior is present but richer context is missing.

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

Conciseness5/5

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

A single, front-loaded sentence that is concise and efficient. It conveys the purpose and output contents without wasted words, earning a top score for structure.

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

Completeness3/5

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

For a simple getter with one parameter and an output schema, the description is adequate. It identifies the resource and what the response contains, but lacks contextual guidance on how this tool fits with visibility management siblings or any usage caveats. Not incomplete, but no extra value beyond the basics.

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

Parameters2/5

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 references 'un article KB' but does not explicitly explain that the article_id parameter is the identifier for the KB article. The description adds minimal meaning beyond the parameter name and type, and fails to clarify the parameter's role or format.

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

Purpose5/5

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

The description clearly states the tool returns visibility rules of a KB article, listing profiles, groups, users, and entities with access. The verb 'Retourne' specifies the action and resource, distinguishing it from sibling tools like get_kb_article (which returns the article itself) and the add/update visibility tools.

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

Usage Guidelines3/5

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

The description implies usage by being a getter for visibility rules, but does not explicitly state when to use this over alternatives, nor any exclusions or prerequisites. There is no mention of when not to use it or how it relates to sibling tools like add_kb_article_visibility_profile.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ticket_idYes

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ticket_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior1/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

list_followupsB

Liste tous les suivis d'un ticket.

ParametersJSON Schema
NameRequiredDescriptionDefault
ticket_idYes

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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

The description clearly states the tool's 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
range_limitNo
range_startNo

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_categoriesA

Liste toutes les categories de la base de connaissances.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must stand alone. It implies a read-only listing but gives no details on ordering, pagination, or what the output contains. This is adequate for a simple list but lacks depth.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no redundant words. It immediately conveys the tool's purpose.

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

Completeness4/5

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

Given the tool's simplicity (no parameters, no annotations, no output schema), the description sufficiently covers its function. However, it could explicitly mention the return type or note that it returns all categories without filtering, which would make it more complete.

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

Parameters4/5

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

The input schema is empty, so there are no parameters to document. Per the rubric, a zero-parameter tool receives a baseline of 4, and the description correctly doesn't attempt to invent parameter details.

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

Purpose5/5

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

The description 'Liste toutes les categories de la base de connaissances' clearly states the action (list) and the resource (knowledge base categories), distinguishing it from sibling list_itil_categories by specifying 'base de connaissances'.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like list_itil_categories. It does not mention use cases, prerequisites, or when not to use it.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ticket_idYes

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_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

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo
range_limitNo
range_startNo
ticket_typeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
close_sourceNo
add_followupsNo
target_ticket_idYes
source_ticket_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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

Given the tool's complexity (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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordsYes
range_limitNo
range_startNo
search_contentNo

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_ticketsC

Recherche avancée de tickets via l'API GLPI /search/Ticket. Tous les paramÚtres sont optionnels et combinables.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo
keywordsNo
category_idNo
range_limitNo
range_startNo
ticket_typeNo
assigned_user_idNo

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits, but it only mentions the underlying API endpoint. It does not explain expected output, pagination behavior, authentication requirements, or what happens when no parameters are provided, leaving significant ambiguity.

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

Conciseness4/5

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

The description is very concise at two sentences with no redundant words. However, the brevity sacrifices necessary detail, making it efficient but incomplete.

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

Completeness2/5

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

For a tool with 7 parameters, no annotations, and no output schema, the description is insufficient. It fails to describe parameter semantics, return values, or selection context, so the agent cannot reliably invoke it or interpret results.

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

Parameters1/5

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 any of the 7 parameters. It only states that all are optional and combinable, providing no value beyond the parameter names themselves. The agent has to infer meaning from names alone.

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

Purpose4/5

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

The description clearly states the tool performs advanced ticket search via the GLPI /search/Ticket API, identifying the resource and the action. It is distinguishable from sibling tools like list_tickets and get_ticket by the 'search' concept, but it does not explicitly contrast with them.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives such as list_tickets or get_ticket. The only usage hint is that all parameters are optional and combinable, which informs parameter flexibility but not selection criteria or exclusions.

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é.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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é.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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

The description clearly states the tool's 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_kb_articleB

Met a jour un article de la base de connaissances. Exemples de champs : name, answer, is_faq, knowbaseitemcategories_id

ParametersJSON Schema
NameRequiredDescriptionDefault
article_idYes
update_fieldsYes

TDQS

B3.2/5.0
Behavior2/5

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 states the action 'Met a jour' (updates) but does not explain whether update_fields performs a partial update or full replacement, what happens if the article does not exist, whether permissions are required, or what the response looks like. 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.

Conciseness5/5

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

The description is extremely concise: two short sentences that convey the primary purpose and examples. Every word contributes to understanding, with no redundant or extraneous content. It front-loads the core action and immediately lists relevant fields.

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

Completeness2/5

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

For a tool with only 2 parameters, one of which is a nested object, and no output schema or annotations, the description is under-specified. It does not clarify the update semantics, how to construct update_fields, error behavior, or any side effects. While it identifies the action and some field examples, it leaves critical operational details unknown.

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

Parameters3/5

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

The schema itself provides minimal parameter details (just types and titles), so the description's mention of example fields (name, answer, is_faq, knowbaseitemcategories_id) adds useful meaning for the update_fields object. However, it does not explain the purpose of article_id or specify how update_fields should be structured, leaving ambiguity despite some added value.

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

Purpose5/5

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

The description clearly states the tool's function: 'Met a jour un article de la base de connaissances' (Updates a knowledge base article), specifying both the action (update) and the resource (knowledge base article). This distinguishes it from siblings like get_kb_article or create_kb_article, and the example fields further clarify the scope.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool or its alternatives. The description does not mention prerequisites, such as needing an existing article_id, or when to prefer update_kb_article over other update tools for different resource types. There are no exclusions or alternative tool references.

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 a jour une regle de visibilite par groupe d'un article KB.

  • visibility_id : ID de l'entree KnowbaseItem_Group (obtenu via get_kb_article_visibility)

  • update_fields : champs a modifier, ex: {"entities_id": 1, "is_recursive": 1}

ParametersJSON Schema
NameRequiredDescriptionDefault
update_fieldsYes
visibility_idYes

TDQS

A4/5.0
Behavior2/5

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. While the description clearly indicates a mutation ('Met a jour'), it does not disclose potential side effects, error behavior, whether the update is partial or full replacement, or any permission requirements. This is a significant gap for a write operation.

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

Conciseness5/5

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

The description is extremely concise: two lines for the purpose plus two parameter explanations. It is front-loaded with the action and resource, and every sentence earns its place. No fluff or repetition.

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

Completeness4/5

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

Given the simplicity of the tool (two parameters, no output schema), the description provides sufficient context to invoke it correctly. It covers both parameters and gives a few extra hints. It lacks information on return values or error cases, but that is not critical for a simple update operation.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It explains that visibility_id is the ID of a KnowbaseItem_Group entry obtained via get_kb_article_visibility, and provides an example of update_fields. This adds meaningful context beyond the bare schema, but it doesn't enumerate possible fields beyond the example.

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

Purpose5/5

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

The description clearly states the verb 'Met a jour' (update) and the resource 'regle de visibilite par groupe d'un article KB' (visibility rule by group of a KB article). It differentiates from sibling tools like update_kb_article_visibility_profile and add_kb_article_visibility_group by specifying 'par groupe'.

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

Usage Guidelines4/5

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

The description provides a concrete usage hint: visibility_id is obtained via get_kb_article_visibility. It also gives an example of update_fields, implying the tool is used for partial updates of group-based visibility rules. However, it does not explicitly state when to use this tool over the profile version, so it misses the 'when-not' part for a full 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_profileA

Met a jour une regle de visibilite par profil d'un article KB.

  • visibility_id : ID de l'entree KnowbaseItem_Profile (obtenu via get_kb_article_visibility)

  • update_fields : champs a modifier, ex: {"entities_id": 1, "is_recursive": 1}

ParametersJSON Schema
NameRequiredDescriptionDefault
update_fieldsYes
visibility_idYes

TDQS

A3.8/5.0
Behavior2/5

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

With no annotations provided, the description must fully disclose behavioral traits. It identifies the operation as an update ('Met a jour') but does not cover side effects, error behavior, required permissions, or reversibility. The parameter hints are useful but do not address behavioral aspects beyond the basic mutation intent.

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

Conciseness5/5

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

The description is two concise sentences, front-loading the main purpose and then providing parameter details. There is no redundancy or irrelevant information. Every phrase contributes to understanding the tool.

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

Completeness3/5

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

The description gives the essential purpose and parameter semantics, including a useful prerequisite, but omissions remain: no return value description, no mention of error handling, and no indication of valid fields beyond the example. Given the tool's relative simplicity, the description is adequate but leaves notable gaps for an agent to fully anticipate outcomes.

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

Parameters5/5

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

The schema descriptions provide 0% coverage, so the description fully carries the parameter semantics. It clearly explains visibility_id as the ID from get_kb_article_visibility and update_fields as a set of fields to modify, with a concrete example ({'entities_id': 1, 'is_recursive': 1}). This exceeds minimal compensation, making both parameters understandable.

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

Purpose5/5

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

The description clearly states the tool's verb ('Met a jour' = update), resource ('une regle de visibilite par profil d'un article KB' = a visibility rule by profile of a KB article), and distinguishes it from sibling tools like update_kb_article_visibility_group by specifying 'par profil'. This unambiguous purpose makes the tool easy to select.

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

Usage Guidelines3/5

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

The description implies usage for updating profile-based visibility rules but does not explicitly compare with alternatives (e.g., update_kb_article_visibility_group) or state when not to use it. It provides a helpful prerequisite (visibility_id obtained via get_kb_article_visibility) but lacks clear 'when/when-not' guidance.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
update_fieldsYes

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
ticket_idYes
update_fieldsYes

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 40 tool updatesv0.1.0
    • First observedadd_followup
    • First observedadd_kb_article_visibility_group
    • First observedadd_kb_article_visibility_profile
    • First observedadd_solution
    • First observedadd_task
    • First observedcreate_kb_article
    • First observedcreate_ticket
    • First observeddelete_task
    • First observeddelete_ticket
    • First observedget_followup
    • First observedget_groups
    • First observedget_kb_article
    • First observedget_kb_article_visibility
    • First observedget_solution
    • First observedget_ticket
    • First observedget_users
    • First observedkill_session
    • First observedlink_tickets
    • First observedlist_followups
    • First observedlist_itil_categories
    • First observedlist_kb_articles
    • First observedlist_kb_categories
    • First observedlist_tasks
    • First observedlist_ticket_links
    • First observedlist_tickets
    • First observedmerge_tickets
    • First observedsearch_kb_articles
    • First observedsearch_tickets
    • First observedstats_by_assignee
    • First observedstats_by_category
    • First observedstats_by_priority
    • First observedstats_by_status
    • First observedstats_by_type
    • First observedstats_overdue
    • First observedstats_resolution_time
    • First observedupdate_kb_article
    • First observedupdate_kb_article_visibility_group
    • First observedupdate_kb_article_visibility_profile
    • First observedupdate_task
    • First observedupdate_ticket

TDQS

B3.3/5.0

Scored across 40 tools

Disambiguation4/5

Most tools have clearly distinct purposes, such as ticket CRUD, task management, and KB operations. However, list_tickets and search_tickets overlap in functionality since search_tickets can replicate simple listing with filters, and link_tickets vs list_ticket_links are create vs read but names are close.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case, e.g., list_tickets, create_ticket, update_ticket. The stats_by_* tools form a coherent sub-pattern, and even kill_session fits the verb_noun convention.

Tool Count2/5

40 tools is excessive according to the rubric (25+ is too many). The visibility management tools alone add 8 variations, and many tools handle niche edge cases that could be consolidated or omitted without losing core functionality.

Completeness3/5

The ticket lifecycle is well covered with CRUD, linking, merging, followups, and tasks. However, there are notable gaps: no delete for KB articles, no update/delete for followups or solutions, and no deletion of visibility rules, which could leave users unable to correct mistakes or remove obsolete data.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    An MCP server that exposes the Tickiti helpdesk API to AI assistants, enabling ticket management and helpdesk operations via natural language.
    11
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Connects AI assistants to GLPI IT Service Management, enabling ticket management, asset search, and ITIL processes via natural language.
    3 npm
    3
    MIT