boondmanager-mcp-server
This server provides an MCP interface to BoondManager, offering 180 tools across 38 domains for full CRUD operations and detailed data retrieval. Key capabilities include:
CRM & Commercial: Manage candidates, resources, contacts, companies, and opportunities with advanced search and detailed tabs.
Project Management: Handle projects, positionings, deliveries, and purchases, including financial simulations.
Billing & Finance: Full CRUD for invoices, purchase orders, and expense reports; search supplier invoices and payments.
HR & Time Management: Manage absences, timesheets, contracts, and benefits.
Activity Tracking: Track actions, validations, and to-do lists.
Reporting: Access reports for companies, projects, resources, and synthesis.
Administration: Manage users, agencies, roles, calendars, flags, webhooks, audit logs, and documents.
Dictionary & Resources: Retrieve reference data and user profiles; dictionaries exposed as MCP Resources.
Pre-orchestrated Prompts: Ready-to-use workflows like team summaries, pipeline analysis, invoice follow-up, candidate matching, and consultant views.
Deployment & Security: Supports various clients, local/Docker/HTTP deployment, JWT/BasicAuth, access control, rate limiting, and logging.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@boondmanager-mcp-serverfind candidates with Python experience"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
BoondManager MCP Server
Installation 1-clic :
LM Studio, Goose et Gemini CLI s'installent via leur procédure dédiée (deeplink natif ou commande) — voir la section Installation. GitHub ne rend pas cliquables les liens à schéma non-HTTP (
lmstudio://,goose://), c'est pourquoi ils n'ont pas de bouton 1-clic ici.
Serveur MCP (Model Context Protocol) pour l'API BoondManager, permettant a Claude (Desktop, Cowork, Code) de rechercher, consulter, creer et modifier des enregistrements dans votre instance BoondManager.
182 outils couvrant 38 domaines de l'API BoondManager. Voir TOOLS.md pour le catalogue auto-généré (outils + prompts + ressources).
Sorties structurées. En plus du texte lisible, les outils
search,create,updateetdeleterenvoient unstructuredContentconforme à unoutputSchemaMCP :search→{ total?, count, items[] }(résumés compacts, pas les ressources JSON:API complètes),create/update→{ id?, type? },delete→{ id, deleted, reason? }. Les clients MCP qui exploitent les sorties structurées obtiennent une référence d'entité fiable pour chaîner les appels. Les outilsgetrestent en texte seul (leur texte est déjà du JSON exploitable).
Domaines couverts
CRM & Commercial
Domaine | Outils | Operations |
Candidats | 10 | CRUD + information, technical-data, administrative, actions, positionings |
Ressources | 20 | CRUD + information, technical-data (+ update), administrative, advantages, actions, positionings, projects, times-reports, expenses-reports, absences-reports, timesheets, references (create/update/delete) |
Contacts | 11 | CRUD + information, actions, opportunities, projects, orders, invoices |
Societes | 14 | CRUD + information, contacts, actions, opportunities, projects, orders, invoices, purchases, provider-invoices |
Opportunites | 10 | CRUD + information, actions, positionings, projects, simulation |
Gestion de projets
Domaine | Outils | Operations |
Projets | 12 | CRUD + information, actions, simulation, deliveries-groupments, orders, purchases, productivity |
Positionnements | 4 | search, get, create, delete |
Livraisons / CRA | 2 | search, get |
Achats / Sous-traitance | 4 | search, get, create, delete |
Facturation & Finance
Domaine | Outils | Operations |
Factures client | 5 | CRUD complet |
Factures fournisseur | 2 | search, get |
Bons de commande | 5 | CRUD complet |
Paiements | 2 | search, get |
Notes de frais | 5 | CRUD complet |
Produits | 5 | CRUD complet |
RH & Temps
Domaine | Outils | Operations |
Absences | 5 | CRUD complet |
Planning absences | 1 | search (vue globale) |
Feuilles de temps | 3 | search, get, resource timesheets |
Contrats | 2 | get, create |
Avantages | 2 | search, get |
Suivi d'activite
Domaine | Outils | Operations |
Actions | 5 | search, get, create, update, delete |
Validations | 2 | search, get |
Todolists | 2 | search, get |
Reporting
Domaine | Outils | Operations |
Reporting societes | 1 | search |
Reporting projets | 1 | search |
Reporting ressources | 1 | search |
Reporting synthese | 1 | search |
Reporting plans de production | 1 | search |
Administration & Configuration
Domaine | Outils | Operations |
Comptes utilisateurs | 2 | search, get |
Agences | 2 | search, get |
Business Units | 2 | search, get |
Poles | 2 | search, get |
Roles | 2 | search, get |
Calendriers | 2 | search, get |
Drapeaux / Etiquettes | 2 | search, get |
Webhooks | 2 | search, get |
Logs d'audit | 2 | search, get |
Notifications | 2 | search, get |
Fils de discussion | 2 | search, get |
Documents / CV | 3 | get (telechargement), create (upload par URL + parsing CV), delete |
Application | 2 | dictionnaire, utilisateur courant |
Detail des onglets par entite
Les entites principales disposent d'outils dedies par onglet pour un acces cible :
Entite | Onglets disponibles |
Candidats | information, technical-data, administrative, actions, positionings |
Ressources | information, technical-data, administrative, advantages, actions, positionings, projects, times-reports, expenses-reports, absences-reports |
Contacts | information, actions, opportunities, projects, orders, invoices |
Societes | information, contacts, actions, opportunities, projects, orders, invoices, purchases, provider-invoices |
Opportunites | information, actions, positionings, projects, simulation |
Projets | information, actions, simulation, deliveries-groupments, orders, purchases, productivity |
Related MCP server: Neo MCP
Ressources MCP (dictionnaires)
Le serveur expose les dictionnaires de reference Boond comme ressources MCP (clients qui en supportent l'affichage : Claude Desktop, MCP Inspector, etc.). Permet au modele de traduire un state ou typeOf entier en libelle sans appel d'outil supplementaire.
URI | Contenu |
| Profil de l'utilisateur courant (id, agence, permissions) |
| Etats par entite : |
| Types par entite : |
| Liste des pays |
| Liste des devises |
| Liste des langues |
Pour les dictionnaires hors de cette liste curee, l'outil boond_application_dictionary reste disponible.
Prompts pre-orchestres
En plus des outils, le serveur expose des prompts MCP (templates pre-cables) qui orchestrent les bons appels d'outils dans le bon ordre pour les workflows recurrents. Visibles dans les clients qui supportent les prompts (Claude Desktop, Cowork, Claude Code, MCP Inspector...) sous forme de slash-commands ou de menu.
Workflows transverses
Prompt | Usage |
| Etat d'une equipe : qui fait quoi, qui est absent, qui est dispo (par defaut : mon equipe). |
| Opportunites avec closing dans une periode : repartition par etat, CA pondere, top 10. |
| Factures impayees dont l'echeance est depassee, regroupees par societe. |
| A partir d'une opportunite, propose les candidats actifs qui matchent (outils, expertise, mobilite, dispo). |
| Vue 360 d'une ressource : info + technique + positionnements + absences + CRA recents. |
| Recap hebdomadaire : pipeline qui a bouge, equipe absente, projets actifs, actions a mener. |
| A partir d'une photo/PDF de justificatif joint, extrait la depense et cree la ligne de frais dans Boond apres recapitulatif et validation explicite. |
Ressources, competences & CV
Prompt | Usage |
| Consultants internes disponibles sur une fenetre donnee (filtre optionnel par competences libres et perimetre), tries par dispo croissante avec top 3 prioritaires. |
| Anticipation des fins de mission sous N jours (defaut 60). Marque en urgent les fins <= 15j sans relais identifie. |
| Cartographie des competences d'un perimetre (equipe / agence) : top N, competences rares (bus-factor), saturees, manquantes vs opportunites ouvertes. |
| Audit fraicheur des CV / dossiers techniques (seuil d'obsolescence configurable). Priorise les ressources bientot sur le marche. |
| Recherche multi-source (ressources internes + candidats) par mix de competences libres, sans opportunite requise. Classe par adequation /10. |
Comment invoquer un prompt
Les prompts MCP sont des modeles de message utilisateur : tu les invoques toi-meme, le LLM execute ensuite le runbook qu'ils contiennent. Aucun filtre BoondManager a connaitre — tout est embarque cote serveur.
Claude Desktop / Cowork / MCP Inspector : tape / dans la barre de saisie, choisis le prompt dans la liste, remplis les arguments dans le formulaire qui s'affiche, valide.
Claude Code : pareil, / puis selection ; les arguments sont demandes inline.
Fallback (clients sans UI dediee aux prompts) : cite le prompt par son nom dans une demande libre, le client va recuperer la definition via le protocole MCP. Exemple : "lance le runbook staffing_disponible entre le 1er juin et le 1er septembre 2026, competences Java Spring AWS".
Exemples d'invocation des prompts ressources / competences / CV :
/staffing_disponible
start_date = 2026-06-01
end_date = 2026-09-01
competences = Java Spring AWS Kubernetes
manager_id = (vide -> mon equipe)/fin_de_mission
horizon_jours = 30/cartographie_competences
agency_id = 7
top_n = 15/cvs_a_mettre_a_jour
seuil_mois = 6/recherche_profil_competences
competences = .NET Azure DevOps
experience_min = 5 ans
dispo_avant = 2026-07-15
inclure_candidats = ouiApres modification de la config Claude (
claude_desktop_config.jsonetc.), redemarrer le client : la liste des prompts MCP n'est pas hot-reloadee.
Prerequis
Node.js >= 22
Un compte BoondManager avec acces API active
L'option "Allow API Rest calls using BasicAuth authentication" activee dans la configuration BoondManager (si BasicAuth)
Installation
Claude Desktop (one-click)
Telechargez le fichier .mcpb depuis la derniere release GitHub, puis dans Claude Desktop : Fichier > Installer une extension... et selectionnez le fichier. Les identifiants sont demandes a l'installation et stockes de maniere chiffree (Keychain macOS / Credential Manager Windows).
Claude Code (plugin, recommande)
Meme confort que le one-click Desktop : un formulaire de configuration, aucune variable d'environnement a poser soi-meme.
/plugin marketplace add fauguste/boondmanager-mcp-server
/plugin install boondmanager-mcp@boondmanagerClaude Code affiche alors le formulaire des 14 options (identifiants, URL de
base, restrictions d'acces). Tout est optionnel a l'ecran, mais il faut
renseigner un des trois modes d'authentification : le trio User Token +
Client Token + Client Key (JWT genere automatiquement, recommande), ou le
Token JWT pre-construit, ou le couple Utilisateur + Mot de passe
(BasicAuth). Les champs laisses vides retombent sur les valeurs par defaut.
Si le serveur n'apparait pas immediatement dans /mcp, un /reload-plugins
suffit — inutile de relancer Claude Code.
Details utiles :
Ou vont les secrets : les 5 champs sensibles (
User Token,Client Token,Client Key,Token JWT,Mot de passe) vont dans le Keychain macOS (ou~/.claude/.credentials.jsona defaut), pas danssettings.json. Les options non sensibles (URL, restrictions) sont stockees en clair danspluginConfigsde votre~/.claude/settings.json.Nommage des outils : cote client les outils sont prefixes
mcp__boondmanager__, par exemplemcp__boondmanager__boond_candidates_search. C'est ce nom qu'il faut utiliser dans une allow-list de permissions.Version : le plugin lance la version npm epinglee dans son manifeste. Pour passer a une nouvelle release :
/plugin marketplace update boondmanagerpuis reinstaller le plugin.Restreindre la surface : les champs Restriction du formulaire mappent sur les variables
BOOND_MCP_*(profil metier, domaines, operations, lecture seule). Voir docs/access-control.md.Suppressions : Claude Code supporte l'elicitation MCP, donc chaque
boond_*_deletedemande une confirmation avant d'agir (option Confirmer les suppressions, activee par defaut).
Pour desinstaller : /plugin uninstall boondmanager-mcp@boondmanager.
Claude Code (manuel, claude mcp add)
A privilegier si vous voulez piloter vous-meme les variables d'environnement, ou epingler une version differente de celle du plugin.
# Avec un token API (recommande)
claude mcp add --transport stdio --env BOOND_API_TOKEN=votre_token_jwt \
boondmanager -- npx -y boondmanager-mcp-server
# Avec BasicAuth
claude mcp add --transport stdio \
--env BOOND_USER=votre_login \
--env BOOND_PASSWORD=votre_mot_de_passe \
boondmanager -- npx -y boondmanager-mcp-serverWindows : ajoutez
cmd /cavantnpx:claude mcp add --transport stdio --env BOOND_API_TOKEN=votre_token \ boondmanager -- cmd /c npx -y boondmanager-mcp-server
Pour rendre le serveur disponible dans tous vos projets, ajoutez --scope user :
claude mcp add --transport stdio --scope user \
--env BOOND_API_TOKEN=votre_token_jwt \
boondmanager -- npx -y boondmanager-mcp-serverClaude Code - Configuration partagee en equipe
Ajoutez un fichier .mcp.json a la racine de votre projet (a commiter dans git) :
{
"mcpServers": {
"boondmanager": {
"type": "stdio",
"command": "npx",
"args": ["-y", "boondmanager-mcp-server"],
"env": {
"BOOND_API_TOKEN": "${BOOND_API_TOKEN}"
}
}
}
}Chaque membre de l'equipe n'a qu'a definir la variable d'environnement BOOND_API_TOKEN sur sa machine. Le fichier .mcp.json supporte la syntaxe ${VAR} et ${VAR:-default} pour les variables d'environnement.
Claude Code Enterprise (deploiement administre)
Les administrateurs peuvent deployer le serveur MCP pour tous les utilisateurs via le fichier managed-mcp.json :
OS | Chemin |
macOS |
|
Linux / WSL |
|
Windows |
|
{
"mcpServers": {
"boondmanager": {
"type": "stdio",
"command": "npx",
"args": ["-y", "boondmanager-mcp-server"],
"env": {
"BOOND_API_TOKEN": "${BOOND_API_TOKEN}",
"BOOND_BASE_URL": "https://votre-instance.boondmanager.com/api"
}
}
}
}Ce fichier prend le controle exclusif des serveurs MCP : les utilisateurs ne peuvent pas ajouter ou modifier de serveurs en dehors de cette configuration.
Pour restreindre les serveurs autorises tout en laissant les utilisateurs en ajouter, utilisez plutot managed-settings.json :
{
"allowedMcpServers": [
{ "serverName": "boondmanager" }
]
}Claude Desktop / Cowork (configuration manuelle)
Ajoutez dans votre fichier de configuration Claude :
macOS : ~/Library/Application Support/Claude/claude_desktop_config.json
Windows : %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"boondmanager": {
"command": "npx",
"args": ["-y", "boondmanager-mcp-server"],
"env": {
"BOOND_API_TOKEN": "votre_token_jwt"
}
}
}
}Via npm
npx boondmanager-mcp-serverOu installation globale :
npm install -g boondmanager-mcp-server
boondmanager-mcp-serverDepuis les sources
git clone https://github.com/fauguste/boondmanager-mcp-server.git
cd boondmanager-mcp-server
npm install
npm run buildSmithery
Le serveur est aussi disponible sur Smithery. La configuration est dans smithery.yaml à la racine du repo : Smithery propose une UI avec les champs d'authentification (JWT auto / JWT pré-construit / BasicAuth) et installe le serveur via npx.
LobeChat / LobeHub
Le serveur est listé sur le marketplace MCP de LobeHub. Dans LobeChat (auto-hebergé ou cloud), ajouter le MCP via Reglages > Plugins > MCP > Ajouter avec :
{
"name": "boondmanager",
"command": "npx",
"args": ["-y", "boondmanager-mcp-server"],
"env": {
"BOOND_USER_TOKEN": "<votre_user_token>",
"BOOND_CLIENT_TOKEN": "<votre_client_token>",
"BOOND_CLIENT_KEY": "<votre_client_key>"
}
}Ou utiliser le transport HTTP (voir section Transports) pour un deploiement partage en mode gateway.
Cursor
Cliquez sur le badge Add to Cursor en haut du README (ou ajoutez le serveur manuellement dans Settings > MCP > Add new MCP server). Renseignez ensuite l'authentification en ajoutant un bloc env au serveur dans ~/.cursor/mcp.json :
{
"mcpServers": {
"boondmanager": {
"command": "npx",
"args": ["-y", "boondmanager-mcp-server"],
"env": {
"BOOND_API_TOKEN": "votre_token_jwt"
}
}
}
}VS Code (GitHub Copilot / agent MCP)
Cliquez sur le badge Install in VS Code en haut du README, ou ajoutez le serveur a .vscode/mcp.json (par projet) ou a votre settings.json utilisateur :
{
"servers": {
"boondmanager": {
"type": "stdio",
"command": "npx",
"args": ["-y", "boondmanager-mcp-server"],
"env": {
"BOOND_API_TOKEN": "${input:boond_api_token}"
}
}
}
}LM Studio
Dans LM Studio : Program > Install > Edit mcp.json et ajoutez :
{
"mcpServers": {
"boondmanager": {
"command": "npx",
"args": ["-y", "boondmanager-mcp-server"],
"env": {
"BOOND_API_TOKEN": "votre_token_jwt"
}
}
}
}Goose
Ajoutez une extension de type STDIO dans Settings > Extensions > Add avec la commande npx -y boondmanager-mcp-server et la variable d'environnement BOOND_API_TOKEN. En CLI :
goose session --with-extension "npx -y boondmanager-mcp-server"Gemini CLI
Le depot embarque un manifeste d'extension Gemini CLI (gemini-extension.json). Installez l'extension directement depuis GitHub :
gemini extensions install https://github.com/fauguste/boondmanager-mcp-serverDefinissez ensuite l'authentification dans votre environnement (Gemini interpole ${VAR} au demarrage) :
export BOOND_API_TOKEN="votre_token_jwt"
# ou le trio JWT auto :
export BOOND_USER_TOKEN="..." BOOND_CLIENT_TOKEN="..." BOOND_CLIENT_KEY="..."Configuration
Logs
Le serveur utilise pino pour des logs structures JSON (agrégateurs, observabilité).
Variable | Défaut | Description |
|
| Niveau de log : |
| (auto) |
|
En production (NODE_ENV=production), les logs sont en JSON par défaut. En dev, le format pretty (colorisé) est actif sauf si LOG_FORMAT=json. Chaque requête HTTP reçoit un corrId (8 hex) pour tracer la requête dans les logs.
Authentification
Option 1 : Token API JWT (recommande)
export BOOND_API_TOKEN="votre_token_jwt"Option 2 : BasicAuth
export BOOND_USER="votre_login"
export BOOND_PASSWORD="votre_mot_de_passe"URL personnalisee (si instance dediee)
export BOOND_BASE_URL="https://votre-instance.boondmanager.com/api"Par defaut, l'URL est https://ui.boondmanager.com/api.
Delai d'expiration HTTP
Chaque requete vers l'API BoondManager expire au bout de 30 secondes par defaut. Pour les tenants lents ou des rapports volumineux, augmenter via :
export BOOND_HTTP_TIMEOUT_MS=60000 # 60 sSi une requete depasse le delai, le serveur renvoie une erreur explicite mentionnant BOOND_HTTP_TIMEOUT_MS plutot que de rester bloque indefiniment.
Tentatives en cas d'echec transitoire
Le client HTTP retente automatiquement les erreurs transitoires avec un backoff exponentiel + jitter :
GET : retry sur
5xx,429, erreurs reseau (ECONNRESET, etc.) et timeouts (GET etant idempotent).POST / PUT / PATCH / DELETE : retry uniquement sur
429afin d'eviter de dupliquer une ecriture cote serveur. Les5xxet erreurs reseau remontent immediatement.L'en-tete
Retry-After(en secondes ou en HTTP-date) est honore et plafonne aBOOND_HTTP_RETRY_MAX_MS.
Variable | Defaut | Description |
|
| Nombre maximal de tentatives supplementaires (3 essais au total). |
|
| Delai de base utilise pour le backoff exponentiel ( |
|
| Plafond du delai entre deux tentatives. |
Limitation de debit (rate limiting)
Pour eviter qu'une boucle d'outils emballee n'inonde l'API (et n'enchaine les 429), le client applique un token bucket local. Defauts : 10 req/s soutenu, rafale 20 — invisible en usage interactif normal. Les retentatives consomment aussi un jeton.
Variable | Defaut | Description |
|
| Debit soutenu (requetes/seconde). |
|
| Capacite du bucket = taille maximale de rafale immediate. |
Cache du dictionnaire
L'API BoondManager n'expose qu'un seul endpoint /application/dictionary qui renvoie l'intégralité des libellés (états, types, pays…). Le serveur le met en cache en mémoire pour éviter de le re-télécharger à chaque résolution état/type → libellé.
Variable | Defaut | Description |
|
| Durée de vie du cache du dictionnaire, en millisecondes. Une valeur non numérique ou ≤ 0 retombe sur le défaut. |
Restriction d'accès (profils / domaines / lecture seule)
Vous pouvez restreindre ce que l'IA voit et peut faire, entièrement par variables d'environnement : exposer seulement certains domaines (ex. la comptabilité), et/ou bloquer les écritures et suppressions.
Variable | Effet |
| Profil préconfiguré : |
| Liste blanche de domaines (CSV). Absente = tous. Ex. |
| Liste noire de domaines (CSV), appliquée après la liste blanche. Ex. |
| Opérations autorisées (CSV) parmi |
| Raccourci : |
⚠️ Ce n'est pas une frontière de sécurité dure. Le filtre masque des outils à l'IA mais n'altère pas les droits du compte BoondManager utilisé. Pour un vrai cloisonnement, configurez d'abord les droits du compte/rôle BoondManager (lecture seule, périmètre comptable…) ; ce filtre vient en complément (économie de tokens, garde-fou anti-action accidentelle).
Exemple — tout le périmètre gestion, en lecture seule :
export BOOND_MCP_PROFILE=finance
export BOOND_MCP_READ_ONLY=trueGuide complet, règles de résolution, contenu de chaque profil (et le nombre d'outils qui en résulte) : docs/access-control.md.
Icônes (SEP-973)
Les outils, prompts et ressources portent une icône par domaine (SVG inline en
data: URI, aucun asset à héberger). Coût mesuré : ~40 Kio, soit ~14 % du
payload tools/list. Les déploiements qui ne les affichent pas (passerelles,
clients texte) peuvent les supprimer :
Variable | Defaut | Description |
| activé |
|
Libellés personnalisés du dictionnaire
Si votre instance BoondManager utilise des libellés de dictionnaire
personnalisés (ex. types d'action ou états en anglais), vous pouvez déclarer
le mapping libellé→ID via BOOND_DICTIONARY_OVERRIDES (JSON inline ou chemin
vers un fichier JSON) :
export BOOND_DICTIONARY_OVERRIDES='{"action":{"contact":{"Call":61,"Email":63}},"state":{"candidate":{"Interviewed":2}}}'Le serveur accepte alors ces libellés pour le typeOf de
boond_actions_create et les champs state des créations/modifications, les
résout automatiquement en IDs numériques, et enrichit les descriptions des
outils avec les libellés disponibles. Sans cette variable, le comportement est
strictement inchangé.
Format complet, entités supportées et limites : docs/dictionary-overrides.md.
Transports
Le serveur supporte deux transports MCP, selectionnables via la variable d'environnement MCP_TRANSPORT.
Transport | Valeur | Cas d'usage |
stdio (defaut) |
| Claude Desktop, Claude Code, integration locale |
Streamable HTTP |
| Gateway MCP, deploiement distant, conteneurs |
Streamable HTTP (pour les gateways MCP)
Depuis la v1.4.0, le serveur peut etre expose en HTTP (transport MCP Streamable HTTP) afin d'etre branche derriere une passerelle MCP ou deploye comme service. La revision de protocole negociee est celle du SDK installe (2025-11-25).
Authentification BoondManager : OAuth2 protected resource. Le serveur HTTP ne detient aucun secret (ni
client_secret, ni refresh token, ni stockage utilisateur). Chaque requete MCP doit porterAuthorization: Bearer <boond_access_token>; le serveur transmet le token tel quel a BoondManager. C'est le client MCP (Claude Desktop, Claude Code, gateway…) qui fait la danse OAuth contre BoondManager et qui gere le refresh. Procedure complete : docs/oauth.md.
export MCP_TRANSPORT=http
export MCP_HTTP_HOST=0.0.0.0 # defaut: 127.0.0.1
export MCP_HTTP_PORT=3000 # defaut: 3000
export MCP_HTTP_PATH=/mcp # defaut: /mcp
# Optionnel: requis uniquement derriere un reverse proxy, pour que
# la discovery annonce la bonne URL publique.
export MCP_HTTP_PUBLIC_URL=https://mcp.votre-domaine.com/mcp
npx boondmanager-mcp-server
# 🚀 BoondManager MCP Server running (streamable HTTP transport)
# 📡 Endpoint: http://0.0.0.0:3000/mcp
# 🔑 Mode: stateless
# 🔐 Boond auth: OAuth2 (per-request Bearer from MCP client)Variables d'environnement HTTP
Variable | Defaut | Description |
|
|
|
|
| Interface d'ecoute ( |
|
| Port TCP |
|
| Chemin HTTP de l'endpoint MCP |
|
|
|
|
|
|
| (derivee) | URL publique annoncee dans la discovery OAuth2 ( |
|
| En mode stateful, duree d'inactivite au-dela de laquelle une session est fermee. |
|
| Frequence de balayage des sessions inactives. |
| (auto) | Liste blanche du header |
| (auto) | Liste blanche du header |
Variables OAuth2 — discovery (toutes optionnelles)
Variable | Defaut | Description |
|
| Issuer de l'authorization server BoondManager, annonce dans |
| (vide) | Scopes annonces dans |
Stateless (defaut) : chaque requete HTTP POST est independante, idealement adapte a un gateway qui multiplexe plusieurs serveurs MCP. Aucune session n'est conservee cote serveur.
Stateful : le serveur genere un Mcp-Session-Id a l'initialisation que le client doit renvoyer dans chaque requete suivante. Utile pour les clients MCP natifs qui beneficient du streaming SSE et des notifications serveur.
Exemple : discovery + 401 challenge
# Public, pas d'auth -> documente OU envoyer le user pour autoriser
curl -s http://localhost:3000/.well-known/oauth-protected-resource | jq .
# {
# "resource": "http://0.0.0.0:3000/mcp",
# "authorization_servers": ["https://ui.boondmanager.com"],
# "bearer_methods_supported": ["header"]
# }
# Appel MCP sans token -> 401 + WWW-Authenticate qui pointe vers la discovery
curl -s -o /dev/null -w "%{http_code}\n%header{www-authenticate}\n" \
-X POST http://localhost:3000/mcp -d '{}'
# 401
# Bearer realm="http://0.0.0.0:3000/mcp", resource_metadata="http://0.0.0.0:3000/.well-known/oauth-protected-resource/mcp"Exemple : Claude Code via HTTP
Avec un client MCP conforme a la spec MCP Authorization 2025-06-18, la decouverte OAuth est automatique :
claude mcp add --transport http boondmanager https://mcp.votre-domaine.com/mcp
# Le client recoit le 401 + WWW-Authenticate, fetch la metadata, ouvre
# le navigateur pour autoriser l'App BoondManager, puis re-emet la requete
# avec le Bearer token recu.Exemple : Docker (image officielle)
Une image Docker prete a l'emploi est publiee a chaque release sur deux registres miroirs, multi-arch (linux/amd64 + linux/arm64) :
Registre | Image | Page |
GitHub Container Registry |
| github.com/fauguste/boondmanager-mcp-server/pkgs/container/boondmanager-mcp-server |
Docker Hub |
|
Memes digests, memes tags — choisissez celui qui s'aligne avec votre tooling. L'image demarre par defaut en transport HTTP, sur le port 3000, sur l'interface 0.0.0.0. Aucun volume, aucun secret a stocker — le serveur est stateless par construction.
# Via GHCR (authentification GitHub si registre prive)
docker run -d --restart unless-stopped \
-p 127.0.0.1:3000:3000 \
-e MCP_HTTP_PUBLIC_URL=https://mcp.votre-domaine.com/mcp \
--name boondmanager-mcp \
ghcr.io/fauguste/boondmanager-mcp-server:latest
# Ou via Docker Hub (anonyme)
docker run -d --restart unless-stopped \
-p 127.0.0.1:3000:3000 \
-e MCP_HTTP_PUBLIC_URL=https://mcp.votre-domaine.com/mcp \
--name boondmanager-mcp \
fauguste/boondmanager-mcp-server:latestTags disponibles sur les deux registres : :latest, :X, :X.Y, :X.Y.Z pour chaque release stable (la version exacte est recommandee pour la prod). Les prereleases (par exemple :2.0.0-alpha) sont publiees uniquement sous leur tag pinne — ni :latest, ni :X, ni :X.Y ne bougent. Variables d'environnement supportees : voir Configuration et Transports.
Exemple : docker-compose
Le repo embarque un docker-compose.yml pret a l'emploi : un seul service stateless, aucun volume, aucun secret cote serveur.
# Optionnel : surcharger MCP_HTTP_PUBLIC_URL si fronted par un reverse proxy
cp .env.example .env
docker compose up -d
docker compose logs -f mcpSecurite : le serveur HTTP est stateless et ne stocke aucun secret BoondManager. Chaque utilisateur authentifie le serveur via son propre token OAuth2 (issu de sa propre App BoondManager), et toutes les actions sont attribuees a son identite dans l'audit log Boond. Derriere un reverse proxy : terminez TLS (HTTPS), forwardez l'en-tete
Authorization, et reglezMCP_HTTP_PUBLIC_URLsur l'URL publique pour que la discovery soit coherente.
Clients distants non-Claude (ChatGPT, OpenAI / Gemini Agents SDK)
MCP est un protocole agnostique du modele : le meme endpoint HTTP/OAuth2 est consomme tel quel par tout hote compatible MCP, pas seulement Claude. Aucun package ni build specifique a un LLM n'est requis — il suffit de pointer l'hote sur votre URL MCP_HTTP_PUBLIC_URL.
Hote | Comment brancher le serveur |
ChatGPT (connecteurs / Developer mode) | Ajouter un connecteur MCP distant pointant sur l'URL HTTP ; l'OAuth2 est decouvert via la metadata |
OpenAI Agents SDK | Declarer un |
Google Gemini (Agents SDK / Vertex) | Enregistrer le serveur MCP distant cote SDK ; en local, l'extension Gemini CLI (voir Installation) couvre le transport stdio. |
Le contrat est identique a celui de Claude Code en HTTP (voir l'exemple claude mcp add --transport http ci-dessus) : seule la maniere de declarer le serveur cote client change.
Exemples d'utilisation
Une fois configure, vous pouvez demander a Claude :
CRM & Commercial
"Recherche les candidats avec des competences en React a Paris"
"Montre-moi les details techniques de la ressource #12345"
"Cree un nouveau contact Jean Dupont chez Acme Corp"
"Liste toutes les opportunites en cours"
"Quels sont les positionnements de l'opportunite #20 ?"
Gestion de projets
"Cree un projet Mission Alpha pour la societe #42"
"Affiche le planning du projet #33"
"Quels sont les bons de commande du projet #55 ?"
"Affiche la productivite du projet #12"
Facturation & Finance
"Recherche les factures en attente de paiement"
"Liste les factures fournisseur de la societe #100"
"Affiche les achats du projet #55"
RH & Temps
"Affiche les feuilles de temps de la ressource #100 pour mars 2025"
"Liste les absences prevues ce mois-ci"
"Affiche les notes de frais de la ressource #200"
"Quels sont les avantages de la ressource #50 ?"
Suivi d'activite
"Quelles sont les actions recentes sur le candidat #789 ?"
"Affiche les validations en attente"
"Liste les taches de ma todolist"
Reporting
"Affiche le reporting de synthese globale"
"Quel est le reporting de productivite des ressources ?"
Administration
"Recupere le dictionnaire des types d'actions"
"Liste les agences et business units"
"Affiche les webhooks configures"
Architecture
boondmanager-mcp-server/
├── src/
│ ├── index.ts # Point d'entree MCP (selection du transport)
│ ├── server.ts # Factory createMcpServer() + liste des domaines
│ ├── constants.ts # Configuration, API paths, onglets
│ ├── types.ts # Types TypeScript (JSON:API)
│ ├── transports/
│ │ └── http.ts # Transport Streamable HTTP (gateway/remote)
│ ├── services/
│ │ └── boond-client.ts # Client HTTP API BoondManager
│ ├── schemas/
│ │ └── index.ts # Schemas Zod (validation des entrees)
│ └── tools/
│ ├── index.ts # Barrel export de tous les domaines
│ ├── crud-factory.ts # Factory generique CRUD (DRY)
│ ├── candidates.ts # 10 outils (CRUD + 5 onglets)
│ ├── resources.ts # 20 outils (CRUD + 10 onglets + references/timesheets)
│ ├── contacts.ts # 11 outils (CRUD + 6 onglets)
│ ├── companies.ts # 14 outils (CRUD + 9 onglets)
│ ├── opportunities.ts # 10 outils (CRUD + 5 onglets)
│ ├── projects.ts # 12 outils (CRUD + 7 onglets)
│ ├── actions.ts # 5 outils
│ ├── timesheets.ts # 3 outils
│ ├── invoices.ts # 5 outils
│ ├── orders.ts # 5 outils
│ ├── deliveries.ts # 2 outils
│ ├── absences.ts # 5 outils
│ ├── expenses.ts # 5 outils
│ ├── products.ts # 5 outils
│ ├── positionings.ts # 4 outils
│ ├── payments.ts # 2 outils
│ ├── advantages.ts # 2 outils
│ ├── contracts.ts # 2 outils
│ ├── purchases.ts # 4 outils
│ ├── provider-invoices.ts # 2 outils
│ ├── accounts.ts # 2 outils
│ ├── agencies.ts # 2 outils
│ ├── business-units.ts # 2 outils
│ ├── poles.ts # 2 outils
│ ├── roles.ts # 2 outils
│ ├── calendars.ts # 2 outils
│ ├── flags.ts # 2 outils
│ ├── webhooks.ts # 2 outils
│ ├── logs.ts # 2 outils
│ ├── notifications.ts # 2 outils
│ ├── threads.ts # 2 outils
│ ├── todolists.ts # 2 outils
│ ├── validations.ts # 2 outils
│ ├── reporting.ts # 5 outils
│ ├── planning-absences.ts # 1 outil
│ └── application.ts # 2 outils
├── dist/ # Build JavaScript
├── .github/ # CI/CD, templates, Dependabot
├── package.json
├── tsconfig.json
├── vitest.config.ts
├── eslint.config.js
└── README.mdSecurite
Les credentials BoondManager (JWT ou BasicAuth) ne transitent jamais via le protocole MCP -- ils sont configures en variables d'environnement cote serveur uniquement
En mode stdio, le serveur tourne en local, aucun port reseau n'est expose
En mode streamable HTTP, l'authentification est un OAuth2 protected resource : chaque requete MCP porte son propre
Authorization: Bearer <token>(le serveur ne stocke aucun secret). Terminez TLS (HTTPS via reverse proxy), forwardez l'en-teteAuthorization, reglezMCP_HTTP_PUBLIC_URLsur l'URL publique, et activez la protection anti DNS rebinding viaMCP_HTTP_ALLOWED_HOSTS. Restreignez aussi l'acces reseau a votre gateway. Voir docs/oauth.md.Compatible avec les exigences ISO 27001
L'API BoondManager est hebergee en France et conforme RGPD
Authentification BoondManager : JWT (recommande), BasicAuth, ou JWT construit automatiquement a partir des composants
Developpement
# Mode watch pour le developpement
npm run dev
# Build
npm run build
# Lancer le serveur
npm start
# Tests
npm test # 645 tests
npm run test:coverage # Avec couverture
# Qualite
npm run lint
npm run typecheckStack technique
Runtime : Node.js >= 22 (ES2022)
Langage : TypeScript 5.8+ (mode strict)
MCP SDK : @modelcontextprotocol/sdk 1.12+
Validation : Zod 4
Tests : Vitest 4 + couverture V8
Lint : ESLint 10 + typescript-eslint
Transports : stdio (defaut) + Streamable HTTP (spec MCP 2025-11-25)
Ressources
Licence
Apache License 2.0 - Copyright (c) 2025 Frédéric Auguste
Available Tools
182 toolsboond_absences_createCreer une demande d'absenceA
Crée une demande d'absence (congés, RTT, maladie…) pour une ressource.
Quand : pour poser une absence au nom d'une ressource identifiée par son ID.
Plutôt que : boond_absences_update pour modifier une demande déjà déposée.
Le détail est porté par
absencesPeriods; si le tableau est omis, une période unique est déduite destartDate/endDate.stateest soumis au workflow de validation BoondManager : la demande part dans son état initial, elle n'est pas validée par cet appel.Écriture non idempotente — l'API ne déduplique pas deux demandes sur les mêmes dates.
Returns : confirmation et fiche de la demande créée.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Commentaire / motif | |
| state | No | État de la demande (0=en attente, 1=validé, 2=refusé...) | |
| typeOf | Yes | Libellé de l'absence (congé payé, RTT, maladie, sans solde...) | |
| endDate | Yes | Date de fin (YYYY-MM-DD) | |
| duration | No | Durée en jours ; calculée automatiquement si absente | |
| startDate | Yes | Date de début (YYYY-MM-DD) | |
| resourceId | Yes | ID de la ressource en absence | |
| absencesPeriods | No | Périodes d'absence Boond brutes | |
| workUnitTypeReference | No | Référence du type d'unité d'absence, défaut 1 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses meaningful behavioral traits: the state parameter is subject to BoondManager's validation workflow and the request starts in its initial state, and the write is explicitly non-idempotent with no deduplication. This is valuable context that annotations alone do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear 'Quand', 'Plutôt que', bullet points, and a Returns line. Every section earns its place, and the most decision-relevant information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter creation tool without an output schema, the description adequately covers the key behaviors, parameter subtleties, non-idempotence, workflow implications, and return value. The schema documents the remaining parameter details, so no critical context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: absencesPeriods can be omitted and a single period is inferred from startDate/endDate, and state is not directly applied but submitted to workflow. This raises the score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Crée une demande d'absence' for a resource, and lists absence types. It also explicitly contrasts this with boond_absences_update, making the tool's purpose and scope immediately distinguishable from its siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' section states exactly when to use the tool: to submit an absence for a resource identified by ID. The 'Plutôt que' section explicitly names boond_absences_update as the alternative for modifying an existing request, giving clear routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_absences_deleteSupprimer une absenceADestructive
Supprime définitivement un(e) demande d'absence de BoondManager.
Quand : uniquement sur demande explicite de l'utilisateur, et après avoir vérifié l'ID avec boond_absences_get.
Plutôt que : boond_absences_update pour désactiver ou changer l'état d'un enregistrement sans le détruire — c'est presque toujours l'intention réelle.
⚠️ Irréversible, sans corbeille côté API.
Si le client MCP annonce la capacité
elicitation, une confirmation est demandée à l'utilisateur final et un refus annule l'appel (structuredContent.deleted: false+reason) ; sinon la suppression part directement.
Returns : { id, deleted, reason? } — vérifier deleted, qui vaut false en cas de refus utilisateur.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| reason | No | Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur) |
| deleted | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Although destructiveHint is already true, the description adds meaningful behavioral nuance: deletion is irreversible with no trashbin on the API side, an elicitation-capable MCP client will request user confirmation and can return deleted:false with a reason, and otherwise the deletion proceeds immediately. This enriches the annotations rather than merely repeating them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, starting with a clear one-sentence purpose, then using bullets for usage conditions, alternatives, safety warnings, and return semantics. Every section contributes necessary information with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive delete tool with annotations and an output schema, this description is complete: it defines the trigger condition, the safer alternative, the irreversible behavior, the confirmation mechanism, and the meaning of the response field. Nothing an agent needs to call it correctly appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single id parameter is fully documented in the input schema with a numeric pattern and description, giving 100% coverage. The description does not add much parameter-specific meaning beyond advising ID verification with boond_absences_get, which is operational context but not new syntax or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb and resource: 'Supprime définitivement un(e) demande d'absence de BoondManager.' It then explicitly contrasts this tool with boond_absences_update, making it easy for an agent to distinguish destructive deletion from non-destructive state changes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' section states that the tool should only be used when the user explicitly asks to delete and after the ID has been verified via boond_absences_get. The 'Plutôt que' section names boond_absences_update as the preferred alternative when only disabling or modifying an absence is desired, so the when-not-to-use guidance is explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_absences_getDetails d'une absenceARead-onlyIdempotent
Récupère la fiche complète d'un(e) demande d'absence par son ID numérique.
Quand : après un boond_absences_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_absences_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_absences_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description doesn't need to repeat that. It adds valuable behavioral context by noting that an unknown ID returns the raw BoondManager error, and that the response is a JSON entity with attributes and relations. This goes beyond annotations and helps the agent anticipate error behavior and response structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and every sentence contributes value: main action, when to use, when not to use, a warning, and return format. The purpose is front-loaded, and there is no redundant or filler content. It is well-structured for quick agent parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter get-by-ID tool with high schema coverage and no output schema, the description is sufficiently complete. It explains the return type (JSON entity with attributes and relations) and error behavior. It doesn't list specific fields, but that is acceptable given the typical nature of such tools and the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the id parameter described as 'Identifiant unique de l'entité BoondManager (numérique).' The description adds further meaning by explicitly stating the ID must be numeric and must come from boond_absences_search, not guessed. This enhances the schema's baseline and provides necessary usage nuance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb and resource: 'Récupère la fiche complète d'un(e) demande d'absence par son ID numérique.' It distinguishes the tool from its siblings by emphasizing that it retrieves full details by numeric ID, contrasting with the search tool that returns a list summary. The purpose is unambiguous and helps an agent select this tool over other absence tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use and when-not-to-use guidance: 'Quand : après un boond_absences_search' and 'Plutôt que : boond_absences_search si l'ID n'est pas connu.' It also warns that the ID must come from search, not guessed, giving clear operational context. This fully addresses the usage decision relative to the obvious alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_absences_searchRechercher des demandes d'absenceARead-onlyIdempotent
Recherche des demandes d'absence dans BoondManager.
Quand : pour retrouver des demandes d'absence et leur état de validation.
Plutôt que : boond_planning_absences_search pour la vue calendaire (qui est absent quand), et boond_validations_search pour ce qui reste en attente de validation.
Args:
keywords (string, optional): Termes de recherche. resourceId est converti en COMP.
startMonth, endMonth (string, optional): Periode au format YYYY-MM.
page, pageSize: Pagination
Returns: Liste des demandes d'absence correspondantes.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (max: 100) | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| endMonth | No | Mois de fin de période (YYYY-MM) | |
| keywords | No | Mots-clés de recherche | |
| pageSize | No | Résultats par page | |
| resourceId | No | Filtrer par ID ressource | |
| startMonth | No | Mois de début de période (YYYY-MM) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds valuable behavior beyond that: the 'fields' projection is local-only and never sent to the API, unknown field names are ignored, and resourceId is normalized to COMP<id>. It does not detail pagination behavior, but the annotation coverage lowers the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections: purpose, when to use, alternatives, arguments, return value, and a focused note on the 'fields' projection. It is compact, front-loaded, and contains no filler while still covering the most decision-relevant details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with 100% schema coverage and safety annotations, the description is largely complete: it explains purpose, alternatives, period format, pagination, and the special 'fields' behavior. Since there is no output schema, the return description is somewhat minimal ('Liste des demandes d'absence correspondantes'), but it is still enough for basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds extra meaning by explaining the resourceId-to-COMP<id> conversion and detailing the 'fields' projection behavior (local, replaces summary, unknown names ignored), which goes beyond the schema's short descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and resource: 'Recherche des demandes d'absence dans BoondManager' and states what information is retrievable ('leur état de validation'). It also explicitly names sibling alternatives, so the tool is clearly distinguished from planning_absences_search and validations_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' and 'Plutôt que' sections give explicit usage context and name the alternatives: use this for absence requests and their validation state, planning_absences_search for the calendar view, and validations_search for items pending validation. This leaves no ambiguity about when to select this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_absences_updateModifier une absenceAIdempotent
Met à jour une demande d'absence existante, identifiée par son ID.
Quand : pour corriger les dates, le motif ou le commentaire d'une demande déjà déposée.
Plutôt que : boond_absences_create si la demande n'existe pas encore.
Mise à jour partielle : seuls les champs fournis sont écrits.
absencesPeriodsfait exception — le tableau fourni remplace l'intégralité des périodes existantes.
Returns : confirmation et fiche mise à jour.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID de l'absence à modifier | |
| note | No | Commentaire / motif | |
| state | No | État de la demande | |
| endDate | No | Date de fin (YYYY-MM-DD) | |
| startDate | No | Date de début (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses beyond the annotations: it states partial-update semantics and the `absencesPeriods` exception where the provided array replaces existing periods. It also states the return, which is useful because there is no output schema. The only limiting factor is that it does not address permissions, validation, or rate limits, but the annotations already cover idempotency and non-read-only, so this is a strong-but-not-complete disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: purpose, when to use, what not to use, partial-update behavior, notable exception, and return value. Every sentence earns its place, and the structure front-loads the most relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter update tool with no output schema, the description explains purpose, usage, return value, partial update, and the replacement exception. It is not fully complete because `absencesPeriods` is described as a replaceable field but is absent from the input schema, and the `state` parameter receives no meaningful operational detail. These gaps make the definition serviceable but not fully reliable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Since schema description coverage is 100%, the baseline is 3. The description does add some value by mapping the update use case to dates, comment, and reason, and by clarifying partial update behavior. However, it does not explain the `state` parameter's possible values, and it mentions `absencesPeriods` although that field is not present in the input schema, which can confuse an agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific verb and resource: 'Met à jour une demande d'absence existante, identifiée par son ID.' It also differentiates the tool from the sibling `boond_absences_create` by explicitly pointing to create as the 'Plutôt que' alternative. An agent can immediately tell what this tool updates and how it differs from creating an absence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit 'Quand' guidance: use the tool to correct dates, the reason, or the comment of an already-submitted request. It also says 'Plutôt que : boond_absences_create si la demande n'existe pas encore,' which is a concrete alternative and exclusion. This is model usage clarity with a named sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_accounts_getDétails d'un(e) compte utilisateurARead-onlyIdempotent
Récupère la fiche complète d'un(e) compte utilisateur par son ID numérique.
Quand : après un boond_accounts_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_accounts_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_accounts_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds valuable behavioral context: unknown IDs pass through BoondManager's raw error, the ID must come from a prior search rather than guessing, and the response is the full JSON entity with attributes plus relations. No contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with the core purpose in the first sentence and supporting usage guidance in short labeled lines. Every sentence earns its place, and the structure makes the key routing information easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter get-by-ID tool with no output schema, the description covers the essential context: prerequisite search, excluded alternative, error behavior, ID provenance, and return shape. Nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the id parameter as a numeric BoondManager identifier. The description reinforces that only a numeric ID is accepted and that names are not allowed, but it does not add substantial meaning beyond the schema's existing documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Récupère la fiche complète d'un(e) compte utilisateur par son ID numérique.' It clearly distinguishes this from boond_accounts_search by emphasizing the full record retrieval and ID-based lookup, so an agent can tell them apart immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use it ('après un boond_accounts_search'), when not to use it ('Plutôt que : boond_accounts_search si l'ID n'est pas connu'), and notes the tool does not accept a name. This is strong routing guidance with no reliance on inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_accounts_searchRechercher des comptes utilisateursARead-onlyIdempotent
Liste et recherche les comptes utilisateurs de BoondManager, par mots-clés et pagination.
Quand : pour retrouver l'ID d'un(e) compte utilisateur à partir de son nom, ou pour énumérer les comptes utilisateurs existant(e)s.
Plutôt que : boond_accounts_get si l'ID est déjà connu — la recherche ne renvoie qu'un résumé d'une ligne par compte utilisateur.
Returns : page de résumés (ID + libellé principal), plus structuredContent.total = nombre total côté BoondManager. Lecture seule.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.Pagination :
pageSize1–500 (défaut 30),page1–100 — au-delà : refus, affiner les filtres.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (défaut: 1, max: 100) | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| keywords | No | Mots-clés de recherche (nom, email, compétences...) | |
| pageSize | No | Nombre de résultats par page (max: 500, défaut: 30) |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Nombre d'éléments retournés sur cette page |
| items | Yes | |
| total | No | Nombre total de résultats côté BoondManager |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even with readOnlyHint, idempotentHint, and destructiveHint=false annotations, the description adds meaningful behavioral context: it returns a page of summaries with ID + main label, exposes structuredContent.total as the BoondManager-side total, and is explicitly marked 'Lecture seule'. It also discloses that the fields parameter is an MCP-side projection never transmitted to the API, with unknown names silently ignored — non-obvious behavior an agent needs to know.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded: purpose first, then usage context, then returns, then parameter-specific notes. It is moderately detailed but every section earns its place, with no filler or tautological repetition of the tool name or title. The use of short labeled sections makes it easy for an agent to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with a rich input schema and output schema, the description covers all essential decision factors: when to use it, what it returns, how total is exposed, how fields projection behaves, and what pagination limits apply. There is no obvious missing information an agent would need to invoke it correctly, and the alternatives are explicitly named.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema already covers all parameters at 100%, the description adds valuable semantics beyond the schema. It clarifies that 'fields' is a client-side projection that replaces the default summary and is ignored if names are unknown, and it spells out the effective pagination boundaries. This extra meaning helps the agent use fields and pagination correctly without inferring them from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with a clear verb-resource pair: 'Liste et recherche les comptes utilisateurs de BoondManager, par mots-clés et pagination.' It explicitly contrasts with boond_accounts_get, stating that the search only returns a one-line summary per account while the get tool is for known IDs. This makes the tool easily distinguishable from its closest sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete when-to-use guidance: finding an account ID from a name or enumerating existing accounts. It also says when not to use it: if the ID is already known, use boond_accounts_get instead. Additional pagination rules ('pageSize 1–500, page 1–100, beyond that refused') strengthen the operational guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_actions_createCréer une actionA
Crée une nouvelle action (appel, email, RDV, note) dans BoondManager, rattachée à un contact, candidat, ressource, opportunité ou projet (relation dependsOn, obligatoire).
Plutôt que : boond_actions_update pour compléter une action déjà enregistrée plutôt que d'en créer un doublon.
Args:
typeOf (number, requis): ID numérique du type d'action (dictionnaire setting.action.*, via boond_application_dictionary)
title, text (string, optional): Titre et contenu de l'action
startDate, endDate (string, optional): Dates ISO avec timezone (ex: 2026-06-05T10:00:00+0200)
contactId | candidateId | resourceId | opportunityId | projectId (string, un requis): Entité de rattachement
companyId (string, optional): Société, uniquement en complément d'un contactId
positioningId (string, optional): Positionnement à lier — requis par l'API pour les types d'action liés aux positionnements (ex. RQ)
Returns: L'action créée avec son ID.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Contenu / notes de l'action | |
| title | No | Titre de l'action | |
| typeOf | Yes | Type d'action : ID numérique du dictionnaire (setting.action.*, via boond_application_dictionary) ou libellé personnalisé si BOOND_DICTIONARY_OVERRIDES est configuré | |
| endDate | No | Date de fin (même format que startDate) | |
| companyId | No | ID de la société associée (uniquement en complément d'un contactId) | |
| contactId | No | ID du contact auquel rattacher l'action (dependsOn) | |
| projectId | No | ID du projet auquel rattacher l'action (dependsOn) | |
| startDate | No | Date de début au format ISO 8601 avec timezone (ex: 2026-06-05T10:00:00+0200) | |
| resourceId | No | ID de la ressource à laquelle rattacher l'action (dependsOn) | |
| candidateId | No | ID du candidat auquel rattacher l'action (dependsOn) | |
| opportunityId | No | ID de l'opportunité à laquelle rattacher l'action (dependsOn) | |
| positioningId | No | ID du positionnement à lier à l'action (relation positioning). Requis par l'API pour les types d'action liés aux positionnements (ex. RQ) — sans lui, erreur 422 « 1002 - Wrong or missing attribute (/data/relationships/positioning) ». |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Le description comporte des informations comportementales au-delà des annotations : « Returns: L'action créée avec son ID» expose le retour ; la contrainte « positioningId requis par l'API pour les types d'action liés aux positionnements (ex. RQ)» et l'erreur associée apportent un contexte de négociation. Les annotations indiquent déjà readOnlyHint=false, idempotentHint=false et destructiveHint=false, ce qui est cohérent avec une opération de création. La description n'ajoute toutefois pas plus de détails sur les effets (par exemple, elle n'insiste pas sur le fait que l'opération n'est pas idempotente, la création de doublon possible, mais cela est déjà suggérée par la comparaison à update).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description assez longue mais bien structurée : une première phrase qui énonce l'objectif, puis une phrase de guidance (« Plutôt que... »), puis une liste `Args:` en bullets. Chaque ligne apporte une information (format de date, contrainte relationnelle, compléments commerciaux). Il y a une certaine redondance avec le schéma (chaque paramètre y est listé), mais la description est utilisable seule et front-load les informations clés. Un cran de plus serait possible si elle omises les list d'Args pour pointer vers le schéma, mais la taille reste raisonnable pour un outil avec 12 paramètres.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Avec 12 paramètres, un output en sortie non spécifié et une opération de création, la description fournit presque tout ce qu'un agent seek : les types d'actions, la nécessité d'une entité de rattachement, le format dates, l'exigence de `typeOf` via la dictionnELIN, la contrainte de `companyId`, et le retour avec id. Manque peut être un exemple d'appel complet, mais ce n'est pas indispensable puisque le schéma a déjà une couverture à 100%. Il serait possible d'ajouter les prérequis d'authentification ou de politique, mais ces informations ne sont pas plus attendues pour un tool d'API.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Le schéma de l'objet couvre 100% des paramètres avec des descriptions, donc la baseline est à 3. La description dépasse ce baseline en ajoutant des sémantiques transversales : elle regroupe les cinq identifiants de messagerie potentiels et précise « un requis » (contrainte qui the net est pas exprimée dans le schéma formulé, car seule `typeOf` est requise). Elle explique aussi la relation `dependsOn` obligatoire et l'incompatibilité de `companyId` sauf en complément d'un `contactId`. Ce sont des informations nécessaires pour appeler l'outil correctement, non visibles dans le schéma seul.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
La description indique un verbe d'action précis (« Crée une nouvelle action »), précise les types d'actions (appel, email, RDV, note), l'univers BoondManager et les entités de rattachement (contact, candidat, ressource, opportunité, projet). Elle différencie explicitement de sa sœur boond_actions_update (« Plutôt que : `boond_actions_update` »), ce qui permet à un agent de sélectionner correctement l'outil dès la lecture.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
La description indique explicitement dans quels cas ne pas utiliser : « Plutôt que : `boond_actions_update` pour compléter une action déjà enregistrée plutôt que d'en créer un doublon ». Elle précise aussi une condition d'usage importante : une entité de rattachement doit être fournie (« relation dependsOn, obligatoire », « contactId | candidateId | ... (string, requis) »). Ceci guide l'agent vers le bon choix entre création et modification, et impose une contrainte critique pour réussir l'appel.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_actions_deleteSupprimer une actionADestructive
Supprime définitivement un(e) action de BoondManager.
Quand : uniquement sur demande explicite de l'utilisateur, et après avoir vérifié l'ID avec boond_actions_get.
Plutôt que : boond_actions_update pour désactiver ou changer l'état d'un enregistrement sans le détruire — c'est presque toujours l'intention réelle.
⚠️ Irréversible, sans corbeille côté API.
Si le client MCP annonce la capacité
elicitation, une confirmation est demandée à l'utilisateur final et un refus annule l'appel (structuredContent.deleted: false+reason) ; sinon la suppression part directement.
Returns : { id, deleted, reason? } — vérifier deleted, qui vaut false en cas de refus utilisateur.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| reason | No | Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur) |
| deleted | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Au-delà des annotations (destructiveHint=true), la description ajoute l'information cruciale de l'irréversibilité ('sans corbeille côté API') et du flux conditionnel de confirmation selon la capacité `elicitation` du client. Elle décrit précisément le comportement en cas de refus (deleted: false + reason), dupliquant ainsi l'annonce de destructivité par une mise en garde concrète. Légère marge (pas de mention des effets annexes), d'où 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Structure exemplaire avec en-têtes ('Quand :', 'Plutôt que :'), listes à puces et ligne 'Returns' explicite. L'avertissement ⚠️ est placé en tête des risques. Chaque phrase apporte de l'information, sans redondance. Légèrement plus long que nécessaire dans l'énoncé du flux elicitation, d'où 4 plutôt que 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Le schéma de sortie existe, donc la description n'a pas à détailler le retour, mais elle le fait quand même ({ id, deleted, reason? }) pour clarifier le cas de refus. Elle couvre tous les aspects nécessaires à un appel correct : condition d'usage, pré-vérification, destructivité, flux de confirmation conditionnel, et interprétation du retour. Rien d'essentiel ne manque pour une opération destructive complexe.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
La couverture du schéma est de 100% avec un seul paramètre (id) déjà bien décrit ('Identifiant unique... numérique', motif ^\d+$). La description n'ajoute pas de sémantique supplémentaire sur le paramètre, mais référence l'étape de vérification de l'ID via boond_actions_get, ce qui contextualise son usage. Le niveau de base 3 est approprié.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
La description énonce une action précise — 'Supprime définitivement un(e) action de BoondManager' — avec un verbe, un objet et une sémantique (permanente) nettement définis. Elle se distingue explicitement de boond_actions_update et boond_actions_get, ce qui permet à un agent de choisir sans ambiguïté.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Le 'Quand :' précise l'unique condition d'usage (demande explicite de l'utilisateur + vérification préalable de l'ID via boond_actions_get) et le 'Plutôt que :' donne l'alternative exacte (boond_actions_update pour désactiver sans détruire) en indiquant qu'elle est 'presque toujours l'intention réelle'. Guidage explicite et actionnable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_actions_getDétails d'une actionARead-onlyIdempotent
Récupère la fiche complète d'un(e) action par son ID numérique.
Quand : après un boond_actions_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_actions_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_actions_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnly, idempotent, and non-destructive hints. The description adds useful behavioral context: unknown IDs cause the raw BoondManager error to be returned, and the response includes attributes plus relations as returned by the API. It also confirms the operation is read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the core action, and uses short labeled sections for when to use, what not to use, error behavior, and return value. Every sentence contributes useful information without repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only getter, this description is complete. It explains the purpose, when to use it, what the response contains, and the error behavior for invalid IDs. The annotation set covers safety, and no output schema is needed since the return format is described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents the single 'id' parameter with type, pattern, and description. The description adds meaningful usage semantics by specifying that the ID is numeric and must originate from boond_actions_search, never from assumption. This extra provenance guidance goes beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Récupère la fiche complète d'un(e) action par son ID numérique.' It clearly distinguishes itself from boond_actions_search by noting it retrieves full attributes not present in the list summary, and it is also distinct from create/update/delete siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is given: use after boond_actions_search to obtain full attributes, and avoid it in favor of boond_actions_search when the ID is not known because this tool does not accept a name. The warning that IDs must come from boond_actions_search, never from guesswork, is especially strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_actions_searchRechercher des actionsARead-onlyIdempotent
Recherche des actions (appels, emails, RDV, notes) dans BoondManager avec filtres optionnels par candidat, ressource, contact ou société.
Quand : pour balayer l'historique commercial ou RH sur un périmètre, plusieurs entités confondues.
Plutôt que : les onglets actions d'une entité connue (boond_candidates_actions, boond_companies_actions, boond_projects_actions…) : plus direct et sans filtre de périmètre à construire.
Args:
keywords (string, optional): Termes de recherche
candidateId, resourceId, contactId, companyId (string, optional): Filtrer par entité liée
page, pageSize: Pagination
Returns: Liste des actions correspondantes.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (max: 100) | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| keywords | No | Mots-clés de recherche | |
| pageSize | No | Résultats par page | |
| companyId | No | Filtrer par ID société | |
| contactId | No | Filtrer par ID contact | |
| resourceId | No | Filtrer par ID ressource | |
| candidateId | No | Filtrer par ID candidat |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is well covered. The description adds value by explaining the scope (multiple entities) and the 'fields' projection behavior ('projection côté MCP, jamais transmise à l'API'), which is non-obvious and important for the agent. It loses one point because the return behavior beyond 'Liste des actions correspondantes' is not detailed, which would be useful for a search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, well-organized with 'Quand', 'Plutôt que', and 'Args' sections, and every sentence earns its place. The fields note is placed after the return description, which is fine as it's an advanced feature. No redundancy with schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with full schema coverage and clear sibling differentiation, the description is largely complete. It explains the fields projection quirk and pagination parameters are in the schema. Missing: no explicit mention of result format (beyond the plain 'Liste des actions correspondantes') and whether filters combine, but these are minor for a search tool with annotations covering safety. The output schema is absent, but for a list endpoint the description's brief return statement is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the description doesn't need to restate parameters. The description's only addition is the 'fields' projection note ('remplace le résumé par les seuls attributs listés'), which adds real value. However, it doesn't explain filter semantics (e.g., whether filters are ANDed), which the schema also leaves implicit. This is baseline 3 territory, with a slight bonus for the fields note balanced by minimal added filter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is explicit and specific: 'Recherche des actions (appels, emails, RDV, notes) dans BoondManager avec filtres optionnels par candidat, ressource, contact ou société.' It names the resource (actions), the domain (BoondManager), and the filter dimensions, which clearly distinguishes it from siblings like boond_candidates_actions or boond_actions_get. The distinction is further reinforced by the explicit 'Plutôt que' section naming an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear 'Quand' and 'Plutôt que' guidance, explicitly stating to use this tool for sweeping commercial/HR history across multiple entities, and explaining why entity-specific action tabs are less direct. This is exemplary usage guidance that routes the agent to the correct tool in ambiguous multi-entity scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_actions_updateModifier une actionAIdempotent
Met à jour une action existante dans BoondManager (PUT partiel, seuls les champs fournis sont modifiés).
Plutôt que : boond_actions_create si l'action n'existe pas encore.
⚠️ Aucune relation n'est envoyée : le rattachement (dependsOn), le positionnement et la synchronisation calendrier (event Outlook/Teams, invités) sont préservés. Idéal pour ajouter un compte-rendu sans casser l'agenda — contrairement à delete + recreate qui supprime l'événement.
Args:
id (string, requis): ID de l'action à modifier
typeOf (number, optional): Nouveau type (ID numérique du dictionnaire setting.action.*)
title (string, optional): Nouveau titre
text (string, optional): Nouveau contenu / notes (remplace l'existant, pas d'ajout)
startDate, endDate (string, optional): Dates ISO avec timezone (ex: 2026-06-05T10:00:00+0200)
Returns: L'action mise à jour.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID de l'action à modifier | |
| text | No | Nouveau contenu / notes (HTML accepté). Remplace l'existant (pas d'ajout). | |
| title | No | Nouveau titre de l'action | |
| typeOf | No | Nouveau type : ID numérique du dictionnaire setting.action.* (via boond_application_dictionary) | |
| endDate | No | Date de fin (même format que startDate) | |
| startDate | No | Date de début au format ISO 8601 avec timezone (ex: 2026-06-05T10:00:00+0200) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Identifiant de l'entité créée/modifiée |
| type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false), the description adds substantial behavioral detail: it's a partial PUT ('PUT partiel, seuls les champs fournis sont modifiés'), it does not send relations and preserves dependsOn/positioning/calendar sync, and it warns that text replaces existing content rather than appending. This gives the agent crucial insight into side effects. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat lengthy but well-structured: it starts with the core purpose, then usage guidance, a behavioral warning, and an args list. Every sentence contributes meaning; there is no fluff. The front-loading of the primary action and the sibling distinction makes it easy to scan quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an update tool with a rich schema and annotations, the description is complete. It covers the operation type, idempotent partial update behavior, preservation of relationships, and parameter semantics. The 'Returns: L'action mise à jour' line, combined with the stated output schema, ensures the agent knows what to expect. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all six parameters have descriptions), so the baseline is 3. The description adds value by clarifying that 'text' replaces existing content (not adds), specifying the date format with a concrete example (2026-06-05T10:00:00+0200), and noting typeOf uses the dictionary setting.action.*. These details go beyond the schema's basic field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Met à jour une action existante dans BoondManager' (updates an existing action). It explicitly differentiates from the sibling boond_actions_create by noting 'Plutôt que : boond_actions_create si l'action n'existe pas encore' (rather than create if the action doesn't exist yet). This leaves no ambiguity about the action's role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides direct guidance on when to use this tool versus alternatives. It names boond_actions_create as the correct choice when the action doesn't exist, and contrasts with delete+recreate, explaining why update is preferable for preserving calendar sync. This is explicit and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_advantages_getDétails d'un avantageARead-onlyIdempotent
Récupère la fiche complète d'un(e) avantage par son ID numérique.
Quand : après un boond_advantages_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_advantages_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_advantages_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, but the description adds valuable context: it states the return is a JSON entity (attributes + relations) and that an unknown ID raises the raw BoondManager error. This goes beyond the basic safety hints and discloses error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four concise sentences with clear subheadings (Quand, Plutôt que, a bullet for error, and a return note). Front-loaded with the main purpose, zero waste, and efficient use of whitespace.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter get-by-id tool with full schema coverage and safety annotations, the description is complete: it covers when to use, the source of the ID, error behavior, and the return format. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% with full parameter description, but the description adds critical semantic guidance: the ID must come from a prior search, not be guessed. This linkage is not in the schema and helps correct parameter sourcing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves the complete record of an advantage by its numeric ID, using the specific verb 'Récupère' and naming the resource. It explicitly distinguishes itself from the search tool by noting it provides attributes not in the list summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly gives when to use (after a search, to get full attributes) and when not (if ID unknown, use search instead since this tool doesn't accept a name). Also warns that IDs must come from search, never guessed, providing clear routing to the sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_advantages_searchRechercher des avantagesARead-onlyIdempotent
Recherche des avantages (tickets restaurant, mutuelle, véhicule, primes...) dans BoondManager, avec filtre optionnel par ressource.
Plutôt que : boond_resources_advantages quand on part d'une ressource précise.
Args:
keywords (string, optional): Termes de recherche
resourceId (string, optional): Filtrer par ID ressource
page, pageSize: Pagination
Returns: Liste des avantages correspondants.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (max: 100) | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| keywords | No | Mots-clés de recherche | |
| pageSize | No | Résultats par page | |
| resourceId | No | Filtrer par ID ressource |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so no extra safety disclosure is needed. The description adds useful behavioral detail beyond annotations: the fields projection is MCP-side, never transmitted to the API, unknown names are ignored, and it is recommended for large pages.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: purpose and routing first, then a compact Args block, then a short return note and a focused explanation of the one non-obvious parameter. Every sentence contributes to correct invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with five optional parameters, full schema coverage, and no output schema, the description covers the return type, the main filters, pagination, and the non-obvious fields behavior. Annotations cover safety and idempotency, so nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaningful semantics for the 'fields' parameter: it clarifies that the projection is handled MCP-side, is not sent to the API, replaces the summary, ignores unknown names, and is intended for large result pages. This goes beyond the schema's brief wording.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and object ('Recherche des avantages ... dans BoondManager') and gives concrete examples of what counts as an avantage. It also names the sibling tool boond_resources_advantages, which helps an agent distinguish between the two without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly contrasts this tool with boond_resources_advantages and gives the context ('quand on part d'une ressource précise') where the routing choice matters. It also documents optional keyword and resourceId filters plus pagination, which is enough guidance for selecting and invoking the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_agencies_getDétails d'un(e) agenceARead-onlyIdempotent
Récupère la fiche complète d'un(e) agence par son ID numérique.
Quand : après un boond_agencies_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_agencies_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_agencies_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only nature is covered. The description adds the behavior that an unknown ID will surface the BoondManager error as-is, and that the ID must come from `boond_agencies_search`, never from a guess. This is useful context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: it opens with the core purpose, then provides usage context, a clear contrast with the sibling, a behavior note, and a returns description. Each sentence earns its place, and key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for this simple one-parameter read tool. It covers what it returns (JSON of the entity with attributes and relations), the read-only nature, error behavior for unknown IDs, and its role in the workflow. The only minor gap is not detailing exact response fields, but that's not critical given the output is JSON from the API.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, and the parameter `id` is adequately described as the unique BoondManager entity identifier (numeric). The description reinforces that the ID must be obtained from the search tool)Skip, which adds context beyond the schema. No additional parameter details are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the purpose: retrieving the full record of an agency by its numeric ID. It specifies the resource ('fiche complète d'un(e) agence') and the action ('Récupère'), and it distinguishes this tool from the search tool by noting it does not accept names, only IDs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool: after a `boond_agencies_search` to get full attributes not in the list summary. It also states when NOT to use it: if the ID is not known, use `boond_agencies_search` instead. This clear routing is very helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_agencies_searchRechercher des agencesARead-onlyIdempotent
Liste et recherche les agences de BoondManager, par mots-clés et pagination.
Quand : pour retrouver l'ID d'un(e) agence à partir de son nom, ou pour énumérer les agences existant(e)s.
Plutôt que : boond_agencies_get si l'ID est déjà connu — la recherche ne renvoie qu'un résumé d'une ligne par agence.
Returns : page de résumés (ID + libellé principal), plus structuredContent.total = nombre total côté BoondManager. Lecture seule.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.Pagination sans effet : cette route renvoie toujours la table complète,
pageSizeetpagesont ignorés par l'API — inutile de paginer, tout est déjà là.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (défaut: 1, max: 100) | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| keywords | No | Mots-clés de recherche (nom, email, compétences...) | |
| pageSize | No | Nombre de résultats par page (max: 500, défaut: 30) |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Nombre d'éléments retournés sur cette page |
| items | Yes | |
| total | No | Nombre total de résultats côté BoondManager |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only, idempotent, and non-destructive, and the description adds substantial behavioral context: returns only summaries, reports `structuredContent.total`, warns that pagination parameters are ignored by the API, and explains that `fields` is an MCP-side projection never sent to the API. This goes well beyond the annotations and materially changes how the tool should be invoked.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded: core purpose first, then usage context, then return behavior, then parameter-specific warnings. Every sentence earns its place, and the bullet format makes the critical gotchas easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with rich annotations and an output schema, the description covers all the essential operational knowledge: when to use it, what it returns, how `fields` behaves, and that pagination is a no-op. There is no missing information an agent would need to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds significant value: it clarifies that `fields` is a local projection, that unknown field names are ignored, that `pageSize` and `page` are ineffective, and that keywords drive the search. This prevents an agent from paginating unnecessarily or assuming the fields parameter is forwarded.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb and resource: 'Liste et recherche les agences de BoondManager'. It explicitly distinguishes itself from the sibling `boond_agencies_get`, noting the search returns only a one-line summary per agency, so an agent can immediately tell which tool fits its goal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: find an agency ID from its name or enumerate agencies. It also names the alternative `boond_agencies_get` and explains why it is preferable when the ID is already known. This is direct, actionable routing information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_application_current_userUtilisateur courant BoondManagerARead-onlyIdempotent
Récupère les informations de l'utilisateur actuellement connecté à l'API BoondManager (profil, permissions, agence...).
Quand : en début de session, pour connaître l'identité, l'agence et le périmètre du compte utilisé — donc ce que « mes données » désigne.
Plutôt que : la ressource boond://application/current-user, identique et moins coûteuse ; et boond_resources_search pour quelqu'un d'autre que le titulaire du compte, cet outil ne prenant aucun paramètre.
Returns: Données JSON de l'utilisateur courant.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful behavioral context: it returns JSON data about the current user, mentions no parameters, and clarifies that this is not the tool for querying other users.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with 'Quand', 'Plutôt que', and 'Returns' sections, and the main purpose is front-loaded. It is slightly longer than necessary and the 'identique et moins coûteuse' phrase adds ambiguity without much benefit.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter introspection tool, the description covers the main decision point: when to call it and when to use boond_resources_search instead. Since there is no output schema, the explicit mention of JSON user data with profile, permissions, and agency is useful and sufficient for a basic agent decision.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the baseline is 4. The description reinforces this by explicitly stating that the tool takes no parameters, which is helpful for an agent choosing between this and a parameterized sibling like boond_resources_search.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves information about the currently connected BoondManager API user, including profile, permissions, and agency. It uses a specific verb and resource, and it distinguishes itself from boond_resources_search by the account-holder scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use this tool at the start of a session to identify the account and its scope, and it points to boond_resources_search when querying someone other than the account holder. However, the comparison with the boond://application/current-user resource is worded ambiguously ('identique et moins coûteuse') and could confuse an agent about whether to prefer the tool or the resource.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_application_dictionaryRécupérer un dictionnaire BoondManagerARead-onlyIdempotent
Récupère un dictionnaire de référence BoondManager (états, types, pays, devises, langues, outils, expertises, ...).
Quand : pour traduire un état ou un type BoondManager entre son ID entier et son libellé, avant de filtrer une recherche.
Plutôt que : les ressources boond://dictionary/* pour les tables courantes (états, typeOf, pays, devises, langues) : même contenu par un resources/read, sans consommer un appel d'outil. Cet outil reste nécessaire pour les tables non publiées en ressource.
L'API expose un seul endpoint /application/dictionary qui renvoie tout — le serveur le cache (TTL 1h, configurable via BOOND_DICTIONARY_TTL_MS) et extrait un sous-arbre par chemin dotté.
Args:
dictionaryType (string): Chemin dans la réponse (relatif à
data). Exemples :"setting.state.{resource,candidate,contact,company,opportunity,project,invoice,order,positioning}" → états par entité
"setting.typeOf.{resource,contact,project}" → types par entité
"setting.action.{candidate,resource,opportunity,project,...}" → actions disponibles
"setting.tool" → outils / technos (Java, AWS...)
"setting.expertiseArea" → domaines d'expertise
"setting.experience" → niveaux d'expérience
"setting.languageSpoken" → langues parlées
"setting.activityArea" → secteurs d'activité
"setting.mobilityArea" → mobilités géographiques
"setting.currency" → devises
"setting.civility" → civilités
"country" → pays
"languages" → langues d'interface (fr, en, es)
Note : l'ancienne forme "states/resources" (slash) n'est pas valide — utilisez "setting.state.resource".
Returns : le sous-arbre demandé (souvent un tableau {id, value, …}), ou isError: true avec le chemin fautif s'il est introuvable.
| Name | Required | Description | Default |
|---|---|---|---|
| dictionaryType | Yes | Type de dictionnaire (ex: typeOf/actions, typeOf/absences, states/candidates, states/resources, states/opportunities, states/projects, states/invoices, countries, currencies, languages...) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already communicate read-only, idempotent, non-destructive behavior. The description adds meaningful context beyond that: one endpoint returning everything, server-side caching with a configurable TTL, dotted-path subtree extraction, the invalid legacy slash form, and the isError response for unknown paths. It does not discuss auth or rate limits, but those are not central for this read-only dictionary lookup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but clearly structured with Quand/Plutôt que/endpoint/Args/Returns sections, and the extensive path examples are reference material rather than fluff. It could be slightly condensed, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only lookup with no output schema, the description is complete: it explains when to use it, what the parameter means, what the response looks like, the error behavior, and important constraints. An agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter with 100% schema coverage, but the description adds the crucial semantics: dictionaryType is a path relative to data, with many concrete examples and an explicit correction that the schema-style slash form ('states/resources') is invalid in favor of dotted form ('setting.state.resource'). This goes well beyond the schema and prevents a common mistake.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb and object ('Récupère un dictionnaire de référence BoondManager') and enumerates the dictionary contents (états, types, pays, devises...). It also distinguishes itself from reading the same data via the boond://dictionary/* resources, so an agent can tell this tool apart from the read-resource alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' section gives an explicit trigger: translate a BoondManager state or type ID to its label before filtering a search. The 'Plutôt que' section names the alternative (resources/read on boond://dictionary/*) and states the condition for still using this tool (tables not published as resources).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_business_units_getDétails d'un(e) business unitARead-onlyIdempotent
Récupère la fiche complète d'un(e) business unit par son ID numérique.
Quand : après un boond_business_units_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_business_units_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_business_units_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false. The description adds useful context: the return value is the full entity JSON with attributes and relations, and unknown IDs surface BoondManager's raw error. This exceeds what annotations alone provide, though it does not describe auth or other operational details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded: the main purpose is stated first, followed by clear usage conditions and return information. Every sentence adds value, and the bullet/list formatting makes it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only get-by-ID tool, the description covers the key operational concerns: when to use it, where the ID comes from, error behavior, and the shape of the response. No critical information is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents the id parameter. The description adds semantic guidance by emphasizing that the ID is numeric and must be obtained from boond_business_units_search rather than guessed, which helps the agent understand the provenance and validity constraints of the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Récupère la fiche complète') and resource ('business unit par son ID numérique'), and differentiates it from the sibling search tool by saying it accesses attributes missing from the list summary. An agent can clearly understand what this tool does and how it differs from boond_business_units_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use it ('après un boond_business_units_search'), what to use instead in a different situation ('Plutôt que : boond_business_units_search si l'ID n'est pas connu'), and warns that the ID must come from search, never from guesswork. This is strong, actionable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_business_units_searchRechercher des business unitsARead-onlyIdempotent
Liste et recherche les business units de BoondManager, par mots-clés et pagination.
Quand : pour retrouver l'ID d'un(e) business unit à partir de son nom, ou pour énumérer les business units existant(e)s.
Plutôt que : boond_business_units_get si l'ID est déjà connu — la recherche ne renvoie qu'un résumé d'une ligne par business unit.
Returns : page de résumés (ID + libellé principal), plus structuredContent.total = nombre total côté BoondManager. Lecture seule.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.Pagination :
pageSize1–500 (défaut 30),page1–100 — au-delà : refus, affiner les filtres.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (défaut: 1, max: 100) | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| keywords | No | Mots-clés de recherche (nom, email, compétences...) | |
| pageSize | No | Nombre de résultats par page (max: 500, défaut: 30) |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Nombre d'éléments retournés sur cette page |
| items | Yes | |
| total | No | Nombre total de résultats côté BoondManager |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Les annotations couvrent déjà la sécurité (readOnlyHint=true, destructiveHint=false, etc.), mais la description ajoute des détails comportementaux critiques : format de retour (page de résumés ID + libellé, `structuredContent.total`), comportement de la projection `fields` (jamais transmise à l'API, noms inconnus ignorés), et les limites strictes de pagination (pageSize 1-500, page 1-100, refus au-delà). Cette transparence va bien au-delà des annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
La description est structurée en paragraphes courts avec des titres implicites (« Quand », « Plutôt que », « Returns ») et des puces pour les paramètres. Chaque phrase apporte une information unique et nécessaire, sans répétitions ni remplissage. L'information critique est front-loaded dans les premières lignes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
La description couvre tous les aspects nécessaires pour appeler l'outil correctement : but, cas d'usage, alternative, format de retour, détails de paramètres, limitations de pagination, et le fait que l'opération est en lecture seule. Le schéma de sortie existe et la description fournit les informations de contexte qui ne sont pas dans le schéma, rendant l'ensemble complet.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Le schéma a déjà une couverture de 100% pour les 4 paramètres, mais la description enrichit chaque paramètre : `fields` est expliqué comme une projection locale non envoyée à l'API, `page` et `pageSize` sont présentés avec leurs plages et le comportement de refus en cas de dépassement, et `keywords` est illustré avec des exemples concrets. L'utilisation recommandée de `fields` sur les grosses pages apporte une valeur ajoutée nette.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
La description commence par un verbe d'action précis (« Liste et recherche ») accompagné de la ressource cible (« business units de BoondManager ») et des critères de recherche (« mots-clés et pagination »). Elle distingue explicitement l'outil de son alternative `boond_business_units_get` en précisant que la recherche ne renvoie qu'un résumé d'une ligne, ce qui lève toute ambiguïté.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
La section « Quand » définit clairement les cas d'usage : retrouver un ID à partir du nom ou énumérer les business units. La section « Plutôt que » indique explicitement d'utiliser `boond_business_units_get` si l'ID est déjà connu, et explique pourquoi (résumé limité). C'est une directive d'utilisation complète et orientée vers le choix du bon outil.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_calendars_getDétails d'un(e) calendrierARead-onlyIdempotent
Récupère la fiche complète d'un(e) calendrier par son ID numérique.
Quand : après un boond_calendars_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_calendars_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_calendars_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds that unknown IDs return the raw BoondManager error, which is useful behavioral context, but does not describe other edge cases (e.g., network failures, response format details). The description does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured with clear sections for 'when' and 'rather than', front-loading the primary purpose and usage guidance. No redundant sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only tool with annotations covering safety, the description covers the key context: when to use, how to get the ID, and what the return is (attributs + relations). It does not detail the output structure, but no output schema exists, so the description is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the `id` parameter as the unique identifier. The description reinforces that it must be numeric and from search, but adds limited new semantic value beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves the complete record of a calendar by its numeric ID, distinguishing it from the search tool that returns list summaries. It explicitly says it is for after a search to get full attributes, which differentiates it from sibling get tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: after `boond_calendars_search` to obtain attributes not in the list summary, and explicitly says to prefer `boond_calendars_search` when the ID is not known because this tool does not accept names. Also warns that the ID must come from search, not guesswork.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_calendars_searchRechercher des calendriersARead-onlyIdempotent
Liste et recherche les calendriers de BoondManager, par mots-clés et pagination.
Quand : pour retrouver l'ID d'un(e) calendrier à partir de son nom, ou pour énumérer les calendriers existant(e)s.
Plutôt que : boond_calendars_get si l'ID est déjà connu — la recherche ne renvoie qu'un résumé d'une ligne par calendrier.
Returns : page de résumés (ID + libellé principal), plus structuredContent.total = nombre total côté BoondManager. Lecture seule.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.Pagination sans effet : cette route renvoie toujours la table complète,
pageSizeetpagesont ignorés par l'API — inutile de paginer, tout est déjà là.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (défaut: 1, max: 100) | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| keywords | No | Mots-clés de recherche (nom, email, compétences...) | |
| pageSize | No | Nombre de résultats par page (max: 500, défaut: 30) |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Nombre d'éléments retournés sur cette page |
| items | Yes | |
| total | No | Nombre total de résultats côté BoondManager |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses that pagination parameters are ignored by the API and that the response always contains the full calendar list. It also explains that 'fields' is processed client-side and never sent to the API, plus the return format (ID + main label, with total). These are non-obvious behaviors that prevent misuse.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a one-line summary, a 'Quand' paragraph, a 'Plutôt que' alternative, and focused bullets for `fields` and pagination. Every sentence adds new information and the structure makes it skimmable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the use case, alternative tool selection, return format summary, the critical pagination caveat, and the special behavior of `fields`. Combined with the input schema and output schema, an agent has everything needed to call this endpoint correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All four parameters already have descriptions in the schema (100% coverage), but the description adds valuable clarification: `fields` is a client-side projection (not passed to the API) and `pageSize`/`page` are ineffective. This exceeds the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Liste et recherche les calendriers de BoondManager, par mots-clés et pagination', clearly stating the action (list/search), the object (calendars), and the criteria. It explicitly differentiates from boond_calendars_get, so an agent can distinguish this search endpoint from the direct retrieval endpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' section specifies the exact use case (find calendar ID by name, enumerate calendars) and explicitly advises using boond_calendars_get when the ID is already known. This gives unambiguous routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_candidates_actionsActions liées à un candidatARead-onlyIdempotent
Récupère les actions (appels, emails, RDV, notes) d'un(e) candidat, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_candidates_get pour la fiche de base, ou boond_candidates_search si l'ID est inconnu.
Returns : Liste des actions rattachées au candidat. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which cover safety and idempotency. The description adds that it retrieves actions and is read-only ('Lecture seule'), which slightly reinforces the annotation. It does not disclose any additional behavioral traits such as pagination, response format, or potential for large data sets, but given the annotation coverage, this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with key information front-loaded in the first sentence. It uses short paragraphs for usage guidance and return type, making it scannable. It could be slightly more compact, but it is not verbose or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple single-parameter read-only tool. The description covers purpose, usage context, and return type. Given the presence of annotations (readOnly, idempotent) and full schema coverage, nothing critical is missing. The only minor gap is not describing the response structure in detail, but the absence of an output schema suggests standard behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the parameter 'id' is well-documented ('Identifiant unique de l'entité BoondManager (numérique)'). The description does not add any parameter-specific detail beyond the schema, but also does not need to, since the schema covers it fully. Per baseline, score is 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Récupère') and resource ('actions d'un candidat') and lists the action types (appels, emails, RDV, notes), which distinguishes it from generic get tools. It does not explicitly name the sibling tools it differs from, but the context signals (sibling list) include similar actions tools for other entities, and the description's specificity is sufficient.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states when to use this tool ('pour ne charger que cette section, sans le reste de la fiche') and provides explicit alternatives ('Plutôt que : `boond_candidates_get` pour la fiche de base, ou `boond_candidates_search` si l'ID est inconnu'). This is exemplary usage guidance with both when and when-not conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_candidates_administrativeDonnées administratives d'un candidatARead-onlyIdempotent
Récupère les données administratives (pièces justificatives, documents contractuels, informations RH) d'un(e) candidat, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_candidates_get pour la fiche de base, ou boond_candidates_search si l'ID est inconnu.
Returns : Bloc administratif du candidat, avec les ID de documents exploitables par boond_documents_get. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds useful context by stating the return is the administrative block and that document IDs can be consumed by boond_documents_get. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the core action, and organized with 'Quand', 'Plutôt que', and 'Returns' sections. Every element earns its place and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only tool, the description covers purpose, usage context, alternatives, and return shape. No output schema exists, but the high-level return description is sufficient for an agent to invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully describes the single 'id' parameter with 100% coverage. The description only restates that data is fetched 'par son ID', adding no extra semantic detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Récupère'), a clear resource ('données administratives d'un candidat'), and an explicit identifier (ID). It also distinguishes this section-scoped tool from the general candidate profile tool, which is a strong differentiator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use this tool ('pour ne charger que cette section, sans le reste de la fiche') and names the alternatives to prefer instead: boond_candidates_get for the base profile and boond_candidates_search when the ID is unknown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_candidates_createCréer un(e) candidatA
Crée un(e) candidat dans BoondManager.
Quand : pour ajouter un(e) candidat inexistant(e).
Plutôt que : boond_candidates_update pour modifier un enregistrement existant, et boond_candidates_search d'abord pour vérifier qu'il n'existe pas déjà.
Écriture réelle et non idempotente : deux appels identiques créent deux enregistrements (l'API ne déduplique pas).
Les ID de relations et les états/types sont des ID numériques BoondManager, à résoudre au préalable (recherches d'entités,
boond://dictionary/*).
Returns : confirmation, ID créé, et la fiche complète. structuredContent.id est réutilisable directement pour chaîner un appel.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Ville | |
| note | No | Notes / commentaires | |
| state | No | État du candidat (0=en cours, 1=placé, 2=archivé...) | |
| title | No | Titre du poste / fonction | |
| email1 | No | Email principal | |
| phone1 | No | Téléphone principal | |
| country | No | Pays | |
| lastName | Yes | Nom de famille du candidat | |
| firstName | Yes | Prénom du candidat | |
| mainSkills | No | Compétences principales (texte libre) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Identifiant de l'entité créée/modifiée |
| type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly discloses non-idempotent behavior ('deux appels identiques créent deux enregistrements - l'API ne déduplique pas') and explains that relation IDs and state/type IDs are BoondManager numeric IDs requiring pre-resolution. It also discloses the return content and reusability of structuredContent.id. This goes beyond annotations (which only say readOnly=false) and carries the behavioral load well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with clear sections (Quand, Plutôt que, bullet point, Returns) and uses short sentences. It front-loads the primary action in the first sentence, then adds conditions, exclusions, behavioral notes, and return value information. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with 10 parameters, it is complete enough: it covers usage context, behavioral side effects, ID resolution approach, and return value chaining. It does not document every parameter's semantic nuance, but the schema already does that. Missing explicit prerequisites (e.g., authentication) which annotations and general Boond context might provide, but not material.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all 10 parameters, each with descriptions in French. The tool description adds meaning for state (numeric ID, needs pre-resolution) and the type/state relation. However, parameter descriptions are mostly short labels; the description could add more about semantics or formats for a few fields. But because schema coverage is 100%, the baseline is 3, and the added ID-resolution guidance elevates it slightly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action ('Crée un(e) candidat dans BoondManager'), specifies when to use it ('pour ajouter un(e) candidat inexistant(e)'), and distinguishes it from sibling tools like boond_candidates_update and boond_candidates_search. This clearly differentiates it from the many sibling candidate tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit 'Quand' (when) guidance and 'Plutôt que' (instead of) guidance, naming the alternatives and the workflow: search first with boond_candidates_search, then update with boond_candidates_update, or create. This is comprehensive usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_candidates_deleteSupprimer un(e) candidatADestructive
Supprime définitivement un(e) candidat de BoondManager.
Quand : uniquement sur demande explicite de l'utilisateur, et après avoir vérifié l'ID avec boond_candidates_get.
Plutôt que : boond_candidates_update pour désactiver ou changer l'état d'un enregistrement sans le détruire — c'est presque toujours l'intention réelle.
⚠️ Irréversible, sans corbeille côté API.
Si le client MCP annonce la capacité
elicitation, une confirmation est demandée à l'utilisateur final et un refus annule l'appel (structuredContent.deleted: false+reason) ; sinon la suppression part directement.
Returns : { id, deleted, reason? } — vérifier deleted, qui vaut false en cas de refus utilisateur.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| reason | No | Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur) |
| deleted | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already include destructiveHint=true, but the description goes beyond them by warning that deletion is irreversible, has no trash/recycle bin on the API side, and can be bypassed or canceled depending on the MCP client's 'elicitation' capability. It also explains refusal behavior via 'structuredContent.deleted: false' and 'reason'. These are significant behavioral details the annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main delete action, followed by compact 'Quand' and 'Plutôt que' lines. The important warnings and return behavior are placed in short bullet phrases. Every sentence contributes distinct operational value, and there is no fluff or tautological text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, single-parameter tool, the description covers all key context: when deletion is appropriate, which sibling to use instead, the irreversibility risk, the possible user confirmation flow, and the output combination for a refusal. Nothing relevant for an agent to invoke this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter, 'id', and the input schema already describes it as the unique numeric BoondManager entity ID with a regex pattern. Since schema coverage is 100%, the baseline is 3; the description adds no extra parameter details beyond the advice to verify the ID first, which is more operational guidance than parameter semantic. This does not substantially raise the score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the exact action with a specific verb and resource: 'Supprime définitivement un(e) candidat de BoondManager.' It also distinguishes the tool from siblings by explicitly pointing to boond_candidates_update for non-destructive state changes and boond_candidates_get for verifying the ID, so an agent can clearly recognize this tool's unique destructive purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit 'Quand' guidance: only on explicit user request and after verifying the ID with boond_candidates_get. It also tells the agent to prefer boond_candidates_update when the real intention is to disable or change state without destroying, making both when to use and when not to use this delete tool unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_candidates_getDétails d'un(e) candidatARead-onlyIdempotent
Récupère la fiche complète d'un(e) candidat par son ID numérique.
Quand : après un boond_candidates_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_candidates_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
tabcible un onglet précis (information,technical-data,administrative,actions…) ; sanstab, seule la fiche de base est renvoyée, pas la réunion des onglets.Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_candidates_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité (numérique) | |
| tab | No | Onglet spécifique à récupérer (information, technical, financial, actions, contracts, documents) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While the annotations already declare readOnlyHint and idempotentHint, the description adds valuable behavioral details not present in annotations: without `tab` only the base fiche is returned rather than a merge of tabs, unknown IDs surface the raw BoondManager error, and returned data is the JSON entity as provided by the API. The 'Lecture seule' note is consistent with the readOnlyHint annotation, and no contradiction appears.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded: it opens with the main action, then organizes usage context, alternatives, parameter behavior, and return value in short labeled sections. Every sentence adds useful information without repetition or padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only get operation with two parameters and no output schema, the description covers the essentials: input provenance, tab behavior, error behavior, and return format. The main completeness gap is the lack of clarification about when to use this tool's `tab` parameter versus the dedicated tab-specific sibling tools, which are present in the sibling list and semantically overlap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both `id` and `tab`. The description adds useful meaning by stating that `id` must come from `boond_candidates_search` and never from guesswork, and by explaining the effect of omitting `tab`. However, there is a notable inconsistency: the schema lists `technical` while the description uses `technical-data`, which could mislead an agent about valid `tab` values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation: 'Récupère la fiche complète d'un(e) candidat par son ID numérique', with a specific verb and resource. It also differentiates from `boond_candidates_search` by noting that this tool requires a numeric ID and returns list-attributs beyond the summary. However, it does not clarify its relationship to the sibling tab-specific tools such as `boond_candidates_information`, `boond_candidates_technical_data`, or `boond_candidates_administrative`, despite the `tab` parameter overlapping with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit usage context: 'Quand : après un `boond_candidates_search`, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.' It also tells the agent when not to use it: 'Plutôt que : `boond_candidates_search` si l'ID n'est pas connu.' It lacks explicit exclusions or routing guidance for the dedicated tab-specific sibling tools, so the when-to-use guidance is clear but incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_candidates_informationInformations générales d'un candidatARead-onlyIdempotent
Récupère les informations générales (coordonnées, adresse, état civil, photo, tags, source) d'un(e) candidat, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_candidates_get pour la fiche de base, ou boond_candidates_search si l'ID est inconnu.
Returns : Bloc identité et coordonnées du candidat. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description includes "Lecture seule" and a fetching verb, which is consistent with the `readOnlyHint` and `idempotentHint` annotations. With these annotations present, the description adds only a little extra context (return block), but does not disclose errors, authentication, or other operational behavior beyond what the annotations already imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and uses clear labels (Quand, Plutôt que, Returns), making it easy to scan. The main redundancy is that the "Returns" line largely repeats the fields already mentioned in the first sentence, so it falls slightly short of a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one ID parameter and no output schema, the description provides the purpose, the scope of the returned block, and the alternatives. It does not describe response errors or envelope details, but this is not essential for an agent to call the tool correctly in most cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the single parameter `id` with type, pattern, and purpose. The description only restates "par son ID," adding no new semantic details about the ID parameter. With 100% schema description coverage, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ("Récupère les informations générales ... par son ID") and explicitly contrasts itself with `boond_candidates_get` for the base record and `boond_candidates_search` when the ID is unknown. It lists key fields (coordees, adresse, état civil, photo, tags, source), making the scope clear without needing the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The "Quand" and "Plutôt que" lines give direct, actionable guidance: use this tool when only this section is needed, use `boond_candidates_get` for the base record, and `boond_candidates_search` when the ID is unknown. This fully covers when and when-not relative to the two relevant sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_candidates_positioningsPositionnements d'un candidatARead-onlyIdempotent
Récupère les positionnements (placements du candidat sur des opportunités ou des projets) d'un(e) candidat, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_candidates_get pour la fiche de base, ou boond_candidates_search si l'ID est inconnu.
Returns : Liste des positionnements du candidat. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, and non-destructive behavior. The description adds useful context by saying the result is a list and that this call intentionally fetches only the positionings section. It repeats 'Lecture seule', which is redundant with annotations, but does not contradict them and does add the scoped-loading behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, scannable, and front-loaded with the purpose before usage guidance. The 'Quand / Plutôt que / Returns' structure adds clear organization. It loses a point only because 'Lecture seule' repeats information already carried by annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only section fetch, this is largely complete: it explains what is returned, when to use it, and how it relates to sibling tools. It does not specify pagination or the exact item shape of a positioning, and there is no output schema, so a perfect-completeness score is not warranted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single id parameter is already fully described in the schema with a numeric pattern and an explicit meaning. The description only says 'par son ID', which repeats but does not extend the schema. With schema coverage at 100%, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear, specific verb 'Récupère' and identifies the resource: positionnements for a candidate by ID. The parenthetical explanation and the 'Plutôt que' alternatives make it easy to distinguish from boond_candidates_get and boond_candidates_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit 'Quand' guidance - use it to load only the positionings section rather than the whole record - and names the alternatives: boond_candidates_get for the base fiche and boond_candidates_search when the ID is unknown. This is exactly the kind of routing an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_candidates_searchRechercher des candidatsARead-onlyIdempotent
Recherche des candidats dans BoondManager avec filtres serveur.
Plutôt que : boond_resources_search pour les collaborateurs internes — candidats et ressources sont deux référentiels distincts, et une personne recrutée cesse d'être trouvable ici.
Cas d'usage courants :
• Mes candidats sans connaître son propre ID : perimeterDynamic: ["data"]. Pour "candidats de l'équipe X" : perimeterManagers: [<X_id>] (utiliser perimeterManagersType: "main"|"hr" pour cibler Main vs HR Manager).
• États / types : candidateStates: [<id>] (dictionnaire setting.state.candidate), candidateTypes (setting.typeOf.resource), contractTypes, availabilityTypes. IDs entiers issus du dictionnaire.
• Profil technique : tools: [<id>] (OU; pour ET: ["#AND#", "1", "2"]), expertiseAreas, activityAreas, experiences, trainings, mobilityAreas, languages (format langueId|niveauId).
• Sourcing : sources: [<id>] (origine du candidat), evaluations.
• Période : period: "created"|"updated"|"available"|"withActions"|... + startDate/endDate.
• Recherche par nom : keywords: "Dupont" + keywordsType: "lastName" (ou firstName, fullName avec "NOM#PRENOM", emails, phones, title, titleSkills…). Sans keywordsType, recherche par défaut dans le CV.
• Géolocalisation : coordinates: "lat,lon" ou location + geoDistance (km, 5-200).
Tri : sort + order.
Returns : liste paginée des candidats. Utiliser boond_candidates_get ou les outils d'onglets pour le détail.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.Pagination :
pageSize1–500 (défaut 30),page1–100 — au-delà : refus, affiner les filtres.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (défaut: 1, max: 100) | |
| sort | No | Champ de tri (ex: lastName, firstName, updateDate) | |
| flags | No | IDs de tags. | |
| order | No | Ordre de tri (asc/desc) | |
| tools | No | IDs d'outils/technos (dictionnaire setting.tool). Logique OU par défaut. Pour ET, ajouter '#AND#' en 1er élément: tools=['#AND#','12','34']. | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| period | No | Filtre temporel : 'created', 'updated', 'available', 'noAction'/'withActions'/'withoutActions'. À combiner avec `startDate` + `endDate`. | |
| endDate | No | Date de fin (YYYY-MM-DD), à utiliser avec `period`. | |
| shields | No | Niveau de complétude. | |
| sources | No | IDs de sources de recrutement (dictionnaire setting.source). | |
| keywords | No | Mots-clés (par défaut, recherche dans CV + dossier technique). Combinable avec `keywordsType`. | |
| location | No | Adresse texte. Requiert `geoDistance`. | |
| pageSize | No | Nombre de résultats par page (max: 500, défaut: 30) | |
| languages | No | Langues au format `langueId|niveauId` (ex: ['anglais|courant']). | |
| startDate | No | Date de début (YYYY-MM-DD), à utiliser avec `period`. | |
| trainings | No | IDs de formations. | |
| coordinates | No | Coordonnées GPS 'lat,lon'. Requiert `geoDistance`. | |
| evaluations | No | IDs d'évaluations. | |
| experiences | No | IDs de niveaux d'expérience. | |
| geoDistance | No | Rayon km (5-200). | |
| keywordsType | No | Champ ciblé par `keywords` (défaut: 'resumeTd'). | |
| activityAreas | No | IDs de secteurs d'activité (dictionnaire setting.activityArea). | |
| contractTypes | No | IDs de types de contrat recherchés (dictionnaire setting.typeOf.contract). | |
| mobilityAreas | No | IDs de zones de mobilité. | |
| candidateTypes | No | IDs de types de candidat (dictionnaire setting.typeOf.resource). | |
| expertiseAreas | No | IDs de domaines d'expertise. | |
| perimeterPoles | No | IDs de pôles. Conserve les entités dont le responsable appartient à ces pôles. | |
| candidateStates | No | IDs d'états de candidat (dictionnaire setting.state.candidate via boond_application_dictionary). | |
| narrowPerimeter | No | Si true, jointure ET entre les filtres `perimeter*` (au lieu de OU par défaut). | |
| perimeterDynamic | No | Périmètre dynamique relatif à l'utilisateur courant (raccourci sans avoir à connaître son propre ID). Valeurs : 'data' (mes propres données), 'managers' (mon équipe / mes N-1), 'agencies' (mes agences), 'poles' (mes pôles), 'businessUnits' (mes BU). Combinable. | |
| availabilityTypes | No | IDs de types de disponibilité (dictionnaire setting.availability). | |
| perimeterAgencies | No | IDs d'agences. Conserve les entités dont le responsable appartient à ces agences. | |
| perimeterManagers | No | IDs des managers (ressources). Conserve les entités dont le responsable est l'un de ces managers. Pour 'mon équipe / N-1 d'une personne X', passer [X_id]. Obtenir son propre ID via boond_application_current_user. | |
| providerCompanies | No | IDs de sociétés sous-traitantes. | |
| perimeterManagersType | No | Type de responsable visé par `perimeterManagers`: 'main' (Main Manager) ou 'hr' (HR Manager). | |
| perimeterBusinessUnits | No | IDs de business units. Conserve les entités dont le responsable appartient à ces BU. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Nombre d'éléments retournés sur cette page |
| items | Yes | |
| total | No | Nombre total de résultats côté BoondManager |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Les annotations portent déjà `readOnlyHint=true`, `idempotentHint=true` et `destructiveHint=false`, et la description ajoute sans contradiction des comportements supplémentaires : la perte d'accès aux personnes recrutées, les limites de pagination avec refus au‑delà de page 100, la projection `fields` côté MCP jamais transmise à l'API, et la sémantique par défaut de `keywords`. C'est une valeur nette au‑delà des annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
La structure est exemplaire : phrase d'ouverture, distinction avec l'outil frère, puis catégories filtrées en puces. Le texte est dense mais chaque section sert un besoin réel d'utilisation ; seuls quelques énumérations du schema sont presque redondantes. La longueur est justifiée par les 36 paramètres, mais un léger élagage serait possible, d'où 4.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Pour un outil de recherche complet avec 36 paramètres optionnels et un schema de sortie existant, la description couvre les groupes de filtres à plus haute valeur (périmètre, états, profil technique, sourcing, période, géolocalisation), les contraintes de pagination et le comportement de `sort`/`order`. Le format retournment n'est pas décrit, mais le schema de sortie en assume la charge. Rien d'essentiel ne manque.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Bien que la couverture du schéma soit à 100 % (baseline 3), la description ajoute énormément de sens opérationnel : syntaxe `#AND#` pour `tools`, format `langueId|niveauId` pour `languages`, combinaison obligatoire `coordinates`/`location` avec `geoDistance`, raccourcis `perimeterDynamic`, dictionnaires source pour les IDs, et exemples concrets pour `keywords`/`keywordsType`. Elle compense largement le reste.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
La description énonce clairement le verbe et la ressource : « Recherche des candidats dans BoondManager avec filtres serveur ». Elle se distingue explicitement de `boond_resources_search` en expliquant que candidats et ressources sont deux référentiels distincts, ce qui lève toute ambiguïté face aux nombreux outils frères.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Le texte nomme l'alternative directe (`boond_resources_search`) et donne la règle de choix : collaborateurs internes vs candidats. Il renvoie aussi vers `boond_candidates_get` ou les outils d'onglets pour le détail, et fournit des cas d'usage concrets pour chaque combinaison de filtres. C'est un guidage explicite et actionnable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_candidates_technical_dataCompétences techniques d'un candidatARead-onlyIdempotent
Récupère le profil technique (compétences, expériences, formations, certifications, langues, CV) d'un(e) candidat, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_candidates_get pour la fiche de base, ou boond_candidates_search si l'ID est inconnu.
Returns : Profil technique du candidat. Les ID de documents (CV) qui s'y trouvent alimentent boond_documents_get. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description reinforces this with 'Lecture seule' and adds context about the return content (technical profile, CV document IDs) and how those IDs are used. It does not contradict annotations and adds useful behavioral context beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (main purpose, when to use, alternatives, returns). It is concise, front-loaded with the main action, and every sentence adds value, such as the relationship to boond_documents_get. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only retrieval with no output schema, the description is complete. It states what is returned, when to use it, and how to chain with other tools. The agent has all necessary information to call it correctly without needing additional details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'id' parameter, which already has a clear description. The tool description does not add any additional parameter-specific meaning beyond what the schema provides, so the baseline of 3 applies. It only restates 'par son ID' without new details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Récupère') and the specific resource ('profil technique' of a candidate) and explicitly distinguishes from siblings by naming boond_candidates_get for the base profile and boond_candidates_search when the ID is unknown. This leaves no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a 'Quand' section explaining when to use it (to load only this section) and a 'Plutôt que' section giving explicit alternatives and conditions (boond_candidates_get for the base, boond_candidates_search if ID unknown). It also mentions that returned document IDs feed boond_documents_get, providing downstream usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_candidates_updateModifier un(e) candidatAIdempotent
Met à jour un(e) candidat existant(e), identifié(e) par son ID.
Quand : pour modifier quelques champs d'un enregistrement déjà en base.
Plutôt que : boond_candidates_create si l'enregistrement n'existe pas encore.
Mise à jour partielle : seuls les champs fournis sont écrits, les autres sont laissés en place.
Attention aux champs de type tableau, qui sont remplacés et non fusionnés.
Returns : confirmation et fiche mise à jour.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID du candidat à modifier | |
| city | No | Ville | |
| note | No | Notes | |
| state | No | État du candidat | |
| title | No | Titre / fonction | |
| email1 | No | Email principal | |
| phone1 | No | Téléphone | |
| country | No | Pays | |
| lastName | No | Nom | |
| firstName | No | Prénom | |
| mainSkills | No | Compétences principales |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Identifiant de l'entité créée/modifiée |
| type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses important behavioral details: the update is partial, only provided fields are written, and absent fields are left untouched. It also warns that array fields are replaced rather than merged, and states the return payload: confirmation and the updated candidate record. These details are not contained in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well structured: core behavior first, then a clear 'Quand' section, an alternative-tool note, and a short bullet list. Every line provides actionable information, and the return value is included without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high schema coverage, the presence of an output schema, and the annotations, this description is complete enough for correct invocation. It covers the update scenario, partial-update behavior, the create alternative, and the response, so an agent can decide when to call it and how to interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is already documented in the schema. The description adds valuable cross-parameter semantics by clarifying that omitted optional fields are not cleared, and that provided fields are written as part of the partial update. This goes slightly beyond the baseline but does not deeply explain individual parameter formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the exact operation: update an existing candidate identified by its ID. It explicitly distinguishes the tool from the sibling creation tool by saying 'Plutôt que : boond_candidates_create si l'enregistrement n'existe pas encore.' This removes ambiguity about whether to use update or create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' clause clearly indicates this is for modifying specific fields of an existing record. The 'Plutôt que' clause names the alternative tool and its condition of use: if the record does not exist yet, use boond_candidates_create. This gives the agent a clear decision rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_companies_actionsActions liées à une sociétéARead-onlyIdempotent
Récupère les actions (appels, emails, RDV, notes) d'un(e) société, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_companies_get pour la fiche de base, ou boond_companies_search si l'ID est inconnu.
Returns : Liste des actions rattachées à la société. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context by stating the return is a list of actions attached to the company and explicitly notes 'Lecture seule', reinforcing the read-only nature. It doesn't describe pagination or ordering, but for a simple read tool with strong annotations, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a one-line summary, a 'Quand' usage condition, a 'Plutôt que' alternative routing, and a 'Returns' note. Every sentence earns its place and the most important scoping information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only tool with full schema coverage and strong annotations, the description covers the essential context: what it returns, when to use it, and how it differs from siblings. It doesn't mention pagination or response format, but with no output schema and a simple list return, this is a minor gap rather than a critical omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single 'id' parameter is already fully documented in the schema. The description adds that the ID is the company's ID and that it retrieves actions for that company, which is consistent with the schema but doesn't add new format or constraint details beyond it. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Récupère') and resource ('les actions ... d'un(e) société, par son ID'), and enumerates the action types (appels, emails, RDV, notes). It clearly distinguishes this from sibling tools like boond_companies_get and boond_companies_search by naming them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool ('Quand : pour ne charger que cette section, sans le reste de la fiche') and names the alternatives to use instead ('Plutôt que : boond_companies_get ... boond_companies_search si l'ID est inconnu'). This gives an agent clear routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_companies_contactsContacts d'une sociétéARead-onlyIdempotent
Récupère les contacts (interlocuteurs rattachés à la société) d'un(e) société, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_companies_get pour la fiche de base, ou boond_companies_search si l'ID est inconnu.
Returns : Liste des contacts de la société. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds that it returns a list of contacts and is read-only, which reinforces but adds little beyond annotations. It doesn't detail response structure or potential errors, but annotations cover the main safety profile, so 4 is fitting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the main purpose, and includes a compact 'Quand' and 'Plutôt que' section. Every sentence serves a purpose with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read-only tool with annotations covering safety, the description adequately covers when to use and alternatives. It doesn't describe the response format, but since there is no output schema and the tool is simple, it's largely sufficient. Minor gap: no mention of pagination or error handling, but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the only parameter 'id' is well-documented in schema. The description clarifies it's the company's ID and is used to retrieve contacts, but adds no new syntax or format details. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves contacts for a specific company by its ID, using specific verb and resource. It distinguishes itself from siblings like boond_companies_get and boond_companies_search, making it easy to identify.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use: to load only the contacts section, and when not to: use boond_companies_get for the base record or boond_companies_search if ID is unknown. Provides clear alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_companies_createCréer un(e) sociétéA
Crée un(e) société dans BoondManager.
Quand : pour ajouter un(e) société inexistant(e).
Plutôt que : boond_companies_update pour modifier un enregistrement existant, et boond_companies_search d'abord pour vérifier qu'il n'existe pas déjà.
Écriture réelle et non idempotente : deux appels identiques créent deux enregistrements (l'API ne déduplique pas).
Les ID de relations et les états/types sont des ID numériques BoondManager, à résoudre au préalable (recherches d'entités,
boond://dictionary/*).
Returns : confirmation, ID créé, et la fiche complète. structuredContent.id est réutilisable directement pour chaîner un appel.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Ville | |
| name | Yes | Nom de la société | |
| note | No | Notes | |
| siret | No | Numéro SIRET | |
| state | No | État de la société | |
| email1 | No | Email de la société | |
| phone1 | No | Téléphone | |
| country | No | Pays | |
| website | No | Site web |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Identifiant de l'entité créée/modifiée |
| type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states that the operation is a real write and non-idempotent, meaning two identical calls create two records, and the API does not deduplicate. It also notes that relation IDs and state/type IDs are BoondManager numeric IDs that need to be resolved beforehand, which is crucial for correct invocation. While annotations do not include a readOnlyHint (it is false), the description adds value beyond the annotations by detailing the non-idempotent behavior and the need for pre-resolving IDs, which is important for the agent to understand the side effects and prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. It starts with a clear one-line purpose, then groups related information: when to use, alternatives, behavioral warnings, and return value. Every sentence earns its place, and the use of bullet points for behavioral notes improves readability. It is front-loaded with the core purpose and usage, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is an output schema and 9 parameters (1 required), the description provides essential context: the non-idempotent behavior, the need to resolve IDs beforehand, and the return value structure (confirmation, created ID, complete record, and that structuredContent.id is reusable for chaining). This covers the risk of duplicate creation and the dependency on external lookups, which are not evident from the schema alone. The description is complete for an agent to correctly invoke the tool without missing critical steps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning every parameter has a description in the schema. The tool description does not enumerate the parameters but mentions that relation IDs and state/type IDs need to be resolved beforehand, which adds context beyond the raw schema names (e.g., 'state' as an integer ID). However, most parameter descriptions in the schema are minimal (e.g., 'Ville', 'Email de la société'), and the description does not provide additional details like required format or examples. Since the schema already covers each parameter, the baseline is 3, and the description adds marginal value by highlighting the ID resolution requirement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb (Crée) and resource (société dans BoondManager), and clearly states the purpose: adding a company that does not yet exist. It distinguishes itself from sibling tools by explicitly naming `boond_companies_update` for modification and `boond_companies_search` for pre-checking existence, making it clear what this tool does and does not do.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('pour ajouter un(e) société inexistant(e)') and provides alternatives: it directs to use `boond_companies_update` for existing records and `boond_companies_search` first to verify non-existence. This is clear usage guidance with specific conditions and alternative tools, which is exactly what is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_companies_deleteSupprimer un(e) sociétéADestructive
Supprime définitivement un(e) société de BoondManager.
Quand : uniquement sur demande explicite de l'utilisateur, et après avoir vérifié l'ID avec boond_companies_get.
Plutôt que : boond_companies_update pour désactiver ou changer l'état d'un enregistrement sans le détruire — c'est presque toujours l'intention réelle.
⚠️ Irréversible, sans corbeille côté API.
Si le client MCP annonce la capacité
elicitation, une confirmation est demandée à l'utilisateur final et un refus annule l'appel (structuredContent.deleted: false+reason) ; sinon la suppression part directement.
Returns : { id, deleted, reason? } — vérifier deleted, qui vaut false en cas de refus utilisateur.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| reason | No | Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur) |
| deleted | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Les annotations déclarent déjà destructiveHint=true, mais la description ajoute des précisions essentielles : irréversibilité sans corbeille côté API, comportement conditionnel selon la capacité elicitation du client MCP, et structure de retour avec deleted=false et reason en cas de refus utilisateur. Aucune contradiction avec les annotations n'est présente.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Le texte est structuré en sections courtes et front-loaded : action, conditions d'usage, alternative, avertissement, comportement de confirmation, retour. Chaque phrase apporte une information nécessaire pour un outil destructif, sans répétition inutile.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
La description couvre tous les aspects critiques pour un outil de suppression : déclenchement légitime, vérification préalable, alternative non destructive, irréversibilité, gestion de la confirmation utilisateur et format de retour. Rien d'essentiel ne manque.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Le schéma couvre 100% de l'unique paramètre id avec type, pattern et description en français. La description n'ajoute pas de sémantique supplémentaire sur le paramètre lui-même ; la recommandation de vérifier l'ID relève de l'usage, pas de la définition du paramètre.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
La description commence par 'Supprime définitivement un(e) société de BoondManager', un verbe d'action précis avec une ressource claire. Le suffixe _delete et le titre 'Supprimer un(e) société' distinguent l'outil des autres opérations sur les sociétés.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
La section 'Quand' précise que la suppression ne doit avoir lieu que sur demande explicite de l'utilisateur et après vérification de l'ID avec boond_companies_get. La section 'Plutôt que' nomme explicitement boond_companies_update comme alternative pour une désactivation, ce qui guide le choix de l'agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_companies_getDétails d'un(e) sociétéARead-onlyIdempotent
Récupère la fiche complète d'un(e) société par son ID numérique.
Quand : après un boond_companies_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_companies_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
tabcible un onglet précis (information,technical-data,administrative,actions…) ; sanstab, seule la fiche de base est renvoyée, pas la réunion des onglets.Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_companies_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité (numérique) | |
| tab | No | Onglet spécifique à récupérer (information, technical, financial, actions, contracts, documents) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that without a `tab`, only the base record is returned, not a merge of all tabs, and that an unknown ID yields a raw BoondManager error. It also states it is read-onlyais, which is already in annotations. It adds some value beyond annotations, though it doesn't cover authentication or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, well-organized with bullet points for when/where to use and return behavior. Every sentence adds value; no fluff. Ideal length and structure for an agent-facing description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the read-only nature, the tool is fully described: when to use, when not to, tab behavior, error on unknown ID, and response format (JSON). The annotation already covers read-only. There is no missing critical information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds context for the `tab` parameter (specific tabs like information, technical-data) and notes that without it you get the base record. However, the input schema already describes parameters well, so the description only slightly enhances. The unknown-ID error is about parameter id, which is useful but not deeply detailed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a crisp statement of purpose: 'Récupère la fiche complète d'une société par son ID.' It is obvious what the tool does and how it differs from the list-level search tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly positions the tool as a follow-up to `boond_companies_search`, tells the agent when NOT to use it (unknown ID, use search instead), and even warns that the ID must be a real one, never guessed. This is ideal routing information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_companies_informationInformations générales d'une sociétéARead-onlyIdempotent
Récupère les informations générales (coordonnées, SIRET, site web, secteur, taille, tags) d'un(e) société, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_companies_get pour la fiche de base, ou boond_companies_search si l'ID est inconnu.
Returns : Fiche signalétique de la société. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that this returns a company summary sheet and is read-only, but these mostly mirror the annotations; richer behavioral detail such as error cases or response structure is not provided. There is no contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, structured into short labeled sections, and every section adds useful context: what is fetched, when to use it, which alternatives exist, and what is returned. It includes some redundancy with annotations ('Lecture seule') but remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only getter with one parameter and no output schema, the description provides enough context: the resource, the lookup key, the returned summary, and the distinction from sibling tools. A fuller output schema or error semantics would be nice but is not essential given the low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter, and the input schema already describes it as a required numeric-string unique entity ID. The description merely says 'par son ID' and adds no format, example, or edge-case guidance beyond what the schema provides. Baseline 3 is appropriate because schema coverage is 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Récupère') and names the exact resource and scope: general company information such as coordinates, SIRET, website, sector, size, and tags, retrieved by ID. It also explicitly contrasts with boond_companies_get and boond_companies_search, making the tool's role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' and 'Plutôt que' sections give explicit usage conditions: use this tool to load only this section without the rest of the record, and prefer boond_companies_get for the full record or boond_companies_search when the ID is unknown. This directly routes an agent to the correct alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_companies_invoicesFactures d'une sociétéARead-onlyIdempotent
Récupère les factures client d'un(e) société, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_companies_get pour la fiche de base, ou boond_companies_search si l'ID est inconnu.
Returns : Liste des factures de vente adressées à la société. Ne pas confondre avec boond_companies_provider_invoices (achat). Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so 'Lecture seule' is redundant. The description does add the return type (list of sales invoices) but doesn't add non-annotated behavioral details like pagination, errors, or permissions. Since the annotations already carry the safety profile, a score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and organized with 'Quand', 'Plutôt que', and 'Returns'. Every sentence adds useful information; there is no filler, and the format is easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only tool, the description covers the purpose, usage alternatives, and return type. It does not mention potential pagination or output details, which are minor for a simple fetch operation. Overall, it is as complete as needed for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with the id parameter fully described. The description only mentions 'par son ID' without adding any constraints or semantics beyond the schema. Per the guideline, the placeholder baseline of 3 applies because the schema carries the parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States clearly 'Récupère les factures client d'un(e) société, par son ID' – a specific verb, resource, and action. It also distinguishes itself from boond_companies_get and boond_companies_provider_invoices, so it is unambiguous among its siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'Quand' (when to use) to load only this section, and 'Plutôt que' to avoid boond_companies_get or search when the ID is known. It also warns not to confuse with boond_companies_provider_invoices (purchase invoices), giving clear selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_companies_opportunitiesOpportunités d'une sociétéARead-onlyIdempotent
Récupère les opportunités commerciales d'un(e) société, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_companies_get pour la fiche de base, ou boond_companies_search si l'ID est inconnu.
Returns : Liste des opportunités de la société. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful context beyond annotations: it returns a list, targets only the opportunities section, and explicitly notes 'Lecture seule'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well structured with labeled sections. The core action and purpose are front-loaded, and each sentence contributes a distinct piece of information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read-only list operation, the description covers what the tool does, when to use it, which alternatives to prefer, and what it returns. The annotations handle safety semantics, and no output schema is expected for a straightforward list retrieval.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the only parameter, 'id', is already well documented in the schema. The description simply confirms lookup 'par son ID', adding no significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Récupère') with a clear resource ('les opportunités commerciales d'une société') and the required identifier. It is easily distinguished from sibling tools like boond_companies_get or boond_opportunities_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' section explicitly states the intended use case: loading only this section without the rest of the record. The 'Plutôt que' section names specific alternatives and the condition that selects each one (boond_companies_get for the base record, boond_companies_search when the ID is unknown).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_companies_ordersBons de commande d'une sociétéARead-onlyIdempotent
Récupère les bons de commande d'un(e) société, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_companies_get pour la fiche de base, ou boond_companies_search si l'ID est inconnu.
Returns : Liste des bons de commande de la société. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful scoping context ('ne charger que cette section, sans le reste de la fiche') and confirms 'Lecture seule', but it does not disclose return format, ordering, or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a one-sentence purpose, a 'Quand' usage note, a 'Plutôt que' routing note, and a returns statement. Every section earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read-only retrieval tool, the description is complete: it defines the input (id), the purpose, the lightweight usage context, the alternatives, and the return type. Annotations cover safety, and the sibling list confirms the tool's scoped role.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the id parameter already described as a numeric unique identifier. The description only mentions 'par son ID', which adds no meaning beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Récupère les bons de commande d'un(e) société, par son ID'. It clearly scopes the operation to a company's orders and distinguishes itself from boond_companies_get for the full record and boond_companies_search for unknown IDs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool ('Quand : pour ne charger que cette section') and names alternatives with conditions ('Plutôt que : boond_companies_get pour la fiche de base, ou boond_companies_search si l'ID est inconnu'). This gives an agent actionable routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_companies_projectsProjets d'une sociétéARead-onlyIdempotent
Récupère les projets d'un(e) société, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_companies_get pour la fiche de base, ou boond_companies_search si l'ID est inconnu.
Returns : Liste des projets de la société. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and destructiveHint=false, and the description's 'Lecture seule' repeats that rather than adding new behavioral context. It does add that the return is a list of projects, which is useful given the absent output schema, but there is no deeper behavioral disclosure such as pagination or error cases. With annotations carrying the safety profile, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and each segment earns its place: purpose, when, alternatives, and return type. It is slightly more expanded than the sparsest possible wording, but the segmentation makes it easy to parse. It is appropriately sized for a tool with one parameter and clear routing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only tool with 100% schema coverage and no output schema, the description covers what an agent needs: what is returned, when to use it, and how it relates to alternatives. There is no hidden pagination or complex behavior that would require more explanation here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of the parameter with an 'id' description including pattern and meaning. The description only says 'par son ID', which adds no new meaning beyond the schema. A baseline of 3 is appropriate when the schema already carries the full parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Récupère'), the resource ('les projets'), and the entity type ('d'un(e) société'/'par son ID'). It names the sibling alternatives explicitly, which distinguishes it from boond_companies_get and boond_companies_search. An agent can instantly know what this tool does and how it differs from close siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit 'Quand' guidance (load only the projects section of a company) and explicit 'Plutôt que' routing to boond_companies_get and boond_companies_search. It tells the agent exactly when to use this tool and when to prefer alternatives, leaving no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_companies_provider_invoicesFactures fournisseur d'une sociétéARead-onlyIdempotent
Récupère les factures fournisseur (factures reçues de la société en tant que prestataire) d'un(e) société, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_companies_get pour la fiche de base, ou boond_companies_search si l'ID est inconnu.
Returns : Liste des factures d'achat. Ne pas confondre avec boond_companies_invoices (vente). Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false; the description reinforces this with 'Lecture seule' and adds meaningful context about the returned data ('Liste des factures d'achat') and the scoped nature of the request ('ne charger que cette section'). It lacks details like pagination or output structure, but these are less critical for a simple read-only retrieval.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured, front-loading the main verb and object, then giving focused usage guidance with 'Quand' and 'Plutôt que', and ending with return type and disambiguation. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only tool with no output schema, the description adequately covers the input, return type, when to use it, and which siblings to avoid. It could mention field-level return details or pagination, but nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully documents the `id` parameter with type, pattern, and description, and the description mentions 'par son ID' without adding additional semantic detail. Since schema coverage is 100%, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Récupère les factures fournisseur'), the resource ('d'un(e) société'), and the identifier. It also distinguishes this tool from `boond_companies_invoices` (sale) so an agent cannot mistake purchase invoices for sales invoices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Plutôt que' section explicitly names alternatives: `boond_companies_get` for the base record and `boond_companies_search` when the ID is unknown. The 'Quand' clause also clarifies that it should be used to load only this section without the rest of the company record.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_companies_purchasesAchats d'une sociétéARead-onlyIdempotent
Récupère les achats et la sous-traitance d'un(e) société, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_companies_get pour la fiche de base, ou boond_companies_search si l'ID est inconnu.
Returns : Liste des achats engagés auprès de la société. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description reinforces with 'Lecture seule' and adds the return type (list of purchases), which is useful context. It does not contradict annotations, but it doesn't go much beyond what annotations already cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: purpose, usage guidance, and return type. The information is front-loaded and every sentence earns its place. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with a single parameter, the description covers everything needed: what it does, when to use it, and what it returns. The output type is specified, and no other context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for the id parameter ('Identifiant unique de l'entité BoondManager (numérique)'). The description only says 'par son ID', which adds no new semantic detail beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: retrieving purchases and subcontracting for a company by ID. It explicitly distinguishes itself from siblings by naming boond_companies_get (base file) and boond_companies_search (when ID unknown), so an agent can tell them apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance ('pour ne charger que cette section') and directly names alternatives with conditions ('Plutôt que...'). This tells the agent exactly when to select this tool over its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_companies_searchRechercher des sociétésARead-onlyIdempotent
Recherche des sociétés (clients, prospects, fournisseurs…) dans BoondManager avec filtres serveur.
Plutôt que : boond_contacts_search pour les personnes physiques ; noter aussi que /companies n'expose aucun filtre de type, seulement states.
Cas d'usage courants :
• Mes comptes sans connaître son propre ID : perimeterDynamic: ["data"]. Pour "comptes gérés par X" : perimeterManagers: [<X_id>].
• États : states: [<id>] (dictionnaire setting.state.company). IDs entiers.
• Segmentation métier : expertiseAreas (dictionnaire setting.expertiseArea), origins, influencers.
• Période : period: "created"|"updated"|"withActions"|"withoutActions"|"noAction" + startDate/endDate.
• Recherche : keywords + keywordsType ('default' = nom/ville/pays/expertise/info, ou 'name', 'phones', 'emails', 'socialNetworks'). Pour cibler une société par ID : keywords: "CSOC<id>".
Tri : sort + order.
Note : il n'y a PAS de filtre typeOf pour les sociétés dans l'API search. Le type (client/prospect/fournisseur) doit être inféré via le détail de la société (boond_companies_get).
Returns : liste paginée des sociétés. Utiliser boond_companies_get ou les outils d'onglets pour le détail.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.Pagination :
pageSize1–500 (défaut 30),page1–100 — au-delà : refus, affiner les filtres.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (défaut: 1, max: 100) | |
| sort | No | Champ de tri (ex: lastName, firstName, updateDate) | |
| flags | No | IDs de tags. | |
| order | No | Ordre de tri (asc/desc) | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| period | No | Filtre temporel : 'created', 'updated', 'noAction'/'withActions'/'withoutActions'. À combiner avec `startDate` + `endDate`. | |
| states | No | IDs d'états de société (dictionnaire setting.state.company). | |
| endDate | No | Date de fin (YYYY-MM-DD), à utiliser avec `period`. | |
| origins | No | IDs d'origines (dictionnaire setting.origin). | |
| shields | No | Niveau de complétude. | |
| keywords | No | Mots-clés (défaut: nom + ville + pays + expertise + informations). Combinable avec `keywordsType`. | |
| pageSize | No | Nombre de résultats par page (max: 500, défaut: 30) | |
| startDate | No | Date de début (YYYY-MM-DD), à utiliser avec `period`. | |
| influencers | No | IDs d'influenceurs. | |
| keywordsType | No | Champ ciblé par `keywords`. Défaut: 'default'. | |
| expertiseAreas | No | IDs de domaines d'expertise (dictionnaire setting.expertiseArea). | |
| perimeterPoles | No | IDs de pôles. Conserve les entités dont le responsable appartient à ces pôles. | |
| narrowPerimeter | No | Si true, jointure ET entre les filtres `perimeter*` (au lieu de OU par défaut). | |
| perimeterDynamic | No | Périmètre dynamique relatif à l'utilisateur courant (raccourci sans avoir à connaître son propre ID). Valeurs : 'data' (mes propres données), 'managers' (mon équipe / mes N-1), 'agencies' (mes agences), 'poles' (mes pôles), 'businessUnits' (mes BU). Combinable. | |
| perimeterAgencies | No | IDs d'agences. Conserve les entités dont le responsable appartient à ces agences. | |
| perimeterManagers | No | IDs des managers (ressources). Conserve les entités dont le responsable est l'un de ces managers. Pour 'mon équipe / N-1 d'une personne X', passer [X_id]. Obtenir son propre ID via boond_application_current_user. | |
| perimeterBusinessUnits | No | IDs de business units. Conserve les entités dont le responsable appartient à ces BU. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Nombre d'éléments retournés sur cette page |
| items | Yes | |
| total | No | Nombre total de résultats côté BoondManager |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true and destructiveHint=false. The description adds valuable context beyond these: pagination limits (pageSize 1–500, page 1–100 with refusal beyond), the fields projection that is never sent to the API and replaces the summary, and the dictionary-based filter semantics. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but densely packed with structured sections (alternative, use cases, sorting, note, returns, fields, pagination). Each sentence carries functional value and is front-loaded with purpose. Slightly verbose given the 22-parameter surface, but nothing is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a 22-parameter tool, yet the description covers the core decision (what it searches, when to use it), the critical limitation (no typeOf filter), return type (paginated list) with the correct detail tool reference, pagination boundaries, and the unusual fields-projection behavior. With an output schema present, return value documentation is not needed. No meaningful gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. However, the description adds substantial meaning beyond the schema: the compound usage of period with startDate/endDate, the semantics of perimeterDynamic as a shorthand ('data' = my own data), the special keywords format 'CSOC<id>' for targeting a company by ID, and the fields projection behavior (unknown names ignored). This meaningfully exceeds schema-only documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Recherche des sociétés'), the resource (companies in BoondManager), and the scope (clients, prospects, fournisseurs) with server-side filters. It explicitly distinguishes itself from the sibling boond_contacts_search for individuals, so an agent can differentiate the two without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description names the direct alternative (boond_contacts_search for physical persons) and gives conditional guidance. It enumerates common use cases with concrete parameter recipes (perimeterDynamic for 'mes comptes', states with dictionary setting.state.company, keywordsType variants), covers sorting, and explicitly warns that there is NO typeOf filter — the type must be inferred via boond_companies_get. This is complete routing and usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_companies_updateModifier un(e) sociétéAIdempotent
Met à jour un(e) société existant(e), identifié(e) par son ID.
Quand : pour modifier quelques champs d'un enregistrement déjà en base.
Plutôt que : boond_companies_create si l'enregistrement n'existe pas encore.
Mise à jour partielle : seuls les champs fournis sont écrits, les autres sont laissés en place.
Attention aux champs de type tableau, qui sont remplacés et non fusionnés.
Returns : confirmation et fiche mise à jour.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID de la société à modifier | |
| city | No | Ville | |
| name | No | Nom | |
| note | No | Notes | |
| siret | No | Numéro SIRET | |
| state | No | État | |
| email1 | No | ||
| phone1 | No | Téléphone | |
| country | No | Pays | |
| website | No | Site web |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Identifiant de l'entité créée/modifiée |
| type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses partial update behavior ('seuls les champs fournis sont écrits, les autres sont laissés en place') and warns that array fields are replaced, not merged. This adds meaningful behavioral context beyond the annotations, which only state idempotentHint=true and destructiveHint=false. The description doesn't contradict annotations; it complements them. A small deduction because it doesn't mention permissions or response details, but the core behavioral traits are well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a one-line purpose, a 'Quand' section, a 'Plutôt que' section, and two bullet points for key behaviors. Every sentence earns its place, and the most important routing information is front-loaded. No fluff or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a partial-update tool with 10 parameters, the description covers the essential context: when to use it, what it does, and the critical partial-update and array-replacement behaviors. The output schema exists, so return values don't need explanation. It could mention idempotency or error cases, but the combination of annotations, schema, and description is sufficient for an agent to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 10 parameters. The description adds the key semantic that only provided fields are written (partial update), which is important for parameter usage. However, it doesn't add per-parameter meaning beyond the schema, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates an existing company identified by its ID, with a specific verb ('Met à jour') and resource ('société'). It distinguishes itself from the sibling `boond_companies_create` by explicitly saying to use this when the record already exists, and to use create when it doesn't. This is a clear, specific purpose that an agent can act on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Quand : pour modifier quelques champs d'un enregistrement déjà en base' and 'Plutôt que : boond_companies_create si l'enregistrement n'existe pas encore.' This directly tells the agent when to use this tool versus the create alternative, which is exactly what the dimension asks for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_contacts_actionsActions liées à un contactARead-onlyIdempotent
Récupère les actions (appels, emails, RDV, notes) d'un(e) contact, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_contacts_get pour la fiche de base, ou boond_contacts_search si l'ID est inconnu.
Returns : Liste des actions rattachées au contact. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context by stating 'Lecture seule', the return shape ('Liste des actions'), and the specific action subtypes, though it does not discuss pagination or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well structured, with labeled blocks for purpose, when-to-use, alternatives, and returns. Every sentence earns its place and the core operation is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-required-parameter, read-only list fetch, the description is complete: it identifies the resource and ID requirement, explains when to use it versus siblings, and states the return type as a list of actions. The absence of an output schema is mitigated by the clear 'Liste des actions' statement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents the single 'id' parameter with a numeric pattern and a clear entity-identifier description, giving 100% schema coverage. The description only says 'par son ID' and does not add semantic detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb ('Récupère'), a precise resource (actions of a contact), and enumerates the action types (calls, emails, appointments, notes). It explicitly distinguishes itself from boond_contacts_get and boond_contacts_search in the 'Plutôt que' line.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' clause gives a concrete trigger: load only the actions section rather than the full contact record. The 'Plutôt que' clause names the two relevant alternatives and the condition for choosing each one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_contacts_createCréer un(e) contactA
Crée un(e) contact dans BoondManager.
Quand : pour ajouter un(e) contact inexistant(e).
Plutôt que : boond_contacts_update pour modifier un enregistrement existant, et boond_contacts_search d'abord pour vérifier qu'il n'existe pas déjà.
Écriture réelle et non idempotente : deux appels identiques créent deux enregistrements (l'API ne déduplique pas).
Les ID de relations et les états/types sont des ID numériques BoondManager, à résoudre au préalable (recherches d'entités,
boond://dictionary/*).
Returns : confirmation, ID créé, et la fiche complète. structuredContent.id est réutilisable directement pour chaîner un appel.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Ville | |
| note | No | Notes | |
| title | No | Titre / fonction | |
| email1 | No | Email principal | |
| phone1 | No | Téléphone | |
| country | No | Pays | |
| lastName | Yes | Nom de famille | |
| companyId | No | ID de la société associée | |
| firstName | Yes | Prénom du contact |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Identifiant de l'entité créée/modifiée |
| type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the operation is a real write and non-idempotent, which is crucial despite annotations indicating not read-only and not idempotent. It also warns about non-deduplication and the need to resolve IDs via dictionary lookups, adding significant behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the core purpose, then provides usage context naturally. Each sentence earns its place: the 'Quand' block, the 'Plutôt que' block, and behavioral notes. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers prerequisites (checking existence, resolving IDs), the non-idempotent nature, and explains the return value and how to use 'structuredContent.id' for chaining. Given the output schema exists, the return format is complete. Nothing critical is missing for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters with descriptions in French, so the schema already provides semantic meaning. The description adds context about the 'companyId' and relationship IDs being BoondManager numeric IDs that need prior resolution, but doesn't re-explain individual parameters, which is acceptable given high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Crée un(e) contact dans BoondManager' with a clear verb and resource. It also distinguishes from siblings by explicitly naming 'boond_contacts_update' and 'boond_contacts_search' as alternatives, making its purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit 'Quand' with the condition 'pour ajouter un(e) contact inexistant(e)' and 'Plutôt que' naming alternatives, including a precondition to search first to avoid duplicates. This is a 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.
boond_contacts_deleteSupprimer un(e) contactADestructive
Supprime définitivement un(e) contact de BoondManager.
Quand : uniquement sur demande explicite de l'utilisateur, et après avoir vérifié l'ID avec boond_contacts_get.
Plutôt que : boond_contacts_update pour désactiver ou changer l'état d'un enregistrement sans le détruire — c'est presque toujours l'intention réelle.
⚠️ Irréversible, sans corbeille côté API.
Si le client MCP annonce la capacité
elicitation, une confirmation est demandée à l'utilisateur final et un refus annule l'appel (structuredContent.deleted: false+reason) ; sinon la suppression part directement.
Returns : { id, deleted, reason? } — vérifier deleted, qui vaut false en cas de refus utilisateur.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| reason | No | Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur) |
| deleted | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint=true annotation, the description discloses irreversibility with no API-side trash, the conditional elicitation-required confirmation flow, refusal behavior returning deleted:false with a reason, and instruction to check the returned deleted field. This goes well beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The overview is front-loaded with the purpose, then organized into clear labeled sections and a bulleted warning. Each sentence and section carries necessary information (safety condition, alternative, irreversibility, elicitation flow, return value), with no wordy redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive delete, the description covers the permanent effect, the safety prerequisite, the alternative tool, confirmation/refusal behavior, and the return contract. An agent has all the context needed to invoke it correctly and safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents the single id parameter with type, pattern, and description (100% coverage). The description adds only a workflow warning to verify the ID via boond_contacts_get, which is useful but not genuinely new parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb, resource, and effect: 'Supprime définitivement un(e) contact de BoondManager.' It conveys permanent deletion and is clearly distinguished from sibling alternatives, especially boond_contacts_update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description contains explicit 'Quand' and 'Plutôt que' sections. It instructs the agent to use this tool only on explicit user request and after verifying the ID with boond_contacts_get, and directs non-destructive situations to boond_contacts_update instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_contacts_getDétails d'un(e) contactARead-onlyIdempotent
Récupère la fiche complète d'un(e) contact par son ID numérique.
Quand : après un boond_contacts_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_contacts_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
tabcible un onglet précis (information,technical-data,administrative,actions…) ; sanstab, seule la fiche de base est renvoyée, pas la réunion des onglets.Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_contacts_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité (numérique) | |
| tab | No | Onglet spécifique à récupérer (information, technical, financial, actions, contracts, documents) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Les annotations couvrent déjà readOnlyHint et idempotentHint, mais la description ajoute des comportements utiles : sans `tab`, seule la fiche de base est renvoyée, un ID inconnu remonte l'erreur API telle quelle, et l'ID doit provenir d'une recherche. Cela va au-delà des annotations sans les contredire.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
La description est structurée avec des sections « Quand », « Plutôt que », des puces et une ligne « Returns ». Chaque phrase apporte une information nécessaire, sans redondance ni remplissage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Pour un outil de lecture avec annotations riches et deux paramètres, la description couvre l'usage, le comportement de `tab`, la gestion des erreurs, la provenance de l'ID et le format de retour. Rien d'essentiel ne manque pour que l'agent appelle l'outil correctement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Le schéma documente déjà les deux paramètres, donc le niveau de référence est 3. La description enrichit surtout `tab` en expliquant son effet et le comportement par défaut quand il est absent, ce qui justifie un score supérieur à la baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
La description commence par un verbe précis et la ressource ciblée : « Récupère la fiche complète d'un(e) contact par son ID numérique ». Elle distingue clairement l'outil de boond_contacts_search, ce qui évite toute ambiguïté entre les frères.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
La section « Quand » précise explicitement d'utiliser cet outil après un boond_contacts_search, et la section « Plutôt que » indique de ne pas l'utiliser quand l'ID est inconnu. Le rôle du paramètre `tab` est également expliqué avec des exemples concrets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_contacts_informationInformations générales d'un contactARead-onlyIdempotent
Récupère les informations générales (coordonnées, société de rattachement, fonction, tags) d'un(e) contact, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_contacts_get pour la fiche de base, ou boond_contacts_search si l'ID est inconnu.
Returns : Bloc identité et rattachement du contact. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description only needs to add extra behavioral context. It adds 'Lecture seule' (already covered), and a 'Bloc identité et rattachement' return hint, but does not mention errors, rate limits, or any edge-case behavior. This is acceptable with the strong annotations but not a value-add.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is split into three short, purposeful paragraphs: purpose, when to use, and return summary. It is front-loaded with the main action. It is slightly more verbose than a single-sentence version, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 1-parameter fetch tool with no output schema, the description covers the core needs: what it gets, how to differentiate it from boond_contacts_get and boond_contacts_search, and a high-level return description. It could be more specific about which exact fields are in the returned 'Bloc', but the listed fields in the first sentence mitigate that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, id, is documented at 100% coverage in the input schema with type and pattern. The description adds nothing beyond 'par son ID', so it does not supplement schema semantics. With full schema coverage the baseline 3 is the right score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description plainly states the verb, resource, and data scope: 'Récupère les informations générales (coordonnées, société de rattachement, fonction, tags) d'un(e) contact, par son ID.' It also names the two most relevant sibling tools and explains what each alternative is for, which lets an agent pick this tool over boond_contacts_get and boond_contacts_search without opening their schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit 'Quand' condition ('ne charger que cette section, sans le reste de la fiche') and an explicit 'Plutôt que' rule naming boond_contacts_get for the full card and boond_contacts_search when the ID is unknown. This gives the agent a concrete decision rule for choosing this tool over its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_contacts_invoicesFactures d'un contactARead-onlyIdempotent
Récupère les factures d'un(e) contact, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_contacts_get pour la fiche de base, ou boond_contacts_search si l'ID est inconnu.
Returns : Liste des factures adressées au contact. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds that the tool returns a list of invoices addressed to the contact and loads only that section rather than the full contact record. This is useful behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the core purpose, and uses clear labeled sections: Quand, Plutôt que, and Returns. Every sentence contributes useful information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup with one well-documented parameter, the description covers what the tool returns, when to use it, which alternatives exist, and its read-only nature. No output schema is present, but the return description is sufficient for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for the single id parameter, including format guidance and pattern. The description only repeats 'par son ID' without adding new parameter semantics, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Récupère les factures d'un(e) contact, par son ID'. It also explicitly distinguishes this tool from boond_contacts_get and boond_contacts_search, so an agent can confidently select it among many siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' section explicitly states when to use the tool ('pour ne charger que cette section, sans le reste de la fiche'), and the 'Plutôt que' section names the alternatives with their conditions. This is ideal usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_contacts_opportunitiesOpportunités d'un contactARead-onlyIdempotent
Récupère les opportunités commerciales (affaires portées par ce contact) d'un(e) contact, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_contacts_get pour la fiche de base, ou boond_contacts_search si l'ID est inconnu.
Returns : Liste des opportunités du contact. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds value by explicitly stating 'Lecture seule' (read-only) and specifying the return type: 'Returns : Liste des opportunités du contact' (list of the contact's opportunities). It also clarifies the scoping behavior (only the opportunities section, not the full record). This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured. It front-loads the core purpose in the first sentence, then provides usage guidance, alternatives, and return type in a clear, scannable format. Every sentence earns its place, and there is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with one parameter, the description is nearly complete. It covers the purpose, when to use it, alternatives, and return type. The only minor gap is that it doesn't describe pagination or sorting behavior, but given the tool's simplicity and the annotations covering safety, this is a minor omission rather than a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the single 'id' parameter as the unique numeric identifier of the BoondManager entity. The description adds that the ID is the contact's ID, which is a slight clarification, but it doesn't provide additional format or syntax details beyond the schema. Baseline 3 is appropriate when the schema carries the parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Récupère' (retrieves), the resource 'opportunités commerciales' of a contact, and the required identifier (ID). It also distinguishes itself from sibling tools by explicitly naming boond_contacts_get and boond_contacts_search as alternatives, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Quand : pour ne charger que cette section, sans le reste de la fiche' (when to use: to load only this section without the rest of the record). It also names alternatives and the condition for choosing them: 'Plutôt que : boond_contacts_get pour la fiche de base, ou boond_contacts_search si l'ID est inconnu' (rather than boond_contacts_get for the base record, or boond_contacts_search if the ID is unknown). This is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_contacts_ordersBons de commande d'un contactARead-onlyIdempotent
Récupère les bons de commande d'un(e) contact, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_contacts_get pour la fiche de base, ou boond_contacts_search si l'ID est inconnu.
Returns : Liste des bons de commande du contact. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety and mutation concerns. The description adds a 'Returns' section indicating the result is a list of orders, which is useful since there is no output schema. However, it does not disclose additional behavioral details (e.g., pagination, authorization, rate limits) beyond what annotations provide, so it adds only modest value beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is succinct, front-loaded with the core purpose, and logically organized into 'Quand', 'Plutôt que', and 'Returns' sections. Every sentence serves a distinct purpose—stating the action, when to use it, what to use instead, and the return type—with no redundant or verbose content. It is an exemplar of concise, structured documentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema, read-only annotations), the description covers all essential aspects: the action, the identifier, usage guidance, alternatives, and the return type. It lacks only minor details such as pagination or ordering of results, but these are not critical for a straightforward read operation. The description is adequate for an agent to invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of the parameter documentation, with the id parameter described as 'Identifiant unique de l'entité BoondManager (numérique)' (numerical unique identifier). The description only restates that the tool uses the contact's ID without adding new semantic meaning, such as format constraints or examples. This aligns with the baseline of 3 for high schema coverage where the schema already does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Récupère les bons de commande d'un(e) contact, par son ID' (Retrieves the orders of a contact by its ID). It further differentiates from sibling tools by explicitly naming alternatives (boond_contacts_get, boond_contacts_search) and the conditions under which they should be used instead. This makes the tool's distinct purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Quand : pour ne charger que cette section, sans le reste de la fiche' (When: to load only this section, without the rest of the record). It also names alternative tools and their appropriate contexts, such as using boond_contacts_get for the full record or boond_contacts_search when the ID is unknown. This gives clear when-to-use versus when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_contacts_projectsProjets d'un contactARead-onlyIdempotent
Récupère les projets d'un(e) contact, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_contacts_get pour la fiche de base, ou boond_contacts_search si l'ID est inconnu.
Returns : Liste des projets rattachés au contact. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the annotations by clearly stating the operation loads only the project subsection ('sans le reste de la fiche') and returns a list of linked projects. The read-only trait is already in annotations, but the scoping behavior and the return shape are useful supplementary details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well structured: a purpose sentence, a 'Quand' condition, an explicit 'Plutôt que' routing, and a clear 'Returns' line. Every line serves a distinct role and none repeat schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only endpoint with no output schema, the description provides everything needed to call it correctly: what it does, when to use it, which siblings to prefer, and what it returns. The lack of pagination or error details is acceptable for such a simple, self-contained fetch.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter is already fully described in the input schema (a numeric ID with description and pattern). The tool description only says 'par son ID' without adding new meaning or context about the parameter, so no additional value is provided beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Récupère les projets d'un(e) contact, par son ID'. It clearly distinguishes from siblings by stating this is only the project list, to be used instead of boond_contacts_get (the full record) or boond_contacts_search (when the ID is unknown).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' section explicitly states the intended use case: 'pour ne charger que cette section, sans le reste de la fiche'. The 'Plutôt que' section then names the alternatives and gives the precise condition for choosing each one had two concrete alternatives, making the routing decision obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_contacts_searchRechercher des contactsARead-onlyIdempotent
Recherche des contacts (interlocuteurs clients / prospects) dans BoondManager avec filtres serveur.
Plutôt que : boond_companies_search pour les sociétés elles-mêmes, boond_candidates_search / boond_resources_search pour les profils — un contact est un interlocuteur client, pas un profil.
Cas d'usage courants :
• Mes contacts sans connaître son propre ID : perimeterDynamic: ["data"]. Pour "contacts gérés par X" : perimeterManagers: [<X_id>].
• Contacts d'une société donnée : utiliser keywords: "CSOC<companyId>" (préfixe CSOC + ID). Exemple : keywords: "CSOC6420" pour la société 6420.
• États / types : states: [<id>] (dictionnaire setting.state.contact), typesOf: [<id>] (⚠️ avec un 's' final, dictionnaire setting.typeOf.contact), companyStates (états des sociétés rattachées). IDs entiers.
• Profil métier : activityAreas, expertiseAreas, tools, origins (sources), influencers.
• Période : period: "created"|"updated"|"withActions"|"withoutActions"|"noAction" + startDate/endDate.
• Complétude : completeness: ["email:empty","phone:empty"] (OU par défaut, '#AND#' en 1er pour ET) — utile pour "contacts sans email".
• Recherche par nom : keywords: "Dupont" + keywordsType: "lastName" (ou firstName, fullName "NOM#PRENOM", companyFullName "CSOCid#NOM#PRENOM", emails, phones, socialNetworks).
Tri : sort + order.
Returns : liste paginée des contacts. Utiliser boond_contacts_get ou les outils d'onglets pour le détail.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.Pagination :
pageSize1–500 (défaut 30),page1–100 — au-delà : refus, affiner les filtres.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (défaut: 1, max: 100) | |
| sort | No | Champ de tri (ex: lastName, firstName, updateDate) | |
| flags | No | IDs de tags. | |
| order | No | Ordre de tri (asc/desc) | |
| tools | No | IDs d'outils/technos (dictionnaire setting.tool). Logique OU par défaut. Pour ET, ajouter '#AND#' en 1er élément: tools=['#AND#','12','34']. | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| period | No | Filtre temporel : 'created', 'updated', 'noAction'/'withActions'/'withoutActions'. À combiner avec `startDate` + `endDate`. | |
| states | No | IDs d'états de contact (dictionnaire setting.state.contact). | |
| endDate | No | Date de fin (YYYY-MM-DD), à utiliser avec `period`. | |
| origins | No | IDs d'origines (dictionnaire setting.origin). | |
| shields | No | Niveau de complétude. | |
| typesOf | No | IDs de types de contact (dictionnaire setting.typeOf.contact). ⚠️ Le paramètre s'appelle `typesOf` (avec un 's'), PAS `typeOf`. | |
| keywords | No | Mots-clés (défaut: nom + prénom + société + fonction + périmètre technique). Combinable avec `keywordsType`. | |
| pageSize | No | Nombre de résultats par page (max: 500, défaut: 30) | |
| startDate | No | Date de début (YYYY-MM-DD), à utiliser avec `period`. | |
| influencers | No | IDs de contacts influenceurs. | |
| completeness | No | Filtre par complétude des champs au format `fieldId:mode` (fieldId: email/phone/socialNetworks ; mode: empty/filled). Logique OU par défaut, '#AND#' en 1er pour ET. Ex: ['email:empty','phone:empty']. | |
| keywordsType | No | Champ ciblé. Défaut: 'default'. Pour 'fullName' utiliser `keywords = 'NOM#PRENOM'`. Pour 'companyFullName' utiliser `keywords = 'CSOCid#NOM#PRENOM'`. | |
| activityAreas | No | IDs de secteurs d'activité de la société. | |
| companyStates | No | IDs d'états des sociétés rattachées (dictionnaire setting.state.company). | |
| expertiseAreas | No | IDs de domaines d'expertise de la société. | |
| perimeterPoles | No | IDs de pôles. Conserve les entités dont le responsable appartient à ces pôles. | |
| narrowPerimeter | No | Si true, jointure ET entre les filtres `perimeter*` (au lieu de OU par défaut). | |
| perimeterDynamic | No | Périmètre dynamique relatif à l'utilisateur courant (raccourci sans avoir à connaître son propre ID). Valeurs : 'data' (mes propres données), 'managers' (mon équipe / mes N-1), 'agencies' (mes agences), 'poles' (mes pôles), 'businessUnits' (mes BU). Combinable. | |
| perimeterAgencies | No | IDs d'agences. Conserve les entités dont le responsable appartient à ces agences. | |
| perimeterManagers | No | IDs des managers (ressources). Conserve les entités dont le responsable est l'un de ces managers. Pour 'mon équipe / N-1 d'une personne X', passer [X_id]. Obtenir son propre ID via boond_application_current_user. | |
| perimeterBusinessUnits | No | IDs de business units. Conserve les entités dont le responsable appartient à ces BU. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Nombre d'éléments retournés sur cette page |
| items | Yes | |
| total | No | Nombre total de résultats côté BoondManager |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior; the description adds non-obvious behavior: server-side filters, a paginated result list, pageSize 1–500 / page 1–100 with refusal beyond those limits, and the fact that `fields` is an MCP-side projection never sent to the API. These are valuable operational details not derivable from annotations. There is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is long but earned: it front-loads the purpose and sibling distinction, then uses tight bullet lists for use cases and parameters. Each bullet conveys a concrete, non-redundant fact, such as the CSOC prefix, #AND# semantics, or projection behavior. It remains scannable despite covering 27 parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 27-optional-parameter search tool with an output schema, the description covers all major filter families (perimeter, states, period, completeness, keywords, pagination, projection) and routes follow-up detail to boond_contacts_get or tab tools. It even references boond_application_current_user to obtain a user ID for perimeterManagers. Nothing critical is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds substantial semantics on top: `keywords: 'CSOC<companyId>'` for by-company search, `#AND#` prefix for ET logic, the `typesOf` (with final 's') caveat, and formatting recipes for `fullName` / `companyFullName`. It explains `perimeterDynamic` shortcuts such as `['data']` for 'Mes contacts'. This goes well beyond what the input schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Recherche des contacts (interlocuteurs clients / prospects) dans BoondManager avec filtres serveur.' It explicitly differentiates contacts from companies, candidates, and resources, stating that a contact is a client contact, not a profile. This lets an agent distinguish it from boond_companies_search and boond_candidates_search without opening their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Plutôt que : boond_companies_search... boond_candidates_search / boond_resources_search' and clarifies when each alternative applies. It then enumerates common cases ('Mes contacts', 'Contacts d'une société donnée') with concrete parameter recipes. This gives clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_contacts_updateModifier un(e) contactAIdempotent
Met à jour un(e) contact existant(e), identifié(e) par son ID.
Quand : pour modifier quelques champs d'un enregistrement déjà en base.
Plutôt que : boond_contacts_create si l'enregistrement n'existe pas encore.
Mise à jour partielle : seuls les champs fournis sont écrits, les autres sont laissés en place.
Attention aux champs de type tableau, qui sont remplacés et non fusionnés.
Returns : confirmation et fiche mise à jour.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID du contact à modifier | |
| city | No | Ville | |
| note | No | Notes | |
| title | No | Titre / fonction | |
| email1 | No | ||
| phone1 | No | Téléphone | |
| lastName | No | Nom | |
| firstName | No | Prénom |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Identifiant de l'entité créée/modifiée |
| type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already include idempotentHint=true and destructiveHint=false. The description goes beyond annotations by clarifying partial update behavior (only provided fields are written) and the critical replacement of array fields. No contradiction with hints. Could have mentioned authorization or response format, but what's there is useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with bullet points and front-loaded with the tool's purpose. It is concise but includes necessary warnings. Slight redundancy in restating 'Quand' and 'Plutôt que' but still earns high marks.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a moderate complexity update tool with a required ID and optional field updates, the description reasonably covers key aspects: identification by ID, partial update, array replacement, and indicates a return confirmation. Output schema exists, so no need to detail return values. Could have mentioned validation or field constraints beyond schema, but it is complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema places a 'ID du contact à modifier' description for 'id' and provides French descriptions for all other fields (Ville, Notes, etc.). The description adds no additional semantic beyond the schema—doesn't specify format or relationship between fields (e.g., lastName and firstName). With full schema coverage, a score of 3 is appropriate as the schema already carries the meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates an existing contact identified by ID IA, fixing scope and partial update semantics. It distinguishes from create by referencing the sibling boond_contacts_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (modify fields of existing record) and when not to (use create if record doesn't exist). Names the alternative tool directly. Also warns about table fields being replaced, adding crucial usage nuance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_contracts_createCréer un contratA
Crée un contrat de travail rattaché à une ressource.
Quand : pour enregistrer un nouveau contrat (embauche, avenant, renouvellement).
Plutôt que : boond_contracts_search d'abord, pour vérifier qu'un contrat couvrant la même période n'existe pas déjà.
Écriture non idempotente : deux appels identiques créent deux contrats.
Le type de contrat est un ID entier du dictionnaire (
boond://dictionary/typeOf/contracts), pas un libellé.
Returns : confirmation et fiche du contrat créé, avec son ID dans structuredContent.id.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Notes / commentaires | |
| typeOf | No | Type de contrat (CDI, CDD, freelance...) | |
| endDate | No | Date de fin (YYYY-MM-DD) | |
| startDate | No | Date de début (YYYY-MM-DD) | |
| resourceId | No | ID de la ressource associée |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly discloses non-idempotency ('deux appels identiques créent deux contrats'), which aligns with and adds context beyond the idempotentHint=false annotation. It also adds practical behavioral details about the typeOf dictionary ID requirement and the location of the created contract's ID in structuredContent.id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and economical: a one-line purpose, clear 'when' and 'alternative' sections, two focused bullets, and a returns note. Every sentence adds actionable information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully explains the return value and where to find the new ID. It covers the main usage context, the key non-idempotency warning, and the dictionary type pitfall. A small gap is that required parameters are not explicitly clarified, but the schema lists 0 required and the description otherwise gives sufficient context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds important semantic value by clarifying that typeOf is an integer dictionary ID from boond://dictionary/typeOf/contracts, not a label, which is a key disambiguation beyond the schema's generic description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Crée un contrat de travail rattaché à une ressource.' It clearly identifies the action and its object, and distinguishes itself from the sibling tools boond_contracts_search and boond_contracts_get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' section explicitly states when to use the tool: to register a new contract (embauche, avenant, renouvellement). The 'Plutôt que' section names an exact alternative, boond_contracts_search, and instructs the agent to check for overlapping contracts first, providing clear decision guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_contracts_getDétails d'un contratARead-onlyIdempotent
Récupère la fiche complète d'un(e) contrat par son ID numérique.
Quand : après un boond_contracts_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_contracts_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_contracts_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds concrete behavioral details beyond the readOnlyHint annotation: unknown IDs return BoondManager's raw error, the tool does not accept a name, and the response shape (attributes + relations) is disclosed. The 'lecture seule' statement is consistent with annotations. Loses one point only because the read-only nature is already in the annotations and something like pagination/field-level detail is not covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then structured into clear 'Quand', 'Plutôt que', and 'Returns' segments. Compact, scannable, and every sentence adds information. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool, nothing is missing: what it returns ('JSON de l'entité... attributs + relations'), when to use it, when not to, error behavior for unknown IDs, and read-only status. The description fully covers the agent's decision and invocation needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully describes the `id` parameter (required, numeric pattern) but the description adds meaningful usage semantics: the ID must come from boond_contracts_search, must not be guessed, and the tool rejects names. This goes beyond the schema's type/pattern constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Récupère la fiche complète') and resource ('un contrat'), explicitly distinguishing itself from boond_contracts_search (which is for finding contracts) and clarifying that it fetches the full record. The title and description align and the tool's purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance ('Quand: après un boond_contracts_search'), when-not-to-use guidance ('Plutôt que: boond_contracts_search si l'ID n'est pas connu'), and a hard rule that the ID must come from search, never a guess. This fully equips the agent to choose between the get and search tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_deliveries_createCreer une prestation/livraisonA
Crée une prestation (livraison) rattachée à un projet et à une ressource.
Quand : pour ouvrir la ligne de mission qui rendra la ressource facturable sur ce projet.
Plutôt que : boond_projects_deliveries_groupments pour lister les prestations déjà en place sur le projet.
projectetresourcesont obligatoires et attendent des ID numériques.L'ID de prestation retourné est celui qu'exigent les lignes de note de frais (
boond_expenses_create).Écriture non idempotente.
Returns : confirmation et fiche de la prestation créée.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Notes, mappees vers informationComments | |
| state | No | Etat | |
| title | No | Titre de la prestation/livraison | |
| typeOf | No | Type de prestation | |
| endDate | No | Date de fin (YYYY-MM-DD) | |
| quantity | No | Nombre de jours / quantite | |
| projectId | Yes | ID du projet | |
| startDate | No | Date de debut (YYYY-MM-DD) | |
| unitPrice | No | Prix journalier HT | |
| resourceId | Yes | ID de la ressource portee par la prestation | |
| averageDailyCost | No | Cout journalier moyen | |
| forceAverageDailyPriceExcludingTax | No | Forcer le prix journalier HT |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, idempotentHint=false, destructiveHint=false. The description adds valuable behavioral context: 'Écriture non idempotente' (non-idempotent write), which is important for an agent to know. It also states the returned ID is required by expense lines (boond_expenses_create), providing downstream context. It doesn't contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a one-line definition, a 'Quand' section for usage, a 'Plutôt que' section for alternatives, bullet points for key constraints, and a return note. Every sentence earns its place and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with 12 parameters and no output schema, the description covers the essential context: when to use it, what it returns, non-idempotency, and the downstream consumer of the returned ID. It doesn't explain all 12 parameters, but the schema already covers those. The only minor gap is not describing the full return structure, but the description says it returns confirmation and the created prestation record.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 12 parameters. The description adds that project and resource are mandatory and expect numeric IDs, which is useful but partially redundant with the schema's required list. It doesn't add much beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a prestation (delivery) attached to a project and resource, with a specific purpose: opening the mission line that makes the resource billable on the project. It distinguishes itself from the sibling boond_projects_deliveries_groupments by explicitly saying 'Plutôt que' (rather than) for listing existing prestations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('Quand : pour ouvrir la ligne de mission qui rendra la ressource facturable sur ce projet') and provides an alternative ('Plutôt que : boond_projects_deliveries_groupments pour lister les prestations déjà en place sur le projet'). This is clear usage guidance with an explicit exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_deliveries_getDetails d'une livraison / CRAARead-onlyIdempotent
Récupère la fiche complète d'un(e) livraison (CRA) par son ID numérique.
Quand : après un boond_deliveries_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_deliveries_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_deliveries_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only, idempotent, and non-destructive. The description adds meaningful behavioral context beyond that: unknown IDs raise the raw BoondManager error, the tool does not accept a name, and the response is the full JSON entity with attributes and relations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, well-structured, and front-loaded with the core purpose. The sections 'Quand', 'Plutôt que', and 'Returns' make the guidance scannable, and every sentence carries functional information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple one-parameter getter with no output schema. The description covers what the tool returns, when to use it, how to obtain a valid ID, and what happens on an unknown ID. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by tying the 'id' parameter to the output of boond_deliveries_search and emphasizing that it must be numeric and never guessed, which is useful semantic guidance beyond the schema's parameter description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Récupère la fiche complète d'un(e) livraison (CRA) par son ID numérique.' It clearly distinguishes itself from the search sibling by explicitly framing itself as the post-search detail retrieval tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance ('après un boond_deliveries_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste') and explicit when-not-to-use guidance ('Plutôt que boond_deliveries_search si l'ID n'est pas connu'). It also warns that the ID must come from search, never from guesswork.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_deliveries_searchRechercher des livraisons / CRAARead-onlyIdempotent
Recherche des livraisons (comptes rendus d'activite) dans BoondManager avec filtres par projet, societe et periode.
Quand : pour retrouver des prestations (lignes de mission facturables) sur un périmètre.
Plutôt que : boond_projects_deliveries_groupments quand on part d'un projet connu — plus direct.
Args:
keywords (string, optional): Termes de recherche
projectId, companyId (string, optional): Filtrer par entite liee
startDate, endDate (string, optional): Periode (YYYY-MM-DD)
page, pageSize: Pagination
Returns: Liste des livraisons correspondantes.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (max: 100) | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| endDate | No | Date de fin (YYYY-MM-DD) | |
| keywords | No | Mots-clés de recherche | |
| pageSize | No | Résultats par page | |
| companyId | No | Filtrer par ID société | |
| projectId | No | Filtrer par ID projet | |
| startDate | No | Date de début (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds useful context about the 'fields' parameter being a MCP-side projection never sent to the API and that unknown names are ignored, which clarifies behavior beyond the schema. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: purpose, usage guidance, argument list, return type, and a note about fields. It is front-loaded with the primary purpose and avoids redundancy. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with 8 optional parameters and no output schema, the description covers filters, pagination, the fields projection, and usage guidance. It could mention default ordering or result format, but given the schema and annotations, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds a little extra context (e.g., fields is MCP-side, never transmitted) but mostly restates the schema. It does not significantly deepen parameter understanding beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches deliveries (activity reports) with filters by project, company, and period, and distinguishes itself from the sibling boond_projects_deliveries_groupments by explaining the direct route from a known project. This gives a specific verb, resource, and differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use this tool ('pour retrouver des prestations sur un périmètre') and when not to, naming the alternative boond_projects_deliveries_groupments when starting from a known project. This is clear, actionable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_documents_createTéléverser un documentA
Attache un document à une entité BoondManager à partir d'une URL (l'API BoondManager télécharge elle-même le fichier — aucun fichier local n'est lu).
Quand : pour attacher à une entité un fichier accessible par URL publique. Plutôt que : aucune alternative pour un fichier local : le serveur MCP ne lit jamais le disque, c'est BoondManager qui télécharge l'URL. Il faut donc d'abord héberger le fichier quelque part d'atteignable.
Cas d'usage typiques : attacher un CV à un candidat (parentType=candidateResume, parsing=true pour lancer l'analyse IA Boond), joindre un justificatif à une note de frais (expensesReport), un document à un projet/une société...
Returns: Métadonnées du document créé (ID).
| Name | Required | Description | Default |
|---|---|---|---|
| fileUrl | Yes | URL (https) du fichier à téléverser — BoondManager télécharge le fichier depuis cette URL. | |
| parsing | No | Lancer le parsing IA du CV après upload (uniquement pour parentType=candidateResume). | |
| parentId | Yes | ID de l'entité parente | |
| parentType | Yes | Type d'entité parente. Notables : 'candidateResume' (CV de candidat), 'resourceResume' (CV de ressource), 'candidate'/'resource' (dossier administratif), 'company', 'project', 'invoice'... |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Identifiant de l'entité créée/modifiée |
| type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the raw annotations, the description reveals the central behavioral constraint: BoondManager downloads the URL itself, no local file is ever read, so the file must be hosted at an accessible URL. It also flags the parsing side effect (triggers Boond AI analysis) and the response shape (created document metadata/ID).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is organized with short labeled sections (Quand, Plutôt que, Cas d'usage, Returns) and front-loads the key non-obvious behavior in the first sentence. The only mild repetition around local-file reading reinforces a critical constraint without bloating the text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation tool with an output schema, the description covers what it does, when to use it, what it cannot do (local files), realistic parameter combinations, and what is returned. Sibling get/delete document tools are different enough that no further reference is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all four parameters. The description adds practical cross-parameter meaning by mapping real cases to parentType values (candidateResume with parsing=true, expensesReport, project/company) and by reinforcing that fileUrl must be publicly reachable. This is helpful, though not essential given the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and resource: 'Attache un document à une entité BoondManager à partir d'une URL', and the title confirms 'Téléverser un document'. The unique verb and remote-URL behavior separate it from document get/delete siblings without relying only on the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It has an explicit 'Quand' section defining when to use it (publicly accessible URL), a 'Plutôt que' section excluding local-file uploads and explaining the MCP server never reads the disk, and 'Cas d'usage typiques' with concrete parentType/parsing scenarios. This gives an agent clear selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_documents_deleteSupprimer un documentADestructive
Supprime définitivement un document (CV, justificatif, pièce jointe) de BoondManager.
Quand : pour retirer une pièce jointe erronée, sur demande explicite de l'utilisateur.
Plutôt que : boond_documents_get d'abord, pour confirmer qu'il s'agit du bon fichier — les ID de documents sont suffixés et un ID mal recopié pointe sur autre chose.
⚠️ Irréversible, sans corbeille côté API. Si le client MCP annonce la capacité elicitation, une confirmation est demandée à l'utilisateur final et un refus annule l'appel.
Returns : { id, deleted, reason? } — vérifier deleted, qui vaut false en cas de refus utilisateur.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| reason | No | Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur) |
| deleted | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as destructive, but the description adds critical behavioral context: the deletion is irreversible with no API-side trash, an elicitation-capable client will request user confirmation, and a refusal cancels the call. This goes well beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core action, then sections for when, alternatives, warnings, and return semantics. Every sentence earns its place and the structure makes it easy for an agent to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool, this description covers the use case, the safer alternative, irreversibility, confirmation behavior, and how to interpret the result. Nothing essential is missing for correct tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes the id parameter as a numeric unique identifier, so the baseline is 3. The description adds a useful caveat that document IDs are suffixed and a mistyped ID can point to the wrong file, which aids careful invocation, though it does not precisely explain the ID format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise action: 'Supprime définitivement un document (CV, justificatif, pièce jointe) de BoondManager.' It names the resource and scope, and the permanent-deletion wording clearly separates it from read or update operations. It also implicitly distinguishes itself from sibling document tools like boond_documents_get and boond_documents_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' section specifies exact conditions: removing an erroneous attachment at the user's explicit request. The 'Plutôt que' section explicitly recommends calling boond_documents_get first to verify the correct file, which is strong, actionable alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_documents_getTélécharger un documentARead-onlyIdempotent
Télécharge le contenu d'un document BoondManager (CV de candidat/ressource, justificatif, contrat, facture...) par son ID.
Quand : pour récupérer le contenu d'un CV ou d'un justificatif dont l'ID a été relevé dans un onglet d'entité.
Plutôt que : boond_candidates_information / boond_candidates_administrative (relations resumes / files) pour trouver l'ID : celui-ci exige un ID exact, suffixe compris (123_resume), et un ID tronqué désigne un autre document.
Où trouver les IDs de documents : dans les onglets des entités — ex. boond_candidates_information expose les relations 'resumes' (CV) et 'files' (dossier administratif). ⚠️ Reprendre l'ID tel quel, suffixe compris (ex. '123_resume') : un ID tronqué à sa partie numérique ne désigne aucun document.
Le contenu est retourné en ressource MCP embarquée (base64 pour les binaires type PDF/DOCX, texte brut pour les fichiers texte). Taille max: 5 Mo — à n'utiliser que lorsque le contenu du fichier est réellement nécessaire (un CV en base64 occupe beaucoup de contexte).
Returns : le fichier en ressource MCP embarquée — blob base64 pour un binaire, text pour un mime texte.
Un ID inconnu est rejeté explicitement plutôt que de renvoyer la page d'accueil BoondManager, que l'API sert en HTTP 200 à la place d'un 404.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant du document, tel qu'exposé par les relations d'entités (ex. 123_resume) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds substantial behavioral context beyond that: the return format (embedded MCP resource, base64 blob for binaries, text for text mimes), the 5 Mo size limit, the exact-ID requirement with suffix, and the notable edge case that an unknown ID is explicitly rejected rather than receiving the BoondManager home page served as HTTP 200. This is rich, non-obvious behavior that an agent needs to know.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections ('Quand', 'Plutôt que', 'Où trouver les IDs', 'Returns') and front-loads the core purpose. It is somewhat long, but every sentence earns its place: the ID-suffix warning is repeated deliberately because it is the most common failure mode, and the size/context warning is operationally important. A minor deduction for slight redundancy between the 'Plutôt que' and 'Où trouver les IDs' sections.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the description is complete: it covers what the tool does, when to use it, where to find the ID, the exact ID format, the return format, the size limit, and the error behavior. The annotations cover the safety profile (read-only, idempotent, non-destructive). Nothing an agent needs to call this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the 'id' parameter with a pattern and example. The description adds meaningful value beyond the schema by explaining the critical semantic trap: the ID must be taken exactly as exposed by entity relations, including the suffix (e.g., '123_resume'), and a truncated numeric ID designates a different document. This is exactly the kind of parameter nuance that prevents real invocation errors.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Télécharge le contenu'), a precise resource ('document BoondManager'), and enumerates the document types (CV, justificatif, contrat, facture). It also names the sibling tools it is not (boond_candidates_information / boond_candidates_administrative) and explains the distinction, so an agent can tell it apart from the many sibling tools without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use it ('pour récupérer le contenu d'un CV ou d'un justificatif dont l'ID a été relevé dans un onglet d'entité'), when not to use it (not for finding IDs), and names the alternatives (boond_candidates_information / boond_candidates_administrative) for the ID-finding step. It also warns about the 5 Mo size limit and advises using it only when the file content is truly needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_expenses_createCréer un(e) note de fraisA
Crée une note de frais dans BoondManager. Une note de frais = un mois (term) × une ressource, dont les lignes sont portées par actualExpenses.
Plutôt que : boond_expenses_update pour ajouter des lignes à un mois déjà ouvert — mais actualExpenses y remplace tout le tableau, ce qui efface les lignes existantes si elles ne sont pas renvoyées.
⚠️ Appeler boond_expenses_default d'abord : il fournit agencyId, currencyAgency, exchangeRateAgency, les expenseTypeReference disponibles (définis par agence, absents de boond_application_dictionary) et les couples projectId / deliveryId imputables. Sans ces valeurs l'API répond 422.
Sur une ligne, amountIncludingTax est le montant TTC et tax un taux de TVA en %. Le montant HT et le montant de TVA sont recalculés par BoondManager, ils ne se saisissent pas.
L'état de la note de frais n'est pas pilotable ici : une création part toujours en savedAndNoValidation, le passage en validation relève du workflow BoondManager.
Returns: Données de la note de frais créée avec son ID.
| Name | Required | Description | Default |
|---|---|---|---|
| term | Yes | Mois de la note de frais (YYYY-MM). Une note de frais = un mois × une ressource. | |
| advance | No | Avance à reprendre. | |
| agencyId | No | ID de l'agence — voir `boond_expenses_default`. Déduit de la ressource si omis. | |
| resourceId | Yes | ID de la ressource (le collaborateur qui a engagé les frais). | |
| actualExpenses | No | Lignes de frais réels. Omettre pour créer une note de frais vide. | |
| currencyAgency | No | ID de devise de l'agence (`setting.currency`). | |
| exchangeRateAgency | No | Taux de change agence. Obligatoire côté API. | |
| informationComments | No | Commentaires de la note de frais. | |
| ratePerKilometerTypeReference | No | Code du barème kilométrique (`reference`) — voir `boond_expenses_default`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Identifiant de l'entité créée/modifiée |
| type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With all annotations false, the description carries the full burden of behavioral disclosure. It reveals that creation always results in 'savedAndNoValidation', explains that amountIncludingTax and tax are TTC and rate respectively with net amounts recalculated by the system, and states that the tool does not control workflow state. These are substantial behavioral details beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than the ideal two-sentence example but every sentence carries essential information or a warning. It is well-structured with bolded key terms, a warning emoji, and a logical flow from purpose to alternatives to prerequisites to semantics to state. It is dense but not verbose, earning a near-perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 9 parameters, a nested array, and an output schema, the description covers all critical context: prerequisite calls, tax/amount semantics, state behavior, output format, and differentiation from update. It also complements the schema's explanations without duplicating them. An agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already documented. The description adds significant semantic value: clarifying that term represents a specific month, that amountIncludingTax is TTC and tax is a percentage rate, and that agency-related fields must come from boond_expenses_default. It also explains the replacement pitfall of actualExpenses in the update context. This goes beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear statement of what the tool does: 'Crée une note de frais dans BoondManager' and immediately defines its core scope (one month × one resource). It explicitly contrasts itself with boond_expenses_update, distinguishing the two use cases. This gives an agent unambiguous purpose and differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs the agent when to use this tool over boond_expenses_update, warns about update's replacement behavior, and mandates calling boond_expenses_default first to obtain required values, noting the 422 error if omitted. It also explains that the workflow state is not controllable here, providing clear usage boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_expenses_defaultRéférences de saisie d'une note de fraisARead-onlyIdempotent
Retourne les référentiels nécessaires pour saisir une note de frais pour une ressource et un mois donnés : agence, devise et taux de change agence, types de frais (reference + libellé + taux de TVA), barèmes kilométriques, et couples projet / prestation imputables.
Quand : systématiquement avant boond_expenses_create — c'est la seule source des codes de types de frais et des couples (projet, prestation) imputables.
Plutôt que : rien d'autre : boond_application_dictionary ne publie aucune table de types de frais, et /agencies/{id} ne renvoie qu'un nom. Il n'existe pas de chemin alternatif.
À appeler AVANT boond_expenses_create : les types de frais sont définis par agence et ne figurent pas dans boond_application_dictionary. Les ids projectId et deliveryId sont obligatoires sur chaque ligne et l'API refuse un couple qu'elle ne juge pas imputable sur ce mois.
Args:
resourceId (string): ID de la ressource
term (string): Mois ciblé (YYYY-MM)
agencyId (string, optional): Forcer l'agence
Returns: Les références à recopier dans boond_expenses_create.
| Name | Required | Description | Default |
|---|---|---|---|
| term | Yes | Mois ciblé (YYYY-MM) | |
| agencyId | No | ID de l'agence (optionnel — déduit de la ressource) | |
| resourceId | Yes | ID de la ressource |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and the description adds valuable behavior: expense types are defined per agency, projectId/deliveryId are mandatory on each line, and the API rejects couples not imputable for the selected month. It also clarifies what is returned and that no other tool provides this data, which goes beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the return content, then organized into clearly labeled 'Quand', 'Plutôt que', and 'À appeler AVANT' sections. Every sentence carries distinct information about when, why, and what to use it for, and the Args/Returns sections are compact and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the lack of an output schema, the description lists all returned referential categories and the consuming context (boond_expenses_create), which is enough for tool selection and invocation. It could be more explicit about the exact response structure or error conditions, but it covers the central prerequisites and constraints for correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The Args section in the description essentially mirrors the schema, with only a minor nuance ('Forcer l'agence') that repeats the schema's 'déduit de la ressource'; no additional parameter semantics are added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a specific verb ('Retourne') and a precise resource: the referentials needed to enter an expense report for a given resource and month, enumerating agency, currency, expense types, mileage scales, and imputable project/delivery pairs. It distinguishes itself from sibling tools by naming boond_expenses_create as the consumer and boond_application_dictionary as a non-alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states exactly when to call the tool: systematically before boond_expenses_create, because it is the only source of expense-type codes and imputable project/delivery pairs. It also explicitly rejects alternatives: boond_application_dictionary has no expense-type table and /agencies/{id} returns only a name, concluding 'Il n'existe pas de chemin alternatif.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_expenses_deleteSupprimer une note de fraisADestructive
Supprime définitivement un(e) note de frais de BoondManager.
Quand : uniquement sur demande explicite de l'utilisateur, et après avoir vérifié l'ID avec boond_expenses_get.
Plutôt que : boond_expenses_update pour désactiver ou changer l'état d'un enregistrement sans le détruire — c'est presque toujours l'intention réelle.
⚠️ Irréversible, sans corbeille côté API.
Si le client MCP annonce la capacité
elicitation, une confirmation est demandée à l'utilisateur final et un refus annule l'appel (structuredContent.deleted: false+reason) ; sinon la suppression part directement.
Returns : { id, deleted, reason? } — vérifier deleted, qui vaut false en cas de refus utilisateur.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| reason | No | Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur) |
| deleted | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation destructiveHint=true already signals deletion, and the description builds on it with concrete behaviors: the operation is irreversible with no API-side trash, it may require end-user confirmation when the client supports elicitation, and a refusal returns deleted:false with a reason. It also clarifies that without elicitation the deletion proceeds directly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the destructive purpose, then uses short labeled sections (Quand, Plutôt que, warning, elicitation, Returns). Every sentence carries operational value and no filler is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an irreversible destructive operation, the description covers when to use it, the safer alternative, irreversibility, the confirmation mechanism, and the return contract including deleted:false on refusal. With the output schema also present, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents the single id parameter with type, pattern, and description (100% coverage). The description's pointer to verify the ID with boond_expenses_get adds usage context rather than new parameter semantics, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with a specific verb and resource: 'Supprime définitivement un(e) note de frais de BoondManager.' It explicitly distinguishes the tool from boond_expenses_update, which is for deactivating or changing state, so an agent can tell this is the permanent-deletion operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States exactly when to invoke: only on explicit user request and after verifying the ID with boond_expenses_get. It names the preferred alternative, boond_expenses_update, and explains that non-destructive state changes are almost always the real intent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_expenses_getDétails d'un(e) note de fraisARead-onlyIdempotent
Récupère la fiche complète d'un(e) note de frais par son ID numérique.
Quand : après un boond_expenses_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_expenses_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_expenses_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, non-destructive. The description adds crucial context: it returns the full entity JSON (attributes + relations), that unknown IDs produce the BoondManager error as-is, and that the ID must originate from search. These details go beyond annotations and help the agent avoid mistakes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (Quand, Plutôt que, bullet point, Returns). Front-loaded with the main purpose, no redundant content. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter getter with annotations covering safety, the description explains the return format, error behavior, and usage context. There is no output schema, but the description adequately describes what the agent will receive. Nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (parameter described with pattern). The description reinforces that the ID is numeric and must come from search, adding practical guidance beyond the schema. While the schema already defines the parameter, the description adds usage context that clarifies its source and validity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (récupère), resource (note de frais), and method (par ID numérique). It clearly distinguishes from search by noting it gets the full fiche versus a summary. An agent can immediately understand what this tool does and how it differs from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool (after boond_expenses_search, to get attributes not in the list summary) and when not (use search if ID unknown, since this tool doesn't accept a name). It also warns against guessing IDs. This is exemplary routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_expenses_searchRechercher des notes de fraisARead-onlyIdempotent
Recherche des notes de frais dans BoondManager avec filtres par ressource, projet et période.
Quand : avant toute création : l'API ne déduplique pas, deux notes de frais peuvent coexister sur le même couple (ressource, mois).
Plutôt que : boond_expenses_get pour le détail des lignes d'une note de frais identifiée.
Args:
keywords (string, optional): Termes de recherche
resourceId, projectId (string, optional): Filtrer par entité liée
startDate, endDate (string, optional): Période (YYYY-MM-DD)
page, pageSize: Pagination
Returns: Liste des notes de frais correspondantes.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (max: 100) | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| endDate | No | Date de fin (YYYY-MM-DD) | |
| keywords | No | Mots-clés de recherche | |
| pageSize | No | Résultats par page | |
| projectId | No | Filtrer par ID projet | |
| startDate | No | Date de début (YYYY-MM-DD) | |
| resourceId | No | Filtrer par ID ressource |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Nombre d'éléments retournés sur cette page |
| items | Yes | |
| total | No | Nombre total de résultats côté BoondManager |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true-library. The description adds valuable behavioral detail about the deduplication behavior (or lack thereof), which is a nuanced API trait not inferable from annotations. It also explains the `fields` parameter as a client-side projection with behavior for unknown names, which is beyond schema description. This enriches behavioral understanding significantly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a concise overview, a 'Quand' section, a 'Plutôt que' section, a parameter list, and returns. It front-loads the critical warning about deduplication, and every sentence serves a purpose. The `fields` explanation is the only extra detail and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully covers the tool's complexity: 8 parameters, the key behavioral warning about deduplication, and the alternative routing. Since an output schema exists (though not shown in detail), the description doesn't need to enumerate return formats. For a search tool that's essentially a read operation with filters, nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds meaning beyond the schema by grouping parameters (keywords, resourceId/projectId, startDate/endDate) with purpose, and crucially explains the `fields` parameter's client-side behavior and unknown-name handling, which is not in the schema. This elevates it above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Recherche'), a clear resource ('notes de frais'), and the key filters (ressource, projet, période). It clearly distinguishes itself from boond_expenses_get by noting the latter is for line details of an identified expense note. This sufficiently differentiates it from siblings in the same domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'Quand : avant toute création' and warns about the API's lack of deduplication, which is critical context for when to use this tool. It also names the alternative 'boond_expenses_get' and provides the condition for choosing it, giving clear when-to-use vs when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_expenses_updateModifier un(e) note de fraisAIdempotent
Met à jour un(e) note de frais existant(e), identifié(e) par son ID.
Quand : pour modifier quelques champs d'un enregistrement déjà en base.
Plutôt que : boond_expenses_create si l'enregistrement n'existe pas encore.
Mise à jour partielle : seuls les champs fournis sont écrits, les autres sont laissés en place.
Attention aux champs de type tableau, qui sont remplacés et non fusionnés.
Returns : confirmation et fiche mise à jour.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID de la note de frais à modifier | |
| closed | No | Clôturer la note de frais | |
| advance | No | Avance à reprendre | |
| actualExpenses | No | ⚠️ REMPLACE l'intégralité des lignes existantes. Pour ajouter une ligne, relire la note via `boond_expenses_get` et renvoyer l'ensemble des lignes. Omettre pour ne toucher qu'aux autres champs. | |
| currencyAgency | No | ID de devise de l'agence | |
| exchangeRateAgency | No | Taux de change agence | |
| informationComments | No | Commentaires | |
| ratePerKilometerTypeReference | No | Code du barème kilométrique |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Identifiant de l'entité créée/modifiée |
| type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=false, destructiveHint=false, and idempotentHint=true. The description adds crucial behavioral context: partial update (only provided fields are written), array fields are replaced not merged, and the return includes confirmation and the updated record. This goes beyond annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. It front-loads the purpose, then provides usage guidance, then key behavioral notes. Each sentence earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for an update tool: it explains partial update semantics, warns about array replacement, refers to related tools (`boond_expenses_get`, `boond_expenses_default`, `boond_documents_create`) for necessary prerequisites, and mentions the output. Given the output schema is present and the schema documents parameters thoroughly, nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage of parameters with detailed descriptions, so the description itself doesn't add much beyond what the schema already says. The description highlights the array replacement behavior for `actualExpenses`, which is valuable additional semantics not fully captured in the schema. However, most parameter meaning is already in the schema, so the added value is moderate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates an existing expense report identified by its ID, distinguishing it from `boond_expenses_create`. It specifies the resource (note de frais) and the action (met à jour), which is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool (to modify a few fields of an already existing record) and when not to (use `boond_expenses_create` if the record doesn't exist yet). It also clarifies partial update semantics and warns about array replacement, which is essential for correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_flags_getDétails d'un(e) drapeauARead-onlyIdempotent
Récupère la fiche complète d'un(e) drapeau par son ID numérique.
Quand : après un boond_flags_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_flags_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_flags_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the annotations: it states the tool is read-only ('Lecture seule'), which aligns with readOnlyHint=true, and it discloses error behavior for unknown IDs ('remonte l'erreur BoondManager telle quelle'). It also mentions the return format (JSON of the entity with attributes and relations). No contradictions with annotations; the description enriches the safety profile with error handling and provenance expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is succinct and well-structured: it opens with the core function, then explains when to use it, contrasts with the alternative, includes a warning, and ends with the return format. Every sentence earns its place, with no redundancy. The most critical info (what it does) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only get tool with a single parameter and no output schema, the description covers all necessary aspects: purpose, usage context, error behavior, return format, and source of the ID. The annotations already declare safety (idempotent, non-destructive), so the description need not repeat those. Nothing a caller needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides a complete description of the id parameter ('Identifiant unique de l'entité BoondManager (numérique)') with a pattern, so coverage is high. The description adds semantic value by emphasizing that the ID must come from boond_flags_search and never from guessing, clarifying the source and validity of the parameter. This goes slightly beyond the schema's syntax explanation, warranting a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Récupère'), the resource ('fiche complète d'un(e) drapeau'), and the key parameter (ID numérique). It also distinguishes itself from the sibling tool boond_flags_search by specifying it retrieves the full record after a search, where list summaries omit attributes. This provides strong differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool: after a boond_flags_search, to obtain attributes not present in the list summary. It also gives a clear exclusion: use boond_flags_search if the ID is unknown, since this tool only accepts an ID, not a name. Additionally, it warns that the ID must come from search, never from guessing, which is actionable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_flags_searchRechercher des drapeauxARead-onlyIdempotent
Liste et recherche les drapeaux de BoondManager, par mots-clés et pagination.
Quand : pour retrouver l'ID d'un(e) drapeau à partir de son nom, ou pour énumérer les drapeaux existant(e)s.
Plutôt que : boond_flags_get si l'ID est déjà connu — la recherche ne renvoie qu'un résumé d'une ligne par drapeau.
Returns : page de résumés (ID + libellé principal), plus structuredContent.total = nombre total côté BoondManager. Lecture seule.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.Pagination :
pageSize1–500 (défaut 30),page1–100 — au-delà : refus, affiner les filtres.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (défaut: 1, max: 100) | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| keywords | No | Mots-clés de recherche (nom, email, compétences...) | |
| pageSize | No | Nombre de résultats par page (max: 500, défaut: 30) |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Nombre d'éléments retournés sur cette page |
| items | Yes | |
| total | No | Nombre total de résultats côté BoondManager |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by disclosing that the result is a page of summaries (ID + main label), that `total` comes from BoondManager, and that `fields` is a local MCP-side projection never sent to the API. It also documents boundary behavior: pages beyond the limits are refused and filters should be refined. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well structured with labeled sections ('Quand', 'Plutôt que', 'Returns') and short bullet explanations for parameters. Every sentence contributes either usage context, return behavior, or parameter nuance. It is detailed but not bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the annotations, output schema, and full schema coverage, the description covers all necessary aspects: when to use it, when not to, what it returns, how parameters behave, and pagination constraints. An agent has enough information to select and call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema already covers all parameters, the description adds crucial semantics: `fields` is a client-side projection that replaces the summary and ignores unknown names, and pagination limits are tied to a refusal behavior with a suggested mitigation. This is meaningful value beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states a specific action ('Liste et recherche les drapeaux') on a specific resource (BoondManager flags) with distinct mechanisms (keywords and pagination). It also differentiates itself from the sibling `boond_flags_get` by emphasizing that search returns only a one-line summary, making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: 'pour retrouver l'ID d'un(e) drapeau à partir de son nom, ou pour énumérer les drapeaux existant(e)s'. It also states the alternative: use `boond_flags_get` when the ID is already known, giving the agent a clear decision rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_invoices_createCréer un(e) factureA
Crée un(e) facture dans BoondManager.
Quand : pour ajouter un(e) facture inexistant(e).
Plutôt que : boond_invoices_update pour modifier un enregistrement existant, et boond_invoices_search d'abord pour vérifier qu'il n'existe pas déjà.
Écriture réelle et non idempotente : deux appels identiques créent deux enregistrements (l'API ne déduplique pas).
Les ID de relations et les états/types sont des ID numériques BoondManager, à résoudre au préalable (recherches d'entités,
boond://dictionary/*).
Returns : confirmation, ID créé, et la fiche complète. structuredContent.id est réutilisable directement pour chaîner un appel.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Notes / commentaires | |
| state | No | État de la facture | |
| orderId | No | ID du bon de commande associé | |
| taxRate | No | Taux de TVA (%) | |
| reference | No | Référence de la facture | |
| invoiceDate | No | Date de facturation (YYYY-MM-DD) | |
| invoiceRecords | No | Lignes de facture Boond | |
| invoicePayments | No | Paiements client de la facture | |
| amountExcludingTax | No | Montant HT | |
| expectedPaymentDate | No | Date d'échéance/paiement attendu (YYYY-MM-DD) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Identifiant de l'entité créée/modifiée |
| type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-read-only (readOnlyHint: false), non-idempotent (idempotentHint: false). The description adds value by explicitly stating the tool is 'Écriture réelle et non idempotente' with a concrete example of duplicate creation, and explains that relation IDs must be resolved beforehand. It also mentions the return format, providing behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with key information front-loaded: the purpose, usage conditions, and exclusions are in the first few lines. It uses bullet points for behaviors and clear structure, but includes a bit of redundancy (e.g., 'Returns' section) that could be tightened. Overall efficient and well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 10 parameters (all optional), no required fields, and an output schema present, the description covers essential context: when to use, what not to use, non-idempotence, ID resolution necessity, and return value details including the usable structuredContent.id. This is complete for an agent to correctly invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage with descriptions for each parameter, so the baseline is 3. However, the description adds critical guidance about parameters: it notes that relation IDs and state/type fields are numeric BoondManager IDs requiring prior resolution via searches or dictionary endpoints. This is valuable semantics that helps the agent understand how to populate fields like 'invoiceRecords' and 'state'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates an invoice in BoondManager, with a specific verb 'Crée' and a specific resource 'facture'. It distinguishes from update and search tools by naming them, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'Quand' (when to use) for adding a non-existent invoice, and 'Plutôt que' (instead of) pointing to update and search, including instructions to search first to avoid duplicates. This gives clear guidance on when to use vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_invoices_deleteSupprimer une factureADestructive
Supprime définitivement un(e) facture de BoondManager.
Quand : uniquement sur demande explicite de l'utilisateur, et après avoir vérifié l'ID avec boond_invoices_get.
Plutôt que : boond_invoices_update pour désactiver ou changer l'état d'un enregistrement sans le détruire — c'est presque toujours l'intention réelle.
⚠️ Irréversible, sans corbeille côté API.
Si le client MCP annonce la capacité
elicitation, une confirmation est demandée à l'utilisateur final et un refus annule l'appel (structuredContent.deleted: false+reason) ; sinon la suppression part directement.
Returns : { id, deleted, reason? } — vérifier deleted, qui vaut false en cas de refus utilisateur.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| reason | No | Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur) |
| deleted | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true, but the description adds critical context: irreversibility with no trash, and the elicitation capability behavior (confirmation request and refusal handling). It also explains the return structure in case of refusal. This exceeds what annotations provide, earning a top score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (when, rather than, warnings, returns) and uses bullet points for scanning. It is slightly long but every sentence earns its place, covering essential usage and behavior. No fluff, but the multiple sections could be tightened; still very good.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering destructive intent, the description fills all necessary gaps: when to use, what to verify, how to handle refusal, and the return contract. It is complete for a delegation-focused tool with a single parameter, leaving nothing critical unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with the 'id' parameter well-documented as a numeric string. The description doesn't add detail about the parameter beyond the schema, which is fine since the schema is complete. The reference to verifying with boond_invoices_get implies how to obtain the id, slightly adding value, but the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool permanently deletes an invoice from BoondManager, with a specific verb and resource. It distinguishes itself from sibling tools like boond_invoices_update by explicitly saying it is for deletion, not deactivation or state changes. The title and name align, and the description goes beyond the name to specify the irreversible nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance: use only on explicit user request, verify the ID with boond_invoices_get first, and prefer boond_invoices_update for non-destructive changes. This directly addresses when to use this tool and when not to, referencing the alternative sibling, which is exactly what the dimension asks for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_invoices_getDétails d'un(e) factureARead-onlyIdempotent
Récupère la fiche complète d'un(e) facture par son ID numérique.
Quand : après un boond_invoices_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_invoices_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_invoices_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds valuable behavioral context beyond that: unknown IDs produce the raw BoondManager error, and the response is the full entity JSON with attributes and relations. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the action, then gives when-to-use, when-not-to-use, error behavior, and the return format. Each section earns its place; there is no filler, and the structure makes the tool easy to understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only getter with no output schema, the description fully covers what is needed to call it correctly: the ID source, the error behavior, and the return format. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the id parameter, but the description goes further by emphasizing that the ID is numeric and must come from boond_invoices_search, and that this tool does not accept names. These operational constraints add meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence specifies the exact action and resource: 'Récupère la fiche complète d'un facture par son ID numérique.' It explicitly says the tool returns the full record by ID and is differentiates it from the list-returning sibling boond_invoices_search, making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit routing guidance: use it 'après un boond_invoices_search' and prefer boond_invoices_search if the ID is unknown. It also instructs that the ID must come from a search, not a guess, which is a concrete, actionable usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_invoices_searchRechercher des facturesARead-onlyIdempotent
Liste et recherche les factures client, par société, projet, état ou période.
Quand : pour suivre la facturation client (encours, retards, règlements attendus).
Plutôt que : boond_provider_invoices_search pour les factures d'achat — celui-ci ne couvre que le sens vente, et les deux ne partagent pas d'endpoint.
Returns : page de résumés (référence, date, montants HT/TTC, état). Lecture seule.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.Pagination :
pageSize1–500 (défaut 30),page1–100 — au-delà : refus, affiner les filtres.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (max: 100) | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| period | No | Type de période (created, updated, expectedPayment, performedPayment, period) | |
| endDate | No | Date de fin de période (YYYY-MM-DD) | |
| keywords | No | Mots-clés de recherche (référence, société...) | |
| pageSize | No | Résultats par page | |
| companyId | No | Filtrer par ID société | |
| projectId | No | Filtrer par ID projet | |
| startDate | No | Date de début de période (YYYY-MM-DD) |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Nombre d'éléments retournés sur cette page |
| items | Yes | |
| total | No | Nombre total de résultats côté BoondManager |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, already indicating a safe read operation. The description adds value by stating behavior: it returns a page of summaries (reference, date, amounts HT/TTC, status), and it explicitly says the `fields` parameter is a client-side projection never sent to the API, and that unknown field names are ignored. It also notes the `fields` parameter replaces the summary with only listed attributes on large pages. This goes beyond annotations but does not fully describe edge cases like pagination behavior beyond limits, though it does mention limits. Given the annotations' coverage, a 4 is appropriate as it adds meaningful context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: the first sentence states the purpose; the second gives usage context; the third is a short 'Returns' line; then bullets for each parameter-specific note. Every sentence earns its place, no fluff, and the most important information (purpose and differentiation) appears in the first two sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a filter/list tool with an output schema availableable, which already specifies return structure. It covers filters, pagination limits, the `fields` projection behavior, and the differentiation from the sibling. It does not need to detail return values because the output schema existscompile. No missing information that an agent needs to call it correctly is apparent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 9 parameters. The description adds some value: it clarifies the `fields` parameter is a client-side projection but does not add syntax details beyond what schema provides (e.g., allowable values for `period` are not listed in description either). The description does not explain the relationship between parameters (e.g., startDate/endDate are needed with period), but the schema descriptions already cover basic meaning. Since the schema does the heavy lifting and the description adds minimal extra semantics, a baseline of 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Liste et recherche les factures client' (list and search customer invoices), specifying filter dimensions (company, project, status, or period). It distinguishes itself from the sibling tool `boond_provider_invoices_search` for purchase invoices, noting a difference in direction and endpoint. This is more than sufficient for an agent to distinguish it from other search tools in the large sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context: for tracking customer billing (outstanding, overdue, expected payments), and explicitly contrasts with `boond_provider_invoices_search` for purchase invoices, clarifying that the two do not share an endpoint. This direct exclusion and alternative guidance are exactly what an agent needs to choose the correct tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_invoices_updateModifier un(e) factureAIdempotent
Met à jour un(e) facture existant(e), identifié(e) par son ID.
Quand : pour modifier quelques champs d'un enregistrement déjà en base.
Plutôt que : boond_invoices_create si l'enregistrement n'existe pas encore.
Mise à jour partielle : seuls les champs fournis sont écrits, les autres sont laissés en place.
Attention aux champs de type tableau, qui sont remplacés et non fusionnés.
Returns : confirmation et fiche mise à jour.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID de la facture à modifier | |
| note | No | Notes | |
| state | No | État de la facture | |
| taxRate | No | Taux de TVA (%) | |
| reference | No | Référence de la facture | |
| invoiceDate | No | Date de facturation (YYYY-MM-DD) | |
| invoiceRecords | No | Lignes de facture Boond | |
| invoicePayments | No | Paiements client de la facture | |
| amountExcludingTax | No | Montant HT | |
| expectedPaymentDate | No | Date d'échéance/paiement attendu (YYYY-MM-DD) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Identifiant de l'entité créée/modifiée |
| type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, destructive, and idempotent hints. The description adds valuable behavioral context beyond those: partial update semantics, the warning that array fields are replaced rather than merged, and the return payload. This is strong supplementary disclosure for an update operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action, followed by a compact 'Quand / Plutôt que' usage block and two focused bullet points. Every sentence earns its place; there is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description does not need to document return structure in depth. It covers purpose, usage boundaries, partial-update behavior, array-replacement risks, and the return confirmation, making it complete enough for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description goes further by clarifying that only provided fields are written and that array parameters like invoiceRecords and invoicePayments are replaced, not merged. This adds meaningful semantics that the schema alone does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Met à jour un(e) facture existant(e), identifié(e) par son ID.' This clearly distinguishes the tool as an update operation for existing invoices, and the explicit contrast with boond_invoices_create helps an agent identify it among the many CRUD siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states both when to use this tool ('pour modifier quelques champs d'un enregistrement déjà en base') and when not to, explicitly routing the agent to boond_invoices_create if the record does not yet exist. This is direct, unambiguous usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_logs_getDétails d'un(e) logARead-onlyIdempotent
Récupère la fiche complète d'un(e) log par son ID numérique.
Quand : après un boond_logs_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_logs_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_logs_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior. The description adds useful behavioral context beyond that: unknown IDs pass through the raw BoondManager error, the ID must come from boond_logs_search, and the response shape is the entity JSON with attributes and relations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core action, then uses short labeled sections for when to use, what to prefer instead, a warning, and return format. Every sentence adds distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read-only getter, this is complete: purpose, sibling routing, error behavior, ID provenance, and return shape are all covered. The absence of an output schema is mitigated by the explicit return-type statement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully describes the numeric ID parameter, so the baseline is 3. The description adds practical semantic guidance by insisting the ID must originate from boond_logs_search and must not be guessed, which is valuable for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: retrieving the complete record of a log by numeric ID. It also explicitly contrasts itself with boond_logs_search, so an agent can distinguish the get operation from the search sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states exactly when to use the tool ('after a boond_logs_search, to get attributes not in the list summary') and when not to ('if the ID is unknown, use boond_logs_search instead'). This is explicit routing with no inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_logs_searchRechercher des logsARead-onlyIdempotent
Recherche des logs d'audit dans BoondManager (historique des actions utilisateurs).
Quand : pour retracer qui a modifié quoi et quand.
Plutôt que : le _get du domaine concerné (boond_candidates_get, boond_projects_get…) pour l'état actuel d'un enregistrement : celui-ci ne renvoie que l'historique des modifications.
Returns: Liste des logs correspondants.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.Pagination :
pageSize1–500 (défaut 30),page1–100 — au-delà : refus, affiner les filtres.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (défaut: 1, max: 100) | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| keywords | No | Mots-clés de recherche (nom, email, compétences...) | |
| pageSize | No | Nombre de résultats par page (max: 500, défaut: 30) |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Nombre d'éléments retournés sur cette page |
| items | Yes | |
| total | No | Nombre total de résultats côté BoondManager |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only/idempotent annotations, the description discloses meaningful behavior: `fields` is a MCP-side projection never sent to the API, unknown names are ignored, it replaces the summary on large pages, and pagination beyond `pageSize` 500 or `page` 100 is refused. These details help an agent predict and debug behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is compact and well-structured: purpose first, then when/alternative, then bullets for field projection and pagination. It loses one point due to the slightly ambiguous 'celui-ci ne renvoie que l'historique' sentence and the mildly redundant 'Returns: Liste des logs correspondants.' Overall still efficient and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich annotations, a 100%-covered input schema, and the presence of an output schema, the description is complete enough for an agent to invoke the tool correctly. It covers usage context, alternatives, field projection behavior, and pagination limits without needing to explain return structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description adds extra non-obvious meaning for `fields` (MCP-side only, never sent to API, use on big pages) and for pagination (out-of-range requests are refused). It does not add much beyond the schema for `keywords`, but it compensates enough to exceed the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Recherche des logs d'audit dans BoondManager (historique des actions utilisateurs).' It clearly scopes the tool to audit logs and user-action history, and it distinguishes itself from domain `_get` tools like `boond_candidates_get` and `boond_projects_get`, which return current record state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' section explicitly states when to use this tool: 'pour retracer qui a modifié quoi et quand.' The 'Plutôt que' section names the alternatives (`_get` on the domain concerned) and the condition for choosing them instead, which is current record state. This is explicit and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_notifications_getDétails d'une notificationARead-onlyIdempotent
Récupère la fiche complète d'un(e) notification par son ID numérique.
Quand : après un boond_notifications_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_notifications_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_notifications_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds meaningful behavioral context beyond annotations: an unknown ID produces the raw BoondManager error, the ID must come from boond_notifications_search, and the return value is the full entity JSON with attributes and relations. This is valuable operational transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well structured: a one-line purpose, then explicit 'Quand', 'Plutôt que', and error-warning sections, followed by a return format note. Every sentence earns its place and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read tool, the description is complete. It explains when to use it, how it relates to its sibling, what happens on an unknown ID, what the output looks like, and that the operation is read-only. Nothing essential is missing for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single id parameter, so the schema already documents the numeric ID. The description reinforces that the ID must be numeric and must come from boond_notifications_search, but it does not add much beyond what the schema and the usage guidance already imply.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Récupère la fiche complète d'un(e) notification par son ID numérique', which is a specific verb-plus-resource statement. It clearly distinguishes this tool from boond_notifications_search by stating that it fetches the full notification record for a known numeric ID.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use it: after boond_notifications_search, to get attributes not in the list summary. It also names the alternative and the exclusion condition: do not use boond_notifications_search if the ID is unknown because this tool does not accept a name. This is clear routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_notifications_searchRechercher des notificationsARead-onlyIdempotent
Recherche des notifications dans BoondManager.
Plutôt que : boond_validations_search pour ce qui requiert réellement une action de validation — une notification n'est qu'un message.
⚠️ Le paramètre category est REQUIS par l'API (singulier, pas de tableau).
Args:
category (string, requis): 'activity' | 'thread' | 'corporate'
state (string, optional): 'new' | 'read'
parentType (string[], optional): types de modules parents (ex: 'contract', 'global')
Returns: Liste des notifications correspondantes.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.Pagination :
pageSize1–500 (défaut 30),page1–100 — au-delà : refus, affiner les filtres.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (max: 100) | |
| state | No | Filtrer par état de lecture. | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| category | Yes | Catégorie (requis): 'activity' (notifications d'activité), 'thread' (messages), 'corporate' (annonces). | |
| pageSize | No | Nombre de résultats par page (max: 500, défaut: 30) | |
| parentType | No | Types de modules parents (ex: 'contract', 'global', 'project'...). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotent, and destructiveHint false, so the safety profile is covered. The description adds significant behavioral context: the fields parameter is a client-side projection not sent to the API, unknown names are ignored, and pagination limits are specified (pageSize 1-500, page default 30; page 1-100). It also notes that exceeding limits results in refusal, advising refinement of filters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: it opens with the purpose, immediately gives the distinction from boond_validations_search, warns about required category, lists Args concisely, then provides returns and behavioral notes. Every sentence is purposeful, and it is front-loaded with the most critical information. No redundant text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool complexity (6 parameters, one required, no output schema), the description covers all necessary aspects: required category, optional filters, returns, the fields projection, and pagination limits. The annotations handle safety and idempotency, so the description completes the picture for an agent to use the tool correctly without additional lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with each parameter having a description. The description adds value by listing args with enums and examples, clarifying category is required (singular, not array), and explaining the behavior of fields and pagination parameters in detail. This goes beyond the schema's basic descriptions, so it earns a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Recherche des notifications dans BoondManager' which clearly states the tool searches for notifications. It explicitly differentiates from boond_validations_search by stating 'Plutôt que : `boond_validations_search` pour ce qui requiert réellement une action de validation — une notification n'est qu'un message.' This makes the purpose precise and distinguishes it from a closely related sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when not to use this tool (when validation action is needed) and names the alternative boond_validations_search. It also emphasizes that category is required. However, it does not cover all possible alternative tools or broader usage scenarios, but the exclusion is clear and sufficient for the primary decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_opportunities_actionsActions liées à une opportunitéARead-onlyIdempotent
Récupère les actions (appels, emails, RDV, notes) d'un(e) opportunité, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_opportunities_get pour la fiche de base, ou boond_opportunities_search si l'ID est inconnu.
Returns : Liste des actions rattachées à l'opportunité. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered. The description adds useful context about the returned data being a list of opportunity-bound actions, but it does not describe pagination or any other edge behavior, so it stays at the baseline for annotation-supported definitions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the core purpose, and uses compact labeled sections for usage guidance, alternatives, and return value. Each line contributes meaning; the 'Lecture seule' note is redundant with annotations but does not add meaningful bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with rich annotations, the description covers what the tool returns, why to use it, and which siblings to prefer in other situations. No critical information needed to select or invoke the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers the single parameter with a descriptive label and pattern, so schema coverage is 100%. The description clarifies that the ID identifies an opportunity rather than a generic entity, but it adds no additional format or constraint information beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Récupère'), a clear resource ('les actions ... d'une opportunité'), and the lookup key ('par son ID'). It also distinguishes itself from sibling tools by naming boond_opportunities_get and boond_opportunities_search as alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' section explicitly states the intended use case: loading only this section without the rest of the record. The 'Plutôt que' section gives concrete alternative tools and the conditions under which they should be chosen instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_opportunities_createCréer un(e) opportunitéA
Crée un(e) opportunité dans BoondManager.
Quand : pour ajouter un(e) opportunité inexistant(e).
Plutôt que : boond_opportunities_update pour modifier un enregistrement existant, et boond_opportunities_search d'abord pour vérifier qu'il n'existe pas déjà.
Écriture réelle et non idempotente : deux appels identiques créent deux enregistrements (l'API ne déduplique pas).
Les ID de relations et les états/types sont des ID numériques BoondManager, à résoudre au préalable (recherches d'entités,
boond://dictionary/*).
Returns : confirmation, ID créé, et la fiche complète. structuredContent.id est réutilisable directement pour chaîner un appel.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Nom / titre de l'opportunité | |
| note | No | Description de l'opportunité (mappée sur /data/attributes/description) | |
| state | No | État de l'opportunité | |
| poleId | No | ID du pôle (relation pole) | |
| typeOf | No | Type d'opportunité : ID numérique du dictionnaire setting.typeOf.project (ex: 1, 3), via boond_application_dictionary | |
| endDate | No | Date de fin prévue (YYYY-MM-DD) | |
| agencyId | No | ID de l'agence (relation agency) | |
| criteria | No | Critères / compétences recherchées (texte libre). Alimente le matching de boond_workflow_candidats_pour_opportunite. | |
| companyId | No | ID de la société cliente (relation company) | |
| contactId | No | ID du contact associé (relation contact) | |
| startDate | No | Date de début prévue (YYYY-MM-DD ou 'immediate') | |
| hrManagerId | No | ID de la ressource responsable RH (relation hrManager) | |
| expertiseArea | No | Domaine d'expertise : ID du dictionnaire setting.expertiseArea (via boond_application_dictionary) | |
| mainManagerId | No | ID de la ressource responsable principal / commercial (relation mainManager) | |
| turnoverEstimatedExcludingTax | No | Chiffre d'affaires estimé HT (montant) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Identifiant de l'entité créée/modifiée |
| type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations already set idempotentHint=false, the description adds valuable behavioral context by stating it is a real, non-idempotent write and that two identical calls create two records because the API does not deduplicate. It also warns that relation/state/type IDs must be resolved beforehand, which goes beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well structured and front-loaded with the core action, followed by labeled sections for when to use, alternatives, behavioral warnings, and return value. Every sentence earns its place and there is no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create operation with 15 parameters, the description covers when to use it, which sibling tools to prefer instead, non-idempotence implications, ID resolution requirements, and the shape of the response including a directly reusable ID. Combined with the full input schema and output schema, this gives an agent the context needed to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds extra semantic guidance beyond the schema by explaining that relation IDs and state/type values are numeric BoondManager IDs to be resolved in advance via entity searches and boond://dictionary/*, which clarifies a whole class of parameters. It also notes that structuredContent.id can be reused for chaining, adding practical value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb and resource: 'Crée un(e) opportunité dans BoondManager.' It further distinguishes itself from siblings by naming boond_opportunities_update for modifications and boond_opportunities_search for pre-existence checks, so an agent can easily tell when this create tool is the right choice.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit usage guidance is provided: use it to add a non-existent opportunity ('Quand : pour ajouter un(e) opportunité inexistant(e)'), and explicitly route to update for existing records and search first to verify non-existence. This is strong when-to-use vs. alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_opportunities_deleteSupprimer un(e) opportunitéADestructive
Supprime définitivement un(e) opportunité de BoondManager.
Quand : uniquement sur demande explicite de l'utilisateur, et après avoir vérifié l'ID avec boond_opportunities_get.
Plutôt que : boond_opportunities_update pour désactiver ou changer l'état d'un enregistrement sans le détruire — c'est presque toujours l'intention réelle.
⚠️ Irréversible, sans corbeille côté API.
Si le client MCP annonce la capacité
elicitation, une confirmation est demandée à l'utilisateur final et un refus annule l'appel (structuredContent.deleted: false+reason) ; sinon la suppression part directement.
Returns : { id, deleted, reason? } — vérifier deleted, qui vaut false en cas de refus utilisateur.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| reason | No | Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur) |
| deleted | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint:true, but description adds irreversibility ('Irréversible, sans corbeille côté API'), the elicitation confirmation flow (with structuredContent.deleted:false on refusal), and the return value interpretation. These go well beyond annotations and are crucial for an agent to handle the tool safely.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections: 'Quand', 'Plutôt que', bullet points for key warnings, and a 'Returns' section. Front-loaded with the main action and purpose, no wasted sentences. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential behavior for a delete tool: when to use, irreversibility, the elicitation path, and how to interpret the result (deleted:false on refusal). The output schema is also referenced, so the agent knows what to expect. Nothing missing for safe and correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already describes 'id' as the unique numeric identifier. The description adds the instruction to verify the ID with get, which is a usage guideline rather than parameter semantics. With full schema coverage, baseline 3 is appropriate; no extra parameter meaning is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Supprime définitivement') and resource (opportunité de BoondManager). Clearly distinguishes from update by saying 'Plutôt que: boond_opportunities_update' for non-destructive changes. Unambiguous and differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly defines when to use: only on explicit user request, after verifying ID with boond_opportunities_get. Provides a clear alternative (update) and explains the elicitation conditional behavior. No ambiguity left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_opportunities_getDétails d'un(e) opportunitéARead-onlyIdempotent
Récupère la fiche complète d'un(e) opportunité par son ID numérique.
Quand : après un boond_opportunities_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_opportunities_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
tabcible un onglet précis (information,technical-data,administrative,actions…) ; sanstab, seule la fiche de base est renvoyée, pas la réunion des onglets.Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_opportunities_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité (numérique) | |
| tab | No | Onglet spécifique à récupérer (information, technical, financial, actions, contracts, documents) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses meaningful behavior: the tab parameter targets a specific tab, omitting it returns only the base fiche rather than a union of tabs, and an unknown ID propagates the raw BoondManager error. This is exactly the kind of behavioral context annotations do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: purpose first, then when/alternative, then bulleted behavioral caveats, then the return contract. Every sentence adds useful information and there is no filler or repetition of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with no output schema, the description covers the main usage flow, tab behavior, error propagation, and return format. The only gap is that the valid tab values are not fully pinned down and the description's examples diverge slightly from the schema's examples, leaving minor ambiguity for an agent picking a tab value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented. The description adds value by explaining the effect of omitting tab, that tab selects one precise tab, and that id must come from a previous search rather than being guessed. The tab examples are slightly inconsistent with the schema's example values, which keeps this from being a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Récupère la fiche complète d'un(e) opportunité par son ID numérique.' It also distinguishes the tool from boond_opportunities_search by emphasizing lookup by numeric ID rather than by name or search criteria.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use context: after boond_opportunities_search, when the list summary lacks certain attributes. It also names the alternative explicitly: use boond_opportunities_search if the ID is unknown, because this tool does not accept a name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_opportunities_informationInformations générales d'une opportunitéARead-onlyIdempotent
Récupère les informations générales (client, dates, montant, probabilité, état) d'un(e) opportunité, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_opportunities_get pour la fiche de base, ou boond_opportunities_search si l'ID est inconnu.
Returns : Fiche de l'opportunité. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Les annotations (`readOnlyHint`, `idempotentHint`, `destructiveHint=false`) fournissent déjà le profil de sécurité. La description ajoute 'Returns : Fiche de l'opportunité. Lecture seule' mais ne fait que répéter la lecture seule et ne précise pas le contenu exact du retour ni le comportement en cas d'ID inconnu. L'apport au-delà des annotations est minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
La description est organisée en trois courtes sections (objectif, quand/plutôt que, returns) sans aucune répétition ni fioriture. Chaque phrase apporte une information utile et est positionnée en priorité, avec une mise en avant immédiate de l'action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Pour un outil à 1 paramètre, sans schéma de sortie et avec des annotations de sécurité, la description est complète : elle précise quoi, quand, avec quels alternatives, et ce qu'elle retourne. Légère zone grise : la formulation 'Fiche de l'opportunité' peut paraître ambiguë après avoir évoqué une 'section' limitée, mais elle reste suffisante.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Le schéma couvre 100% du paramètre `id` avec description, pattern `^\d+$` et format numérique. La description mentionne 'par son ID', ce qui lie le paramètre au contexte de l'outil, mais n'ajoute pas de sémantique supplémentaire au-delà du schéma, qui est déjà clair.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
La description commence par un verbe précis 'Récupère' et une ressource identifiable 'informations générales d'une opportunité', avec les champs concernés (client, dates, montant, probabilité, état). La distinction avec les outils frères `boond_opportunities_get` et `boond_opportunities_search` est explicitement nommée.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Les sections 'Quand' et 'Plutôt que' donnent explicitement le cas d'usage ('charger que cette section') et les alternatives selon la situation : `_get` pour la fiche de base, `_search` si l'ID est inconnu. L'agent n'a aucune inférence à faire.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_opportunities_positioningsPositionnements sur une opportunitéARead-onlyIdempotent
Récupère les positionnements (candidats et ressources proposés au client) d'un(e) opportunité, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_opportunities_get pour la fiche de base, ou boond_opportunities_search si l'ID est inconnu.
Returns : Liste des positionnements de l'opportunité. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds behavioral context beyond annotations by stating the tool loads only this section without the rest of the record, and it clarifies what positionings are (candidates and resources offered to the client).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and tightly structured: a one-sentence purpose, a 'Quand' section, a 'Plutôt que' section, and a returns note. Everything earns its place; the only minor redundancy is 'Lecture seule', which repeats the annotation, but the overall text is highly economical.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only sub-resource with rich annotations and no output schema, the description is nearly complete: it gives the purpose, usage scenario, alternatives, and a generic return value (list of positionings). A tiny gap is that the return list shape is not described beyond 'list', but the tool's complexity is low enough that this is a minor omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter, and the schema already documents it (at 100% coverage), so the baseline is 3. The description's 'par son ID' restates the schema's purpose without adding formatting, constraints, or usage nuances beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Récupère' (retrieves) with a specific resource: the positionings (candidates and resources proposed to the client) of an opportunity by its ID. It also differentiates itself from the sibling tools boond_opportunities_get (full record) and boond_opportunities_search (ID unknown), so an agent can immediately tell it apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly answers 'Quand' (when) to use this tool: to load only the positionings section rather than the whole record, and 'Plutôt que' (rather than), naming the two alternative tools and the condition that selects each one. This is clear, actionable routing guidance with no inference needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_opportunities_projectsProjets issus d'une opportunitéARead-onlyIdempotent
Récupère les projets (missions nées de cette affaire une fois gagnée) d'un(e) opportunité, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_opportunities_get pour la fiche de base, ou boond_opportunities_search si l'ID est inconnu.
Returns : Liste des projets liés à l'opportunité. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds modest context about returning only the linked-projects section and states 'Lecture seule', but it does not mention pagination, empty results, or the shape of the returned project list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured with clear labels: purpose, 'Quand', 'Plutôt que', and 'Returns'. It front-loads the main action and uses no filler, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only list tool, the description covers purpose, usage context, alternatives, and the general return type. It does not detail the project object fields, but since the endpoint is simple and returns only a list, this is a minor gap rather than a blocking one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter, id, and the schema already covers it fully with a type, pattern, and description ('Identifiant unique de l'entité BoondManager (numérique)'). The description only repeats 'par son ID', adding no new semantic information, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says 'Récupère les projets ... d'un(e) opportunité, par son ID', naming a specific verb, resource, and identifier. It also clarifies that 'projets' means 'missions nées de cette affaire une fois gagnée', distinguishing it from generic project tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when to use this tool ('pour ne charger que cette section, sans le reste de la fiche') and names the alternatives: boond_opportunities_get for the base record and boond_opportunities_search when the ID is unknown. This gives clear routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_opportunities_searchRechercher des opportunitésARead-onlyIdempotent
Recherche des opportunités commerciales dans BoondManager avec filtres serveur.
Plutôt que : boond_projects_search une fois l'affaire gagnée : le projet est la suite de l'opportunité.
Cas d'usage courants :
• Mes opportunités sans connaître son propre ID : perimeterDynamic: ["data"]. Pour "opportunités de X" : perimeterManagers: [<X_id>] (combiner avec perimeterManagersType: "main"|"hr").
• États / types : opportunityStates: [<id>] (dictionnaire setting.state.opportunity), opportunityTypes: [<id>] (setting.typeOf.project). IDs entiers issus du dictionnaire.
• Lié à une société/contact/candidat : utiliser keywords avec préfixes — "CSOC<id>" (société), "CCON<id>" (contact), "CAND<id>" (candidat), "COMP<id>" (ressource), "PROD<id>" (produit), "AO<id>" (opportunité).
• Métier : activityAreas, expertiseAreas, tools, places (zones), durations, origins.
• Positionnements : positioningStates: [<id>] ou ["none"] pour les opportunités sans positionnement.
• Période : period: "created"|"started"|"closingDate"|"updated"|"updatedPositioning"|"withActions"|... + startDate/endDate. Ex: clôtures 2026 → period: "closingDate", startDate: "2026-01-01", endDate: "2026-12-31".
Tri : sort: "creationDate"|"title"|"company.name"|"startDate"|"endDate"|"state"|"closingDate"|"answerDate"|"updateDate"|... + order.
Returns : liste paginée des opportunités. Utiliser boond_opportunities_get ou les outils d'onglets pour le détail.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.Pagination :
pageSize1–500 (défaut 30),page1–100 — au-delà : refus, affiner les filtres.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (défaut: 1, max: 100) | |
| sort | No | Champ de tri (ex: lastName, firstName, updateDate) | |
| flags | No | IDs de tags. | |
| order | No | Ordre de tri (asc/desc) | |
| tools | No | IDs d'outils/technos (dictionnaire setting.tool). Logique OU par défaut. Pour ET, ajouter '#AND#' en 1er élément: tools=['#AND#','12','34']. | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| period | No | Filtre temporel : 'created' (création), 'started', 'closingDate' (date de closing), 'updated', 'updatedPositioning', 'noAction'/'withActions'/'withoutActions'. À combiner avec `startDate` + `endDate`. | |
| places | No | IDs de zones (dictionnaire setting.mobilityArea). | |
| endDate | No | Date de fin (YYYY-MM-DD), à utiliser avec `period`. | |
| origins | No | IDs d'origines. | |
| shields | No | Niveau de complétude. | |
| keywords | No | Mots-clés. Pour cibler par ID préfixé : 'AOnnn' (opportunité), 'CSOCnnn' (société), 'CCONnnn' (contact), 'CANDnnn' (candidat), 'COMPnnn' (ressource), 'PRODnnn' (produit). Sinon recherche plein texte sur titre/société. | |
| pageSize | No | Nombre de résultats par page (max: 500, défaut: 30) | |
| durations | No | IDs de durées (dictionnaire setting.duration). | |
| startDate | No | Date de début (YYYY-MM-DD), à utiliser avec `period`. | |
| activityAreas | No | IDs de secteurs d'activité. | |
| expertiseAreas | No | IDs de domaines d'expertise. | |
| perimeterPoles | No | IDs de pôles. Conserve les entités dont le responsable appartient à ces pôles. | |
| narrowPerimeter | No | Si true, jointure ET entre les filtres `perimeter*` (au lieu de OU par défaut). | |
| opportunityTypes | No | IDs de types d'opportunité (dictionnaire setting.typeOf.project). | |
| perimeterDynamic | No | Périmètre dynamique relatif à l'utilisateur courant (raccourci sans avoir à connaître son propre ID). Valeurs : 'data' (mes propres données), 'managers' (mon équipe / mes N-1), 'agencies' (mes agences), 'poles' (mes pôles), 'businessUnits' (mes BU). Combinable. | |
| opportunityStates | No | IDs d'états d'opportunité (dictionnaire setting.state.opportunity). | |
| perimeterAgencies | No | IDs d'agences. Conserve les entités dont le responsable appartient à ces agences. | |
| perimeterManagers | No | IDs des managers (ressources). Conserve les entités dont le responsable est l'un de ces managers. Pour 'mon équipe / N-1 d'une personne X', passer [X_id]. Obtenir son propre ID via boond_application_current_user. | |
| positioningStates | No | IDs d'états de positionnement, ou 'none' pour les opportunités sans positionnement. | |
| perimeterManagersType | No | Type de responsable visé par `perimeterManagers` (main/hr). | |
| perimeterBusinessUnits | No | IDs de business units. Conserve les entités dont le responsable appartient à ces BU. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Nombre d'éléments retournés sur cette page |
| items | Yes | |
| total | No | Nombre total de résultats côté BoondManager |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since annotations are empty, the description carries the burden of disclosing behavior. It mentions that filtering is server-side, results are paginated, fields projection works MCP-side without sending to the API, and that pagination is limited to pageSize 500/page 1. However, it does not explicitly state that the operation is read-only and non-destructive (potential read-only hint). It could have stated that no data is modified, but the absence of this is not a contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely verbose at over 2000 words. While technically informative, the density of detailed examples (with code fragments like perimeterDynamic: ['data']) makes it difficult to scan. Much of the content could be condensed without losing essential guidance. The 'Cas d'usage courants' section, while useful, is extended with internal dictionary IDs and multiple variants that could be formatted more succinctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers many use cases and filters, but lacks some detail on return structure (the output schema exists and already describes fields). It references other tools but doesn't explicitly mention output schema or pagination behavior beyond limits. The mention that boond_opportunities_get is for details is there. Overall it's fairly complete, but given the enormous number of filter parameters, the description cannot be 100% complete and the 1-500 pageSize limit is stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides descriptions for each parameter Secretariat. The description complements schema by explaining orchestration of multiple filters: how perimeterDynamic is used to avoid knowing the user ID, how keywords can be used with various ID prefixes (CSOC, CAND, etc.), and that fieldS is forwarded via MCP. It adds strategic context beyond simple 'what does this field do.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description's first sentence clearly states the tool searches commercial opportunities in Boond with server-side filters PoissonR. It also mentions the return is a paginated list and directs to boond_opportunities_get for details, establishing primary purpose. Minor ambiguity exists in that the title 'Recherche des opportunités' is vague, but the description mitigates this with use-case examples.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Outstanding guidance. It gives specific usage scenarios (e.g., 'Mes opportunités' with perimeterDynamic, keywords with prefixed IDs, positions with positioningStates and 'none', date filtering with period + startDate/endDate). It even provides a concrete example for filtering by closing date in 2026. This goes far beyond generic guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_opportunities_simulationSimulation financière d'une opportunitéARead-onlyIdempotent
Récupère la simulation financière (marge, CA prévisionnel, coûts) d'un(e) opportunité, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_opportunities_get pour la fiche de base, ou boond_opportunities_search si l'ID est inconnu.
Returns : Chiffrage prévisionnel de l'opportunité — prévisionnel, pas du réalisé. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds value by clarifying the data is 'prévisionnel, pas du réalisé' and stating 'Lecture seule', which is consistent with the annotations. It also clarifies the scope: only the financial simulation section, not the full record.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured with labeled sections ('Quand', 'Plutôt que', 'Returns'). It front-loads the purpose, then gives routing and return semantics. Every sentence carries useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only fetch by ID, this is complete: it explains what the tool returns, when to use it, how to choose between siblings, and the forecast nature of the data. No output schema exists, but the description sufficiently characterizes the expected result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single id parameter already has a clear type, pattern, and description. The description reinforces that the ID is the opportunity's identifier, but adds no substantial meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Récupère la simulation financière... d'un(e) opportunité, par son ID.' It also identifies the exact content (marge, CA prévisionnel, coûts) and explicitly contrasts itself with boond_opportunities_get and boond_opportunities_search, making sibling differentiation clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance ('pour ne charger que cette section, sans le reste de la fiche') and names precise alternatives with their conditions: boond_opportunities_get for the base record and boond_opportunities_search when the ID is unknown. This is actionable routing information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_opportunities_updateModifier un(e) opportunitéAIdempotent
Met à jour un(e) opportunité existant(e), identifié(e) par son ID.
Quand : pour modifier quelques champs d'un enregistrement déjà en base.
Plutôt que : boond_opportunities_create si l'enregistrement n'existe pas encore.
Mise à jour partielle : seuls les champs fournis sont écrits, les autres sont laissés en place.
Attention aux champs de type tableau, qui sont remplacés et non fusionnés.
Returns : confirmation et fiche mise à jour.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID de l'opportunité à modifier | |
| name | No | Nom / titre | |
| note | No | Description de l'opportunité (mappée sur /data/attributes/description) | |
| state | No | État de l'opportunité | |
| poleId | No | ID du pôle (relation pole) | |
| typeOf | No | Type d'opportunité : ID numérique du dictionnaire setting.typeOf.project (ex: 1, 3), via boond_application_dictionary | |
| endDate | No | Date de fin prévue (YYYY-MM-DD) | |
| agencyId | No | ID de l'agence (relation agency) | |
| criteria | No | Critères / compétences recherchées (texte libre). Alimente le matching de boond_workflow_candidats_pour_opportunite. | |
| companyId | No | ID de la société cliente (relation company) | |
| contactId | No | ID du contact associé (relation contact) | |
| startDate | No | Date de début prévue (YYYY-MM-DD ou 'immediate') | |
| hrManagerId | No | ID de la ressource responsable RH (relation hrManager) | |
| expertiseArea | No | Domaine d'expertise : ID du dictionnaire setting.expertiseArea (via boond_application_dictionary) | |
| mainManagerId | No | ID de la ressource responsable principal / commercial (relation mainManager) | |
| turnoverEstimatedExcludingTax | No | Chiffre d'affaires estimé HT (montant) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Identifiant de l'entité créée/modifiée |
| type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
La description va au-delà des annotations en décrivant la sémantique de mise à jour partielle ('Mise à jour partielle : seuls les champs fournis sont écrits, les autres sont laissés en place') et le comportement particulier des champs de type tableau ('remplacés et non fusionnés'). Elle signale aussi la réponse ('confirmation et fiche mise à jour'). Les annotations restent cohérentes, pas de contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
La description est structurée en sections : 'Quand', 'Plutôt que', 'Mise à jour partielle', 'Attention', 'Returns'. Chaque fragment apporte une information utile, le contenu est dense et lisible. Il n'y a pas de remplissage inutile, et le point clé de la mise à jour partielle est mis en avant tôt.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Pour un outil avec 16 paramètres, annotations et output schema, la description est suffisante : elle couvre le cas d'usage, l'alternative, le comportement précis (partiel, remplacement des tableaux), et le retour attendu. Les dimensions de validation (format, relations) sont déjà détaillées dans les descriptions du schéma. Le contexte apporté par la description est `perdu` aucun vide flagrant.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Les 16 paramètres sont tous documentés dans le schéma (couverture 100 %), ce qui abaisse le besoin de description. La description ajoute une sous-couche importante : le principe de mise à jour partielle explique comment se comportent les paramètres non fournis (ils ne sont pas réinitialisés), et l'avertissement sur les tableaux complète les informations du schéma. Elle apporte donc une réelle plus-value sémantique pour tous les paramètres.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
La description commence par une action claire et spécifique : 'Met à jour un(e) opportunité existant(e), identifié(e) par son ID'. Elle nomme explicitement la ressource (opportunité) et le comportement (update, pas création). Elle différencie l'outil du sibling `boond_opportunities_create`, ce qui lève toute ambiguïté.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
La section 'Quand :' indique précisément dans quel contexte utiliser l'outil : 'pour modifier quelques champs d'un enregistrement déjà en base'. La section 'Plutôt que :' indique l'alternative appropriée : `boond_opportunities_create` si l'enregistrement n'existe pas encore. C'est un exemple parfait de guidage explicite.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_orders_createCréer un(e) bon de commandeA
Crée un(e) bon de commande dans BoondManager.
Quand : pour ajouter un(e) bon de commande inexistant(e).
Plutôt que : boond_orders_update pour modifier un enregistrement existant, et boond_orders_search d'abord pour vérifier qu'il n'existe pas déjà.
Écriture réelle et non idempotente : deux appels identiques créent deux enregistrements (l'API ne déduplique pas).
Les ID de relations et les états/types sont des ID numériques BoondManager, à résoudre au préalable (recherches d'entités,
boond://dictionary/*).
Returns : confirmation, ID créé, et la fiche complète. structuredContent.id est réutilisable directement pour chaîner un appel.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Notes / commentaires | |
| state | No | État du bon de commande | |
| endDate | No | Date de fin couverte (YYYY-MM-DD) | |
| companyId | No | ID de la société | |
| orderDate | No | Date du bon de commande (YYYY-MM-DD) | |
| projectId | No | ID du projet associé | |
| reference | No | Référence du bon de commande | |
| schedules | No | Lignes/échéances de commande | |
| startDate | No | Date de début couverte (YYYY-MM-DD) | |
| customerAgreement | No | Accord client reçu | |
| amountExcludingTax | No | Montant HT |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Identifiant de l'entité créée/modifiée |
| type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as non-idempotent, but the description explicitly states in natural language that two identical calls create two records and the API does not deduplicate. It also notes that relation/state IDs must be resolved beforehand, which materially affects payload construction. This is a strong behavioral warning beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Justification goes here
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Justification goes here
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the 11 parameters)Skip loop? No, I need to produce just one JSON. Let me finalize with the values I decided: 5,5,5,4,5,5. Hmm any way to argue 5 for parameter semantics? The description adds a global note that all relation/state IDs must be numeric and pre-resolved, which applies across parameters. That's useful beyond schema. But schema covers individual params. I think 4 is fair (schema does heavy lifting; description adds cross-cutting guidance but no per-param additions). Good, 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb+resource: 'Crée un(e) bon de commande dans BoondManager.' It clearly distinguishes itself from sibling tools, including boond_orders_update and boond_orders_search, by stating when it should be used — making the agent able to pick it correctly among a large sibling set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('pour ajouter un bon de commande inexistant') and when not to (modification → update, verification first → search). This gives an agent direct selection criteria relative to its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_orders_deleteSupprimer un bon de commandeADestructive
Supprime définitivement un(e) bon de commande de BoondManager.
Quand : uniquement sur demande explicite de l'utilisateur, et après avoir vérifié l'ID avec boond_orders_get.
Plutôt que : boond_orders_update pour désactiver ou changer l'état d'un enregistrement sans le détruire — c'est presque toujours l'intention réelle.
⚠️ Irréversible, sans corbeille côté API.
Si le client MCP annonce la capacité
elicitation, une confirmation est demandée à l'utilisateur final et un refus annule l'appel (structuredContent.deleted: false+reason) ; sinon la suppression part directement.
Returns : { id, deleted, reason? } — vérifier deleted, qui vaut false en cas de refus utilisateur.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| reason | No | Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur) |
| deleted | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses that deletion is irreversible with no trash on the API side, that confirmation behavior depends on the MCP client's `elicitation` capability, and that a user refusal returns `deleted: false` with a `reason`. This is rich behavioral context that annotations alone do not fully capture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place: the core action, when to use, alternative, irreversibility warning, confirmation behavior, and return contract. The structure is scannable with clear sections and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one simple parameter, destructive annotations, and an output schema already present, the description covers everything needed to invoke and interpret the result correctly, including refusal semantics and the recommended pre-check. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the single `id` parameter with full coverage, so the baseline is 3. The description adds practical meaning by instructing that the ID must be verified via `boond_orders_get` before calling this tool, which clarifies the expected source and validity of the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Supprime définitivement un(e) bon de commande de BoondManager.' It clearly distinguishes itself from the sibling update tool by naming it, so an agent can tell exactly what this tool does and what it does not do.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage conditions: only on explicit user request and after verifying the ID with `boond_orders_get`. It also names the preferred alternative, `boond_orders_update`, when the intent is to deactivate or change status instead of destroying the record.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_orders_getDétails d'un(e) bon de commandeARead-onlyIdempotent
Récupère la fiche complète d'un(e) bon de commande par son ID numérique.
Quand : après un boond_orders_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_orders_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_orders_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive nature. The description adds value by disclosing that an unknown ID returns the raw BoondManager error, and that the return is JSON with attributes and relationships. This goes beyond the annotation-provided safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured with clear sections ('Quand', 'Plutôt que', 'Returns'). The primary purpose is front-loaded, and every sentence contributes meaning without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID tool with robust annotations, the description covers when to use, alternative tools, error behavior, and return structure. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (id is described with pattern). The description adds critical usage semantics: the ID must originate from boond_orders_search, not guessed, and the tool rejects name input. This contextualizes the parameter beyond its type definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Récupère'), resource ('bon de commande'), and method ('par son ID numérique'), clearly distinguishing it from the sibling search tool. It also explicitly says this tool does not accept a name, reinforcing its unique scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage conditions: use after boond_orders_search to get full details, and contrasts with boond_orders_search when the ID is unknown. It also warns that the ID must come from search, never from a guess, giving clear direction on when to invoke this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_orders_searchRechercher des bons de commandeARead-onlyIdempotent
Recherche des bons de commande dans BoondManager avec filtres par société et projet.
Quand : pour suivre les bons de commande client.
Plutôt que : boond_invoices_search pour la facturation qui en découle, boond_orders_get si l'ID est connu.
Args:
keywords (string, optional): Termes de recherche
companyId, projectId (string, optional): Filtrer par entité liée
page, pageSize: Pagination
Returns: Liste des bons de commande correspondants.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (max: 100) | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| keywords | No | Mots-clés de recherche | |
| pageSize | No | Résultats par page | |
| companyId | No | Filtrer par ID société | |
| projectId | No | Filtrer par ID projet |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Nombre d'éléments retournés sur cette page |
| items | Yes | |
| total | No | Nombre total de résultats côté BoondManager |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readonly/openWorld/idempotent/destructive hints, so the description only needed to add extra behavior. It does so by explaining that fields is a client-side projection 'jamais transmise à l'API', that unknown names are ignored, and that it is intended for large pages. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: purpose first, then usage guidance, args, returns, and the special fields note. Every section earns its place and the fields note is useful enough to justify the extra line.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with no required parameters, an output schema, and comprehensive annotations, the description supplies the remaining decisive context: when to use it, what it filters by, how pagination works, and the special fields behavior. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with descriptions, so the baseline is 3. The description adds a small amount beyond the schema by grouping filters and highlighting the fields projection's performance intent, but it largely restates what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb and resource: 'Recherche des bons de commande dans BoondManager avec filtres par société et projet.' It is immediately distinguishable from sibling tools because it names the alternatives boond_invoices_search and boond_orders_get and states the filter scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit 'Quand' (following up on customer purchase orders) and a 'Plutôt que' section naming boond_invoices_search for downstream invoicing and boond_orders_get when the ID is known. This is exactly the when/when-not guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_orders_updateModifier un(e) bon de commandeAIdempotent
Met à jour un(e) bon de commande existant(e), identifié(e) par son ID.
Quand : pour modifier quelques champs d'un enregistrement déjà en base.
Plutôt que : boond_orders_create si l'enregistrement n'existe pas encore.
Mise à jour partielle : seuls les champs fournis sont écrits, les autres sont laissés en place.
Attention aux champs de type tableau, qui sont remplacés et non fusionnés.
Returns : confirmation et fiche mise à jour.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID du bon de commande à modifier | |
| note | No | Notes | |
| state | No | État | |
| endDate | No | Date de fin couverte (YYYY-MM-DD) | |
| orderDate | No | Date (YYYY-MM-DD) | |
| reference | No | Référence | |
| schedules | No | Lignes/échéances de commande | |
| startDate | No | Date de début couverte (YYYY-MM-DD) | |
| customerAgreement | No | Accord client reçu | |
| amountExcludingTax | No | Montant HT |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Identifiant de l'entité créée/modifiée |
| type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, idempotentHint=true), the description discloses partial-update semantics: 'seuls les champs fournis sont écrits, les autres sont laissés en place' and specifically warns that array fields are replaced, not merged: 'Attention aux champs de type tableau, qui sont **remplacés** et non fusionnés.' This is genuinely additional behavioral context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a one-sentence purpose, a short 'when/rather-than' pair, two bulleted behavioral caveats, and a one-line return note. Every sentence carries unique information with zero redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 10 parameters and an output schema; the description covers the essential usage context (partial updates, array replacement), identifies the correct alternative, and states the return value. There is no missing guidance for an agent to correctly issue partial updates on this resource.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3. The description adds semantic meaning for how parameters are applied: only the provided fields are written, and arrays are replaced wholesale. This goes beyond the schema's plain labels, though it doesn't elaborate each individual field's semantic beyond what schemas already state.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Met à jour un(e) bon de commande existant(e), identifié(e) par son ID.' It explicitly distinguishes from the sibling create tool by stating 'Plutôt que : `boond_orders_create` si l'enregistrement n'existe pas encore.' No ambiguity remains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' clause defines the precise use case (modifying a few fields of an existing record), and the 'Plutôt que' line names the exactly alternative behavior with the sibling tool. This dual guidance leaves no doubt about when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_payments_createCreer un paiementA
Enregistre un paiement / règlement fournisseur adossé à un achat.
Quand : pour solder tout ou partie d'un achat existant.
Plutôt que : boond_purchases_create si l'achat lui-même n'existe pas encore — un paiement ne peut pas être orphelin.
L'API
/paymentsexige une relationpurchase: sans ID d'achat valide, l'appel est refusé.Écriture non idempotente : deux appels identiques enregistrent deux règlements.
Returns : confirmation et fiche du paiement créé.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Note interne, mappee vers informationComments | |
| state | No | Etat du paiement / achat | |
| amount | No | Montant HT du paiement, mappe vers amountExcludingTax | |
| endDate | No | Date de fin couverte (YYYY-MM-DD) | |
| taxRates | No | Taux de taxes Boond | |
| reference | No | Reference bancaire ou reglement | |
| startDate | No | Date de debut couverte (YYYY-MM-DD) | |
| purchaseId | Yes | ID de l'achat regle | |
| paymentDate | No | Date du paiement (YYYY-MM-DD), mappee vers date | |
| expectedDate | No | Date de paiement attendu (YYYY-MM-DD) | |
| paymentMethod | No | Methode de paiement | |
| performedDate | No | Date de paiement effectif (YYYY-MM-DD) | |
| amountExcludingTax | No | Montant HT du paiement |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-idempotent, non-readOnly, destructive=false. The description adds critical behavioral details: the API requires a `purchase` relation (without it, call is refused) and that writes are not idempotent (two identical calls create two payments). This goes beyond annotations by explaining the side effects and constraints. It could mention more about potential side effects but is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with a clear intro, a 'Quand' section, a 'Plutôt que' section, bullet points for API requirements and idempotency, and a brief note on returns. Each sentence adds value, no redundancy. It's efficiently front-loaded with the purpose and immediately covers usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool complexity (13 params, 1 required) and that there is no output schema, the description provides essential context: the necessity of `purchaseId`, non-idempotency, and a brief return mention. It doesn't detail all parameter behaviors (e.g., required fields for amount), but the schema covers those descriptions. The description is adequate for an experienced agent, though a note about minimum required fields could improve it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds extra context: it explains that `amount` maps to `amountExcludingTax`, `paymentDate` maps to `date`, and `note` maps to `informationComments`. It also highlights the critical requirement for `purchaseId` to link to an existing purchase, which is vital for correct use. This goes beyond the schema by clarifying mapping and the mandatory relationship.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Enregistre') and resource ('un paiement / règlement fournisseur adossé à un achat'), which is clear. It distinguishes itself from sibling `boond_purchases_create` by explicitly noting it is for payments attached to existing purchases, not for creating purchases themselves. However, it doesn't explicitly compare to `boond_payments_search` or `boond_payments_get`, but the primary purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'Quand' (when to use) and 'Plutôt que' (instead of) guidance, naming the alternative `boond_purchases_create` and the condition for choosing it. This helps the agent select the correct tool. It also clearly states that a payment cannot be orphaned, preventing misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_payments_getDetails d'un paiementARead-onlyIdempotent
Récupère la fiche complète d'un(e) paiement par son ID numérique.
Quand : après un boond_payments_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_payments_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_payments_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, and the description adds useful behavioral details: unknown IDs surface the BoondManager error as-is, and the return is the full JSON entity with attributes and relations. While some info (Lecture seule) mirrors annotations, the error handling and output format are extra value, so a 4 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear 'Quand' and 'Plutôt que' sections, plus a bullet for error behavior. It is concise, every sentence earns its place, and the purpose is front-loaded. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID tool with one parameter and annotations covering safety, the description is complete: it explains when to use, what it returns, error behavior, and source of the ID. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the id parameter fully (numeric, pattern). The description adds the critical constraint that the ID must come from `boond_payments_search`, not guessed, which is an important semantic clarification for correct use. With 100% schema coverage, this extra guidance elevates it above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches the full payment record by numeric ID, and distinguishes it from the search tool by noting it returns attributes not present in the list summary. This lets an agent understand exactly what the tool does and how it differs from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to use this after `boond_payments_search` and to prefer search if the ID is unknown (since this tool doesn't accept names). It also instructs that the ID must come from search, never guessed, providing clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_payments_searchRechercher des paiementsARead-onlyIdempotent
Recherche des paiements / reglements dans BoondManager.
Quand : pour suivre les règlements enregistrés.
Plutôt que : boond_provider_invoices_search pour les factures fournisseur et boond_purchases_search pour les engagements : un paiement est adossé à un achat, il ne le remplace pas.
Args:
keywords (string, optional): Termes de recherche. Utiliser ACH, CSOC, PRJ selon la doc Boond pour filtrer par achat, societe ou projet.
invoiceId, companyId (string, optional): Conserves pour compatibilite, transmis comme query params si fournis.
startDate, endDate (string, optional): Periode (YYYY-MM-DD)
page, pageSize: Pagination
Returns: Liste des paiements correspondants.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (max: 100) | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| endDate | No | Date de fin (YYYY-MM-DD) | |
| keywords | No | Mots-clés de recherche | |
| pageSize | No | Résultats par page | |
| companyId | No | Filtrer par ID société | |
| invoiceId | No | Filtrer par ID facture | |
| projectId | No | Filtrer par ID projet | |
| startDate | No | Date de début (YYYY-MM-DD) | |
| purchaseId | No | Filtrer par ID achat | |
| resourceId | No | Filtrer par ID ressource |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond annotations: it explains that the 'fields' parameter is a client-side projection never sent to the API, that it replaces the summary with only the listed attributes, and that unknown names are ignored. It also notes the tool returns a list of matching payments. This is useful behavioral disclosure that goes beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections: purpose, when to use, alternatives, args, and returns. It is slightly verbose with the French accents and some redundancy (e.g., 'Conserves pour compatibilite' is a bit terse but informative). Overall, every sentence earns its place and the most important scoping information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with 11 optional parameters, no required parameters, and no output schema, the description covers the key usage aspects: what it returns, how to filter, pagination, and the special 'fields' projection behavior. It does not explain every parameter (e.g., resourceId, purchaseId, projectId are only in the schema), but the schema already covers those with 100% description coverage. The description is complete enough for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds value beyond the schema by explaining the special keyword syntax (ACH<id>, CSOC<id>, PRJ<id>) and by clarifying that invoiceId and companyId are kept for compatibility and passed as query params if provided. It also explains the 'fields' projection behavior, which is not fully captured by the schema's short description. This exceeds the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Recherche des paiements / reglements dans BoondManager') and clearly distinguishes it from sibling tools by naming boond_provider_invoices_search and boond_purchases_search as alternatives for different resources. It also explains that a payment is attached to a purchase and does not replace it, which removes ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool ('pour suivre les règlements enregistrés') and names the alternatives to use instead for provider invoices and purchases. It also provides concrete guidance on keyword formats (ACH<id>, CSOC<id>, PRJ<id>) for filtering by purchase, company, or project, which is actionable usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_planning_absences_searchRechercher le planning des absencesARead-onlyIdempotent
Recherche le planning des absences dans BoondManager (vue globale des absences prévues).
Quand : pour savoir qui est absent sur une période — une vue calendaire, pas un suivi de demandes.
Plutôt que : boond_absences_search pour les demandes elles-mêmes (motif, état de validation, demandeur), que cette vue ne détaille pas.
Returns: Planning des absences.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.Pagination :
pageSize1–500 (défaut 30),page1–100 — au-delà : refus, affiner les filtres.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (défaut: 1, max: 100) | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| keywords | No | Mots-clés de recherche (nom, email, compétences...) | |
| pageSize | No | Nombre de résultats par page (max: 500, défaut: 30) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish a safe read-only, idempotent, non-destructive profile. The description adds useful beyond-annotation behavior: the fields projection is applied MCP-side and never sent to the API, unknown names are ignored, and out-of-range pagination is refused rather than accepted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and usage conditions are front-loaded in tight French sentences with bullet-form param notes. The only minor waste is the 'Returns: Planning des absences' line, which largely repeats the first sentence; otherwise the content is lean and well organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search-style tool with no required parameters, annotations carrying safety, and full schema coverage, the description supplies usage context, an alternative, pagination limits, and special behavior of fields. The lack of an output schema makes the 'Planning des absences' return note thinner than ideal, but it is sufficient for selecting and calling this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds semantic value by explaining fields is a client-side projection that replaces the default summary and is useful on large pages, and that page/pageSize beyond maximum lead to refusal. This clarifies behavior not obvious from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with the verb 'Recherche' on a specific resource ('le planning des absences dans BoondManager') and immediately characterizes it as a calendar/global view of planned absences, not a request tracker. It also names the sibling boond_absences_search as covering a different object, making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Quand' explicitly states the use case: knowing who is absent over a period. 'Plutôt que' explicitly routes to boond_absences_search when request-level detail (motif, état de validation, demandeur) is needed, and notes this view does not detail those fields.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_poles_getDétails d'un(e) pôleARead-onlyIdempotent
Récupère la fiche complète d'un(e) pôle par son ID numérique.
Quand : après un boond_poles_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_poles_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_poles_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: it states that an unknown ID returns the raw BoondManager error, and that the tool returns the entity JSON as sent by the API. It also explicitly labels the operation as read-only, reinforcing the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a one-sentence purpose, a 'Quand' section for usage, a 'Plutôt que' section for alternatives, a warning about invalid IDs, and a brief return note. Every sentence earns its place, and the most important routing information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read tool with no output schema, the description covers the essential context: when to use it, what it returns, and how to handle errors. The only minor gap is that it doesn't describe the structure of the returned JSON in detail, but since the API response is the source of truth and the tool is a straightforward getter, this is not a significant omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the single 'id' parameter as a numeric identifier. The description adds the important constraint that the ID must come from boond_poles_search and not be guessed, which is useful, but it doesn't add much beyond that. Baseline 3 is appropriate since the schema carries the parameter documentation burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the complete record ('fiche complète') of a 'pôle' by its numeric ID, using a specific verb ('Récupère') and resource. It also distinguishes itself from the sibling search tool by explaining it provides attributes not present in the list summary, which is essential for differentiating among the many boond_*_get/search pairs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use it ('après un boond_poles_search') and when not to ('Plutôt que : boond_poles_search si l'ID n'est pas connu'), and even warns that the ID must come from the search tool, not a guess. This is clear, actionable routing guidance that leaves no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_poles_searchRechercher des pôlesARead-onlyIdempotent
Liste et recherche les pôles de BoondManager, par mots-clés et pagination.
Quand : pour retrouver l'ID d'un(e) pôle à partir de son nom, ou pour énumérer les pôles existant(e)s.
Plutôt que : boond_poles_get si l'ID est déjà connu — la recherche ne renvoie qu'un résumé d'une ligne par pôle.
Returns : page de résumés (ID + libellé principal), plus structuredContent.total = nombre total côté BoondManager. Lecture seule.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.Pagination sans effet : cette route renvoie toujours la table complète,
pageSizeetpagesont ignorés par l'API — inutile de paginer, tout est déjà là.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (défaut: 1, max: 100) | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| keywords | No | Mots-clés de recherche (nom, email, compétences...) | |
| pageSize | No | Nombre de résultats par page (max: 500, défaut: 30) |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Nombre d'éléments retournés sur cette page |
| items | Yes | |
| total | No | Nombre total de résultats côté BoondManager |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds important behavior beyond the annotations: pagination is ignored by the API, the route returns the whole table, fields is a projection applied MCP-side and never sent to the API, and unknown field names are ignored. It also explains the result shape and the total count. These are genuine, non-obvious behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well structured and front-loaded with purpose, use cases, and return semantics. However, the first sentence mentions 'par mots-clés et pagination' and then the final bullet says pagination has no effect, a slight internal inconsistency. The 'Lecture seule' note also duplicates the annotations, but overall it still earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-required-param read-only search tool, the description covers when to use it, the sibling alternative, the summary return shape, the total value, and the surprising behavior of the pagination. There is no obvious missing information an agent would need to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Even though schema description coverage is 100%, the description adds critical meaning the schema cannot convey: page and pageSize are accepted but have no effect, and fields is only a local projection not transmitted to BoondManager. This directly prevents an agent from wasting effort paginating or misunderstanding fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb/resource pair: list and search poles in BoondManager by keywords. It also gives the concrete use case (find a pole ID by name, or enumerate existing poles) and differentiates itself from boond_poles_get by noting it returns only a one-line summary per pole. An agent can tell exactly what this tool is for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit 'Quand' section saying when to use it, and a 'Plutôt que' section pointing to boond_poles_get when the ID is already known. This is strong when/when-not guidance with a named sibling alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_positionings_createCréer un positionnementA
Crée un positionnement : place un candidat ou une ressource sur une opportunité ou un projet.
Quand : pour matérialiser une proposition de profil au client.
Plutôt que : boond_positionings_update pour faire avancer l'état d'un positionnement existant (proposé → retenu → refusé) plutôt que d'en créer un second.
Écriture non idempotente : rien n'empêche deux positionnements du même profil sur la même affaire.
L'état est un ID entier du dictionnaire (
boond://dictionary/states/positionings), pas un libellé.
Returns : confirmation et fiche du positionnement créé.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Notes / commentaires | |
| state | No | État du positionnement | |
| endDate | No | Date de fin (YYYY-MM-DD) | |
| projectId | No | ID du projet | |
| startDate | No | Date de début (YYYY-MM-DD) | |
| resourceId | No | ID de la ressource positionnée | |
| candidateId | No | ID du candidat positionné | |
| opportunityId | No | ID de l'opportunité |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-read-only, non-idempotent write. The description adds meaningful context beyond annotations: explicitly warns about non-idempotence (duplicate positionings possible), clarifies the state field is a dictionary integer ID not a label, and states the return value. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded: purpose first, then usage context with alternatives, then key behavioral warnings as bullets, then return value. Every sentence earns its place; no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with 8 optional parameters and no output schema, the description covers the essential context: what the action does, when to use it, how it differs from the update sibling, the non-idempotent behavior, the state format, and the return payload. The one-of-pair parameter relationship is also conveyed, so an agent has sufficient guidance to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds relational meaning beyond the schema by clarifying that candidateId/resourceId and opportunityId/projectId are alternatives ('un candidat ou une ressource sur une opportunité ou un projet') and by specifying the state parameter as a dictionary integer ID, which is not evident from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Crée un positionnement' and defines the action concretely as placing a candidate or resource on an opportunity or project. It differentiates from the sibling boond_positionings_update by explicitly naming the alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear 'Quand' condition (materializing a profile proposal to the client) and an explicit 'Plutôt que' section explaining when to prefer boond_positionings_update for advancing states instead of creating a second positioning. This is unambiguous routing between siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_positionings_deleteSupprimer un positionnementADestructive
Supprime définitivement un(e) positionnement de BoondManager.
Quand : uniquement sur demande explicite de l'utilisateur, et après avoir vérifié l'ID avec boond_positionings_get.
Plutôt que : boond_positionings_update pour désactiver ou changer l'état d'un enregistrement sans le détruire — c'est presque toujours l'intention réelle.
⚠️ Irréversible, sans corbeille côté API.
Si le client MCP annonce la capacité
elicitation, une confirmation est demandée à l'utilisateur final et un refus annule l'appel (structuredContent.deleted: false+reason) ; sinon la suppression part directement.
Returns : { id, deleted, reason? } — vérifier deleted, qui vaut false en cas de refus utilisateur.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| reason | No | Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur) |
| deleted | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include destructiveHint=true and readOnlyHint=false, which already indicate a destructive operation. The description adds valuable context: irreversibility, no trash, and the conditional confirmation behavior based on MCP capability. This goes beyond basic annotation info.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with headers, bullet points, and a return format. Despite being in French, it is concise and information-dense, front-loading the critical irreversible nature.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully covers prerequisites (ID verification), alternatives (update), behavioral notes (irreversibility, confirmation), and return format. Given the simple schema and strong annotations, nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage for the single parameter, and the description adds that ID should be verified with get first. The parameter is well-documented in the schema, and the description reinforces its importance; the additional verification advice is useful.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool permanently deletes a positioning (a specific resource) and differentiates it from the update tool. It identifies the exact action and resource, which is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (only on explicit user request and after verifying ID with get), and when not to use, recommending update instead for deactivation. This provides clear decision guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_positionings_getDétails d'un positionnementARead-onlyIdempotent
Récupère la fiche complète d'un(e) positionnement par son ID numérique.
Quand : après un boond_positionings_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_positionings_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_positionings_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, and non-destructive hints. The description adds meaningful behavioral advice: unknown IDs surface the BoondManager error as is, so the ID must be sourced from search and never guessed. It also specifies the return shape as JSON attributes + relations, which goes beyond the structural annotations and helps the agent understand the response even without a formal output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition begins with a lead purpose sentence, then moves to usage guidance, then to input constraint, and ends with the return description. Every part contributes value. Minor redundancy: the final 'Lecture seule' repeats the annotation's readOnlyHint, which is not necessary but costs no harm. The structure also uses French labels in a natural way for front-loaded clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only getter, the description is complete: it gives the call context (after search), the ID source, the error scenario, and the return type. No output schema exists, so the description's statement of 'JSON de l'entité' fills that gap. There is nothing an agent needs to know about correct invocation that is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the id parameter fully (pattern, type, description at 100% coverage). The description elevates this with contextual semantics: the ID is not merely any fee but comes from boond_positionings_search, and the tool refuses name-based lookups. This adds actionable knowledge beyond the schema fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb (Récupère), a specific resource (la fiche complète d'un positionnement), and the attribute ID (par son ID numérique). It differentiates itself from its sibling search tool by explicitly noting it provides attributes not in the list summary, making it unambiguous against boond_positionings_search, create, update, and delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly describes when to use the tool: after a boond_positionings_search when full attributes are needed. It names the alternative (`boond_positionings_search`) and states the condition for choosing that alternative (if the ID is not known). It also warns that this tool does not accept a name, giving clear selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_positionings_searchRechercher des positionnementsARead-onlyIdempotent
Recherche des positionnements (placement de candidats/ressources sur des projets/opportunités) dans BoondManager.
Quand : pour suivre l'avancement des profils proposés, plusieurs affaires confondues.
Plutôt que : les onglets positionings (boond_candidates_positionings, boond_opportunities_positionings, boond_resources_positionings) quand on part d'une entité connue.
L'API ne propose pas de paramètres de filtre dédiés : le filtrage par entité liée passe par des références dans keywords (AO=opportunité, CAND=candidat, COMP=ressource, CSOC=société, CCON=contact, PROD=produit). Les filtres *Id ci-dessous sont convertis automatiquement en ces références.
Args:
keywords (string, optional): Termes de recherche (références d'entités acceptées)
candidateId, resourceId, opportunityId, companyId, contactId, productId (string, optional): Filtrer par entité liée (convertis en références keywords)
page, pageSize: Pagination
Returns: Liste des positionnements correspondants.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (max: 100) | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| keywords | No | Mots-clés de recherche. L'API y accepte aussi des références d'entités (AO<id>, CAND<id>, COMP<id>...) — les filtres *Id ci-dessous sont convertis automatiquement en de telles références. | |
| pageSize | No | Résultats par page | |
| companyId | No | Filtrer par ID société (envoyé à l'API comme référence keywords CSOC<id>) | |
| contactId | No | Filtrer par ID contact (envoyé à l'API comme référence keywords CCON<id>) | |
| productId | No | Filtrer par ID produit (envoyé à l'API comme référence keywords PROD<id>) | |
| resourceId | No | Filtrer par ID ressource (envoyé à l'API comme référence keywords COMP<id>) | |
| candidateId | No | Filtrer par ID candidat (envoyé à l'API comme référence keywords CAND<id>) | |
| opportunityId | No | Filtrer par ID opportunité (envoyé à l'API comme référence keywords AO<id>) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint:false. The description adds non-obvious behavior: the API has no dedicated filter parameters, filtering requires keyword references (AO<id>, CAND<id>, etc.), and `fields` is a client-side projection never sent to the API. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, when, alternative, API constraint, args, returns, fields note). Every sentence adds value; there is no filler. It is slightly redundant with the schema in the Args block, but remains organized and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, alternatives, parameter semantics, and field projection, but the return value is only described as 'Liste des positionnements correspondants'. With no output schema, it does not describe the standard summary format or the shape of each positioning result, leaving an agent uncertain about what it will receive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds the reference mapping (AO, CAND, COMP, CSOC, CCON, PROD) and clarifies that *Id filters are automatically converted to keyword references. It also explains that `fields` is an MCP-side projection, not transmitted to the API, which goes beyond the schema's per-parameter text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific action 'Recherche des positionnements' and defines the resource (placement de candidats/ressources sur des projets/opportunités). It explicitly contrasts with per-entity siblings by naming 'boond_candidates_positionings', 'boond_opportunities_positionings', and 'boond_resources_positionings', so an agent can distinguish it at a glance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'Quand' (track candidate progress across multiple deals) and 'Plutôt que' (use the entity-specific positionings tabs when starting from a known entity) sections. This gives clear when-to-use vs alternative guidance, rare for tool descriptions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_positionings_updateModifier un positionnementAIdempotent
Met à jour un positionnement existant dans BoondManager (PUT /positionings/{id}). Seuls les champs fournis sont modifiés.
Quand : pour faire avancer l'état d'un positionnement (proposé → retenu → refusé).
Plutôt que : boond_positionings_create si le positionnement n'existe pas encore.
Args:
id (string): ID du positionnement
state (number, optional): État du positionnement (ID du dictionnaire setting.state.positioning)
stateReasonTypeOf, stateReasonDetail (optional): Motif d'état (repliés en stateReason {typeOf, detail})
startDate, endDate (string, optional): Dates au format YYYY-MM-DD (chaîne vide pour effacer)
informationComments (string, optional): Commentaires (max 250 caractères)
Returns: Données mises à jour du positionnement.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID du positionnement à modifier | |
| state | No | État du positionnement : ID numérique du dictionnaire setting.state.positioning | |
| endDate | No | Date de fin (YYYY-MM-DD, ou chaîne vide pour effacer) | |
| startDate | No | Date de début (YYYY-MM-DD, ou chaîne vide pour effacer) | |
| stateReasonDetail | No | Motif d'état : détail libre (stateReason.detail) | |
| stateReasonTypeOf | No | Motif d'état : ID numérique du type de motif (stateReason.typeOf) | |
| informationComments | No | Commentaires (max 250 caractères) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Identifiant de l'entité créée/modifiée |
| type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false. The description adds valuable behavioral context beyond annotations: it explains that only provided fields are modified ('Seuls les champs fournis sont modifiés'), that startDate/endDate can be cleared with an empty string, and that stateReasonTypeOf/stateReasonDetail are folded into a stateReason object. These details are not present in annotations and enhance understanding. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear opening statement of function and endpoint, followed by explicit usage conditions ('Quand', 'Plutôt que'), and a concise argument list. Every sentence serves a purpose; nothing is fluff. The structure front-loads the key differentiator (update vs create) and minimizes redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all necessary aspects: it names the HTTP method and endpoint, specifies the partial-update behavior, provides explicit usage conditions, explains how to clear date fields, groups related parameters, and states the return type ('Données mises à jour du positionnement'). Since an output schema exists, return details are not required. The description is complete for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (all 7 params have descriptions), so the baseline is 3. However, the description adds meaningful semantic clarity beyond the schema: it groups stateReasonTypeOf and stateReasonDetail to be sent as a nested stateReason object, clarifies that startDate/endDate empty strings clear the values, and specifies the max length for informationComments. This extra context helps the agent construct correct calls.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates an existing positioning ('Met à jour un positionnement existant') and includes the HTTP endpoint PUT /positionings/{id}. It explicitly differentiates from the sibling `boond_positionings_create` by saying 'Plutôt que : boond_positionings_create si le positionnement n'existe pas encore', which enables correct sibling selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit 'Quand' condition ('pour faire avancer l'état d'un positionnement (proposé → retenu → refusé)') and an explicit 'Plutôt que' alternative ('boond_positionings_create si le positionnement n'existe pas encore'). This gives clear when and when-not guidance, fully meeting the usage criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_products_createCréer un(e) produitA
Crée un(e) produit dans BoondManager.
Quand : pour ajouter un(e) produit inexistant(e).
Plutôt que : boond_products_update pour modifier un enregistrement existant, et boond_products_search d'abord pour vérifier qu'il n'existe pas déjà.
Écriture réelle et non idempotente : deux appels identiques créent deux enregistrements (l'API ne déduplique pas).
Les ID de relations et les états/types sont des ID numériques BoondManager, à résoudre au préalable (recherches d'entités,
boond://dictionary/*).
Returns : confirmation, ID créé, et la fiche complète. structuredContent.id est réutilisable directement pour chaîner un appel.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Nom du produit | |
| note | No | Description du produit | |
| state | No | État du produit | |
| taxRate | No | Taux de TVA (%) | |
| reference | No | Référence du produit | |
| unitPrice | No | Prix unitaire HT |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Identifiant de l'entité créée/modifiée |
| type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already communicate readOnlyHint=false and idempotentHint=false, but the description adds real behavioral value by warning that two identical calls create two records because the API does not deduplicate. It also discloses that relationship/state IDs must be pre-resolved to numeric BoondManager IDs, which is useful operational context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with purpose, and uses clear structural markers ('Quand', 'Plutôt que', bullets, 'Returns'). Every sentence serves a distinct purpose: usage routing, non-idempotence warning, ID-resolution guidance, and return-value chaining. There is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with an output schema and 100% parameter schema coverage, the description covers all critical context: what it creates, when to call it, what to call instead, side effects, parameter ID semantics, and how to use the returned ID for chaining. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaningful extra semantics by explaining that states/types are numeric BoondManager IDs to be resolved beforehand via entity searches or boond://dictionary/*. This clarifies how to correctly populate the state parameter beyond the schema's simple 'État du produit' label.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Crée un(e) produit dans BoondManager.' It also explicitly contrasts itself with boond_products_update and boond_products_search, so an agent can immediately tell this tool creates a new product rather than modifying or finding one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states when to use it ('pour ajouter un(e) produit inexistant(e)') and provides explicit exclusions: use boond_products_update for existing records and boond_products_search first to verify the product does not already exist. This is concrete routing guidance with no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_products_deleteSupprimer un(e) produitADestructive
Supprime définitivement un(e) produit de BoondManager.
Quand : uniquement sur demande explicite de l'utilisateur, et après avoir vérifié l'ID avec boond_products_get.
Plutôt que : boond_products_update pour désactiver ou changer l'état d'un enregistrement sans le détruire — c'est presque toujours l'intention réelle.
⚠️ Irréversible, sans corbeille côté API.
Si le client MCP annonce la capacité
elicitation, une confirmation est demandée à l'utilisateur final et un refus annule l'appel (structuredContent.deleted: false+reason) ; sinon la suppression part directement.
Returns : { id, deleted, reason? } — vérifier deleted, qui vaut false en cas de refus utilisateur.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| reason | No | Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur) |
| deleted | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint=true, idempotentHint=false), the description discloses that deletion is irreversible with no API-side trash, and that a confirmation flow may be triggered when the MCP client supports `elicitation`. It also explains the refusal response shape, which is valuable behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose before diving into conditions and warnings. Every sentence serves a purpose: usage conditions, alternative, irreversibility, confirmation behavior, and return contract. The formatting makes the important caveats easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive single-parameter tool with an output schema, the description is complete. It covers when to call it, what to do before calling it, what alternative to prefer, what the destructive consequences are, how the optional confirmation flow behaves, and what the return payload indicates.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage for the single `id` parameter, including its numeric pattern and description, so the baseline is 3. The description adds the operational guidance to verify the ID with `boond_products_get`, but it does not materially expand the semantic meaning of the id parameter itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it permanently deletes a product from BoondManager. It also distinguishes itself from the sibling delete/update tools by naming the alternative and clarifying that this is the destructive counterpart to `boond_products_update`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: only on explicit user request and after verifying the ID with `boond_products_get`. It also directs the agent to prefer `boond_products_update` for deactivation or state changes, giving a clear decision rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_products_getDétails d'un(e) produitARead-onlyIdempotent
Récupère la fiche complète d'un(e) produit par son ID numérique.
Quand : après un boond_products_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_products_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
tabcible un onglet précis (information,technical-data,administrative,actions…) ; sanstab, seule la fiche de base est renvoyée, pas la réunion des onglets.Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_products_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité (numérique) | |
| tab | No | Onglet spécifique à récupérer (information, technical, financial, actions, contracts, documents) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint false), the description discloses that omitting tab returns only the base fiche, not a union of tabs, and that an unknown ID surfaces the raw BoondManager error. It also explicitly states 'Lecture seule', consistent with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well structured with a core one-liner, labeled 'Quand' and 'Plutôt que' sections, bullets for parameter behavior, and a short Returns note. Every sentence adds value, and the most important routing information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a get-by-id tool with no output schema, it covers what the tool returns (entity JSON with attributes and relations), how to obtain a valid id, what happens on unknown ids, and the optional tab behavior. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds meaningful semantics on top: tab selects a specific tab with examples and a default-behavior caveat, and id is constrained to IDs obtained from search rather than guessed. This materially helps an agent pass correct values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Récupère la fiche complète d'un produit par son ID numérique.' It clearly differentiates this get-detail tool from boond_products_search by noting it fetches attributes absent from the list summary and only accepts an ID, not a name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use the tool ('après un boond_products_search') and when not to ('Plutôt que : boond_products_search si l'ID n'est pas connu'), naming the alternative and the condition that selects it. The tab guidance also clarifies optional usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_products_searchRechercher des produitsARead-onlyIdempotent
Liste et recherche les produits de BoondManager, par mots-clés et pagination.
Quand : pour retrouver l'ID d'un(e) produit à partir de son nom, ou pour énumérer les produits existant(e)s.
Plutôt que : boond_products_get si l'ID est déjà connu — la recherche ne renvoie qu'un résumé d'une ligne par produit.
Returns : page de résumés (ID + libellé principal), plus structuredContent.total = nombre total côté BoondManager. Lecture seule.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.Pagination :
pageSize1–500 (défaut 30),page1–100 — au-delà : refus, affiner les filtres.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (défaut: 1, max: 100) | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| keywords | No | Mots-clés de recherche (nom, email, compétences...) | |
| pageSize | No | Nombre de résultats par page (max: 500, défaut: 30) |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Nombre d'éléments retournés sur cette page |
| items | Yes | |
| total | No | Nombre total de résultats côté BoondManager |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint, idempotentHint, destructiveHint, and openWorldHint, so the safety profile is known. The description adds valuable behavioral nuance: the fields parameter is a projection never sent to the API, unknown names are ignored, and pagination limits cause refusal. It also discloses the return format (summary + total count). This goes beyond what annotations provide, so a 4 is warranted rather than a 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections: purpose, when, alternative, returns, fields, pagination. It front-loads the core purpose and usage, then adds operational details. Every sentence earns its place; there is no fluff. The bullet-point format improves scannability for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a search/list with 4 optional parameters and an existing output schema. The description covers purpose, when to use, alternative, return format (including the total count), parameter behavior, and pagination limits. It leaves nothing essential for an agent to call it correctly. The output schema handles return structure details, so the description is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all parameters documented. The description adds meaning beyond the schema: for fields, it clarifies it is a local projection that replaces the summary and that unknown names are silently ignored; for pagination, it specifies the refusal behavior beyond the min/max. While the baseline is 3 due to high schema coverage, the extra operational details justify a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (recherche), resource (produits de BoondManager), and mechanism (mots-clés et pagination). Clearly distinguishes from sibling boond_products_get by noting it returns only a one-line summary and is used when the ID is not known. The purpose is unambiguous and separates this search tool from the get-by-ID tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: to retrieve a product ID from its name or enumerate existing products. Provides the alternative: use boond_products_get if the ID is already known. Also explains the limitation (summary only) to justify when not to use. This is a textbook example of usage guidance with clear when/when-not and alternative naming.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_products_updateModifier un(e) produitAIdempotent
Met à jour un(e) produit existant(e), identifié(e) par son ID.
Quand : pour modifier quelques champs d'un enregistrement déjà en base.
Plutôt que : boond_products_create si l'enregistrement n'existe pas encore.
Mise à jour partielle : seuls les champs fournis sont écrits, les autres sont laissés en place.
Attention aux champs de type tableau, qui sont remplacés et non fusionnés.
Returns : confirmation et fiche mise à jour.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID du produit à modifier | |
| name | No | Nom du produit | |
| note | No | Description | |
| state | No | État | |
| taxRate | No | Taux de TVA (%) | |
| reference | No | Référence | |
| unitPrice | No | Prix unitaire HT |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Identifiant de l'entité créée/modifiée |
| type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-read-only, non-destructive, and idempotent behavior; the description adds valuable detail beyond that: partial update semantics and the explicit warning that array fields are replaced, not merged. It also states the return payload, with no contradiction against the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well structured: a one-line action, short usage conditions, and two bullet-style behavior notes. Every sentence carries useful information, and key points are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter update tool with full schema coverage, an output schema, and safety annotations, the description covers the essential operational context: when to use it, partial update behavior, array replacement caveat, and return shape. No critical gap remains for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so every parameter already has a description. The description adds a useful global note about partial writes, but it does not explain individual parameter meaning or format beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action and resource: 'Met à jour un(e) produit existant(e), identifié(e) par son ID.' It distinguishes this tool from boond_products_create with an explicit 'Plutôt que' note, and the title reinforces the update semantics without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' section explicitly says to use it for modifying a few fields of an existing record, and the 'Plutôt que' section directs the agent to boond_products_create when the record doesn't exist yet. This resolves the main create-vs-update decision clearly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_projects_actionsActions liées à un projetARead-onlyIdempotent
Récupère les actions (appels, emails, RDV, notes) d'un(e) projet, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_projects_get pour la fiche de base, ou boond_projects_search si l'ID est inconnu.
Returns : Liste des actions rattachées au projet. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the note 'Lecture seule' (redundant with annotations) and mentions the return type ('Liste des actions rattachées au projet'), but provides no further behavioral details such as pagination or error handling. Given the annotations carry the main burden, this is an adequate but minimal addition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, with three short sections (purpose, when, returns) that front-load the primary action and then provide routing guidance. There is no fluff, and every sentence earns its place, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with a single parameter and no output schema, the description covers everything needed: what it returns, when to use it, and how it differs from siblings. The annotations already handle safety, so no critical information is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents the single required parameter 'id' with a clear description ('Identifiant unique de l'entité BoondManager (numérique)') and a pattern. The description only repeats 'par son ID' without adding any deeper meaning, so it stays at the baseline 3 for 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Récupère' (retrieves), the resource 'actions (appels, emails, RDV, notes) d'un(e) projet', and the scope 'par son ID'. It explicitly differentiates from sibling tools by naming boond_projects_get and boond_projects_search as alternatives with different roles, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a 'Quand' clause specifying the exact scenario ('pour ne charger que cette section, sans le reste de la fiche') and a 'Plutôt que' clause naming two alternative tools with conditions for their use. This gives clear when-to-use and when-not-to-use guidance, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_projects_createCréer un(e) projetA
Crée un(e) projet dans BoondManager.
Quand : pour ajouter un(e) projet inexistant(e).
Plutôt que : boond_projects_update pour modifier un enregistrement existant, et boond_projects_search d'abord pour vérifier qu'il n'existe pas déjà.
Écriture réelle et non idempotente : deux appels identiques créent deux enregistrements (l'API ne déduplique pas).
Les ID de relations et les états/types sont des ID numériques BoondManager, à résoudre au préalable (recherches d'entités,
boond://dictionary/*).
Returns : confirmation, ID créé, et la fiche complète. structuredContent.id est réutilisable directement pour chaîner un appel.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Nom du projet / mission | |
| note | No | Notes / description du projet | |
| state | No | État du projet (0=en cours, 1=terminé, 2=archivé...) | |
| typeOf | No | Type de projet (ID du dictionnaire setting.typeOf.project) | |
| endDate | No | Date de fin (YYYY-MM-DD) | |
| companyId | No | ID de la société cliente | |
| contactId | No | ID du contact associé | |
| startDate | No | Date de début (YYYY-MM-DD) | |
| opportunityId | No | ID de l'opportunité liée |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Identifiant de l'entité créée/modifiée |
| type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description states that the write is real and non-idempotent, that duplicate calls create duplicate records, and that relation/state/type IDs must be resolved beforehand. This adds concrete behavioral context that annotations alone do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear labels ('Quand', 'Plutôt que', 'Returns') and bullet points. Every sentence earns its place, and important behavioral notes are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with 9 parameters and an output schema, the description covers when to use it, when not to, key ID resolution requirements, non-idempotency, and return value usage. An agent has enough context to call the tool correctly and chain the resulting ID.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers all parameters (100% coverage), so the baseline is 3. The description adds useful shared semantics by explaining that relation IDs and state/type fields are numeric BoondManager IDs to resolve via searches or boond://dictionary/*, which is meaningful beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb and resource ('Crée un projet dans BoondManager') and explicitly distinguishes itself from boond_projects_update and boond_projects_search. An agent can immediately identify what this tool does and how it differs from related project tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: use it to add a non-existent project, search first to avoid duplicates, and prefer update for existing records. This directly answers when to use the tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_projects_deleteSupprimer un(e) projetADestructive
Supprime définitivement un(e) projet de BoondManager.
Quand : uniquement sur demande explicite de l'utilisateur, et après avoir vérifié l'ID avec boond_projects_get.
Plutôt que : boond_projects_update pour désactiver ou changer l'état d'un enregistrement sans le détruire — c'est presque toujours l'intention réelle.
⚠️ Irréversible, sans corbeille côté API.
Si le client MCP annonce la capacité
elicitation, une confirmation est demandée à l'utilisateur final et un refus annule l'appel (structuredContent.deleted: false+reason) ; sinon la suppression part directement.
Returns : { id, deleted, reason? } — vérifier deleted, qui vaut false en cas de refus utilisateur.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| reason | No | Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur) |
| deleted | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the description goes beyond that by adding: irreversible, no recycle bin at API level, and the conditional confirmation behavior when `elicitation` is available. That adds context beyond structured data and gives the agent a clear safety picture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the action and conditions, uses bullets for warnings/return format, and every sentence serves a purpose. No filler, under-specification, or bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description explicitly documents the return value shape and how to interpret `deleted: false` with `reason`. Given the one-parameter input and the dense annotation set, nothing an agent needs to invoke this tool safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description adds the pointer to verifying the ID via `boond_projects_get`, and explains the meaning of ID in this context. This adds value beyond the schema's 'unique identifier' on the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Supprime définitivement un(e) projet') and clearly distinguishes itself from the sibling update tool via the 'Plutôt que' section. It is not a tautology and an agent can immediately understand the action and scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly specifies when to use it: only on explicit user request and after verifying the ID with `boond_projects_get` a direct told alternative. It also gives the counter-example (`boond_projects_update`) for deactivation, which routes the agent to the correct tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_projects_deliveries_groupmentsLivraisons et groupements d'un projetARead-onlyIdempotent
Récupère les livraisons et leurs groupements (lignes de mission facturables du projet) d'un(e) projet, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_projects_get pour la fiche de base, ou boond_projects_search si l'ID est inconnu.
Returns : Liste des livraisons du projet. Les ID de livraison qui s'y trouvent sont ceux qu'exige une ligne de note de frais. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context by noting the returned delivery IDs are those required for an expense report line, and explicitly states 'Lecture seule'. It doesn't contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with the core purpose front-loaded, followed by usage guidance and return value context. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one parameter and full schema coverage, the description is nearly complete. It explains the return value's purpose (delivery IDs for expense report lines) and the read-only nature. Minor gap: it doesn't describe the exact structure of the returned groupings, but this is acceptable given no output schema and the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the single 'id' parameter is already fully documented in the schema. The description adds that the ID is the project's ID, which is helpful but not essential beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves deliveries and their groupings for a project by ID, with a specific verb and resource. It also distinguishes itself from sibling tools by naming boond_projects_get and boond_projects_search as alternatives, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool ('pour ne charger que cette section, sans le reste de la fiche') and contrasts it with boond_projects_get for the base record and boond_projects_search when the ID is unknown. This provides clear usage guidance and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_projects_getDétails d'un(e) projetARead-onlyIdempotent
Récupère la fiche complète d'un(e) projet par son ID numérique.
Quand : après un boond_projects_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_projects_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
tabcible un onglet précis (information,technical-data,administrative,actions…) ; sanstab, seule la fiche de base est renvoyée, pas la réunion des onglets.Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_projects_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité (numérique) | |
| tab | No | Onglet spécifique à récupérer (information, technical, financial, actions, contracts, documents) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description aligns with these by stating 'Lecture seule'. It further adds behavioral context beyond annotations: omitting the tab parameter returns only the base record, and an unknown ID yields the raw BoondManager error. These are useful, non-obvious behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well structured: the core purpose is stated first, then usage conditions, then parameter behavior, and finally the return type and safety profile. Every sentence earns its place, and there is no redundant restating of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only getter with two parameters and no output schema, the description is largely complete. It explains when to use it, how to obtain a valid ID, the behavior of the optional tab, the error passthrough, and the general return format. The main missing piece is an exhaustive enumeration of available tab values, but the schema already lists some and the tool's scope may make that acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds real semantic value: it clarifies that tab targets a specific tab and explains the consequence of omitting it. It also specifies that the ID must be sourced from boond_projects_search, which is an actionable constraint beyond the simple numeric pattern in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Récupère la fiche complète d'un(e) projet par son ID numérique', which states the verb, resource, and key input. It also distinguishes itself from boond_projects_search by explaining that it is used after a search to obtain attributes not present in the list summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit 'Quand' condition (after boond_projects_search to get full attributes) and an explicit 'Plutôt que' alternative (boond_projects_search when the ID is unknown). It also warns that the ID must come from a search and never from a guess, leaving no ambiguity about selection and prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_projects_informationInformations générales d'un projetARead-onlyIdempotent
Récupère les informations générales (client, dates, état, description, responsable) d'un(e) projet, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_projects_get pour la fiche de base, ou boond_projects_search si l'ID est inconnu.
Returns : Fiche du projet. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that it returns the project sheet and is read-only, but otherwise does not disclose additional behavioral details beyond the annotations and the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, well-structured, and front-loaded: it states the action first, then gives usage context, alternatives, and return information in labeled sections. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only retrieval tool with annotations covering safety and idempotency, the description is complete. It states what fields are returned, when to use it, what alternatives exist, and that it is read-only. No output schema exists, but the description gives sufficient return context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The schema already documents the 'id' parameter, its type, pattern, and meaning. The description's reference to 'par son ID' adds no parameter semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies a specific verb ('Récupère'), resource ('informations générales d'un projet'), and input ('par son ID'), and lists the fields returned. It also explicitly distinguishes itself from sibling tools like boond_projects_get and boond_projects_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool ('pour ne charger que cette section') and when to prefer alternatives ('boond_projects_get' for the full record, 'boond_projects_search' if the ID is unknown). This gives an agent clear routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_projects_ordersBons de commande d'un projetARead-onlyIdempotent
Récupère les bons de commande d'un(e) projet, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_projects_get pour la fiche de base, ou boond_projects_search si l'ID est inconnu.
Returns : Liste des bons de commande adossés au projet. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is well covered. The description adds a statement that it returns a list of purchase orders and explicitly says 'Lecture seule', which repeats the annotation but provides minimal extra context. No contradictory behavior is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the main purpose, and organized into clear sections (Quand, Plutôt que, Returns). Every sentence earns its place; there is no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple one-parameter interface, no output schema, and complete annotations, the description covers the essential context: what it does, when to use it, alternatives, and the return type. It omits pagination/limit details but that is minor for a straightforward list retrieval.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: the id parameter is fully described with its pattern and meaning. The description only repeats 'par son ID' without adding any new detail about format, usage, or constraints, so it adds no value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Récupère' = retrieves), a precise resource ('bons de commande d'un projet'), and the lookup key (project ID). It clearly distinguishes from siblings by naming boond_projects_get and boond_projects_search as alternatives, and the resource is distinct from generic boond_orders tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' section explicitly states the condition for use (load only this section without the rest of the record). The 'Plutôt que' section names the two logical alternatives (boond_projects_get for the base record, boond_projects_search if the ID is unknown), giving an agent unambiguous routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_projects_productivityProductivité d'un projetARead-onlyIdempotent
Récupère les données de productivité (temps passé, jours consommés) d'un(e) projet, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_projects_get pour la fiche de base, ou boond_projects_search si l'ID est inconnu.
Returns : Consommé du projet — du réalisé, contrairement à boond_projects_simulation. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish read-only, idempotent, non-destructive behavior, so the description does not need to restate those. It adds useful behavioral context by clarifying that the returned values are 'Consommé du projet' (actuals) rather than simulated data, which is a meaningful semantic distinction beyond the structured metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and organized with clear keywords ('Quand', 'Plutôt que', 'Returns'). Every sentence contributes actionable guidance — what it returns, when to use it, which sibling to prefer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has one parameter, is fully covered by the schema, and has meaningful annotations. The description provides the purpose, the usage conditions, and the nature of the returned data (`temps passé`, `jours consommés`, actuals vs. simulation), making it complete enough for an agent to call correctly without an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema documents the single `id` parameter fully with type, pattern, and description. The description's 'par son ID' adds no new parameter meaning; it merely restates what the schema already says. With 100% schema description coverage, a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action ('Récupère les données de productivité'), a precise resource ('d'un projet'), and the fields involved ('temps passé, jours consommés'). It also differentiates the tool from siblings by stating it loads only the productivity section, unlike `boond_projects_get` or `boond_projects_search`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool ('pour ne charger que cette section, sans le reste de la fiche') and names alternatives with the exact condition for choosing them: `boond_projects_get` for the base record, `boond_projects_search` when the ID is unknown. It also distinguishes from `boond_projects_simulation`, leaving little ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_projects_purchasesAchats d'un projetARead-onlyIdempotent
Récupère les achats et la sous-traitance d'un(e) projet, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_projects_get pour la fiche de base, ou boond_projects_search si l'ID est inconnu.
Returns : Liste des achats imputés au projet. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful behavioral context by stating it returns a list of purchases charged to the project and explicitly notes 'Lecture seule', which reinforces the read-only nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured with labeled sections: the core action, when to use it, alternatives, and the return type. Every sentence adds value and the key scoping information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read-only fetch with no output schema, the description provides the essential context: what it returns, when to use it, and how it differs from siblings. It does not describe pagination or response field formatting, but these are minor gaps given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the single parameter is already fully documented as a numeric BoondManager entity ID. The description only repeats 'par son ID' without adding new semantic detail, matching the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb and resource: 'Récupère les achats et la sous-traitance d'un(e) projet, par son ID.' It also explicitly names sibling alternatives and states what this tool does not do, making it easily distinguishable from boond_projects_get and boond_projects_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Quand : pour ne charger que cette section, sans le reste de la fiche' directly states when to use it. It also names the alternatives: boond_projects_get for the base record and boond_projects_search when the ID is unknown, giving the agent explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_projects_searchRechercher des projetsARead-onlyIdempotent
Recherche des projets / missions dans BoondManager avec filtres serveur.
Plutôt que : boond_opportunities_search pour l'avant-vente — un projet est une affaire déjà gagnée.
Cas d'usage courants :
• Mes projets sans connaître son propre ID : perimeterDynamic: ["data"]. Pour "projets de X" : perimeterManagers: [<X_id>].
• États / types : projectStates: [<id>] (dictionnaire setting.state.project), projectTypes: [<id>] (setting.typeOf.project). IDs entiers.
• Société cliente : companies: [<companyId>] (filtre les projets rattachés à ces sociétés).
• Lié à un contact / opportunité / contrat / ressource / produit : utiliser keywords avec préfixes — "PRJ<id>" (projet), "CSOC<id>" (société), "CCON<id>" (contact), "AO<id>" (opportunité), "CTR<id>" (contrat), "COMP<id>" (ressource), "PROD<id>" (produit), "MIS<id>" (livraison).
• Métier : activityAreas, expertiseAreas, flags (tags).
• Période : period: "running" (en cours), "created", "started", "stopped", "closed", "updated", "hasAdditionalDataOrPurchase" + startDate/endDate. Ex: projets en cours en 2026 → period: "running", startDate: "2026-01-01", endDate: "2026-12-31".
Tri : sort: "startDate"|"endDate"|"reference"|"company.name"|"mainManager.lastName" + order.
Returns : liste paginée des projets. Utiliser boond_projects_get ou les outils d'onglets pour le détail.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.Pagination :
pageSize1–500 (défaut 30),page1–100 — au-delà : refus, affiner les filtres.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (défaut: 1, max: 100) | |
| sort | No | Champ de tri (ex: lastName, firstName, updateDate) | |
| flags | No | IDs de tags. | |
| order | No | Ordre de tri (asc/desc) | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| period | No | Filtre temporel : 'running' (en cours), 'created', 'started', 'stopped', 'closed', 'updated', 'hasAdditionalDataOrPurchase'. À combiner avec `startDate` + `endDate`. | |
| endDate | No | Date de fin (YYYY-MM-DD), à utiliser avec `period`. | |
| keywords | No | Mots-clés. Pour cibler par ID préfixé : 'PRJnnn' (projet), 'CSOCnnn' (société), 'CCONnnn' (contact), 'AOnnn' (opportunité), 'COMPnnn' (ressource), 'CTRnnn' (contrat). | |
| pageSize | No | Nombre de résultats par page (max: 500, défaut: 30) | |
| companies | No | IDs de sociétés clientes : projets rattachés à ces sociétés. | |
| startDate | No | Date de début (YYYY-MM-DD), à utiliser avec `period`. | |
| projectTypes | No | IDs de types de projet (dictionnaire setting.typeOf.project). | |
| activityAreas | No | IDs de secteurs d'activité. | |
| projectStates | No | IDs d'états de projet (dictionnaire setting.state.project). | |
| expertiseAreas | No | IDs de domaines d'expertise. | |
| perimeterPoles | No | IDs de pôles. Conserve les entités dont le responsable appartient à ces pôles. | |
| narrowPerimeter | No | Si true, jointure ET entre les filtres `perimeter*` (au lieu de OU par défaut). | |
| perimeterDynamic | No | Périmètre dynamique relatif à l'utilisateur courant (raccourci sans avoir à connaître son propre ID). Valeurs : 'data' (mes propres données), 'managers' (mon équipe / mes N-1), 'agencies' (mes agences), 'poles' (mes pôles), 'businessUnits' (mes BU). Combinable. | |
| perimeterAgencies | No | IDs d'agences. Conserve les entités dont le responsable appartient à ces agences. | |
| perimeterManagers | No | IDs des managers (ressources). Conserve les entités dont le responsable est l'un de ces managers. Pour 'mon équipe / N-1 d'une personne X', passer [X_id]. Obtenir son propre ID via boond_application_current_user. | |
| perimeterBusinessUnits | No | IDs de business units. Conserve les entités dont le responsable appartient à ces BU. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Nombre d'éléments retournés sur cette page |
| items | Yes | |
| total | No | Nombre total de résultats côté BoondManager |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover readOnly/idempotent/non-destructive safety. The description adds substantial behavioral context: the MCP-side projection behavior of 'fields' (never transmitted to the API, unknown names ignored), the hard pagination refusal beyond page 100/pageSize 500, and the semantics of period values with a concrete example. No contradiction with annotations; in fact it enriches them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long (~350 words) but densely informative and logically organized: purpose, sibling contrast, use-case bullets by filter type, sort, returns, then projection/pagination caveats. The bullet structure keeps it scannable. Given 21 parameters, the length is largely justified, though a few phrases could be trimmed without loss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 21 parameters, an output schema present, and annotations covering safety, the description covers the common usage patterns, pagination limits, projection behavior, and period semantics thoroughly. Minor gap: the schema's sort example values (lastName, firstName, updateDate) conflict with the description's listed values (startDate, endDate, reference, company.name, mainManager.lastName), leaving the exact sort enum slightly ambiguous. Still, completeness is high.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 100% schema coverage, the description materially enriches parameter meaning: it documents the keyword ID-prefix system (PRJ, CSOC, CCON, AO, CTR, COMP, PROD, MIS), explains perimeterDynamic values relative to the current user, clarifies perimeterManagers semantics, and gives a worked example (projets en cours 2026 → period+startDate+endDate). It also flags that IDs are integers. This far exceeds baseline schema value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb+resource statement: 'Recherche des projets / missions dans BoondManager avec filtres serveur.' It immediately differentiates from the closest sibling, boond_opportunities_search, by defining a project as a won deal versus pre-sales. This leaves no ambiguity about what the tool returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance and names the alternative (boond_opportunities_search for pre-sales). It also enumerates common use cases with concrete parameter examples (perimeterDynamic for 'mes projets', period values, keyword prefixes), routes to detail tools (boond_projects_get), and documents pagination refusal behavior beyond limits. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_projects_simulationSimulation financière d'un projetARead-onlyIdempotent
Récupère la simulation financière (marge, CA, coûts, rentabilité) d'un(e) projet, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_projects_get pour la fiche de base, ou boond_projects_search si l'ID est inconnu.
Returns : Chiffrage du projet. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so safety is covered. The description adds that it returns only the 'chiffrage' (financial estimation) but no additional behavioral details like pagination or auth. It does not contradict annotations, but adds minimal value beyond them; it restates 'Lecture seule' which is redundant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief, front-loaded with purpose, and uses tagged labels (Quand, Plutôt que, Returns) to structure guidance. No extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID tool with full schema coverage, safety annotations, and no output schema, the description is complete: it states the resource, the condition for use, and the return content. Nothing missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents the single 'id' parameter with a clear description and pattern. The description adds no additional parameter semantics beyond what the schema provides, which meets the baseline for 100% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specifically that it retrieves financial simulation (margin, revenue, costs, profitability) for a project by ID, and explicitly distinguishes it from boond_projects_get and boond_projects_search, making sibling differentiation clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use (to load only the financial section without the rest of the project record) and contrasts with alternatives: boond_projects_get for the full base record and boond_projects_search when the ID is unknown. This gives clear routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_projects_updateModifier un(e) projetAIdempotent
Met à jour un(e) projet existant(e), identifié(e) par son ID.
Quand : pour modifier quelques champs d'un enregistrement déjà en base.
Plutôt que : boond_projects_create si l'enregistrement n'existe pas encore.
Mise à jour partielle : seuls les champs fournis sont écrits, les autres sont laissés en place.
Attention aux champs de type tableau, qui sont remplacés et non fusionnés.
Returns : confirmation et fiche mise à jour.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID du projet à modifier | |
| name | No | Nom du projet | |
| note | No | Notes | |
| state | No | État du projet | |
| typeOf | No | Type de projet (ID du dictionnaire setting.typeOf.project) | |
| endDate | No | Date de fin (YYYY-MM-DD) | |
| startDate | No | Date de début (YYYY-MM-DD) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Identifiant de l'entité créée/modifiée |
| type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal readOnlyHint=false, destructiveHint=false, and idempotentHint=true. The description adds valuable behavioral context beyond those annotations: partial update semantics, array fields being replaced rather than merged, and what is returned. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact sentences with no filler: the core action, the usage condition, the critical partial-update warning, and the return value. Information is front-loaded and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an update tool with one required ID, six optional fields, useful annotations, and an output schema, the description covers what an agent needs: how to select it, what fields are affected, the array-replacement caveat, and the response shape. Nothing important is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with every parameter documented in the input schema itself. The description does not add much per-parameter semantics, but it does clarify the update behavior (only provided fields are written), so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Met à jour'), the resource ('un(e) projet existant(e)'), and the identifier used ('son ID'). It explicitly distinguishes itself from the create sibling, so an agent can tell what this tool is for without inspecting schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides an explicit 'Quand' condition (modify a few fields of an existing record) and an explicit alternative ('Plutôt que : boond_projects_create si l'enregistrement n'existe pas encore'). This gives clear selection guidance versus its most relevant sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_provider_invoices_createCreer une facture fournisseurA
Crée une facture fournisseur (facture reçue d'un prestataire).
Quand : pour enregistrer la facture émise par un sous-traitant.
Plutôt que : boond_invoices_create pour une facture de vente adressée à un client — les deux sens ne partagent pas d'endpoint.
resource,providerCompanyetproviderContactsont attendus sous forme d'ID numériques.Écriture non idempotente.
Returns : confirmation et fiche de la facture fournisseur créée.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | Etat de la facture fournisseur | |
| endDate | Yes | Date de fin de periode (YYYY-MM-DD) | |
| currency | No | Devise Boond | |
| companyId | No | ID de la societe fournisseur, mappe vers providerCompany | |
| contactId | No | ID du contact fournisseur, mappe vers providerContact | |
| reference | Yes | Reference de la facture fournisseur | |
| startDate | Yes | Date de debut de periode (YYYY-MM-DD) | |
| resourceId | Yes | ID de la ressource portee par la facture fournisseur | |
| invoiceDate | No | Date de facture (YYYY-MM-DD) | |
| exchangeRate | No | Taux de change | |
| currencyAgency | No | Devise agence | |
| amountExcludingTax | No | Montant HT | |
| amountIncludingTax | No | Montant TTC | |
| exchangeRateAgency | No | Taux de change agence |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation as non-read-only and non-idempotent; the description reinforces this with Écriture non idempotente and adds the response expectation (confirmation et fiche de la facture fournisseur créée). It does not discuss permissions, duplicate handling, or errors, but it discloses the core side effect and return behavior beyond the boolean hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well organized: purpose, when/alternative, caveats, then return value. Every sentence earns its place, and the routing guidance is front-loaded ahead of the parameter caveats.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create operation with 14 parameters and no output schema, the description provides the essential context: exact purpose, sibling differentiation, non-idempotent write, and a return expectation, while the schema handles parameter semantics. A fully complete definition might also cover duplicate-reference or error behavior, but an agent has enough to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented and the baseline is met without extra parameter detail. The added caveat about resource, providerCompany, and providerContact being numeric IDs is helpful in intent, but it uses names that do not exactly match the schema properties resourceId, companyId, and contactId.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with Crée une facture fournisseur and immediately qualifies it as facture reçue d'un prestataire, pinning down exactly what the tool creates. It also names the sibling boond_invoices_create when differentiating, so an agent can tell this tool apart from the sales-invoice tool without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit Quand clause (pour enregistrer la facture émise par un sous-traitant) and an explicit Plutôt que clause naming boond_invoices_create for sale invoices. This is direct when-to-use and when-not-to-use guidance with the alternative named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_provider_invoices_getDetails d'une facture fournisseurARead-onlyIdempotent
Récupère la fiche complète d'un(e) facture fournisseur par son ID numérique.
Quand : après un boond_provider_invoices_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_provider_invoices_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_provider_invoices_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states the operation is read-only, which reinforces the annotations. It also discloses error behavior for unknown IDs ('remonte l'erreur BoondManager telle quelle'), which is useful operational knowledge not present in the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the core purpose, and organized into clear usage sections ('Quand', 'Plutôt que', 'Returns'). There is no redundant repetition of schema fields or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter get-by-ID tool, the description covers the entry condition, the alternative tool, the error behavior, and the return type. Nothing an agent needs to safely invoke this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully describes the 'id' parameter as a numeric entity ID, but the description adds important usage nuance: the ID must come from boond_provider_invoices_search and must never be guessed. This goes beyond the schema by explaining the provenance and validity of the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Récupère la fiche complète') and clearly identifies the resource (a supplier invoice by numeric ID). It also explicitly contrasts this tool with boond_provider_invoices_search, telling the agent exactly what this tool does and does not do.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states exactly when to use this tool ('après un boond_provider_invoices_search') and when not to use it ('Plutôt que : ... si l'ID n'est pas connu'). This gives the agent a clear decision rule for choosing between this tool and its search sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_provider_invoices_searchRechercher des factures fournisseurARead-onlyIdempotent
Liste et recherche les factures fournisseur (factures reçues des prestataires).
Quand : pour suivre les factures d'achat, par fournisseur, état ou période.
Plutôt que : boond_invoices_search pour les factures de vente adressées aux clients — sens opposé, endpoint distinct.
Returns : page de résumés de factures fournisseur (référence, date, montants). Lecture seule.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.Pagination :
pageSize1–500 (défaut 30),page1–100 — au-delà : refus, affiner les filtres.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numero de page (max: 100) | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| keywords | No | Mots-cles de recherche | |
| pageSize | No | Resultats par page | |
| companyId | No | Filtrer par ID societe fournisseur | |
| resourceId | No | Filtrer par ID ressource via mot-cle COMP<id> |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds non-annotation details: the fields parameter is an MCP-side projection never transmitted to the API, unknown field names are ignored, and pagination limits (pageSize 1–500, page 1–100). These are useful behaviors beyond what annotations cover, though the description could mention the read-only nature again but that's redundant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with clear labels (Quand, Plutôt que, Returns, and bullet points for fields and pagination). It's front-loaded with the core purpose and use case. Some detail on fields could be condensed, but it remains efficient and informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main intent, return type (page of summaries), and pagination, but promises use cases 'par fournisseur, état ou période' without explicit parameters for state or period—only companyId is clear for supplier filtering. This gap may confuse an agent on how to filter by status or period. Given no output schema, the description also doesn't detail the summary fields beyond reference, date, and amounts, but that's acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all parameters described in the schema), so baseline is 3. The description goes beyond by explaining the fields parameter's MCP-side behavior and pagination constraints, which helps an agent understand how to use them effectively. This adds enough value to warrant a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists and searches supplier invoices (factures reçues des prestataires), and explicitly differentiates from boond_invoices_search for sales invoices. The verb 'Liste et recherche' and the resource 'factures fournisseur' make the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes 'Quand' (when to use) explaining it's for tracking purchase invoices by supplier, status, or period, and 'Plutôt que' (rather than) explicitly naming boond_invoices_search as the alternative for sales invoices. This provides clear guidance on selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_purchases_createCréer un achat/sous-traitanceA
Crée un achat ou une ligne de sous-traitance.
Quand : pour engager une dépense fournisseur, généralement rattachée à un projet.
Plutôt que : boond_provider_invoices_create pour la facture reçue du fournisseur — l'achat est l'engagement, la facture fournisseur en est le règlement attendu.
Écriture non idempotente.
Les ID de société, contact et projet sont des ID numériques BoondManager, à résoudre au préalable via les recherches correspondantes.
Returns : confirmation et fiche de l'achat créé.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Notes / commentaires | |
| state | No | État de l'achat | |
| title | No | Titre de l'achat/sous-traitance | |
| endDate | No | Date de fin (YYYY-MM-DD) | |
| companyId | No | ID de la société fournisseur | |
| contactId | No | ID du contact fournisseur | |
| projectId | No | ID du projet associé | |
| startDate | No | Date de début (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-idempotent and not read-only, so the description's mention of 'Écriture non idempotente' adds value beyond annotations by clarifying write behavior. It also discloses a critical prerequisite: that company, contact, and project IDs must be resolved beforehand via searches. However, it doesn't detail the full response structure beyond 'confirmation et fiche' — but that is acceptable given no output schema exists. Could mention potential errors or side effects, but the disclosed constraints are valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, structured with clear sections for when to use, alternative tool, and behavioral notes. It front-loads the core action and usage context in the first line, then adds important clarification. The bullet point about ID resolution is succinct. Not overly long, but could be slightly tighter by removing the 'Returns' line if it's redundant with output schema — but since no output schema exists, it's justified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, creation action) and that no output schema exists, the description covers the essential context: when to use, alternative, ID resolution prerequisite, and return value existence. It doesn't describe what the 'fiche' contains or how to interpret the response, but given the schema fully documents each parameter, this is adequate. The only minor gap is whether all 8 parameters are required despite 'required' being 0; the description could clarify which are essential for a valid creation, but the tool seems flexible.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage with descriptions for all parameters, so the baseline is 3. The description adds context that IDs are numeric BoondManager IDs and need resolution, which supplements the schema, but it doesn't add meaning for each parameter beyond what the schema already states (e.g., state is 'État de l'achat', but no explanation of possible values). It does not over-credit, but the prerequisite note enhances the meaning of companyId, contactId, and projectId.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Crée un achat ou une ligne de sous-traitance') and the resource (achat/sous-traitance), which matches the tool name and distinguishes it from related creation tools like provider invoices and orders. It specifies the business purpose (engager une dépense fournisseur) and differentiates from siblings by mentioning the alternative tool for invoices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use context ('pour engager une dépense fournisseur') and explicitly names the alternative tool (`boond_provider_invoices_create`) with the condition for choosing it (invoice versus purchase commitment). This clearly routes the agent away from confusion with sibling creation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_purchases_deleteSupprimer un achat/sous-traitanceADestructive
Supprime définitivement un(e) achat de BoondManager.
Quand : uniquement sur demande explicite de l'utilisateur, et après avoir vérifié l'ID avec boond_purchases_get.
Plutôt que : boond_purchases_update pour désactiver ou changer l'état d'un enregistrement sans le détruire — c'est presque toujours l'intention réelle.
⚠️ Irréversible, sans corbeille côté API.
Si le client MCP annonce la capacité
elicitation, une confirmation est demandée à l'utilisateur final et un refus annule l'appel (structuredContent.deleted: false+reason) ; sinon la suppression part directement.
Returns : { id, deleted, reason? } — vérifier deleted, qui vaut false en cas de refus utilisateur.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| reason | No | Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur) |
| deleted | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite annotations already confirming destructive operation, the description adds valuable behavioral detail: deletion is permanent with no trash, confirmation behavior depends on MCP elicitation support, and refusal yields structuredContent.deleted false with a reason. This goes beyond the schema and annotations and fully discloses the side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured, with the core action in the first sentence, clearly labeled Quann/Plutôt que sections, and short bullet points for warnings. Every sentence conveys a useful decision or behavioral fact; there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with one parameter, this description covers when it should be invoked, how to protect against wrong deletion, what happens without confirmation, and the exact return object. There is no important operational gap for an agent invoking the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully describes the single id parameter with pattern and meaning, so the baseline is high. The description adds the semantic requirement that the id must be verified through boond_purchases_get, reinforcing that it must correspond to an existing purchase and not just be a numeric string.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the exact action: permanently delete a purchase/subcontracting record in BoondManager. It clearly differentiates the tool from related operations by naming boond_purchases_get for ID verification and boond_purchases_update as the update alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit condition for use: only on explicit user request after verifying the ID with boond_purchases_get. It also names the alternative—boond_purchases_update for deactivation or state changes without deletion—and even indicates that updates are much more commonly the intended action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_purchases_getDétails d'un achat/sous-traitanceARead-onlyIdempotent
Récupère la fiche complète d'un(e) achat par son ID numérique.
Quand : après un boond_purchases_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_purchases_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_purchases_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint, idempotentHint, and destructiveHint or absent. The description adds important behavior on top: an unknown ID propagates the raw BoondManager error, and the ID must come from a search, never from guesswork. This goes beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well structured. The main verb is the first sentence, followed by explicit 'Quand' and 'Plutôt que' sections. The warning about invalid IDs is an important constraint, and the return type is stated at the end. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple ID-based fetch operation with one parameter and no output schema, the description covers all relevant aspects: what to do next, what has to be avoided, the error behavior for an unknown ID, and the return shape (JSON of the entity with attributes and relations). It also explicitly states the operation is read-only, reinforcing the annotation. No important information an agent needs is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the 'id' parameter with a pattern and description, and 100% coverage means the schema is sufficient. The description adds further meaning by stating the ID is numeric, must come from 'boond_purchases_search', and that the tool rejects names. This is a clear semantic extension of the schema merely declaring a string ID.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a clear statement: 'Récupère la fiche complète d'un(e) achat par son ID numérique.' It identifies the resource (achat), the operation (récupère), and the input key (ID). It also distinguishes itself from the search sibling by stating it returns attributes that do not appear in the list summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit 'Quand' guidance: use it after boond_purchases_search. It also gives a direct alternative and condition: rather than using it when the ID is unknown, because this tool does not accept a name. This is concrete, actionable guidance with a clear fallback.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_purchases_searchRechercher des achats/sous-traitanceARead-onlyIdempotent
Recherche des achats et sous-traitances dans BoondManager.
Quand : pour suivre les engagements de dépense et la sous-traitance.
Plutôt que : boond_provider_invoices_search pour les factures effectivement reçues : l'achat est l'engagement, la facture fournisseur le document qui le solde.
Args:
keywords, companyId, projectId: Filtres
page, pageSize: Pagination
Returns: Liste des achats correspondants.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (max: 100) | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| keywords | No | Mots-clés de recherche | |
| pageSize | No | Résultats par page | |
| companyId | No | Filtrer par ID société | |
| projectId | No | Filtrer par ID projet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already include readOnlyHint=true and destructiveHint=false, indicating a safe read operation. The description adds value by explaining the fields parameter is a MCP-side projection that is never sent to the API, and that unknown field names are ignored. This goes beyond annotations by clarifying internal behavior, though it doesn't detail other behavioral aspects like pagination limits or response structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with clear sections ('Quand', 'Plutôt que', 'Args', 'Returns', and a note on `fields`). It front-loads the purpose and usage, and the paragraphs are efficient without excessive verbosity. Minor redundancy in the args list but overall well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with no output schema and annotations covering safety, the description is fairly complete. It covers purpose, usage context, and parameter roles alphabetically. It lacks explicit details on response structure (e.g., summary format) but this may not be necessary given the tool's simplicity. The `fields` parameter behavior is explained, which is useful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters including defaults and constraints. The description lists 'keywords, companyId, projectId: Filtres' and 'page, pageSize: Pagination', which adds a light grouping but doesn't elaborate on syntax or meaning beyond the schema. This is baseline 3, as the description provides minimal extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches for purchases and subcontracting ('achats et sous-traitances') in BoondManager, with a specific verb ('Recherche') and resource. It distinguishes itself from a sibling tool by noting the difference between purchase orders and provider invoices. However, it could be more explicit about its exact scope relative to other search tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' section explicitly states when to use this tool (to track spending commitments and subcontracting) and contrasts it with `boond_provider_invoices_search` for received invoices, clarifying the purchase is the commitment and the invoice is the settlement document. This provides clear usage guidance and alternative selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_reporting_companiesReporting sociétésARead-onlyIdempotent
Reporting des sociétés (CA, marge, activité...).
Quand : pour obtenir des agrégats (CA, marge, taux, volumes) sur un périmètre et une période.
Plutôt que : boond_companies_search pour la liste des enregistrements eux-mêmes : ce reporting renvoie des totaux calculés, pas les lignes qui les composent.
Filtres clés : périmètre (perimeterDynamic / perimeterManagers / perimeterAgencies…), période (period, periodDynamic), companiesStates, companies, maxCompanies, showPercentage.
⚠️
startDate+endDate(YYYY-MM-DD) sont REQUIS : l'API répond 422 sans eux.Sans filtre de périmètre, l'agrégation porte sur tout le périmètre autorisé du compte — un total « entreprise » là où l'utilisateur attendait souvent son équipe.
Les états et types sont des ID entiers du dictionnaire (
boond_application_dictionary), pas des libellés.Une agrégation large peut durer plusieurs dizaines de secondes ; l'avancement est signalé via
notifications/progressquand le client fournit unprogressToken.
Returns : tableau d'indicateurs agrégés, rendu en texte. Lecture seule.
Pagination :
pageSize1–500 (défaut 30),page1–100 — au-delà : refus, affiner les filtres.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (défaut: 1, max: 100) | |
| endDate | Yes | Date de fin (YYYY-MM-DD). Requis par l'API. | |
| keywords | No | Mots-clés. | |
| pageSize | No | Nombre de résultats par page (max: 500, défaut: 30) | |
| useCache | No | Cache de reporting : 'withCache' (valeurs mises en cache) ou 'withoutCache' (recalcul, défaut). | |
| companies | No | Filtrer sur ces IDs de sociétés. | |
| startDate | Yes | Date de début (YYYY-MM-DD). Requis par l'API. | |
| scorecards | No | IDs des scorecards (indicateurs) à retourner. | |
| maxCompanies | No | Nombre de sociétés par page (1-10, défaut 1). Le nombre de résultats = sociétés × indicateurs. | |
| periodDynamic | No | Période dynamique relative à aujourd'hui (avec period='dynamicPeriod') : today, thisWeek, thisMonth, thisTrimester, thisSemester, thisYear, thisFiscalYear, yesterday, lastWeek, lastMonth, lastTrimester, lastSemester, lastYear, lastFiscalYear, tomorrow, nextWeek, nextMonth, nextTrimester, nextSemester, nextYear, nextFiscalYear, lastCustomPeriod, nextCustomPeriod. | |
| perimeterPoles | No | IDs de pôles. Conserve les entités dont le responsable appartient à ces pôles. | |
| showPercentage | No | Afficher les valeurs en pourcentage plutôt qu'en valeur réelle. | |
| companiesStates | No | IDs d'états de sociétés (dictionnaire setting.state.company). | |
| narrowPerimeter | No | Si true, jointure ET entre les filtres `perimeter*` (au lieu de OU par défaut). | |
| perimeterDynamic | No | Périmètre dynamique relatif à l'utilisateur courant (raccourci sans avoir à connaître son propre ID). Valeurs : 'data' (mes propres données), 'managers' (mon équipe / mes N-1), 'agencies' (mes agences), 'poles' (mes pôles), 'businessUnits' (mes BU). Combinable. | |
| perimeterAgencies | No | IDs d'agences. Conserve les entités dont le responsable appartient à ces agences. | |
| perimeterManagers | No | IDs des managers (ressources). Conserve les entités dont le responsable est l'un de ces managers. Pour 'mon équipe / N-1 d'une personne X', passer [X_id]. Obtenir son propre ID via boond_application_current_user. | |
| perimeterBusinessUnits | No | IDs de business units. Conserve les entités dont le responsable appartient à ces BU. | |
| periodDynamicParameters | No | Paramètres de la période personnalisée (utilisé avec periodDynamic=lastCustomPeriod/nextCustomPeriod). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and the description's 'Lecture seule' is consistent with them — no contradiction. Beyond annotations, the description discloses critical runtime behavior: the 422 response without startDate/endDate, the default whole-account aggregation trap, integer dictionary IDs instead of labels, multi-second latency with progressToken signaling, and pagination refusal beyond page 100/pageSize 500. This is exactly the operational context annotations cannot provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with scannable sections ('Quand', 'Plutôt que', 'Filtres clés') and bullet-pointed warnings. For a 19-parameter reporting tool with subtle default behaviors, the length is justified — every section carries distinct value, and the critical warnings are front-loaded before pagination details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 19 parameters and no output schema, the description is remarkably complete: it covers required parameters and their failure mode, default scope behavior, dictionary ID semantics, expected latency and progress signaling, return format ('tableau d'indicateurs agrégés, rendu en texte'), and pagination bounds. The only minor omission is where scorecard IDs originate, but the schema's field description and the dictionary reference cover the common case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3 — the schema already documents all 19 parameters. The description adds meaningful operational semantics on top: the 422 failure without startDate/endDate, the default whole-perimeter scope trap, and the note that companiesStates values are dictionary integer IDs, not labels. Relative to baseline it elevates understanding of the most error-prone parameters without restating the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Reporting des sociétés (CA, marge, activité...)' naming a specific verb (reporting), resource (companies), and metric types (revenue, margin, activity). It explicitly differentiates from the sibling `boond_companies_search`, stating this tool returns 'totaux calculés, pas les lignes qui les composent' — so an agent cannot confuse aggregate totals with record lists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' section states precisely when to use it — 'pour obtenir des agrégats (CA, marge, taux, volumes) sur un périmètre et une période'. The 'Plutôt que' section names `boond_companies_search` as the alternative for record lists and spells out the exclusion condition. This is explicit when/when-not guidance with a named sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_reporting_production_plansReporting plans de productionARead-onlyIdempotent
Reporting des plans de production (disponibilités, positionnements...).
Quand : pour obtenir des agrégats (CA, marge, taux, volumes) sur un périmètre et une période.
Plutôt que : boond_positionings_search pour la liste des enregistrements eux-mêmes : ce reporting renvoie des totaux calculés, pas les lignes qui les composent.
Filtres clés : périmètre (perimeterDynamic / perimeterManagers / perimeterAgencies…), période (period, periodDynamic), resourceTypes, resourceStates, positioningStates, positioningPeriod, showContracts, projects/contacts/companies.
⚠️
startDate+endDate(YYYY-MM-DD) sont REQUIS : l'API répond 422 sans eux.Sans filtre de périmètre, l'agrégation porte sur tout le périmètre autorisé du compte — un total « entreprise » là où l'utilisateur attendait souvent son équipe.
Les états et types sont des ID entiers du dictionnaire (
boond_application_dictionary), pas des libellés.Une agrégation large peut durer plusieurs dizaines de secondes ; l'avancement est signalé via
notifications/progressquand le client fournit unprogressToken.
Returns : tableau d'indicateurs agrégés, rendu en texte. Lecture seule.
Pagination :
pageSize1–500 (défaut 30),page1–100 — au-delà : refus, affiner les filtres.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (défaut: 1, max: 100) | |
| endDate | Yes | Date de fin (YYYY-MM-DD). Requis par l'API. | |
| contacts | No | Filtrer sur ces IDs de contacts. | |
| keywords | No | Mots-clés. | |
| pageSize | No | Nombre de résultats par page (max: 500, défaut: 30) | |
| projects | No | Filtrer sur ces IDs de projets. | |
| useCache | No | Cache de reporting : 'withCache' (valeurs mises en cache) ou 'withoutCache' (recalcul, défaut). | |
| companies | No | Filtrer sur ces IDs de sociétés. | |
| startDate | Yes | Date de début (YYYY-MM-DD). Requis par l'API. | |
| scorecards | No | IDs des scorecards (indicateurs) à retourner. | |
| periodDynamic | No | Période dynamique relative à aujourd'hui (avec period='dynamicPeriod') : today, thisWeek, thisMonth, thisTrimester, thisSemester, thisYear, thisFiscalYear, yesterday, lastWeek, lastMonth, lastTrimester, lastSemester, lastYear, lastFiscalYear, tomorrow, nextWeek, nextMonth, nextTrimester, nextSemester, nextYear, nextFiscalYear, lastCustomPeriod, nextCustomPeriod. | |
| resourceTypes | No | IDs de types de ressources (dictionnaire setting.typeOf.resource). | |
| showContracts | No | Afficher les contrats associés. | |
| perimeterPoles | No | IDs de pôles. Conserve les entités dont le responsable appartient à ces pôles. | |
| resourceStates | No | IDs d'états de ressources (dictionnaire setting.state.resource). | |
| narrowPerimeter | No | Si true, jointure ET entre les filtres `perimeter*` (au lieu de OU par défaut). | |
| perimeterDynamic | No | Périmètre dynamique relatif à l'utilisateur courant (raccourci sans avoir à connaître son propre ID). Valeurs : 'data' (mes propres données), 'managers' (mon équipe / mes N-1), 'agencies' (mes agences), 'poles' (mes pôles), 'businessUnits' (mes BU). Combinable. | |
| perimeterAgencies | No | IDs d'agences. Conserve les entités dont le responsable appartient à ces agences. | |
| perimeterManagers | No | IDs des managers (ressources). Conserve les entités dont le responsable est l'un de ces managers. Pour 'mon équipe / N-1 d'une personne X', passer [X_id]. Obtenir son propre ID via boond_application_current_user. | |
| positioningPeriod | No | 'created' (positionnements créés entre les dates, défaut) ou 'running' (en cours sur la période). | |
| positioningStates | No | IDs d'états de positionnement (dictionnaire setting.state.positioning). | |
| perimeterBusinessUnits | No | IDs de business units. Conserve les entités dont le responsable appartient à ces BU. | |
| periodDynamicParameters | No | Paramètres de la période personnalisée (utilisé avec periodDynamic=lastCustomPeriod/nextCustomPeriod). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal read-only and non-destructive behavior. The description goes well beyond that: it warns that missing startDate/endDate triggers a 422, that omitting perimeter filters aggregates over the entire account, that states/types are dictionary integer IDs, and that large aggregations can take tens of seconds with progress signaled via notifications/progress. These are rich behavioral disclosures not present in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but tightly organized: purpose, when/alternative, key filters, then bullet-pointed caveats and return/pagination details. Every sentence adds a distinct piece of information, and the critical warnings (required dates, perimeter default) are front-loaded. There is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 23 parameters and no output schema, this description covers nearly everything an agent needs: purpose, usage, required params, default perimeter behavior, dictionary IDs, performance, progress, return type, and pagination. It falls short slightly because the return value is described only vaguely as 'tableau d'indicateurs agrégés, rendu en texte', and the phantom 'period' reference introduces ambiguity about which parameter is actually used.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds real meaning on top: the critical 'no perimeter = whole account' semantic, the dictionary-ID requirement for state/type parameters, and pagination limits. It loses a point because it references a 'period' parameter that does not exist in the schema, potentially leading an agent to send an unknown property.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it reports production plans and returns aggregates (CA, marge, taux, volumes) for a perimeter and period. It also distinguishes itself from boond_positionings_search by explicitly noting this tool returns calculated totals, not the underlying lines, which separates it from the most likely sibling confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' clause clearly defines when to use this tool (for aggregates) and the 'Plutôt que' clause explicitly names the alternative boond_positionings_search and the condition that selects it (wanting the records themselves vs. totals). This is direct, actionable guidance with no inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_reporting_projectsReporting projetsARead-onlyIdempotent
Reporting des projets (CA, marge, rentabilité...).
Quand : pour obtenir des agrégats (CA, marge, taux, volumes) sur un périmètre et une période.
Plutôt que : boond_projects_search pour la liste des enregistrements eux-mêmes : ce reporting renvoie des totaux calculés, pas les lignes qui les composent.
Filtres clés : périmètre (perimeterDynamic / perimeterManagers / perimeterAgencies…), période (period, periodDynamic), projectTypes, projectStates, resources, projects, contacts, companies, maxProjects.
Sans filtre de périmètre, l'agrégation porte sur tout le périmètre autorisé du compte — un total « entreprise » là où l'utilisateur attendait souvent son équipe.
Les états et types sont des ID entiers du dictionnaire (
boond_application_dictionary), pas des libellés.Une agrégation large peut durer plusieurs dizaines de secondes ; l'avancement est signalé via
notifications/progressquand le client fournit unprogressToken.
Returns : tableau d'indicateurs agrégés, rendu en texte. Lecture seule.
Pagination :
pageSize1–500 (défaut 30),page1–100 — au-delà : refus, affiner les filtres.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (défaut: 1, max: 100) | |
| endDate | No | Date de fin (YYYY-MM-DD). | |
| contacts | No | Filtrer sur ces IDs de contacts. | |
| keywords | No | Mots-clés. | |
| pageSize | No | Nombre de résultats par page (max: 500, défaut: 30) | |
| projects | No | Filtrer sur ces IDs de projets. | |
| useCache | No | Cache de reporting : 'withCache' (valeurs mises en cache) ou 'withoutCache' (recalcul, défaut). | |
| companies | No | Filtrer sur ces IDs de sociétés. | |
| resources | No | Filtrer sur ces IDs de ressources. | |
| startDate | No | Date de début (YYYY-MM-DD). | |
| scorecards | No | IDs des scorecards (indicateurs) à retourner. | |
| maxProjects | No | Nombre de projets par page (1-10, défaut 1). Le nombre de résultats = projets × indicateurs. | |
| projectTypes | No | IDs de types de projets (dictionnaire setting.typeOf.project). | |
| periodDynamic | No | Période dynamique relative à aujourd'hui (avec period='dynamicPeriod') : today, thisWeek, thisMonth, thisTrimester, thisSemester, thisYear, thisFiscalYear, yesterday, lastWeek, lastMonth, lastTrimester, lastSemester, lastYear, lastFiscalYear, tomorrow, nextWeek, nextMonth, nextTrimester, nextSemester, nextYear, nextFiscalYear, lastCustomPeriod, nextCustomPeriod. | |
| projectStates | No | IDs d'états de projets (dictionnaire setting.state.project). | |
| perimeterPoles | No | IDs de pôles. Conserve les entités dont le responsable appartient à ces pôles. | |
| narrowPerimeter | No | Si true, jointure ET entre les filtres `perimeter*` (au lieu de OU par défaut). | |
| perimeterDynamic | No | Périmètre dynamique relatif à l'utilisateur courant (raccourci sans avoir à connaître son propre ID). Valeurs : 'data' (mes propres données), 'managers' (mon équipe / mes N-1), 'agencies' (mes agences), 'poles' (mes pôles), 'businessUnits' (mes BU). Combinable. | |
| perimeterAgencies | No | IDs d'agences. Conserve les entités dont le responsable appartient à ces agences. | |
| perimeterManagers | No | IDs des managers (ressources). Conserve les entités dont le responsable est l'un de ces managers. Pour 'mon équipe / N-1 d'une personne X', passer [X_id]. Obtenir son propre ID via boond_application_current_user. | |
| perimeterBusinessUnits | No | IDs de business units. Conserve les entités dont le responsable appartient à ces BU. | |
| periodDynamicParameters | No | Paramètres de la période personnalisée (utilisé avec periodDynamic=lastCustomPeriod/nextCustomPeriod). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context beyond annotations: the default perimeter is the entire authorized account scope, aggregation can take tens of seconds with progress signaled via notifications/progress, and pagination limits are enforced (pageSize 1-500, page 1-100). It also notes the return is rendered as text. This is strong supplementary behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (Quand, Plutôt que, Filtres clés, Returns, Pagination) and front-loads the core purpose. It is longer than average, but the length is justified given 22 parameters and the need to explain perimeter semantics, dictionary IDs, and performance characteristics. Every section earns its place; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex reporting tool with 22 parameters, no required params, and no output schema, the description covers the essential behavioral aspects: what it returns, how to filter, the default scope trap, performance expectations, and pagination constraints. It doesn't detail the exact structure of the returned indicators, but since there is no output schema and the description says 'tableau d'indicateurs agrégés, rendu en texte', an agent has enough to call it correctly. The reference to boond_application_dictionary for IDs is a useful pointer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaningful semantic context beyond the schema: it groups filters into perimeter vs period vs project filters, explains that perimeterDynamic is a shortcut for the current user, clarifies that projectTypes/projectStates are dictionary IDs (not labels), and explains the maxProjects multiplication effect ('projets × indicateurs'). It also warns about the default perimeter behavior, which is critical for correct use. This exceeds the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear statement: 'Reporting des projets (CA, marge, rentabilité...)' and explicitly contrasts itself with boond_projects_search, which returns raw records. It names the resource (projects), the operation (aggregated reporting), and the key metrics (CA, marge, taux, volumes). This distinguishes it from sibling reporting tools like boond_reporting_companies and boond_reporting_resources by the resource being aggregated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use it ('Quand : pour obtenir des agrégats...') and when not to ('Plutôt que : boond_projects_search pour la liste des enregistrements eux-mêmes'). It also provides key filter guidance, warns about the default perimeter behavior, and explains the dictionary ID requirement for states/types. This is comprehensive routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_reporting_resourcesReporting ressourcesARead-onlyIdempotent
Reporting des ressources (taux d'occupation, CA, productivité...).
Quand : pour obtenir des agrégats (CA, marge, taux, volumes) sur un périmètre et une période.
Plutôt que : boond_resources_search pour la liste des enregistrements eux-mêmes : ce reporting renvoie des totaux calculés, pas les lignes qui les composent.
Filtres clés : périmètre (perimeterDynamic / perimeterManagers / perimeterAgencies…), période (period, periodDynamic), reportingCategory, resourceTypes, resourceStates, period, resources/projects/contacts/companies, maxResources.
Sans filtre de périmètre, l'agrégation porte sur tout le périmètre autorisé du compte — un total « entreprise » là où l'utilisateur attendait souvent son équipe.
Les états et types sont des ID entiers du dictionnaire (
boond_application_dictionary), pas des libellés.Une agrégation large peut durer plusieurs dizaines de secondes ; l'avancement est signalé via
notifications/progressquand le client fournit unprogressToken.
Returns : tableau d'indicateurs agrégés, rendu en texte. Lecture seule.
Pagination :
pageSize1–500 (défaut 30),page1–100 — au-delà : refus, affiner les filtres.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (défaut: 1, max: 100) | |
| period | No | Découpage temporel : 'onePeriod' (unique, entre startDate/endDate), 'dynamicPeriod' (selon periodDynamic), 'monthly' (6 mois depuis startDate), 'quarterly', 'semiAnnual', 'annual'. La synthèse accepte aussi 'weekly'. | |
| endDate | No | Date de fin (YYYY-MM-DD). | |
| contacts | No | Filtrer sur ces IDs de contacts. | |
| keywords | No | Mots-clés. | |
| pageSize | No | Nombre de résultats par page (max: 500, défaut: 30) | |
| projects | No | Filtrer sur ces IDs de projets. | |
| useCache | No | Cache de reporting : 'withCache' (valeurs mises en cache) ou 'withoutCache' (recalcul, défaut). | |
| companies | No | Filtrer sur ces IDs de sociétés. | |
| resources | No | Filtrer sur ces IDs de ressources. | |
| startDate | No | Date de début (YYYY-MM-DD). | |
| scorecards | No | IDs des scorecards (indicateurs) à retourner. | |
| maxResources | No | Nombre de ressources par page (1-10, défaut 1). Le nombre de résultats = ressources × indicateurs. | |
| periodDynamic | No | Période dynamique relative à aujourd'hui (avec period='dynamicPeriod') : today, thisWeek, thisMonth, thisTrimester, thisSemester, thisYear, thisFiscalYear, yesterday, lastWeek, lastMonth, lastTrimester, lastSemester, lastYear, lastFiscalYear, tomorrow, nextWeek, nextMonth, nextTrimester, nextSemester, nextYear, nextFiscalYear, lastCustomPeriod, nextCustomPeriod. | |
| resourceTypes | No | IDs de types de ressources (dictionnaire setting.typeOf.resource). | |
| perimeterPoles | No | IDs de pôles. Conserve les entités dont le responsable appartient à ces pôles. | |
| resourceStates | No | IDs d'états de ressources (dictionnaire setting.state.resource). | |
| narrowPerimeter | No | Si true, jointure ET entre les filtres `perimeter*` (au lieu de OU par défaut). | |
| perimeterDynamic | No | Périmètre dynamique relatif à l'utilisateur courant (raccourci sans avoir à connaître son propre ID). Valeurs : 'data' (mes propres données), 'managers' (mon équipe / mes N-1), 'agencies' (mes agences), 'poles' (mes pôles), 'businessUnits' (mes BU). Combinable. | |
| perimeterAgencies | No | IDs d'agences. Conserve les entités dont le responsable appartient à ces agences. | |
| perimeterManagers | No | IDs des managers (ressources). Conserve les entités dont le responsable est l'un de ces managers. Pour 'mon équipe / N-1 d'une personne X', passer [X_id]. Obtenir son propre ID via boond_application_current_user. | |
| reportingCategory | No | Vue : 'showByResources' (défaut, sans returnedPeriod) ou 'showByPeriods' (returnedPeriod requis). | |
| perimeterBusinessUnits | No | IDs de business units. Conserve les entités dont le responsable appartient à ces BU. | |
| periodDynamicParameters | No | Paramètres de la période personnalisée (utilisé avec periodDynamic=lastCustomPeriod/nextCustomPeriod). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even with annotations indicating readOnlyHint, idempotentHint, and non-destructive, the description adds critical behavioral context: it clarifies that the aggregation spans the entire authorized perimeter if no filter is given (a common pitfall), warns about potentially long execution times, mentions progress notifications via progressToken, and notes that response is text-rendered. This goes beyond the annotations to set correct expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections: purpose, when to use, key filters, warnings, returns, and pagination. It is front-loaded with the most critical information (purpose and distinction) and each sentence serves a purpose. No fluff, and it remains readable despite its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 24 parameters and no output schema, the description covers all essential aspects: purpose, usage, behavioral caveats, parameter hints, and output format (returned as text). It also mentions progress tracking and pagination constraints, which are critical for an agent to know. The description is complete enough for an agent to select and invoke it correctly without further context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers 100% of parameters with descriptions, so the baseline is 3. The description adds value by highlighting key filters like perimeter and period in a consolidated list, and clarifies that states/types are integer IDs from the dictionary (boond_application_dictionary), not labels. It also notes pagination limits and constraints (pageSize 1-500, page 1-100). This provides additional semantic meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: it provides aggregated reporting metrics (occupancy rate, revenue, productivity) over a perimeter and period. It uses a specific verb ('Reporting') and resource ('ressources') and explicitly distinguishes itself from boond_resources_search for raw list retrieval. This makes it easy for an agent to understand what it does and how it differs from a similar sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Quand' (when to use), 'Plutôt que' (rather than), and key filters. It clearly states that if you need the actual records, use boond_resources_search instead, and it warns about the default perimeter ('tout' the authorized account) and performance implications. This is comprehensive and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_reporting_synthesisReporting synthèseARead-onlyIdempotent
Reporting de synthèse globale (commercial, RH, recrutement, facturation...).
Quand : pour obtenir des agrégats (CA, marge, taux, volumes) sur un périmètre et une période.
Plutôt que : un boond_reporting_* plus ciblé (sociétés, projets, ressources) pour la liste des enregistrements eux-mêmes : ce reporting renvoie des totaux calculés, pas les lignes qui les composent.
Filtres clés : périmètre (perimeterDynamic / perimeterManagers / perimeterAgencies…), période (period, periodDynamic), reportingType, reportingCategory, period, resources/projects/contacts/companies, compareIndicators.
⚠️
startDate+endDate(YYYY-MM-DD) sont REQUIS : l'API répond 422 sans eux.Sans filtre de périmètre, l'agrégation porte sur tout le périmètre autorisé du compte — un total « entreprise » là où l'utilisateur attendait souvent son équipe.
Les états et types sont des ID entiers du dictionnaire (
boond_application_dictionary), pas des libellés.Une agrégation large peut durer plusieurs dizaines de secondes ; l'avancement est signalé via
notifications/progressquand le client fournit unprogressToken.
Returns : tableau d'indicateurs agrégés, rendu en texte. Lecture seule.
Pagination :
pageSize1–500 (défaut 30),page1–100 — au-delà : refus, affiner les filtres.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (défaut: 1, max: 100) | |
| period | No | Découpage temporel : 'onePeriod' (unique, entre startDate/endDate), 'dynamicPeriod' (selon periodDynamic), 'monthly' (6 mois depuis startDate), 'quarterly', 'semiAnnual', 'annual'. La synthèse accepte aussi 'weekly'. | |
| endDate | No | Date de fin (YYYY-MM-DD). | |
| contacts | No | Filtrer sur ces IDs de contacts. | |
| keywords | No | Mots-clés. | |
| pageSize | No | Nombre de résultats par page (max: 500, défaut: 30) | |
| projects | No | Filtrer sur ces IDs de projets. | |
| useCache | No | Cache de reporting : 'withCache' (valeurs mises en cache) ou 'withoutCache' (recalcul, défaut). | |
| companies | No | Filtrer sur ces IDs de sociétés. | |
| resources | No | Filtrer sur ces IDs de ressources. | |
| startDate | Yes | Date de début (YYYY-MM-DD). Requis par l'API. | |
| scorecards | No | IDs des scorecards (indicateurs) à retourner. | |
| periodDynamic | No | Période dynamique relative à aujourd'hui (avec period='dynamicPeriod') : today, thisWeek, thisMonth, thisTrimester, thisSemester, thisYear, thisFiscalYear, yesterday, lastWeek, lastMonth, lastTrimester, lastSemester, lastYear, lastFiscalYear, tomorrow, nextWeek, nextMonth, nextTrimester, nextSemester, nextYear, nextFiscalYear, lastCustomPeriod, nextCustomPeriod. | |
| reportingType | No | Type de données : 'realData' (défaut, réel) ou 'targetsData' (objectifs). | |
| perimeterPoles | No | IDs de pôles. Conserve les entités dont le responsable appartient à ces pôles. | |
| narrowPerimeter | No | Si true, jointure ET entre les filtres `perimeter*` (au lieu de OU par défaut). | |
| perimeterDynamic | No | Périmètre dynamique relatif à l'utilisateur courant (raccourci sans avoir à connaître son propre ID). Valeurs : 'data' (mes propres données), 'managers' (mon équipe / mes N-1), 'agencies' (mes agences), 'poles' (mes pôles), 'businessUnits' (mes BU). Combinable. | |
| compareIndicators | No | Indicateurs à comparer entre deux périodes. | |
| perimeterAgencies | No | IDs d'agences. Conserve les entités dont le responsable appartient à ces agences. | |
| perimeterManagers | No | IDs des managers (ressources). Conserve les entités dont le responsable est l'un de ces managers. Pour 'mon équipe / N-1 d'une personne X', passer [X_id]. Obtenir son propre ID via boond_application_current_user. | |
| reportingCategory | No | Catégorie de synthèse (défaut 'commercialSynthesis') : commercial, RH, recrutement, activité & frais, facturation, ou globale. `resources` n'est pas disponible hors d'une vue par ressources. | |
| perimeterBusinessUnits | No | IDs de business units. Conserve les entités dont le responsable appartient à ces BU. | |
| compareIndicatorsPeriod | No | Période de comparaison des indicateurs (défaut 'period'). | |
| periodDynamicParameters | No | Paramètres de la période personnalisée (utilisé avec periodDynamic=lastCustomPeriod/nextCustomPeriod). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, the description adds substantial behavioral context: the API returns 422 without startDate/endDate, no perimeter filter means the whole authorized account scope, states/types are dictionary IDs, large aggregations can take tens of seconds, and pagination over limits is refused. This goes well beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense, front-loaded, and well-structured with bullets and warnings. The only notable flaw is a small redundancy: 'period' appears twice in the key-filters list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 24-parameter tool with no output schema, the description covers purpose, return shape, scope defaults, required inputs, pagination, performance, and progress signaling. An agent has essentially everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds valuable cross-parameter semantics: required date combination, default perimeter behavior, dictionary-ID requirement, and hard pagination limits. It doesn't enumerate every parameter, but the schema already covers those individually.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it produces global synthesis aggregates (CA, marge, taux, volumes) over a scope and period, and explicitly contrasts itself with the more targeted `boond_reporting_*` tools that return raw record lists. An agent can distinguish this tool from its reporting siblings without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' and 'Plutôt que' sections explicitly state when to use this tool and when to prefer a targeted `boond_reporting_*` alternative for the underlying records. It also orients the agent toward the key filters, leaving little ambiguity about selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_resources_absences_reportsDemandes d'absences d'une ressourceARead-onlyIdempotent
Récupère les demandes d'absences (congés, RTT, maladie) d'un(e) ressource, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_resources_get pour la fiche de base, ou boond_resources_search si l'ID est inconnu.
Returns : Liste des demandes d'absences de la ressource. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds value by explicitly stating 'Lecture seule' and clarifying the return payload is a list of absence requests. It doesn't add details like pagination or ordering, but for a simple read tool the annotations plus the return-type note are sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a one-sentence purpose, a 'Quand' usage line, a 'Plutôt que' alternative line, and a short returns/read-only note. Every sentence earns its place and the key scoping information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only tool with full schema coverage and no output schema, the description covers the essential context: what it returns, when to use it, and how it differs from siblings. It could mention whether the returned list is paginated or ordered, but that is a minor gap given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single 'id' parameter is already fully documented in the schema. The description confirms the ID identifies the resource whose absences are fetched, but adds no new format or constraint information beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Récupère'), a precise resource ('demandes d'absences d'un(e) ressource'), and the lookup key (ID). It also enumerates the absence types (congés, RTT, maladie), which disambiguates it from sibling tools like boond_resources_times_reports or boond_resources_expenses_reports.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool ('pour ne charger que cette section, sans le reste de la fiche') and names the alternatives with their conditions: boond_resources_get for the base record, boond_resources_search if the ID is unknown. This is clear routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_resources_actionsActions liées à une ressourceARead-onlyIdempotent
Récupère les actions (appels, emails, RDV, notes) d'un(e) ressource, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_resources_get pour la fiche de base, ou boond_resources_search si l'ID est inconnu.
Returns : Liste des actions rattachées à la ressource. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), so the bar is lower. The description adds that the result is a "Liste des actions rattachées" and confirms "Lecture seule," which is consistent with annotations, but it does not disclose behaviors like pagination, ordering, or any limits, so it contributes useful but not rich context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-organized: a one-line purpose followed by labeled Quand, Plutôt que, and Retourne sections that are easily parsed. Nearly every sentence earns its place; the only minor waste is "Lecture seule," which repeats the readOnlyHint annotation already present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only list tool with a fully described schema field and solid annotations, the description covers when to use it, what it returns, and what it is not. It is slightly light on return-format details (pagination, ordering) since there is no output schema, but nothing would block an agent from calling it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already describes id as a numeric entity identifier with a digit pattern. The description only says "par son ID," restating the schema without adding format, example, or resolution details. Baseline 3 applies because the schema carries the semantic weight.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: "Récupère les actions (appels, emails, RDV, notes) d'une ressource, par son ID." It enumerates the content (calls, emails, meetings, notes) and explicitly contrasts itself with boond_resources_get and boond_resources_search, so an agent can distinguish it from the many similar resource-scoped siblings without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description has explicit guidance: "Quand: pour ne charger que cette section, sans le reste de la fiche" states when to call it, and "Plutôt que:" names boond_resources_get for the base record and boond_resources_search when the ID is unknown. This is concrete, actionable selection guidance rather than vague preference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_resources_administrativeDonnées administratives d'une ressourceARead-onlyIdempotent
Récupère les données administratives et RH (salaire, TJM, coût journalier, contrat) d'un(e) ressource, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_resources_get pour la fiche de base, ou boond_resources_search si l'ID est inconnu.
Returns : Bloc administratif de la ressource — données salariales, à manier avec prudence. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the read-only nature is covered. The description adds a caution about handling salary data with prudence, which is useful context beyond the annotations. It does not mention that no output schema is provided, but that is not a behavioral trait.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, around three short sections, with the main purpose front-loaded. Every line adds value: the data listing, usage conditions, and a safety note. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple single-parameter read-only tool. The description, combined with annotations and schema, provides everything an agent needs: what data it returns, when to use it, and a caution. No output schema means return specifics are less critical, but the description mentions the administrative block, which is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the 'id' parameter is already described clearly. The description does not add additional semantic details about the 'id' beyond the schema, but since coverage is high, baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches administrative and HR data for a resource by ID, listing specific data types (salary, daily rate, cost, contract). It distinguishes itself from sibling tools by specifying it loads only this section, not the full profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit 'Quand' (when to use) and 'Plutôt que' (rather than) sections, naming alternatives like boond_resources_get and boond_resources_search with conditions for their use. This gives clear guidance for selection among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_resources_advantagesAvantages d'une ressourceARead-onlyIdempotent
Récupère les avantages (tickets restaurant, mutuelle, véhicule, primes) d'un(e) ressource, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_resources_get pour la fiche de base, ou boond_resources_search si l'ID est inconnu.
Returns : Liste des avantages de la ressource. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false; the description's 'Lecture seule' largely repeats that rather than adding new behavioral context such as authorization needs or response quirks. There is no contradiction, but little additional transparency beyond the structured hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description uses three short labeled segments—purpose, when/alternatives, and returns—front-loading the key verb and resource. Every sentence earns its place and there is no redundant boilerplate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only endpoint, the definition includes purpose, usage conditions, alternative tools, and return type. With no output schema, stating that it returns a list of advantages plus example categories is sufficient for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter (id), schema coverage is 100%, and the schema already describes it as a numeric BoondManager identifier. The description adds 'par son ID' and example advantage categories, but no extra format or constraints, so the baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and object: 'Récupère les avantages ... d'une ressource, par son ID.' It names concrete benefit types and contrasts with boond_resources_get/search, making it easy for an agent to distinguish it from the many resource and advantage tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' and 'Plutôt que' lines explicitly state the intended use (load only this section) and name alternatives: boond_resources_get for the full record and boond_resources_search when the ID is unknown. This is direct, actionable routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_resources_createCréer un(e) ressourceA
Crée un(e) ressource dans BoondManager.
Quand : pour ajouter un(e) ressource inexistant(e).
Plutôt que : boond_resources_update pour modifier un enregistrement existant, et boond_resources_search d'abord pour vérifier qu'il n'existe pas déjà.
Écriture réelle et non idempotente : deux appels identiques créent deux enregistrements (l'API ne déduplique pas).
Les ID de relations et les états/types sont des ID numériques BoondManager, à résoudre au préalable (recherches d'entités,
boond://dictionary/*).
Returns : confirmation, ID créé, et la fiche complète. structuredContent.id est réutilisable directement pour chaîner un appel.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Ville | |
| note | No | Notes | |
| state | No | État de la ressource | |
| title | No | Titre / poste | |
| email1 | No | Email principal | |
| phone1 | No | Téléphone | |
| country | No | Pays | |
| lastName | Yes | Nom de famille | |
| firstName | Yes | Prénom de la ressource/collaborateur |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Identifiant de l'entité créée/modifiée |
| type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal readOnly=false and idempotentHint=false; the description adds useful context by explaining that two identical calls will create two records and that relation/state/type IDs must be resolved beforehand via dictionary lookups. It could go further on permissions or other side effects, but the key behavioral caution is explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well structured: a one-line purpose, then compact sections for when/alternatives, behavioral cautions, and return usage. No sentence is redundant with schema content, and the most important routing information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create operation with two required fields, full schema descriptions, an output schema, and relevant sibling operations, this description covers when to use it, alternatives, duplicate behavior, ID resolution, and how to chain the result. Nothing necessary for correct invocation appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each field described, so the baseline is 3. The description adds extra value beyond labels by telling the agent that relation/state/type values are numeric BoondManager IDs to resolve beforehand, which matters for correctly populating fields like state.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Crée un(e) ressource dans BoondManager', a specific verb+resource statement, then adds 'pour ajouter un(e) ressource inexistant(e)'. It clearly distinguishes itself from update and search operations among the resource siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides an explicit 'Quand' (when to use) and 'Plutôt que' (instead of) section, naming boond_resources_update for modifications and instructing to run boond_resources_search first to avoid duplicates. This gives an agent concrete routing guidance and preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_resources_deleteSupprimer un(e) ressourceADestructive
Supprime définitivement un(e) ressource de BoondManager.
Quand : uniquement sur demande explicite de l'utilisateur, et après avoir vérifié l'ID avec boond_resources_get.
Plutôt que : boond_resources_update pour désactiver ou changer l'état d'un enregistrement sans le détruire — c'est presque toujours l'intention réelle.
⚠️ Irréversible, sans corbeille côté API.
Si le client MCP annonce la capacité
elicitation, une confirmation est demandée à l'utilisateur final et un refus annule l'appel (structuredContent.deleted: false+reason) ; sinon la suppression part directement.
Returns : { id, deleted, reason? } — vérifier deleted, qui vaut false en cas de refus utilisateur.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| reason | No | Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur) |
| deleted | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description discloses irreversibility, absence of an API-side trash, the conditional confirmation flow based on the elicitation capability, and the return contract with deleted: false on refusal. This is rich, non-obvious behavioral context that fully aligns with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with front-loaded purpose, a clear 'when vs. instead' section, and compact bullet points for warnings and return behavior. Every section earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive one-parameter tool, the description is complete: it covers prerequisites, alternatives, irreversibility, user-confirmation behavior, and the meaningful return field. The output schema exists and the description still adds useful interpretation guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single id parameter is already well documented with pattern and description. The description adds the operational advice to verify the ID via boond_resources_get, but no extra parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Supprime définitivement un(e) ressource de BoondManager.' It clearly conveys destructive scope and is easily distinguished from siblings by naming the update tool as the safer alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is provided: use only on explicit user request, verify the ID with boond_resources_get first, and prefer boond_resources_update for non-destructive state changes. This leaves no ambiguity about when to invoke the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_resources_expenses_reportsNotes de frais d'une ressourceARead-onlyIdempotent
Récupère les notes de frais d'un(e) ressource, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_resources_get pour la fiche de base, ou boond_resources_search si l'ID est inconnu.
Returns : Liste des notes de frais mensuelles de la ressource. Le détail des lignes est dans boond_expenses_get. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the core safety profile is covered. The description adds that the result is a monthly list and that line details are accessible via boond_expenses_get, which is useful context. It does not add much beyond those points, so the description meets but does not strongly exceed the annotation baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well structured: purpose first, then 'Quand', 'Plutôt que', and 'Returns'. It uses headings to make the information scannable and contains no filler or irrelevant details. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is low complexity with a single required parameter, full schema coverage, and informative annotations. The description covers the purpose, when to use it, how to distinguish it from related tools, the return summary, and where to get line-level details. There are no significant gaps for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single 'id' parameter is fully documented in the JSON schema with a description, type, and pattern. Schema coverage is 100%, so the description is not required to carry this burden. The phrase 'par son ID' simply restates what the schema already communicates. This matches the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description leads with a specific verb and object: 'Récupère les notes de frais d'un(e) ressource, par son ID.' It clearly differentiates the tool from siblings by naming boond_resources_get, boond_resources_search, and boond_expenses_get. This leaves no ambiguity about which resource data is fetched.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' section explicitly states when to use this tool ('pour ne charger que cette section, sans le reste de la fiche'). The 'Plutôt que' section names the alternative tools and the condition that makes them appropriate, such as boond_resources_search when the ID is unknown. This is explicit, actionable routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_resources_getDétails d'un(e) ressourceARead-onlyIdempotent
Récupère la fiche complète d'un(e) ressource par son ID numérique.
Quand : après un boond_resources_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_resources_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
tabcible un onglet précis (information,technical-data,administrative,actions…) ; sanstab, seule la fiche de base est renvoyée, pas la réunion des onglets.Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_resources_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité (numérique) | |
| tab | No | Onglet spécifique à récupérer (information, technical, financial, actions, contracts, documents) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: without 'tab', only the base record is returned (not the union of tabs), and an unknown ID surfaces the raw BoondManager error. It also states the return format (JSON entity with attributes and relations). This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a one-line definition, a 'Quand' section, a 'Plutôt que' section, bullet points for parameter behavior and error handling, and a final return note. Every sentence earns its place and the most important usage guidance is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only get tool with 2 parameters, full schema coverage, and no output schema, the description covers the essential context: when to use it, how the tab parameter behaves, error behavior, and return format. It could arguably mention pagination or relation details, but the API's raw JSON return is stated. The main gap is that it doesn't enumerate all possible tab values, but the schema already lists examples.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds some meaning by explaining that 'tab' targets a specific tab and that omitting it returns only the base record, and it clarifies the ID must be numeric and come from a search. However, this is mostly complementary to the schema rather than essential compensation, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the complete record of a resource by numeric ID, with a specific verb ('Récupère la fiche complète') and resource. It distinguishes itself from boond_resources_search by noting it is used after a search to get attributes not in the list summary, and from sibling tab-specific tools by explaining the 'tab' parameter behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use it ('après un boond_resources_search'), what to use instead if the ID is unknown ('Plutôt que : boond_resources_search si l'ID n'est pas connu'), and warns that the ID must come from a search, never from guessing. This is clear routing guidance with exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_resources_informationInformations générales d'une ressourceARead-onlyIdempotent
Récupère les informations générales (coordonnées, adresse, état civil, photo, tags, manager) d'un(e) ressource, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_resources_get pour la fiche de base, ou boond_resources_search si l'ID est inconnu.
Returns : Bloc identité et rattachement hiérarchique de la ressource. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond annotations: it specifies the return payload ('Bloc identité et rattachement hiérarchique de la ressource') and explicitly states 'Lecture seule', reinforcing the read-only nature. It doesn't disclose rate limits or pagination, but for a single-ID read operation with full annotation coverage, this is strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the first sentence states the action and payload, the second gives usage context, the third names alternatives, and the final line summarizes the return and read-only nature. Every sentence earns its place with no filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only, idempotent tool with full schema coverage and no output schema, the description is complete. It tells the agent what the tool returns, when to use it, and which siblings to prefer in other cases. There is no missing information an agent would need to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the single 'id' parameter. The description adds value by clarifying that the ID identifies a 'ressource' and that the tool returns only the general information section, not the full record. It doesn't add format details beyond the schema, but with 100% coverage and one simple parameter, the baseline is 3 and the description's contextual framing earns a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Récupère'), a specific resource ('informations générales d'un(e) ressource'), and enumerates the exact fields returned (coordonnées, adresse, état civil, photo, tags, manager). It also explicitly distinguishes itself from sibling tools by naming boond_resources_get and boond_resources_search, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Quand : pour ne charger que cette section, sans le reste de la fiche.' It also names alternatives and the condition for choosing them ('Plutôt que : boond_resources_get pour la fiche de base, ou boond_resources_search si l'ID est inconnu'). This is exactly the kind of when-to-use vs. when-not-to-use guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_resources_positioningsPositionnements d'une ressourceARead-onlyIdempotent
Récupère les positionnements (placements de la ressource sur des opportunités ou des projets) d'un(e) ressource, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_resources_get pour la fiche de base, ou boond_resources_search si l'ID est inconnu.
Returns : Liste des positionnements de la ressource. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal read-only, idempotent, and non-destructive behavior; the description reinforces this with 'Lecture seule' and adds useful context: it returns a list, it scopes to placements on opportunities or projects, and it loads only this section. Pagination and error behavior are not covered, but the annotations lower the burden for this simple read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the main action, and organized with 'Quand', 'Plutôt que', and 'Returns' labels. There is slight redundancy between 'Récupère les positionnements' and 'Returns: Liste des positionnements', but no meaningful filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only list endpoint with no output schema, the description covers the purpose, invocation trigger, alternatives, and return kind. It could specify the fields of a positioning item or pagination behavior, but it provides enough context to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of the single parameter, including type, pattern, and description. The tool description only reinforces that lookup is by resource ID and suggests boond_resources_search if the ID is unknown, which is helpful but does not add necessary semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and object: it retrieves the positionings of a resource by ID, and parenthetically clarifies what positionings are (placements on opportunities/projects). It also positions itself against boond_resources_get and boond_resources_search, helping an agent distinguish it from relevant siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use it ('only this section, without the rest of the record') and which alternatives to prefer: boond_resources_get for the base record, or boond_resources_search when the ID is unknown. This is clear and actionable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_resources_projectsProjets d'une ressourceARead-onlyIdempotent
Récupère les projets (missions en cours et passées auxquelles la ressource participe) d'un(e) ressource, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_resources_get pour la fiche de base, ou boond_resources_search si l'ID est inconnu.
Returns : Liste des projets de la ressource. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful behavioral context by specifying the subset of projects included (current and past missions) and stating that the return value is a list. It does not describe pagination or ordering, but the annotations lower the burden for this simple read-only call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with labeled sections (Quand, Plutôt que, Returns) and front-loads the primary purpose. It is compact and scannable, with only minor redundancy in 'Lecture seule', which repeats the readOnlyHint annotation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only subresource tool with rich annotations, the description is complete: it states what the tool returns, when to use it, and which alternatives to prefer. No output schema exists, but the description sufficiently identifies the return type as a list of projects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: the 'id' parameter is documented with a description and regex pattern. The description simply refers to 'son ID' and adds no extra semantic detail beyond what the schema already provides. Baseline 3 is appropriate because the schema carries the parameter documentation burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Récupère les projets ... d'un(e) ressource, par son ID.' It further clarifies the scope (missions en cours et passées) and explicitly distinguishes itself from boond_resources_get and boond_resources_search, so an agent can tell it apart from siblings without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' section states the intended use case: loading only this section without the rest of the resource record. The 'Plutôt que' section names concrete alternatives and when they apply, providing clear routing guidance for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_resources_reference_createCréer une référence (expérience pro) sur une ressourceA
Crée une expérience professionnelle (référence) rattachée au DT d'une ressource.
Plutôt que : boond_resources_technical_data_update pour les autres blocs du dossier technique (compétences, formations, langues), que cet outil ne touche pas.
⚠️ Les références sont des sous-objets embarqués dans le DT, pas une entité REST autonome. L'outil fait read-modify-write : lit la liste actuelle via /resources/{id}/technical-data, ajoute la nouvelle référence et republie la liste complète.
Champs requis : resourceId, title, company, description. Dates : startMonth/endMonth en int 1..12 (ou string '1'..'12' sans leading zero) ; startYear/endYear en int 4 chiffres. ⚠️ "05" avec leading zero est rejeté par l'API.
Pour compléter une référence existante, utiliser boond_resources_reference_update pour ne pas dupliquer.
Returns : confirmation, nombre total de références et ID de celle créée (l'API ne le renvoie pas systématiquement).
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Intitulé du poste. | |
| skills | No | Compétences mobilisées (texte libre, séparées par virgule). | |
| company | Yes | Société / employeur. | |
| endYear | No | Année (ex: 2024). Accepte int ou string '2024'. | |
| endMonth | No | Mois (1-12). Accepte int ou string ('5'). ⚠️ '05' avec leading zero est rejeté par l'API Boond. | |
| location | No | Lieu (ville). | |
| startYear | No | Année (ex: 2024). Accepte int ou string '2024'. | |
| resourceId | Yes | ID de la ressource à laquelle rattacher la référence. | |
| startMonth | No | Mois (1-12). Accepte int ou string ('5'). ⚠️ '05' avec leading zero est rejeté par l'API Boond. | |
| description | Yes | Description / missions / réalisations. ⚠️ Requis côté API Boond (1017 sans). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Critically, the description discloses the read-modify-write behavior: it reads the current list via /resources/{id}/technical-data, appends the new reference, and republishes the complete list. This is a non-obvious side effect (potential overwrite/lost update risk) that an agent must know. It also mentions the API quirk that the created reference's ID is not returned directly and must be extracted from the response. All of this adds significant value beyond the annotations (which only say the tool is not read-only).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is fairly concise and front-loaded with the core purpose. It uses short paragraphs and bullet points effectively. It loses one point because the warning about leading zeros is repeated twice for startMonth/endMonth, and the mention 'Plutôt que: boond_resources_technical_data_update' is slightly confusingly phrased. Otherwise, every sentence contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (read-modify-write, embedded sub-object, API quirk), the description covers the essential aspects: required fields, date format pitfalls, return value behavior, and sibling differentiation. However, it does not mention potential failure modes (e.g., what happens if the resource does not exist, or how to handle concurrent modifications). For a create operation on an embedded resource with no output schema, this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for each parameter, so the baseline is 3. The description adds semantic meaning by grouping required fields (resourceId, title, company, description) and by warning about the leading-zero rejection for month fields ('05' rejected) and the int format (year as 4 digits, month as 1-12). It also explains that 'skills' is a comma-separated listaine. This compensates for the schema's terse descriptions and adds format constraints not present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Crée') and a specific resource ('expérience professionnelle (référence) sur une ressource'), identifying it as a sub-resource of the technical data. It clearly distinguishes from siblings by naming boond_resources_reference_update and boond_resources_technical_data_update, clarifying that this tool does not touch other technical data blocks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly explains when to use this tool (create a new reference) and when NOT to (to complete an existing reference, use boond_resources_reference_update to avoid duplication). It also mentions that boond_resources_technical_data_update should not be used for other technical data blocks via this tool. This is clear, actionable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_resources_reference_deleteSupprimer une référence (expérience pro)ADestructive
Supprime une référence (expérience professionnelle) du DT d'une ressource. Read-modify-write : lit la liste actuelle, en retire la référence ciblée, republie le reste. ⚠️ Action irréversible — vérifier l'ID au préalable.
Quand : pour retirer une expérience saisie par erreur, sur demande explicite de l'utilisateur.
Plutôt que : boond_resources_reference_update pour corriger une référence plutôt que la détruire.
Returns : confirmation et nombre de références restantes. Un referenceId introuvable renvoie isError: true avec la liste des ID présents.
| Name | Required | Description | Default |
|---|---|---|---|
| resourceId | Yes | ID de la ressource portant la référence (les references sont embarquées dans le DT). | |
| referenceId | Yes | ID de la référence à supprimer. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and the description reinforces this with an explicit irreversibility warning and the read-modify-write mechanism. It also discloses the error case (untraceable referenceId returns isError with the present IDs list) and the return shape. Fully consistent with annotations and adds meaningful behavioral context beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with labeled sections (Quand / Plutôt que / Returns) and front-loaded core action and caution. Every sentence earns its place — mechanism, warning, usage, alternative, return behavior — with no filler. Slightly long for a delete operation but the length is justified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive 2-parameter tool with no output schema, the description is comprehensive: read-modify-write mechanism, irreversibility warning, when-to-use guidance, alternative tool, return format, and error behavior. Nothing an agent needs to call it safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — both resourceId and referenceId are already documented in the schema. The description reiterates the referenceId error behavior but adds little semantic value beyond the schema's own parameter descriptions, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb (Supprime), the exact entity (une référence / expérience professionnelle) and its container (le DT d'une ressource), and distinguishes itself from the update sibling by explicitly naming boond_resources_reference_update as the alternative. An agent can select this tool correctly without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Contains an explicit 'Quand' section giving the trigger condition (remove an experience entered by mistake, upon explicit user request) and an explicit 'Plutôt que' section routing to boond_resources_reference_update for corrections rather than destruction. No inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_resources_reference_updateModifier une référence (expérience pro)AIdempotent
Met à jour une référence existante. Read-modify-write sur /resources/{id}/technical-data — seuls les champs explicitement fournis remplacent ceux de la référence ciblée, les autres champs et toutes les autres références restent intacts.
Quand : pour corriger une expérience professionnelle existante.
Plutôt que : boond_resources_reference_create pour en ajouter une nouvelle.
Cas d'usage type : compléter startMonth/startYear/endMonth/endYear sur une référence sans toucher au titre, à la société ou à la description.
Returns : confirmation et dossier technique republié. Un referenceId introuvable renvoie isError: true avec la liste des ID présents.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Intitulé du poste. | |
| skills | No | Compétences mobilisées. | |
| company | No | Société / employeur. | |
| endYear | No | Année (ex: 2024). Accepte int ou string '2024'. | |
| endMonth | No | Mois (1-12). Accepte int ou string ('5'). ⚠️ '05' avec leading zero est rejeté par l'API Boond. | |
| location | No | Lieu (ville). | |
| startYear | No | Année (ex: 2024). Accepte int ou string '2024'. | |
| resourceId | Yes | ID de la ressource portant la référence (les references sont embarquées dans le DT). | |
| startMonth | No | Mois (1-12). Accepte int ou string ('5'). ⚠️ '05' avec leading zero est rejeté par l'API Boond. | |
| description | No | Description / missions / réalisations. | |
| referenceId | Yes | ID de la référence à modifier. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses merge semantics (only provided fields replace, other fields and references stay intact), return behavior (confirmation and republished technical dossier), and error behavior for an unknown referenceId. This adds meaningful context beyond the annotations, which only indicate readOnly=false, idempotent=true, and destructive=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sections with no filler: the most important merge semantics come first, followed by usage, example, and return/error behavior. Every sentence contributes to correct tool invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter update endpoint with no output schema, the description covers selection, partial-update behavior, side effects, and error signaling. No important calling decision is left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter is already documented. The description adds value beyond the schema by explaining partial-update semantics and illustrating a realistic subset of fields (startMonth/startYear/endMonth/endYear) that can be updated without touching others.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States clearly that it updates an existing reference via read-modify-write on /resources/{id}/technical-data, and differentiates itself from boond_resources_reference_create. The verb, target resource, and merge behavior are all explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit 'Quand' and 'Plutôt que' section naming boond_resources_reference_create as the alternative, plus a concrete use case for partial date updates. An agent can confidently decide when to use this tool versus its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_resources_searchRechercher des ressourcesARead-onlyIdempotent
Recherche des ressources (collaborateurs internes) dans BoondManager avec filtres serveur.
Plutôt que : boond_candidates_search pour les profils externes en cours de recrutement — deux référentiels distincts, un candidat n'apparaît pas ici avant son embauche.
Cas d'usage courants :
• Mes données / mon équipe / mon agence sans connaître son propre ID : perimeterDynamic: ["data"] (mes ressources), ["managers"] (mes N-1), ["agencies"] (mes agences).
• Équipe d'une personne X : perimeterManagers: [<X_id>] (filtre les ressources dont X est le N+1).
• Mon ID utilisateur : appeler boond_application_current_user puis passer cet ID dans perimeterManagers.
• États / types : resourceStates: [<id>], resourceTypes: [<id>]. IDs entiers issus du dictionnaire (voir boond_application_dictionary avec setting.state.resource ou setting.typeOf.resource). excludeResourceStates / excludeResourceTypes pour exclure.
• Compétences / outils : tools: [<toolId>, ...] (OU par défaut ; pour ET: ["#AND#", "1", "2"]). expertiseAreas, activityAreas, languages (format langueId|niveauId).
• Disponibilité / activité : period: "available" + startDate/endDate. Autres valeurs : working, hired, left, employed, birthday, seniority…
• Recherche par nom : keywords: "Dupont" + keywordsType: "lastName" (ou firstName, fullName avec keywords: "Dupont#Jean").
• Géolocalisation : coordinates: "48.85,2.35" (ou location: "Paris") + geoDistance: 50 (km).
Tri : sort: "lastName" (ou firstName/title/availability/state/updateDate/creationDate) + order: "asc"|"desc".
Returns : liste paginée. Utiliser boond_resources_get ou les outils d'onglets pour le détail.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.Pagination :
pageSize1–500 (défaut 30),page1–100 — au-delà : refus, affiner les filtres.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (défaut: 1, max: 100) | |
| sort | No | Champ de tri (ex: lastName, firstName, updateDate) | |
| flags | No | IDs de tags (drapeaux) attachés à la ressource. | |
| order | No | Ordre de tri (asc/desc) | |
| tools | No | IDs d'outils/technos (dictionnaire setting.tool). Logique OU par défaut. Pour ET, ajouter '#AND#' en 1er élément: tools=['#AND#','12','34']. | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| period | No | Champ temporel pour filtrer par période. Valeurs courantes: 'available' (disponibilité), 'working' (en mission hors interne), 'workingAll', 'absent', 'idle', 'hired', 'left', 'employed', 'unemployed', 'updated', 'arrival', 'birthday', 'seniority', 'present', 'noAction'/'withActions'/'withoutActions'/'withAbsences'/'withoutAbsences'. À combiner avec `startDate` + `endDate`. | |
| endDate | No | Date de fin (YYYY-MM-DD), à utiliser avec `period`. | |
| shields | No | Niveau de complétude des champs conditionnels. | |
| keywords | No | Mots-clés (par défaut, recherche dans CV + dossier technique). Pour cibler un champ précis, fournir aussi `keywordsType` (ex: lastName, firstName, fullName, emails, title, titleSkills, phones, reference). | |
| location | No | Adresse texte (ville, etc.) pour recherche géographique. À combiner avec `geoDistance`. | |
| pageSize | No | Nombre de résultats par page (max: 500, défaut: 30) | |
| languages | No | Langues parlées au format `langueId|niveauId` (dictionnaires setting.languageSpoken et setting.languageLevel). Ex: ['anglais|courant']. | |
| startDate | No | Date de début (YYYY-MM-DD), à utiliser avec `period`. | |
| trainings | No | IDs de formations (dictionnaire setting.training). | |
| coordinates | No | Coordonnées GPS 'latitude,longitude' pour recherche géographique. À combiner avec `geoDistance`. | |
| experiences | No | IDs de niveaux d'expérience (dictionnaire setting.experience). | |
| geoDistance | No | Rayon en km pour la recherche géographique (5-200). Requis si `coordinates` ou `location` est fourni. | |
| keywordsType | No | Champ ciblé par `keywords`. Défaut: 'resumeTd' (CV + dossier technique). Pour 'fullName' utiliser `keywords = 'NOM#PRENOM'`. | |
| activityAreas | No | IDs de secteurs d'activité (dictionnaire setting.activityArea). | |
| mobilityAreas | No | IDs de zones de mobilité (dictionnaire setting.mobilityArea). | |
| resourceTypes | No | IDs de types de ressource (dictionnaire setting.typeOf.resource). | |
| excludeManager | No | Si true, ne retourne que les ressources sans compte manager. | |
| expertiseAreas | No | IDs de domaines d'expertise (dictionnaire setting.expertiseArea). | |
| perimeterPoles | No | IDs de pôles. Conserve les entités dont le responsable appartient à ces pôles. | |
| resourceStates | No | IDs d'états de ressource (dictionnaire setting.state.resource via boond_application_dictionary). | |
| narrowPerimeter | No | Si true, jointure ET entre les filtres `perimeter*` (au lieu de OU par défaut). | |
| perimeterDynamic | No | Périmètre dynamique relatif à l'utilisateur courant (raccourci sans avoir à connaître son propre ID). Valeurs : 'data' (mes propres données), 'managers' (mon équipe / mes N-1), 'agencies' (mes agences), 'poles' (mes pôles), 'businessUnits' (mes BU). Combinable. | |
| perimeterAgencies | No | IDs d'agences. Conserve les entités dont le responsable appartient à ces agences. | |
| perimeterManagers | No | IDs des managers (ressources). Conserve les entités dont le responsable est l'un de ces managers. Pour 'mon équipe / N-1 d'une personne X', passer [X_id]. Obtenir son propre ID via boond_application_current_user. | |
| providerCompanies | No | IDs de sociétés sous-traitantes (filtre pour ressources externes). | |
| excludeResourceTypes | No | IDs de types de ressource à EXCLURE. | |
| excludeResourceStates | No | IDs d'états de ressource à EXCLURE. | |
| perimeterBusinessUnits | No | IDs de business units. Conserve les entités dont le responsable appartient à ces BU. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Nombre d'éléments retournés sur cette page |
| items | Yes | |
| total | No | Nombre total de résultats côté BoondManager |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, but the description adds substantial behavioral detail beyond that: pagination limits ('pageSize 1–500, page 1–100 — au-delà : refus'), the client-side projection behavior of fields ('jamais transmise à l'API'), and the note that candidates do not appear here before hiring. This gives the agent accurate expectations about side effects, refusals, and data scoping. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long, but that is justified by 34 parameters and a complex domain. It is well-structured with a front-loaded purpose sentence, bolded section headers, and compact bullet examples. A slight deduction for density: some parameter details are duplicated between the schema and description, though the description adds contextual value that the schema lacks. Overall, every section earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 34-parameter search tool with no required parameters and an output schema present, the description is remarkably complete. It covers common workflows, dictionary lookups, pagination refusals, projection semantics, and clear routing to detail tools. Nothing an agent needs to invoke this tool correctly is missing, and the output schema covers return-value structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes far beyond the schema: it explains how to combine perimeterDynamic values, the OR/AND syntax for tools (['#AND#','1','2']), the format for languages ('langueId|niveauId'), the '#NOM#PRENOM' convention for fullName, and the dictionary sources for IDs. It also clarifies that fields is a projection and never sent to the API, something the schema only hints at. This is precisely the kind of meaning an agent cannot infer from the structured schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Recherche des ressources (collaborateurs internes) dans BoondManager avec filtres serveur.' It explicitly contrasts with boond_candidates_search for external profiles, drawing a clear boundary. The first line alone removes any ambiguity about what this tool does and what it is not.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: 'Plutôt que : boond_candidates_search' for external candidates, and points to boond_resources_get or tab tools for detail. It also names supporting tools (boond_application_current_user, boond_application_dictionary) and gives concrete perimeter use cases like 'mes données / mon équipe / mon agence'. No agent should struggle to decide when to invoke this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_resources_technical_dataCompétences techniques d'une ressourceARead-onlyIdempotent
Récupère le profil technique (compétences, expériences, formations, certifications, langues, CV) d'un(e) ressource, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_resources_get pour la fiche de base, ou boond_resources_search si l'ID est inconnu.
Returns : Profil technique de la ressource. Modifiable via boond_resources_technical_data_update. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description confirms 'Lecture seule' (redundant with annotations) and adds a useful pointer that the data is modifiable via boond_resources_technical_data_update. It does not disclose details like authentication requirements, response shape, or CV format, but the read-only behavior is well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loads the purpose, and organizes guidance into clear 'Quand' and 'Plutôt que' sections. Every sentence adds value; no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only list/retrieval tool, the description covers what it returns, when to use it, what not to use instead, and how to modify the data. The annotations cover the read-only safety profile. Nothing an agent needs to decide or call correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% – the only parameter 'id' is fully described as 'Identifiant unique de l'entité BoondManager (numérique)'. The description adds no extra semantics beyond confirming the resource is identified by ID. Baseline 3 is appropriate since the schema carries the meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Récupère'), a precise resource ('le profil technique ... d'une ressource'), and the exact contents (compétences, expériences, formations, certifications, langues, CV). It also distinguishes itself from boond_resources_get (basic record) and boond_resources_search (unknown ID), making the tool's scope unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' (when) section gives a concrete use case: load only this section without the rest of the record. The 'Plutôt que' section explicitly names sibling tools and the conditions for choosing them (boond_resources_get for base record, boond_resources_search when the ID is unknown). This is excellent routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_resources_technical_data_updateMettre à jour le dossier technique d'une ressourceAIdempotent
Met à jour le dossier technique (DT) d'une ressource : compétences, outils, langues, expertises, formations, diplômes, expérience.
Quand : pour mettre à jour le dossier technique d'une ressource (compétences, formations, langues…).
Plutôt que : boond_resources_reference_create / _update / _delete pour les seules expériences professionnelles : elles vivent dans le même bloc, mais ces outils évitent d'avoir à republier le tableau entier.
Mode 'merge' (défaut, recommandé pour automation) — enrichit sans rien écraser : • skills (CSV) : concatène les compétences absentes • tools / languages : ajoute les entrées dont la clé (slug outil / langue) est nouvelle, conserve le niveau existant pour les autres • expertiseAreas, activityAreas, diplomas : ajoute les items absents • title, summary, training, experience : remplis UNIQUEMENT si actuellement vides
Mode 'replace' — remplace intégralement chaque champ fourni par la valeur passée. Les champs non passés ne sont pas touchés.
Seuls les champs explicitement fournis dans l'appel sont envoyés à l'API — un champ omis ne sera jamais réinitialisé à vide.
Les expériences professionnelles (références) ne sont PAS gérées ici : utiliser boond_resources_reference_{create|update|delete}.
Returns : confirmation et dossier technique mis à jour. Réponse inchangée si aucun champ n'était à écrire dans le mode demandé.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID de la ressource dont le dossier technique est mis à jour. | |
| mode | No | 'merge' (défaut) enrichit le DT sans rien écraser. 'replace' remplace intégralement chaque champ fourni. | merge |
| title | No | Titre / poste actuel. | |
| tools | No | Outils maîtrisés avec niveau (1-4). | |
| skills | No | Compétences libres, séparées par virgule (ex: 'Python, AWS, GCP'). | |
| summary | No | Résumé / synthèse du parcours. | |
| diplomas | No | Diplômes (texte libre, ex: 'DUT Informatique - IUT Bordeaux (2016)'). | |
| training | No | Formations / parcours académique. | |
| languages | No | Langues parlées avec niveau. | |
| experience | No | Années d'expérience. | |
| activityAreas | No | Secteurs d'activité. | |
| expertiseAreas | No | Domaines d'expertise (texte libre, ex: 'Banque'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal idempotent and non-destructive, and the description goes well beyond them by detailing merge vs replace semantics, per-field behavior, and the guarantee that omitted fields are never reset. It also discloses the response behavior, including unchanged output when nothing needed writing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-structured with clear sections, bullet lists, and mode explanations. There is minor redundancy between the opening sentence and the 'Quand' sentence, but every other part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 12-parameter mutation with no output schema, the description covers purpose, usage context, sibling alternatives, merge/replace behavior, omitted-field semantics, and return behavior. Nothing essential for selecting or invoking the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema covers all parameters, the description adds substantial meaning beyond the schema: CSV handling for skills, key-based behavior for tools/languages, conditional filling for title/summary/training/experience, and field-by-field merge behavior. This directly helps an agent construct correct calls.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: "Met à jour le dossier technique (DT) d'une ressource," and enumerates the exact fields covered (compétences, outils, langues, expertises, formations, diplômes, expérience). It also distinguishes itself from the reference-management siblings by explicitly stating that professional experiences are not handled here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a 'Quand' section stating when to use the tool and a 'Plutôt que' section routing professional-experience updates to boond_resources_reference_create/_update/_delete. It closes with an explicit instruction to use those sibling tools for références, leaving no ambiguity about tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_resources_timesheetsFeuilles de temps d'une ressourceARead-onlyIdempotent
Récupère les feuilles de temps (times reports) d'une ressource par son ID, avec filtre optionnel par mois/année.
Quand : pour lister les CRA d'une ressource sur un mois donné, sans connaître leurs ID.
Plutôt que : boond_timesheets_get pour le détail d'un CRA précis, boond_timesheets_search pour couvrir plusieurs ressources d'un coup.
Args:
resourceId (string): ID de la ressource
month (number, optional): Mois (1-12), défaut: mois courant
year (number, optional): Année (ex: 2025), défaut: année courante
Returns: Liste des feuilles de temps de la ressource avec jours/heures et statut.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Année (ex: 2025). Si omis, année courante. | |
| month | No | Mois (1-12). Si omis, mois courant. | |
| resourceId | Yes | ID de la ressource |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that it returns a list with days/hours and status, and that month/year default to current values. However, it doesn't disclose pagination, ordering, or whether the list is limited to a specific period beyond the filter. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded: it states the core function first, then usage guidance, then parameters, then return value. Every sentence earns its place, and the 'Quand' / 'Plutôt que' section is concise and highly informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with full schema coverage and annotations covering safety, the description is nearly complete. It explains the return value (list with days/hours and status) and the default behavior for month/year. The only minor gap is lack of detail on pagination or response structure, but no output schema exists and the tool is simple enough that this is not a significant omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters (resourceId, month, year) with their types and defaults. The description repeats this information without adding new meaning beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves timesheets (feuilles de temps / CRA) for a specific resource by ID, with an optional month/year filter. It explicitly distinguishes itself from sibling tools like boond_timesheets_get (detail of a specific CRA) and boond_timesheets_search (multiple resources), making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: use this tool to list a resource's CRA for a given month without knowing their IDs, and prefer boond_timesheets_get for a specific CRA detail or boond_timesheets_search for multiple resources. This clearly states when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_resources_times_reportsFeuilles de temps d'une ressourceARead-onlyIdempotent
Récupère les feuilles de temps (CRA) d'un(e) ressource, par son ID.
Quand : pour ne charger que cette section, sans le reste de la fiche.
Plutôt que : boond_resources_get pour la fiche de base, ou boond_resources_search si l'ID est inconnu.
Returns : Liste des CRA de la ressource. Pour le détail jour par jour d'un mois, utiliser boond_timesheets_get. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context: it returns a list of CRA for the resource, is read-only, and clarifies the granularity boundary (day-by-day detail belongs to boond_timesheets_get). It doesn't describe pagination or response shape, but with annotations covering safety, this is solid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the core action is stated first, followed by usage guidance and alternatives. Every sentence earns its place, and the read-only note is a useful final flag. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only list tool with full schema coverage and safety annotations, the description is nearly complete. It explains what is returned, when to use it, and which sibling to use instead. The only minor gap is the lack of detail about the response structure or pagination, but no output schema exists and the description still gives enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single 'id' parameter is already fully documented in the schema. The description reinforces that the ID identifies the resource whose timesheets are fetched, but adds no new format or syntax details beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Récupère'), a precise resource ('les feuilles de temps (CRA) d'un(e) ressource'), and the lookup key ('par son ID'). It clearly distinguishes itself from sibling tools like boond_resources_get and boond_resources_search, and even from boond_timesheets_get for day-by-day detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool ('Quand : pour ne charger que cette section, sans le reste de la fiche') and names alternatives with the condition that selects them ('Plutôt que : boond_resources_get pour la fiche de base, ou boond_resources_search si l'ID est inconnu'). It also routes to boond_timesheets_get for month-level day-by-day detail.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_resources_updateModifier un(e) ressourceAIdempotent
Met à jour un(e) ressource existant(e), identifié(e) par son ID.
Quand : pour modifier quelques champs d'un enregistrement déjà en base.
Plutôt que : boond_resources_create si l'enregistrement n'existe pas encore.
Mise à jour partielle : seuls les champs fournis sont écrits, les autres sont laissés en place.
Attention aux champs de type tableau, qui sont remplacés et non fusionnés.
Returns : confirmation et fiche mise à jour.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID de la ressource à modifier | |
| city | No | Ville | |
| note | No | Notes | |
| state | No | État | |
| title | No | Titre / poste | |
| email1 | No | Email principal | |
| phone1 | No | Téléphone | |
| country | No | Pays | |
| lastName | No | Nom | |
| firstName | No | Prénom |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Identifiant de l'entité créée/modifiée |
| type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses two key behaviors beyond annotations: (1) partial update – only provided fields are modified; (2) array fields are replaced, not merged. Annotations declare idempotentHint=true and destructiveHint=false, and the description is consistent with those. It also states the return value ('Returns the updated record'). This is substantive transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short scannable sections (description/quand/plutôt que/remarques). No fluff. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an update tool with a fully-described schema indu, the description covers the usage decision, the key behavioral nuance (partial write, no array merge), and the return value. With annotations indicating idempotent=true and destructive=false, plus output schema present, nothing necessary is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and every parameter has a description. The description adds that only provided fields are written, which is the key semantic needed to interpret 'partial update'. It doesn't add per-parameter detail beyond the schema, but the schema is already complete. The array-replacement warning adds value for fields like positionings that are arrays.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb-resource pair: 'modifier un(e) ressource existant(e)' (update an existing resource). It differentiates from boond_resources_create by explicitly saying 'si l'enregistrement n'existe pas encore' use create. It doesn't explicitly distinguish from boond_resources_information/other resource-actions, but the update/create distinction is the most relevant and is covered.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit 'Quand' (when) – for updating a few fields of an existing record – and an explicit alternative: use boond_resources_create if the record doesn't exist yet, and boond_resources_delete if deletion is the goal. This is textbook usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_roles_getDétails d'un(e) rôleARead-onlyIdempotent
Récupère la fiche complète d'un(e) rôle par son ID numérique.
Quand : après un boond_roles_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_roles_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_roles_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only, idempotent, and non-destructive, so the bar for added transparency is lower. The description still adds meaningful context beyond annotations: the API returns the full entity JSON as-is, the tool is read-only, and unknown IDs propagate the raw BoondManager error. This is useful behavioral disclosure beyond the structured hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a one-sentence purpose, a 'Quand' / 'Plutôt que' usage pair, a single warning bullet, and a return-type note. Every sentence earns its place, and the key scoping information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the description is complete: it identifies the input, explains where the ID comes from, describes the error behavior, and states the return type ('JSON de l'entité (attributs + relations) tel que renvoyé par l'API'). No critical information needed to call the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description substantially enriches the meaning of the id parameter: it is explicitly numeric, the tool does not accept a name, and the ID must originate from boond_roles_search rather than being guessed. This goes beyond the schema's 'Identifiant unique' and gives the agent practical selection guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Récupère la fiche complète d'un(e) rôle par son ID numérique.' It clearly distinguishes this tool from boond_roles_search by explaining that it returns the full record rather than a list summary, and by stating that it accepts only a numeric ID, not a name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use it ('après un boond_roles_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste') and when not to ('Plutôt que : boond_roles_search si l'ID n'est pas connu'). It also warns that unknown IDs surface the raw BoondManager error and that the ID must come from boond_roles_search, never a guess.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_roles_searchRechercher des rôlesARead-onlyIdempotent
Liste et recherche les rôles de BoondManager, par mots-clés et pagination.
Quand : pour retrouver l'ID d'un(e) rôle à partir de son nom, ou pour énumérer les rôles existant(e)s.
Plutôt que : boond_roles_get si l'ID est déjà connu — la recherche ne renvoie qu'un résumé d'une ligne par rôle.
Returns : page de résumés (ID + libellé principal), plus structuredContent.total = nombre total côté BoondManager. Lecture seule.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.Pagination :
pageSize1–500 (défaut 30),page1–100 — au-delà : refus, affiner les filtres.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (défaut: 1, max: 100) | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| keywords | No | Mots-clés de recherche (nom, email, compétences...) | |
| pageSize | No | Nombre de résultats par page (max: 500, défaut: 30) |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Nombre d'éléments retournés sur cette page |
| items | Yes | |
| total | No | Nombre total de résultats côté BoondManager |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context: it returns a page of summaries (ID + main label), exposes structuredContent.total, and explains that the fields parameter is a client-side projection never sent to the API. It also discloses pagination limits (pageSize 1–500, page 1–100) and that exceeding them causes refusal. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured with clear sections (Quand, Plutôt que, Returns, fields, Pagination). Every sentence carries information: use case, sibling differentiation, return shape, read-only confirmation, projection semantics, and pagination constraints. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return values are already documented. The description covers the key operational details an agent needs: when to use it, what it returns, how fields projection behaves, and pagination limits. For a read-only search tool with 4 optional parameters, this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds value by explaining the fields parameter is a client-side projection that replaces the summary and ignores unknown names, and by clarifying pagination bounds and the default pageSize. It also gives an example of fields usage. This is meaningful semantic enrichment beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists and searches BoondManager roles by keywords and pagination, with the specific use case of finding a role ID from its name. It explicitly contrasts with boond_roles_get, distinguishing the search tool from the direct-get sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use it (to find a role ID from its name, or enumerate existing roles) and when not to (use boond_roles_get if the ID is already known), noting the search only returns a one-line summary per role. This is clear routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_threads_getDétails d'un(e) fil de discussionARead-onlyIdempotent
Récupère la fiche complète d'un(e) fil de discussion par son ID numérique.
Quand : après un boond_threads_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_threads_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_threads_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds useful behavioral context: unknown IDs return the BoondManager error as-is, the ID must come from a prior search rather than guesswork, and the tool is read-only. It could give slightly more detail on error shape, but it goes well beyond just repeating annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, well-structured with 'Quand', 'Plutôt que', and 'Returns' sections, and front-loads the core purpose. Every sentence earns its place: purpose, usage timing, alternative, error caveat, and return format.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only getter with rich annotations, the description covers everything needed: what it returns (JSON entity with attributes and relations), when to call it, how to obtain the ID, and the error behavior. No output schema exists, but the return format is stated clearly enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with the id parameter already described as a numeric unique identifier. The description reinforces that it is numeric and must be sourced from boond_threads_search, which is helpful usage context, but it does not add substantial new meaning beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Récupère la fiche complète d'un(e) fil de discussion') on a clear resource by numeric ID. It also distinguishes this tool from boond_threads_search by noting it retrieves attributes not present in the list summary, so an agent can immediately tell it apart from its sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use guidance is given: use after boond_threads_search to fetch attributes missing from the list. It also explicitly says not to use it when the ID is unknown and names the alternative, boond_threads_search, including the reason that this tool does not accept a name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_threads_searchRechercher des fils de discussionARead-onlyIdempotent
Liste et recherche les fils de discussion de BoondManager, par mots-clés et pagination.
Quand : pour retrouver l'ID d'un(e) fil de discussion à partir de son nom, ou pour énumérer les fils de discussion existant(e)s.
Plutôt que : boond_threads_get si l'ID est déjà connu — la recherche ne renvoie qu'un résumé d'une ligne par fil de discussion.
Returns : page de résumés (ID + libellé principal), plus structuredContent.total = nombre total côté BoondManager. Lecture seule.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.Pagination :
pageSize1–500 (défaut 30),page1–100 — au-delà : refus, affiner les filtres.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (défaut: 1, max: 100) | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| keywords | No | Mots-clés de recherche (nom, email, compétences...) | |
| pageSize | No | Nombre de résultats par page (max: 500, défaut: 30) |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Nombre d'éléments retournés sur cette page |
| items | Yes | |
| total | No | Nombre total de résultats côté BoondManager |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already provide readOnly/idempotent/non-destructive signals, and the description reinforces and expands them. It reveals that the tool returns a one-line summary with ID and label, supplies structuredContent.total from BoondManager, and explains that fields is a MCP-side projection never sent to the API, with unknown names ignored. It also discloses that pagination outside the supported ranges is rejected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with short sections: purpose, when to use, alternative, return behavior, and parameter clarifications. Every sentence is load-bearing; there is no filler while the text remains compact and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-required-parameter search tool with an output schema and readOnly annotations, this description covers the needed context: purpose, alternatives, return output, pagination, projection behavior, and safety. An agent has enough information to use the tool correctly without needing to open the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents parameters correctly. The description adds non-obvious semantic value for `fields`: it is not transmitted to the API, replaces the standard summary, and is recommended for large pages. It also spells out pagination refusal beyond limits, which goes beyond the schema's min/max constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: listing and searching BoondManager discussion threads, by keywords and pagination. It also explicitly distinguishes itself from boond_threads_get, saying the search is for finding an ID or enumerating threads, not for fetching one already known.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It has an explicit 'Quand' section giving clear conditions for use, and a 'Plutot que' section naming the alternative boond_threads_get and explaining why it should be used when the ID is already known. It also gives guidance on when to use the fields parameter, i.e. for large pages.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_timesheets_createCréer une feuille de tempsA
Crée la feuille de temps (CRA) d'un mois pour une ressource.
Quand : pour ouvrir le CRA d'un couple (ressource, mois) qui n'existe pas encore.
Plutôt que : boond_timesheets_search d'abord : l'API ne déduplique pas, et deux CRA peuvent coexister sur le même mois.
termest le mois au formatYYYY-MM— un CRA couvre un mois entier, pas une journée.Écriture non idempotente.
Returns : confirmation et fiche du CRA créé.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Notes | |
| term | Yes | Mois au format YYYY-MM | |
| state | No | État de la feuille de temps | |
| endDate | No | Date de fin (YYYY-MM-DD) | |
| projectId | No | ID du projet | |
| startDate | No | Date de début (YYYY-MM-DD) | |
| totalDays | No | Total jours | |
| resourceId | Yes | ID de la ressource | |
| totalHours | No | Total heures |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=false, idempotentHint=false, destructiveHint=false. The description adds the important behavioral detail that the write is non-idempotent and that two CRAs can coexist on the same month. It also states the return value (confirmation + created CRA details), adding useful context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a concise one-line statement of purpose, followed by clearly labeled sections ('Quand', 'Plutôt que', bullet point on 'term', idempotency note, 'Returns'). Every sentence earns its place; no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter tool with no output schema, the description covers the essential operational guidance: when to use, what to avoid, the key parameter's format, idempotency, and return value. Some gap remains on how optional parameters (like state, startDate, endDate) relate to the monthly CRA creation, but the schema already documents these fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 9 parameters. The description adds semantic clarity for 'term' (full month, daily granularity) and implicitly links 'resourceId' and 'term' as the key pair defining a CRA, but it doesn't significantly deepen the meaning of the other parameters. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (creates a monthly timesheet for a resource), defines the exact scope (one month per resource), and distinguishes it from the sibling tool by noting the API's non-deduplicating behavior. The description makes it clear this tool is for opening a new CRA for a (resource, month) pair that doesn't yet exist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'Quand' (when to use) and 'Plutôt que' (rather than) guidance, warning against calling boond_timesheets_search first because the API does not deduplicate. It also clarifies that 'term' must be in YYYY-MM format and covers a full month, removing ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_timesheets_getDétails d'une feuille de tempsARead-onlyIdempotent
Récupère les informations détaillées d'une feuille de temps par son ID.
Quand : après une recherche, pour le détail jour par jour d'un CRA identifié.
Plutôt que : boond_resources_timesheets pour lister les CRA d'une ressource sans connaître leurs ID.
Args:
id (string): Identifiant unique de la feuille de temps
Returns: Données JSON complètes de la feuille de temps (jours, heures, statut, détails).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de la feuille de temps |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context by specifying the return content: 'Données JSON complètes de la feuille de temps (jours, heures, statut, détails).' No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the core purpose, and uses clear labeled sections ('Quand', 'Plutôt que', 'Args', 'Returns'). Every sentence earns its place and none are redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter getter with strong annotations and no output schema, the description is complete: it explains when to call it, what distinguishes it from the relevant sibling, and what kind of data will be returned. An agent has enough context to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents the single 'id' parameter. The description repeats the same meaning ('Identifiant unique de la feuille de temps') without adding format, source, or validation details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Récupère les informations détaillées d'une feuille de temps par son ID.' It clearly distinguishes this get-by-ID tool from listing/search tools by emphasizing the day-by-day detail of an identified CRA.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is provided: 'Quand : après une recherche, pour le détail jour par jour d'un CRA identifié' and 'Plutôt que : boond_resources_timesheets pour lister les CRA d'une ressource sans connaître leurs ID.' This tells an agent exactly when to use it and which sibling to prefer instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_timesheets_searchRechercher des feuilles de tempsARead-onlyIdempotent
Recherche des feuilles de temps (CRA mensuels) dans BoondManager.
Quand : pour balayer les CRA de plusieurs ressources sur une période.
Plutôt que : boond_resources_timesheets quand on part d'une ressource précise, et boond_timesheets_get pour le détail jour par jour d'un CRA.
⚠️ startMonth et endMonth (format YYYY-MM) sont requis par l'API — passer YYYY-MM-DD ou les omettre renvoie un 422.
Args:
startMonth (string, requis): Mois de début YYYY-MM (ex: '2025-01')
endMonth (string, requis): Mois de fin YYYY-MM (ex: '2025-03')
keywords (string, optional): Mots-clés
page (number): Numéro de page (défaut: 1)
pageSize (number): Résultats par page (défaut: 30)
Returns: Liste des feuilles de temps correspondantes.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (max: 100) | |
| endMonth | Yes | Mois de fin au format YYYY-MM (ex: '2025-03'). Requis. | |
| keywords | No | Mots-clés (préfixes 'TPS', 'COMP'...). | |
| pageSize | No | Nombre de résultats par page (max: 500, défaut: 30) | |
| startMonth | Yes | Mois de début au format YYYY-MM (ex: '2025-01'). Requis. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/non-destructive behavior. The description adds a valuable API constraint: startMonth/endMonth must be YYYY-MM and wrong/missing values produce a 422. It also states the return type, though it could say a bit more about pagination/response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and then moves through usage, alternatives, a warning, and parameters in a logical order with no filler. It loses a point because the Args block largely duplicates what the input schema already provides.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with complete schema coverage and safety annotations, the description covers purpose, usage, alternatives, parameter constraints, and return kind. The return line is somewhat thin, and since there is no output schema, a slightly richer description of the returned list would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; every parameter already has required flags, regex patterns, defaults, bounds, and French descriptions. The description mostly restates those schema facts (format examples and defaults) rather than adding new semantics, so it earns the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb + resource: searching monthly CRA timesheets in BoondManager. It also explicitly differentiates from `boond_resources_timesheets` (resource-centric) and `boond_timesheets_get` (day-by-day detail), so an agent can select it among many sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' section names the exact scenario (scanning CRAs of multiple resources over a period) and the 'Plutôt que' section names two alternatives with the conditions that should route to them. This is explicit 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.
boond_todolists_getDétails d'un(e) todolistARead-onlyIdempotent
Récupère la fiche complète d'un(e) todolist par son ID numérique.
Quand : après un boond_todolists_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_todolists_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_todolists_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context beyond that: invalid IDs cause the raw BoondManager error, IDs must come from boond_todolists_search rather than guesses, and the return is the entity JSON with attributes and relations. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loads the core action, and uses short labelled sections ('Quand', 'Plutôt que', 'Returns') plus a bullet for error handling. Every sentence adds distinct information with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-id tool with one parameter and no output schema, the description is complete: it covers the ID source, error behavior, and return shape, and the call sequence with boond_todolists_search. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the single id parameter at 100%, including the numeric pattern and description, so the baseline is 3. The description mainly restates that the ID is numeric and adds provenance guidance ('l'ID doit venir de boond_todolists_search'), but it does not add significant format or meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Récupère la fiche complète d'un(e) todolist par son ID numérique') and contrasts the full entity with the list summary, distinguishing it from boond_todolists_search. An agent can tell what this tool does and how it differs from its closest sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use the tool (after a search, to obtain attributes missing from the list summary) and when not to ('Plutôt que : boond_todolists_search si l'ID n'est pas connu'). It also names the alternative tool and clarifies that this tool accepts an ID, not a name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_todolists_searchRechercher des todolistsARead-onlyIdempotent
Liste et recherche les todolists de BoondManager, par mots-clés et pagination.
Quand : pour retrouver l'ID d'un(e) todolist à partir de son nom, ou pour énumérer les todolists existant(e)s.
Plutôt que : boond_todolists_get si l'ID est déjà connu — la recherche ne renvoie qu'un résumé d'une ligne par todolist.
Returns : page de résumés (ID + libellé principal), plus structuredContent.total = nombre total côté BoondManager. Lecture seule.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.Pagination :
pageSize1–500 (défaut 30),page1–100 — au-delà : refus, affiner les filtres.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (défaut: 1, max: 100) | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| keywords | No | Mots-clés de recherche (nom, email, compétences...) | |
| pageSize | No | Nombre de résultats par page (max: 500, défaut: 30) |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Nombre d'éléments retournés sur cette page |
| items | Yes | |
| total | No | Nombre total de résultats côté BoondManager |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though annotations already declare readOnlyHint=true and idempotentHint=true, the description adds substantial behavioral context: it lists the return shape (page of summaries with ID and main label), mentions structuredContent.total, explains that `fields` is a client-side projection never sent to the API, and clarifies pagination limits with a refusal condition. This goes well beyond the annotation signals.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (Quand, Plutôt que, Returns, and bullet points) and no redundant prose. Every sentence serves a purpose, and the most important routing information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search/list tool with an output schema and safety annotations, the description is complete: it covers when to use it, how it differs from the get sibling, the summary output format, the total count, field projection behavior, and pagination constraints. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaningful extra semantics, especially for `fields`: it clarifies that the projection is handled MCP-side, is never transmitted to the API, replaces the standard summary, and ignores unknown names. It also reinforces pagination ranges. Keywords are covered mainly by the schema, but the overall added value justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Liste et recherche les todolists de BoondManager, par mots-clés et pagination.' It also explicitly differentiates from the sibling tool boond_todolists_get by noting that search returns only a one-line summary, so an agent can immediately tell them apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' section states exactly when to use the tool: to retrieve a todolist ID from its name or to enumerate existing todolists. It also explicitly says to use boond_todolists_get instead when the ID is already known, and advises using `fields` on large pages.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_validations_getDétails d'une validationARead-onlyIdempotent
Récupère la fiche complète d'un(e) validation par son ID numérique.
Quand : après un boond_validations_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_validations_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_validations_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is already known. The description adds valuable behavioral context beyond that: unknown IDs pass through the raw BoondManager error, and the output shape is a JSON entity with attributes and relations. This meaningfully supplements the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a purpose sentence, explicit 'Quand'/'Plutôt que' sections, a bullet point, and a Returns line. Every sentence earns its place, and the most important scoping information is front-loaded. There is no fluff or repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter get tool with full schema coverage and strong annotations, this description is complete. It explains when to call it, how to source the ID, what happens on an unknown ID, and what the response contains, which is especially important because there is no output schema. Nothing needed for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents the id parameter as a numeric identifier. The description adds semantic constraint beyond the schema by stating the ID must come from boond_validations_search and must never be guessed, and it warns that invalid IDs produce raw errors. This is genuinely useful value beyond the structured field definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool fetches the complete record of a validation by numeric ID, naming the resource and the operation. It also distinguishes it from the sibling search tool by noting it retrieves attributes absent from list summaries. This is a clear verb+resource+scope statement that differentiates it from boond_validations_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: after boond_validations_search, to get attributes not in the list summary. It also states when not to use it (if the ID is unknown) and explicitly directs the agent to the alternative, boond_validations_search, including the key limitation that this tool doesn't accept a name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_validations_searchRechercher des validationsARead-onlyIdempotent
Recherche des validations en attente dans BoondManager (absences, notes de frais, feuilles de temps...).
Quand : pour lister ce qui attend une validation managériale sur une plage de mois.
Plutôt que : boond_absences_search, boond_expenses_search ou boond_timesheets_search pour les documents eux-mêmes : celui-ci renvoie l'en-cours de validation, pas leur contenu.
⚠️ startMonth et endMonth (YYYY-MM) sont requis par l'API.
Args:
startMonth (string, requis): YYYY-MM (ex: '2025-01')
endMonth (string, requis): YYYY-MM
documentTypes (string[], optional): 'absencesReport' | 'timesReport' | 'expensesReport'
validationStates (string[], optional): 'waitingForValidation' | 'validated' | 'rejected'
resourceTypes (number[], optional)
keywords (string, optional): préfixes 'TPS', 'EXP', 'ABS', 'COMP'
Returns: Liste des validations correspondantes.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.Pagination :
pageSize1–500 (défaut 30),page1–100 — au-delà : refus, affiner les filtres.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (max: 100) | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| endMonth | Yes | Mois de fin YYYY-MM. Requis. | |
| keywords | No | Mots-clés. Préfixes acceptés : 'TPS' (CRA), 'EXP' (frais), 'ABS' (absence), 'COMP' (ressource). | |
| pageSize | No | Nombre de résultats par page (max: 500, défaut: 30) | |
| startMonth | Yes | Mois de début YYYY-MM. Requis. | |
| documentTypes | No | Types de documents à valider. | |
| resourceTypes | No | IDs de types de ressource (dictionnaire setting.typeOf.resource). | |
| validationAlerts | No | Filtrer sur les validations avec alertes. | |
| validationStates | No | États de validation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already cover read-only/idempotent/non-destructive behavior. The description adds valuable non-obvious behavioral details: startMonth/endMonth are API-required, fields is a client-side MCP projection never sent to the API, unknown field names are ignored, and pagination is hard-limited with refusal beyond page 100/pageSize 500. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The structure is effective: purpose, when to use, alternatives, required args, return type, then behavioral caveats. Though longer than minimal, the 10-parameter surface justifies the length, and each sentence adds value without filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with no output schema, this is complete enough for correct invocation: required months, filter enums, keywords, resourceTypes, projection behavior, and pagination limits are all covered. The annotations carry the safety profile, and the description covers the remaining operational constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaningful extras beyond the schema: a concrete date format example, the MCP-side behavior of fields, and the pagination refusal behavior. Most enum and type information restates the schema, so 4 rather than 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation ('Recherche des validations en attente') and the resource (validations in BoondManager), with concrete document types. It explicitly differentiates itself from boond_absences_search, boond_expenses_search, and boond_timesheets_search by clarifying that it returns the validation workflow, not document content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides an explicit 'Quand' condition: list what awaits managerial validation over a month range. It also provides a 'Plutôt que' section naming the sibling tools to avoid and the reason, giving an agent clear selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_webhooks_getDétails d'un(e) webhookARead-onlyIdempotent
Récupère la fiche complète d'un(e) webhook par son ID numérique.
Quand : après un boond_webhooks_search, pour obtenir les attributs qui n'apparaissent pas dans le résumé de liste.
Plutôt que : boond_webhooks_search si l'ID n'est pas connu (cet outil n'accepte pas de nom).
Un ID inconnu remonte l'erreur BoondManager telle quelle — l'ID doit venir de
boond_webhooks_search, jamais d'une supposition.
Returns : JSON de l'entité (attributs + relations) tel que renvoyé par l'API. Lecture seule.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant unique de l'entité BoondManager (numérique) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint, idempotentHint, and destructiveHint, and the description adds meaningful behavior beyond that: unknown IDs return the raw BoondManager error, and the ID must come from boond_webhooks_search, never from guessing. It also clarifies the return payload is the entity JSON with attributes and relations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded: purpose, usage conditions, an exclusion rule, an error caveat, and return type. Each section earns its place and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only getter with no output schema, this description covers the essential context: when to use it, when not to, how the ID must be obtained, what errors look like, and what the return value contains. Nothing needed for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already describes 'id' as the unique numeric identifier. The description adds valuable parameter guidance by emphasizing that the ID must come from boond_webhooks_search and that the tool does not accept a name, which prevents a common misuse.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Récupère la fiche complète d'un(e) webhook par son ID numérique.' It clearly distinguishes itself from the search sibling by stating that this tool retrieves full attributes missing from the list summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' and 'Plutôt que' sections explicitly say to use this tool after boond_webhooks_search and to prefer search when the ID is not known. It also states that this tool does not accept a name, giving an agent concrete routing rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_webhooks_searchRechercher des webhooksARead-onlyIdempotent
Liste et recherche les webhooks de BoondManager, par mots-clés et pagination.
Quand : pour retrouver l'ID d'un(e) webhook à partir de son nom, ou pour énumérer les webhooks existant(e)s.
Plutôt que : boond_webhooks_get si l'ID est déjà connu — la recherche ne renvoie qu'un résumé d'une ligne par webhook.
Returns : page de résumés (ID + libellé principal), plus structuredContent.total = nombre total côté BoondManager. Lecture seule.
fields: projection côté MCP, jamais transmise à l'API — remplace le résumé par les seuls attributs listés (noms inconnus ignorés). À utiliser sur les grosses pages.Pagination sans effet : cette route renvoie toujours la table complète,
pageSizeetpagesont ignorés par l'API — inutile de paginer, tout est déjà là.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Numéro de page (défaut: 1, max: 100) | |
| fields | No | Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés. | |
| keywords | No | Mots-clés de recherche (nom, email, compétences...) | |
| pageSize | No | Nombre de résultats par page (max: 500, défaut: 30) |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Nombre d'éléments retournés sur cette page |
| items | Yes | |
| total | No | Nombre total de résultats côté BoondManager |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations readOnlyHint, openWorldHint, and idempotentHint, the description discloses critical behavior: the API always returns the complete table, page and pageSize are ignored, and fields is only a local MCP-side projection that is never sent to the API. This non-obvious behavior would otherwise require experimentation and is exactly what an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Each sentence serves a distinct purpose: listing, reading when to use it, naming the alternative, describing the output, and explaining parameter caveats. The information is compact, well segmented, and the most important caveat pagination ignored is clearly marked.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a fully-optional search tool with an annotated schema, output schema, and read-only annotations, the description covers purpose, when/when-not, output shape, and all non-obvious parameter behavior. No decision-relevant information appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the input schema already covers all parameters, the description adds essential meaning: it warns that pagination is ineffective and that `fields` only controls local projection, taking an unchanged field list. This directly changes how an agent should fill the parameters and prevents pointless pagination calls.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb and resource: 'Liste et recherche les webhooks de BoondManager.' It explicitly separates this from boond_webhooks_get by noting search returns one-line summaries and is for finding an ID by name, so an agent can select the right tool without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' section defines exact use cases (retrieve webhook ID from name, or enumerate webhooks), and the 'Plutôt que' section names boond_webhooks_get as the alternative when the ID is already known. It also states why that alternative is preferable, leaving no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_workflow_candidats_pour_opportuniteCandidats correspondant à une opportunitéARead-onlyIdempotent
À partir d'une opportunité (ses outils, expertise, mobilité), trouve les candidats actifs qui matchent.
Quand : pour dérouler ce scénario multi-étapes sans avoir à retrouver soi-même le bon enchaînement d'outils et les bons noms de filtres.
Plutôt que : le prompt MCP candidats_pour_opportunite si le client l'expose — contenu identique, sans consommer un appel d'outil. Cette variante existe pour les clients qui traitent mal prompts/get (claude.ai notamment).
N'appelle aucune API BoondManager et ne lit aucune donnée : la réponse est générée côté serveur MCP.
Returns : un runbook en texte — la liste ordonnée des appels Boond à effectuer, avec les filtres exacts. C'est ensuite au modèle de les exécuter ; rien n'est fait par cet appel.
| Name | Required | Description | Default |
|---|---|---|---|
| opportunity_id | Yes | Opportunité à pourvoir. Accepte soit l'ID numérique, soit l'intitulé de l'opportunité (résolution auto via `boond_opportunities_search`). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description explicitly states that this tool makes no BoondManager API call, reads no data, and is generated server-side by the MCP. It also clarifies that it returns only a runbook and that nothing is executed by the call itself. This fully discloses the non-executing side-effect-free behavior and does not contradict the read-only/idempotent annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main behavior and uses clear labels (Quand, Plutôt que, Returns) that make it scannable. It is slightly longer than strictly necessary and repeats the no-API/no-action point at the end, but every section contributes useful guidance. This earns a 4 rather than a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a workflow tool with no output schema, the description explains what is returned (an ordered runbook with exact filters), what the model is expected to do afterward, and why no data is read. It also covers when to prefer this tool over the equivalent prompt and how the input opportunity_id is resolved. No essential information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers the single parameter fully, stating that it accepts a numeric ID or an opportunity title and auto-resolves via `boond_opportunities_search`. The description adds contextual framing about tools, expertise, and mobility but no new parameter-level semantics. With 100% schema coverage, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific behavior: from an opportunity's tools, expertise, and mobility, it identifies matching active candidates. It then clarifies that the actual deliverable is a runbook text, which distinguishes it from a direct search tool. However, it does not explicitly differentiate from sibling workflow or search tools, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' section states precisely when to use this tool: to run the multi-step scenario without having to determine the correct tool sequence and filter names. The 'Plutôt que' section explicitly names the alternative MCP prompt `candidats_pour_opportunite`, explains it is identical content, and states when this tool variant is preferable (clients that mishandle prompts/get, e.g. claude.ai). This is 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.
boond_workflow_cartographie_competencesCartographie des compétences d'un périmètreARead-onlyIdempotent
Produit une cartographie des compétences techniques d'un périmètre (équipe, agence, …) : top compétences, compétences rares (risque bus-factor) et compétences manquantes vs opportunités ouvertes.
Quand : pour dérouler ce scénario multi-étapes sans avoir à retrouver soi-même le bon enchaînement d'outils et les bons noms de filtres.
Plutôt que : le prompt MCP cartographie_competences si le client l'expose — contenu identique, sans consommer un appel d'outil. Cette variante existe pour les clients qui traitent mal prompts/get (claude.ai notamment).
N'appelle aucune API BoondManager et ne lit aucune donnée : la réponse est générée côté serveur MCP.
Returns : un runbook en texte — la liste ordonnée des appels Boond à effectuer, avec les filtres exacts. C'est ensuite au modèle de les exécuter ; rien n'est fait par cet appel.
| Name | Required | Description | Default |
|---|---|---|---|
| top_n | No | Nombre de compétences à mettre en avant dans le top (défaut: 20). | |
| agency_id | No | Agence pour cartographier toute une agence (alternatif à `manager_id`). Accepte soit l'ID numérique, soit le nom de l'agence (résolution auto via `boond_agencies_search`). | |
| manager_id | No | Manager pour cibler son équipe. Accepte soit l'ID numérique, soit « Prénom Nom » (le serveur résoudra automatiquement via `boond_resources_search`). Si absent, scope = mon équipe via `perimeterDynamic: ['managers']`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds value beyond these by specifying the tool calls no BoondManager API, reads no data, generates its response server-side, and returns a text runbook for the model to execute — clarifying the actual behavioral contract. No contradiction with annotations; the only minor gap is not detailing the exact runbook structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized and front-loaded: purpose first, then 'Quand', 'Plutôt que', the no-API note, and 'Returns'. Every sentence earns its place, though the French formal structure makes it slightly longer than strictly necessary. Information density is high with no wasteful repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex workflow-orchestration tool with no output schema, the description fully compensates: it explains the return value (a text runbook listing ordered Boond calls with exact filters), clarifies nothing is executed by the call, and states the alternate prompt path. Together with a 100%-covered optional-parameter schema, nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents top_n, agency_id, and manager_id, including the automatic resolution logic. The description adds only marginal param-related context (the scope concept team/agency maps to agency_id/manager_id) but no syntax or format details beyond the schema. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Produit une cartographie des compétences techniques d'un périmètre') with a precise resource and scope, enumerating the concrete outputs (top skills, rare skills/bus-factor risk, missing skills vs opportunities). It further distinguishes this tool from the MCP prompt `cartographie_competences`, making its identity unambiguous among the workflow siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' section explicitly states when to use it (to run a multi-step scenario without manually finding the tool chain and filter names), and the 'Plutôt que' section names the exact alternative (the `cartographie_competences` prompt) and the condition that selects this variant (clients that handle `prompts/get` poorly). Clear when/when-not guidance with a named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_workflow_cvs_a_mettre_a_jourAudit fraîcheur des CV / dossiers techniquesARead-onlyIdempotent
Identifie les ressources dont le CV ou le dossier technique est obsolète, incomplet, ou manquant. Priorise celles bientôt sur le marché (en intercontrat ou disponibles à court terme).
Quand : pour dérouler ce scénario multi-étapes sans avoir à retrouver soi-même le bon enchaînement d'outils et les bons noms de filtres.
Plutôt que : le prompt MCP cvs_a_mettre_a_jour si le client l'expose — contenu identique, sans consommer un appel d'outil. Cette variante existe pour les clients qui traitent mal prompts/get (claude.ai notamment).
N'appelle aucune API BoondManager et ne lit aucune donnée : la réponse est générée côté serveur MCP.
Returns : un runbook en texte — la liste ordonnée des appels Boond à effectuer, avec les filtres exacts. C'est ensuite au modèle de les exécuter ; rien n'est fait par cet appel.
| Name | Required | Description | Default |
|---|---|---|---|
| manager_id | No | Manager pour cibler son équipe. Accepte soit l'ID numérique, soit « Prénom Nom » (le serveur résoudra automatiquement via `boond_resources_search`). Si absent, scope = mon équipe via `perimeterDynamic: ['managers']`. | |
| seuil_mois | No | Un dossier technique non touché depuis plus de N mois est considéré obsolète (défaut: 12). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses a key non-obvious trait: the tool calls no BoondManager API and reads no data, with the response generated server-side. It also states that nothing is executed by this call and the model must execute the returned runbook afterward. This is exactly the kind of behavioral context annotations alone do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded, starting with the purpose, then usage conditions, then side effects and return value. Every sentence earns its place: the alternative-prompt note, the no-API clarification, and the runbook explanation are all necessary for correct use, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a runbook-generating workflow tool with no output schema, the description is complete: it explains what the tool returns, how the model should use the result, when to prefer the prompt alternative, and what side effects do not occur. Combined with the fully documented schema and safety annotations, nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents both parameters, including the manager_id resolution behavior and the seuil_mois default of 12. The tool description does not add further parameter-level meaning, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific outcome: auditing resources for obsolete, incomplete, or missing CVs/technical files and prioritizing those soon on the market. This clearly distinguishes it from the many sibling workflow tools. The later clarification that it returns a runbook rather than performing the audit itself is explicit and removes ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' section explicitly says when to use this tool: to run a multi-step scenario without manually finding the tool chain and filter names. The 'Plutôt que' section names the alternative prompt `cvs_a_mettre_a_jour`, states the content is identical, and explains that this tool variant exists for clients that handle prompts/get poorly. This is strong, actionable 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.
boond_workflow_factures_a_relancerFactures impayées à relancerARead-onlyIdempotent
Liste les factures impayées avec date d'échéance dépassée, regroupées par société. Optionnellement filtrable sur une société spécifique.
Quand : pour dérouler ce scénario multi-étapes sans avoir à retrouver soi-même le bon enchaînement d'outils et les bons noms de filtres.
Plutôt que : le prompt MCP factures_a_relancer si le client l'expose — contenu identique, sans consommer un appel d'outil. Cette variante existe pour les clients qui traitent mal prompts/get (claude.ai notamment).
N'appelle aucune API BoondManager et ne lit aucune donnée : la réponse est générée côté serveur MCP.
Returns : un runbook en texte — la liste ordonnée des appels Boond à effectuer, avec les filtres exacts. C'est ensuite au modèle de les exécuter ; rien n'est fait par cet appel.
| Name | Required | Description | Default |
|---|---|---|---|
| society_id | No | Société ciblée pour la relance. Accepte soit l'ID numérique, soit le nom de la société (résolution auto via `boond_companies_search`). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive. The description adds valuable context: it does not call any BoondManager API and does not read any data, with the response generated server-side. It also clarifies that nothing is executed by this call—only a runbook is returned. This goes well beyond the annotations and gives the agent a precise understanding of side effects and security.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with clear sections (purpose, when to use, alternative, behavior, returns). It is somewhat lengthy but each part adds value, and the most important purpose is front-loaded. The only slight inefficiency is the repetitive mention of the runbook concept, but overall it's well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a workflow tool with a single optional parameter and no output schema, the description fully explains the output (a runbook with exact filters), the internal behavior (no API calls), and the usage context. It also provides an alternative path. An agent has everything needed to decide whether to call it and what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter. The description adds meaning: society_id accepts either a numeric ID or a comany name, with automatic resolution via `boond_companies_search`. This clarifies the input format and resolution behavior, which is helpful for correct invocation, exceeding the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool lists unpaid invoices with past due date, grouped by company, and optionally filtered by company. However, the initial sentence 'Liste les factures impayées' could be misread as returning actual data, while later it clarifies the tool returns a runbook (ordered instructions) rather than the data itself. This nuance is eventually clear but initially slightly ambiguous. It is distinct from sibling workflow tools because of its specific scenario.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it ('pour dérouler ce scénario multi-étapes sans avoir à retrouver soi-même le bon enchaînement d'outils et les bons noms de filtres') and directly names an alternative (the MCP prompt `factures_a_relancer`), explaining the trade-off (avoids an API call but only for clients that handle prompts/get poorly). This leaves no doubt about selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_workflow_fiche_consultantFiche complète d'un collaborateurARead-onlyIdempotent
Vue 360° d'une ressource : info, profil technique, positionnements, absences, CRA récents.
Quand : pour dérouler ce scénario multi-étapes sans avoir à retrouver soi-même le bon enchaînement d'outils et les bons noms de filtres.
Plutôt que : le prompt MCP fiche_consultant si le client l'expose — contenu identique, sans consommer un appel d'outil. Cette variante existe pour les clients qui traitent mal prompts/get (claude.ai notamment).
N'appelle aucune API BoondManager et ne lit aucune donnée : la réponse est gén��rée côté serveur MCP.
Returns : un runbook en texte — la liste ordonnée des appels Boond à effectuer, avec les filtres exacts. C'est ensuite au modèle de les exécuter ; rien n'est fait par cet appel.
| Name | Required | Description | Default |
|---|---|---|---|
| resource_id | Yes | Ressource ciblée. Accepte soit l'ID numérique, soit « Prénom Nom » (le serveur résoudra automatiquement via `boond_resources_search`). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly discloses the key non-obvious behavior: it calls no BoondManager API, reads no data, and returns a server-generated text runbook for the model to execute later. This goes well beyond the readOnly/idempotent annotations and prevents the agent from expecting actual resource data from this call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, scannable, and well-structured with clear 'Quand', 'Plutôt que', and 'Returns' sections. Every sentence conveys decision-relevant information, and it avoids repeating schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only one parameter, no output schema, and no side effects, the description fully covers what the agent needs: what the runbook contains, that no data is read, and that the model must execute the returned calls. No crucial behavioral contract is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter `resource_id` is fully documented in the schema (100% coverage), including accepted formats (numeric ID or 'Prénom Nom') and automatic resolution via `boond_resources_search`. The top-level description adds no further parameter-specific meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies a workflow scenario tool: it returns a runbook for a 360° view of a resource, and explicitly states it performs no data fetch. It differentiates itself from the equivalent prompt MCP `fiche_consultant` and from sibling data-oriented tools by clarifying that the output is an ordered list of calls for the model to execute.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' section tells the agent exactly when to use the tool: to run a multi-step scenario without reconstructing the sequence and filter names. The 'Plutôt que' section names the alternative prompt, gives the condition for using it instead, and explains why this variant exists for clients that handle `prompts/get` poorly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_workflow_fin_de_missionAnticipation des fins de missionARead-onlyIdempotent
Liste les ressources dont la mission se termine dans les prochains jours, pour anticiper le repositionnement. Met en évidence les fins imminentes sans relais identifié.
Quand : pour dérouler ce scénario multi-étapes sans avoir à retrouver soi-même le bon enchaînement d'outils et les bons noms de filtres.
Plutôt que : le prompt MCP fin_de_mission si le client l'expose — contenu identique, sans consommer un appel d'outil. Cette variante existe pour les clients qui traitent mal prompts/get (claude.ai notamment).
N'appelle aucune API BoondManager et ne lit aucune donnée : la réponse est générée côté serveur MCP.
Returns : un runbook en texte — la liste ordonnée des appels Boond à effectuer, avec les filtres exacts. C'est ensuite au modèle de les exécuter ; rien n'est fait par cet appel.
| Name | Required | Description | Default |
|---|---|---|---|
| manager_id | No | Manager pour restreindre à son équipe. Accepte soit l'ID numérique, soit « Prénom Nom » (le serveur résoudra automatiquement via `boond_resources_search`). Si absent, scope = mon équipe via `perimeterDynamic: ['managers']`. | |
| horizon_jours | No | Nombre de jours à anticiper (défaut: 60). Ex: '30' pour ne voir que les fins très proches. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/non-destructive annotations, the description discloses that the tool makes no API call, reads no data, generates its answer server-side, and only returns instructions that the model must execute. This prevents the agent from assuming side effects or live data retrieval and fully aligns with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with clear labels (Quand, Plutôt que, Returns) and every sentence carries information: scope, routing, side-effect disclaimer, and output format. It is front-loaded with the main purpose and contains no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly explains the return value (a text runbook with ordered calls and exact filters) and the follow-up behavior required from the model. Combined with annotations and parameter schema, nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both manager_id and horizon_jours already documented in the input schema. The tool description does not add parameter-level detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific scenario (resources whose missions end soon) and the actual deliverable (a text runbook of ordered Boond calls). It distinguishes itself from direct API tools by explicitly saying no API is called, and from sibling workflow tools by naming the fin_de_mission scenario and the MCP prompt alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It has an explicit 'Quand' section that tells the agent when to prefer this tool, and a 'Plutôt que' section that names the exact alternative (the MCP prompt fin_de_mission) and the condition under which to use this tool instead. This is model-friendly routing information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_workflow_pipeline_commercialPipeline commercial sur une périodeARead-onlyIdempotent
Analyse les opportunités commerciales avec closing prévu dans la période donnée : répartition par état, CA pondéré, top opportunités.
Quand : pour dérouler ce scénario multi-étapes sans avoir à retrouver soi-même le bon enchaînement d'outils et les bons noms de filtres.
Plutôt que : le prompt MCP pipeline_commercial si le client l'expose — contenu identique, sans consommer un appel d'outil. Cette variante existe pour les clients qui traitent mal prompts/get (claude.ai notamment).
N'appelle aucune API BoondManager et ne lit aucune donnée : la réponse est générée côté serveur MCP.
Returns : un runbook en texte — la liste ordonnée des appels Boond à effectuer, avec les filtres exacts. C'est ensuite au modèle de les exécuter ; rien n'est fait par cet appel.
| Name | Required | Description | Default |
|---|---|---|---|
| date_fin | Yes | Fin de période (YYYY-MM-DD). | |
| date_debut | Yes | Début de période (YYYY-MM-DD). | |
| manager_id | No | Commercial ciblé. Accepte soit l'ID numérique, soit « Prénom Nom » (le serveur résoudra automatiquement via `boond_resources_search`). Si absent, scope = équipe de l'utilisateur courant via `perimeterDynamic: ['data']`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly discloses that the tool makes no API calls and reads no data, with the response generated server-side. This is valuable behavioral context beyond the annotations (readOnlyHint, idempotentHint, destructiveHint). It also clarifies the return type (a runbook text) and that the model must execute the listed calls afterward. Minor gap: no mention of error cases or what happens if the period is invalid, but the core non-execution behavior is well disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (Quand, Plutôt que, Returns) and front-loads the core purpose. It's slightly verbose with the explanation about prompts/get handling, but every sentence serves a purpose in guiding tool selection and expectations. The formatting aids readability for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool that returns a runbook rather than data, the description adequately covers what the agent needs: the purpose, the alternative, the non-execution behavior, and the return format. The absence of an output schema is compensated by the explicit 'Returns : un runbook en texte' statement. Minor gap: no example of the runbook format or the exact filter names, but the description states the runbook will contain them, which is sufficient for selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The description adds context for `manager_id` by explaining the resolution via `boond_resources_search` and the default scope, but this is already in the schema description. The description doesn't add much beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: analyzing commercial opportunities with closing in a given period, providing distribution by state, weighted revenue, and top opportunities. It distinguishes itself from the sibling `pipeline_commercial` prompt and other workflow tools by explicitly stating it's a multi-step scenario runner that returns a runbook rather than performing data operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('pour dérouler ce scénario multi-étapes sans avoir à retrouver soi-même le bon enchaînement d'outils'), and provides a clear alternative ('Plutôt que : le prompt MCP `pipeline_commercial` si le client l'expose'). It also explains the fallback rationale for clients that handle prompts/get poorly, giving an agent clear routing logic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_workflow_recap_hebdoRécap hebdomadaire (moi + mon équipe)ARead-onlyIdempotent
Compile en une vue ce qui s'est passé / va se passer cette semaine pour moi et mon équipe : opportunités, projets, absences, CRA.
Quand : pour dérouler ce scénario multi-étapes sans avoir à retrouver soi-même le bon enchaînement d'outils et les bons noms de filtres.
Plutôt que : le prompt MCP recap_hebdo si le client l'expose — contenu identique, sans consommer un appel d'outil. Cette variante existe pour les clients qui traitent mal prompts/get (claude.ai notamment).
N'appelle aucune API BoondManager et ne lit aucune donnée : la réponse est générée côté serveur MCP.
Returns : un runbook en texte — la liste ordonnée des appels Boond à effectuer, avec les filtres exacts. C'est ensuite au modèle de les exécuter ; rien n'est fait par cet appel.
| Name | Required | Description | Default |
|---|---|---|---|
| semaine | No | Semaine ciblée (ex: 'cette semaine', 'la semaine prochaine'). Défaut: cette semaine. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint), the description adds critical behavioral context: it calls no BoondManager API, reads no data, generates the response server-side, and performs no actions on the model's behalf. This prevents a serious mischaracterization of the tool's side effects. The only slight weakness is the opening 'Compile' wording, which initially suggests more data access than actually occurs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well organized with 'Quand', 'Plutôt que', and 'Returns' sections, making it easy to scan. It is slightly repetitive around 'no API call / nothing is done by this call', but each sentence earns its place and the key behavior is front-loaded in the Returns section.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description fully explains what the agent receives, what it should do with it, and what the tool does not do. The runbook output format, the exact-filter content, and the follow-up execution by the model are all explicitly covered, so an agent can invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The one parameter, `semaine`, is already well documented in the schema with examples and a default; the description adds no additional semantics beyond the general weekly framing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the scenario clearly: it compiles a weekly view of opportunities, projects, absences, and CRA for the user and their team. However, the opening sentence could be misread as an actual data summary, and the real behavior—producing a text runbook—only becomes fully clear in the Returns section. It also does not distinguish itself from sibling workflow tools, though the name and scenario help.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use the tool ('pour dérouler ce scénario multi-étapes sans avoir à retrouver soi-même le bon enchaînement d'outils') and when not to, naming the alternative prompt `recap_hebdo` and the exact condition for preferring it. This gives an agent actionable routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_workflow_recherche_profil_competencesRecherche multi-source d'un profil par compétencesARead-onlyIdempotent
Recherche un profil correspondant à un mix de compétences libres, en croisant ressources internes et candidats. Sortie classée par adéquation. Utile en amont d'un staffing ou d'une opportunité non encore qualifiée.
Quand : pour dérouler ce scénario multi-étapes sans avoir à retrouver soi-même le bon enchaînement d'outils et les bons noms de filtres.
Plutôt que : le prompt MCP recherche_profil_competences si le client l'expose — contenu identique, sans consommer un appel d'outil. Cette variante existe pour les clients qui traitent mal prompts/get (claude.ai notamment).
N'appelle aucune API BoondManager et ne lit aucune donnée : la réponse est générée côté serveur MCP.
Returns : un runbook en texte — la liste ordonnée des appels Boond à effectuer, avec les filtres exacts. C'est ensuite au modèle de les exécuter ; rien n'est fait par cet appel.
| Name | Required | Description | Default |
|---|---|---|---|
| manager_id | No | Manager pour restreindre le scope ressources internes. Accepte soit l'ID numérique, soit « Prénom Nom » (le serveur résoudra automatiquement via `boond_resources_search`). Sinon scope ouvert (toute l'organisation accessible). | |
| competences | Yes | Compétences recherchées en texte libre (ex: 'Java Spring AWS Kubernetes', '.NET Azure DevOps'). | |
| dispo_avant | No | Disponibilité requise au plus tard à cette date (YYYY-MM-DD). Si fourni, applique `period: 'available'` + `endDate`. | |
| experience_min | No | Niveau d'expérience minimum en texte libre (ex: '5 ans', 'senior'). Le modèle le mappera vers `experiences` via le dictionnaire. | |
| inclure_candidats | No | 'oui' (défaut) pour inclure aussi les candidats actifs ; 'non' pour ne chercher que dans les ressources internes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, but the description adds crucial behavior: it explicitly states 'N'appelle aucune API BoondManager et ne lit aucune donnée' and that the response is generated server-side. This goes beyond the read-only hint by explaining that no external data is touched at all—important for a tool that only produces instructions. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear first-line summary, then a 'Quand' section, a 'Plutôt que' section, and a 'Returns' section. Every sentence adds value: it explains the multi-step nature, the alternative, the no-API behavior, and the output format. No fluff or repetition; front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a workflow tool that returns a runbook, the description covers all necessary context: what it does, when to use it, what it returns (a text runbook), and that it does not execute anything. It also explains the reasoning for its existence (prompts/get compatibility). Given no output schema, it explicitly describes the return format. Nothing an agent needs to decide whether to invoke it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: each parameter already has a detailed description (e.g., manager_id accepts ID or 'Prénom Nom', dispo_avant applies period/endDate). The tool description does not add significant meaning beyond that; it mentions 'mix de compétences libres' and that filters will be exact, but these are not parameter-specific. Baseline of 3 applies because the schema carries the semantic weight.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: it searches for a profile matching a mix of free-form skills, crossing internal resources and candidates, and outputs results ranked by fit. It also frames the use case ('en amont d'un staffing ou d'une opportunité non encore qualifiée') and distinguishes it from sibling direct-search tools by clarifying it returns a runbook rather than executing queries. This is a specific verb+resource with a well-defined scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use it ('Quand : pour dérouler ce scénario multi-étapes') and names a concrete alternative ('Plutôt que le prompt MCP recherche_profil_competences'), even explaining why this variant exists (for clients that handle prompts/get poorly). This gives the agent clear routing logic and no ambiguity about when to choose it over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_workflow_staffing_disponibleConsultants disponibles pour un staffingARead-onlyIdempotent
Identifie les ressources internes disponibles pour un staffing sur une fenêtre donnée, avec filtres optionnels par compétences (texte libre) et périmètre. Trie par date de disponibilité croissante et propose les profils prioritaires à activer.
Quand : pour dérouler ce scénario multi-étapes sans avoir à retrouver soi-même le bon enchaînement d'outils et les bons noms de filtres.
Plutôt que : le prompt MCP staffing_disponible si le client l'expose — contenu identique, sans consommer un appel d'outil. Cette variante existe pour les clients qui traitent mal prompts/get (claude.ai notamment).
N'appelle aucune API BoondManager et ne lit aucune donnée : la réponse est générée côté serveur MCP.
Returns : un runbook en texte — la liste ordonnée des appels Boond à effectuer, avec les filtres exacts. C'est ensuite au modèle de les exécuter ; rien n'est fait par cet appel.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | Yes | Fin de fenêtre de staffing (YYYY-MM-DD). | |
| manager_id | No | Manager pour restreindre à son équipe. Accepte soit l'ID numérique, soit « Prénom Nom » (le serveur résoudra automatiquement via `boond_resources_search`). Si absent, scope = mon équipe via `perimeterDynamic: ['managers']`. | |
| start_date | Yes | Début de fenêtre de staffing (YYYY-MM-DD). | |
| competences | No | Compétences recherchées en texte libre (ex: 'Java Spring AWS'). Le modèle les mappera vers `tools` via le dictionnaire. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/destructive annotations, the description discloses a critical behavioral trait: it calls no BoondManager API and reads no data, with the response generated server-side. It also states that nothing is executed by the call and that the model must run the returned runbook, which is essential for an agent to predict side effects and next steps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well organized with labeled sections ('Quand', 'Plutôt que', the bullet, and 'Returns'), and the core function is near the front. It is slightly longer than necessary and repeats the no-side-effect point, and the opening 'Identifie' claim is less precise than the later 'Returns a runbook' statement. Still, every section earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description clearly defines the return as a text runbook listing ordered Boond calls with exact filters, and states that the model must execute them. It also covers the no-data/no-API behavior and the conditions that trigger use of this variant. An agent has enough information to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline applies. The description mentions optional filters by competences and perimeter and notes free-text competences, but it does not add detail beyond the schema's own parameter descriptions. The manager_id resolution and default scope are already documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a concrete action ('Identifie les ressources internes disponibles pour un staffing'), names the window and optional filters, and mentions sorting and priority profiles. It also distinguishes this tool from the equivalent MCP prompt. However, the first sentence is slightly misleading because the tool actually returns a runbook of calls to make rather than directly identifying resources; the 'Returns' paragraph corrects this, but only later.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' paragraph explicitly states when to use the tool: to run a multi-step staffing scenario without manually chaining tools and filter names. The 'Plutôt que' paragraph names the alternative MCP prompt `staffing_disponible` and gives the precise condition for choosing this variant, namely clients that handle `prompts/get` poorly. This is explicit, actionable usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_workflow_synthese_equipeSynthèse d'une équipeARead-onlyIdempotent
Produit un état d'équipe : qui est sur quoi, qui est absent, qui est disponible. Si manager_id est omis, utilise l'utilisateur courant comme manager.
Quand : pour dérouler ce scénario multi-étapes sans avoir à retrouver soi-même le bon enchaînement d'outils et les bons noms de filtres.
Plutôt que : le prompt MCP synthese_equipe si le client l'expose — contenu identique, sans consommer un appel d'outil. Cette variante existe pour les clients qui traitent mal prompts/get (claude.ai notamment).
N'appelle aucune API BoondManager et ne lit aucune donnée : la réponse est générée côté serveur MCP.
Returns : un runbook en texte — la liste ordonnée des appels Boond à effectuer, avec les filtres exacts. C'est ensuite au modèle de les exécuter ; rien n'est fait par cet appel.
| Name | Required | Description | Default |
|---|---|---|---|
| periode | No | Période d'analyse libre (ex: 'cette semaine', 'avril 2026'). Défaut: mois en cours. | |
| manager_id | No | Manager ciblé. Accepte soit l'ID numérique, soit « Prénom Nom » (le serveur résoudra automatiquement via `boond_resources_search`). Si absent, l'outil `boond_application_current_user` est appelé pour le récupérer. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, the description explicitly states it calls no BoondManager API, reads no data, is generated server-side, and performs no actions itself; it also clarifies the model must execute the returned runbook. This is exactly the kind of side-effect disclosure that annotations alone do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well organized with Quand/Plutôt que/Returns sections and a front-loaded core sentence. It earns its length, though the no-API/no-read point is stated twice ('N'appelle aucune API...' and 'rien n'est fait par cet appel'), so a sentence could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given two optional params, no output schema, and annotations covering safety, the description is complete: it explains the scenario, the alternative prompt, the exact return artifact, and the execution responsibility. An agent has enough to decide and call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents both parameters at 100% coverage, including the default month for periode and manager_id's ID/name resolution and current-user fallback. The description adds only a paraphrase of the manager_id fallback, so it does not materially increase parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete deliverable ('un état d'équipe : qui est sur quoi, qui est absent, qui est disponible') and clarifies that it returns a runbook, which is more specific than the title. It stops short of fully distinguishing this workflow from sibling workflow tools like boond_workflow_staffing_disponible, even though the 'Quand' section hints at the unique scenario.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It has an explicit 'Quand' section, explaining to use it for this multi-step scenario to avoid reconstructing tool chains and filter names, and a 'Plutôt que' section naming the prompt MCP alternative and when to prefer it (clients that mishandle prompts/get). This is clear when/when-not/alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boond_workflow_traiter_note_de_fraisTraiter un justificatif en note de fraisARead-onlyIdempotent
À partir d'une photo ou d'un PDF de justificatif joint à la conversation, extrait les données de la dépense et crée la ligne de frais correspondante dans BoondManager, après récapitulatif et validation explicite. Aucun montant n'est inventé : un champ illisible est demandé à l'utilisateur.
Quand : pour dérouler ce scénario multi-étapes sans avoir à retrouver soi-même le bon enchaînement d'outils et les bons noms de filtres.
Plutôt que : le prompt MCP traiter_note_de_frais si le client l'expose — contenu identique, sans consommer un appel d'outil. Cette variante existe pour les clients qui traitent mal prompts/get (claude.ai notamment).
N'appelle aucune API BoondManager et ne lit aucune donnée : la réponse est générée côté serveur MCP.
Returns : un runbook en texte — la liste ordonnée des appels Boond à effectuer, avec les filtres exacts. C'est ensuite au modèle de les exécuter ; rien n'est fait par cet appel.
| Name | Required | Description | Default |
|---|---|---|---|
| term | No | Mois de la note de frais (YYYY-MM). Défaut : mois de la date du justificatif. | |
| contexte | No | Précision libre sur la dépense (ex: « déjeuner client Dupont », « A/R Nancy en voiture »). | |
| project_id | No | Projet à imputer / refacturer. Accepte soit l'ID numérique, soit le libellé du projet (résolution auto via `boond_projects_search`). | |
| resource_id | No | Collaborateur concerné. Accepte soit l'ID numérique, soit « Prénom Nom » (le serveur résoudra automatiquement via `boond_resources_search`). Si absent, `boond_application_current_user` est appelé pour le récupérer. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses that no Boond API is called, no data is read, the response is generated server-side, and the tool returns a textual runbook for the model to execute. It also adds the no-invented-amount and user-request-for-illegible-field behaviors; only the earlier 'crée la ligne' phrasing slightly muddles this otherwise transparent picture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is organized into clear sections (Quand, Plutôt que, Returns) with the key constraints front-loaded and no filler. It is a bit long and repeats the no-API idea, but each section earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers when to use it, the alternative to prefer, side-effect guarantees, the return format, validation, and how illegible fields are handled—especially valuable given there is no output schema. A short example or a less contradictory opening sentence would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input-schema description coverage is 100%, so the schema already explains all four parameters, including the auto-resolution behavior for project_id and resource_id. The tool description adds no parameter-level detail beyond that, so it stays at the schema-covered baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete scenario and outcome—extract data from a receipt and create an expense line in BoondManager after explicit validation—and states a clear invariant (no invented amounts). It is not a tautology and is specific enough to distinguish from most siblings, but the first sentence says the tool itself creates the line while the Returns section says it only emits a runbook, which leaves the tool's immediate effect slightly ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Quand' block explicitly says this tool is for running a multi-step workflow without manually chaining tools and filters. The 'Plutôt que' block names a specific alternative (the MCP prompt `traiter_note_de_frais`) and gives the condition under which each should be chosen, so an agent needs no inference.
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.
8 tool updates
v2.15.0- Changed
boond_candidates_create1 field changed- changed
Input schema / properties / email1 / patternPrevious value: -"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"New value: +"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
- Changed
boond_candidates_update1 field changed- changed
Input schema / properties / email1 / patternPrevious value: -"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"New value: +"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
- Changed
boond_companies_create1 field changed- changed
Input schema / properties / email1 / patternPrevious value: -"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"New value: +"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
- Changed
boond_companies_update1 field changed- changed
Input schema / properties / email1 / patternPrevious value: -"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"New value: +"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
- Changed
boond_contacts_create1 field changed- changed
Input schema / properties / email1 / patternPrevious value: -"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"New value: +"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
- Changed
boond_contacts_update1 field changed- changed
Input schema / properties / email1 / patternPrevious value: -"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"New value: +"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
- Changed
boond_resources_create1 field changed- changed
Input schema / properties / email1 / patternPrevious value: -"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"New value: +"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
- Changed
boond_resources_update1 field changed- changed
Input schema / properties / email1 / patternPrevious value: -"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"New value: +"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
4 tool updates
v2.14.0- Changed
boond_expenses_create19 fields changed- added
Input schema / properties / actualExpensesAdded value: +{ + "description": "Lignes de frais réels. Omettre pour créer une note de frais vide.", + "items": { + "additionalProperties": false, + "properties": { + "activityType": { + "default": "production", + "description": "Type d'activité rattachée au frais.", + "enum": [ + "production", + "internal", + "absence" + ], + "type": "string" + }, + "amountIncludingTax": { + "description": "Montant TTC. Ignoré pour un frais kilométrique (recalculé = km × barème).", + "type": "number" + }, + "batchId": { + "description": "ID du lot. Absent = aucun lot.", + "type": "string" + }, + "currency": { + "default": 0, + "description": "ID de devise (`setting.currency`, 0 = EUR).", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "deliveryId": { + "description": "ID de la prestation (delivery) à imputer. Obligatoire — voir `boond_expenses_default`.", + "minLength": 1, + "type": "string" + }, + "exchangeRate": { + "default": 1, + "description": "Taux de change vers la devise agence.", + "type": "number" + }, + "expenseTypeReference": { + "description": "Code du type de frais (`reference`), à lire via `boond_expenses_default` — les types de frais sont définis par agence et ne figurent PAS dans `boond_application_dictionary`. À omettre pour un frais kilométrique.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "file": { + "description": "ID du justificatif déjà téléversé, suffixé (ex: `52979_proof`). Un fichier doit d'abord être créé via `boond_documents_create` (`parentType: 'expensesReport'`).", + "type": "string" + }, + "isKilometricExpense": { + "default": false, + "description": "`true` pour un frais kilométrique : renseigner `numberOfKilometers` et omettre `expenseTypeReference`.", + "type": "boolean" + }, + "numberOfKilometers": { + "description": "Nombre de kilomètres (frais kilométrique uniquement).", + "type": "number" + }, + "projectId": { + "description": "ID du projet à imputer. Obligatoire — les couples (projet, prestation) autorisés sont donnés par `boond_expenses_default`.", + "minLength": 1, + "type": "string" + }, + "reinvoiced": { + "default": false, + "description": "Frais refacturable au client.", + "type": "boolean" + }, + "startDate": { + "description": "Date du frais (YYYY-MM-DD). Doit tomber dans le mois `term` de la note de frais.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" + }, + "tax": { + "description": "Taux de TVA en % (ex: 20 pour 20 %) — un taux, pas un montant. Défaut API: 0.", + "type": "number" + }, + "title": { + "description": "Description libre de la ligne (marchand, motif, invités...).", + "type": "string" + } + }, + "required": [ + "startDate", + "projectId", + "deliveryId" + ], + "type": "object" + }, + "type": "array" +} - added
Input schema / properties / advanceAdded value: +{ + "description": "Avance à reprendre.", + "type": "number" +} - added
Input schema / properties / agencyIdAdded value: +{ + "description": "ID de l'agence — voir `boond_expenses_default`. Déduit de la ressource si omis.", + "type": "string" +} - removed
Input schema / properties / amountRemoved value: -{ - "description": "Montant du frais", - "type": "number" -} - removed
Input schema / properties / currencyRemoved value: -{ - "description": "Devise (EUR, USD...)", - "type": "string" -} - added
Input schema / properties / currencyAgencyAdded value: +{ + "description": "ID de devise de l'agence (`setting.currency`).", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - added
Input schema / properties / exchangeRateAgency / defaultAdded value: +1 - changed
Input schema / properties / exchangeRateAgency / descriptionPrevious value: -"Taux de change agence"New value: +"Taux de change agence. Obligatoire côté API." - removed
Input schema / properties / expenseDateRemoved value: -{ - "description": "Date du frais (YYYY-MM-DD)", - "minLength": 1, - "type": "string" -} - added
Input schema / properties / informationCommentsAdded value: +{ + "description": "Commentaires de la note de frais.", + "type": "string" +} - removed
Input schema / properties / noteRemoved value: -{ - "description": "Description / justification", - "type": "string" -} - removed
Input schema / properties / projectIdRemoved value: -{ - "description": "ID du projet associé", - "type": "string" -} - added
Input schema / properties / ratePerKilometerTypeReferenceAdded value: +{ + "description": "Code du barème kilométrique (`reference`) — voir `boond_expenses_default`.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - changed
Input schema / properties / resourceId / descriptionPrevious value: -"ID de la ressource"New value: +"ID de la ressource (le collaborateur qui a engagé les frais)." - removed
Input schema / properties / stateRemoved value: -{ - "description": "État de la note de frais", - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" -} - changed
Input schema / properties / term / descriptionPrevious value: -"Période de la note de frais (YYYY-MM)"New value: +"Mois de la note de frais (YYYY-MM). Une note de frais = un mois × une ressource." - added
Input schema / properties / term / patternAdded value: +"^\\d{4}-\\d{2}$" - removed
Input schema / properties / typeOfRemoved value: -{ - "description": "Type de frais (transport, repas, hébergement...)", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "resourceId", - "expenseDate", - "amount" -]New value: +[ + "resourceId", + "term" +]
- Added
boond_expenses_default - Changed
boond_expenses_update10 fields changed- added
Input schema / properties / actualExpensesAdded value: +{ + "description": "⚠️ REMPLACE l'intégralité des lignes existantes. Pour ajouter une ligne, relire la note via `boond_expenses_get` et renvoyer l'ensemble des lignes. Omettre pour ne toucher qu'aux autres champs.", + "items": { + "additionalProperties": false, + "properties": { + "activityType": { + "default": "production", + "description": "Type d'activité rattachée au frais.", + "enum": [ + "production", + "internal", + "absence" + ], + "type": "string" + }, + "amountIncludingTax": { + "description": "Montant TTC. Ignoré pour un frais kilométrique (recalculé = km × barème).", + "type": "number" + }, + "batchId": { + "description": "ID du lot. Absent = aucun lot.", + "type": "string" + }, + "currency": { + "default": 0, + "description": "ID de devise (`setting.currency`, 0 = EUR).", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "deliveryId": { + "description": "ID de la prestation (delivery) à imputer. Obligatoire — voir `boond_expenses_default`.", + "minLength": 1, + "type": "string" + }, + "exchangeRate": { + "default": 1, + "description": "Taux de change vers la devise agence.", + "type": "number" + }, + "expenseTypeReference": { + "description": "Code du type de frais (`reference`), à lire via `boond_expenses_default` — les types de frais sont définis par agence et ne figurent PAS dans `boond_application_dictionary`. À omettre pour un frais kilométrique.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "file": { + "description": "ID du justificatif déjà téléversé, suffixé (ex: `52979_proof`). Un fichier doit d'abord être créé via `boond_documents_create` (`parentType: 'expensesReport'`).", + "type": "string" + }, + "isKilometricExpense": { + "default": false, + "description": "`true` pour un frais kilométrique : renseigner `numberOfKilometers` et omettre `expenseTypeReference`.", + "type": "boolean" + }, + "numberOfKilometers": { + "description": "Nombre de kilomètres (frais kilométrique uniquement).", + "type": "number" + }, + "projectId": { + "description": "ID du projet à imputer. Obligatoire — les couples (projet, prestation) autorisés sont donnés par `boond_expenses_default`.", + "minLength": 1, + "type": "string" + }, + "reinvoiced": { + "default": false, + "description": "Frais refacturable au client.", + "type": "boolean" + }, + "startDate": { + "description": "Date du frais (YYYY-MM-DD). Doit tomber dans le mois `term` de la note de frais.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" + }, + "tax": { + "description": "Taux de TVA en % (ex: 20 pour 20 %) — un taux, pas un montant. Défaut API: 0.", + "type": "number" + }, + "title": { + "description": "Description libre de la ligne (marchand, motif, invités...).", + "type": "string" + } + }, + "required": [ + "startDate", + "projectId", + "deliveryId" + ], + "type": "object" + }, + "type": "array" +} - added
Input schema / properties / advanceAdded value: +{ + "description": "Avance à reprendre", + "type": "number" +} - removed
Input schema / properties / amountRemoved value: -{ - "description": "Montant", - "type": "number" -} - added
Input schema / properties / closedAdded value: +{ + "description": "Clôturer la note de frais", + "type": "boolean" +} - added
Input schema / properties / currencyAgencyAdded value: +{ + "description": "ID de devise de l'agence", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - added
Input schema / properties / informationCommentsAdded value: +{ + "description": "Commentaires", + "type": "string" +} - removed
Input schema / properties / noteRemoved value: -{ - "description": "Description", - "type": "string" -} - added
Input schema / properties / ratePerKilometerTypeReferenceAdded value: +{ + "description": "Code du barème kilométrique", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - removed
Input schema / properties / stateRemoved value: -{ - "description": "État", - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" -} - removed
Input schema / properties / termRemoved value: -{ - "description": "Période de la note de frais (YYYY-MM)", - "type": "string" -}
- Added
boond_workflow_traiter_note_de_frais
180 tool updates
v2.12.2- Changed
boond_absences_create1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_absences_delete2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_absences_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_absences_search1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_absences_update1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_accounts_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_accounts_search2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_actions_create1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_actions_delete2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_actions_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_actions_search1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_actions_update2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_advantages_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_advantages_search1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_agencies_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_agencies_search2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_application_current_user1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_application_dictionary1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_business_units_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_business_units_search2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_calendars_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_calendars_search2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_candidates_actions1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_candidates_administrative1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_candidates_create2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_candidates_delete2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_candidates_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_candidates_information1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_candidates_positionings1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_candidates_search2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_candidates_technical_data1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_candidates_update2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_companies_actions1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_companies_contacts1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_companies_create2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_companies_delete2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_companies_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_companies_information1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_companies_invoices1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_companies_opportunities1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_companies_orders1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_companies_projects1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_companies_provider_invoices1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_companies_purchases1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_companies_search2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_companies_update2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_contacts_actions1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_contacts_create2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_contacts_delete2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_contacts_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_contacts_information1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_contacts_invoices1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_contacts_opportunities1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_contacts_orders1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_contacts_projects1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_contacts_search2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_contacts_update2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_contracts_create1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_contracts_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_deliveries_create1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_deliveries_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_deliveries_search1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_documents_create2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_documents_delete2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_documents_get3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager (numérique)"New value: +"Identifiant du document, tel qu'exposé par les relations d'entités (ex. 123_resume)" - changed
Input schema / properties / id / patternPrevious value: -"^\\d+$"New value: +"^\\d+(_[A-Za-z]+)?$"
- Changed
boond_expenses_create2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_expenses_delete2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_expenses_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_expenses_search2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_expenses_update2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_flags_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_flags_search2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_invoices_create2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_invoices_delete2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_invoices_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_invoices_search2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_invoices_update2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_logs_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_logs_search2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_notifications_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_notifications_search1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_opportunities_actions1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_opportunities_create2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_opportunities_delete2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_opportunities_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_opportunities_information1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_opportunities_positionings1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_opportunities_projects1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_opportunities_search2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_opportunities_simulation1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_opportunities_update2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_orders_create2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_orders_delete2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_orders_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_orders_search2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_orders_update2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_payments_create1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_payments_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_payments_search1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_planning_absences_search1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_poles_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_poles_search2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_positionings_create1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_positionings_delete2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_positionings_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_positionings_search1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_positionings_update2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_products_create2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_products_delete2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_products_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_products_search2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_products_update2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_projects_actions1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_projects_create2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_projects_delete2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_projects_deliveries_groupments1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_projects_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_projects_information1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_projects_orders1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_projects_productivity1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_projects_purchases1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_projects_search2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_projects_simulation1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_projects_update2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_provider_invoices_create1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_provider_invoices_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_provider_invoices_search1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_purchases_create1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_purchases_delete2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_purchases_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_purchases_search1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_reporting_companies1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_reporting_production_plans1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_reporting_projects1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_reporting_resources1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_reporting_synthesis1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_resources_absences_reports1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_resources_actions1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_resources_administrative1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_resources_advantages1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_resources_create2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_resources_delete2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_resources_expenses_reports1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_resources_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_resources_information1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_resources_positionings1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_resources_projects1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_resources_reference_create1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_resources_reference_delete1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_resources_reference_update1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_resources_search2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_resources_technical_data1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_resources_technical_data_update1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_resources_times_reports1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_resources_timesheets1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_resources_update2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_roles_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_roles_search2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_threads_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_threads_search2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_timesheets_create1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_timesheets_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_timesheets_search1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_todolists_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_todolists_search2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_validations_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_validations_search1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_webhooks_get1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_webhooks_search2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Output schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_workflow_candidats_pour_opportunite1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_workflow_cartographie_competences1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_workflow_cvs_a_mettre_a_jour1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_workflow_factures_a_relancer1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_workflow_fiche_consultant1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_workflow_fin_de_mission1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_workflow_pipeline_commercial1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_workflow_recap_hebdo1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_workflow_recherche_profil_competences1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_workflow_staffing_disponible1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
boond_workflow_synthese_equipe1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
32 tool updates
v2.9.0- Changed
boond_absences_search1 field changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
boond_accounts_search1 field changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
boond_actions_search1 field changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
boond_advantages_search1 field changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
boond_agencies_search1 field changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
boond_business_units_search1 field changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
boond_calendars_search1 field changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
boond_candidates_search1 field changed- changed
Input schema / properties / fields / descriptionPrevious value: -"Projection côté client : liste d'attributs JSON:API à afficher pour chaque résultat (ex: ['title', 'updateDate', 'numberOfActiveProjects']). Réduit fortement la taille de la réponse. Absent = résumé standard (nom, email, ville, statut...). Les noms inconnus sont ignorés."New value: +"Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés."
- Changed
boond_companies_search1 field changed- changed
Input schema / properties / fields / descriptionPrevious value: -"Projection côté client : liste d'attributs JSON:API à afficher pour chaque résultat (ex: ['title', 'updateDate', 'numberOfActiveProjects']). Réduit fortement la taille de la réponse. Absent = résumé standard (nom, email, ville, statut...). Les noms inconnus sont ignorés."New value: +"Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés."
- Changed
boond_contacts_search1 field changed- changed
Input schema / properties / fields / descriptionPrevious value: -"Projection côté client : liste d'attributs JSON:API à afficher pour chaque résultat (ex: ['title', 'updateDate', 'numberOfActiveProjects']). Réduit fortement la taille de la réponse. Absent = résumé standard (nom, email, ville, statut...). Les noms inconnus sont ignorés."New value: +"Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés."
- Changed
boond_deliveries_search1 field changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
boond_expenses_search1 field changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
boond_flags_search1 field changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
boond_invoices_search1 field changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
boond_logs_search1 field changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
boond_notifications_search1 field changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
boond_opportunities_search1 field changed- changed
Input schema / properties / fields / descriptionPrevious value: -"Projection côté client : liste d'attributs JSON:API à afficher pour chaque résultat (ex: ['title', 'updateDate', 'numberOfActiveProjects']). Réduit fortement la taille de la réponse. Absent = résumé standard (nom, email, ville, statut...). Les noms inconnus sont ignorés."New value: +"Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés."
- Changed
boond_orders_search1 field changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
boond_payments_search1 field changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
boond_planning_absences_search1 field changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
boond_poles_search1 field changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
boond_positionings_search1 field changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
boond_products_search1 field changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
boond_projects_search1 field changed- changed
Input schema / properties / fields / descriptionPrevious value: -"Projection côté client : liste d'attributs JSON:API à afficher pour chaque résultat (ex: ['title', 'updateDate', 'numberOfActiveProjects']). Réduit fortement la taille de la réponse. Absent = résumé standard (nom, email, ville, statut...). Les noms inconnus sont ignorés."New value: +"Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés."
- Changed
boond_provider_invoices_search1 field changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
boond_purchases_search1 field changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
boond_resources_search1 field changed- changed
Input schema / properties / fields / descriptionPrevious value: -"Projection côté client : liste d'attributs JSON:API à afficher pour chaque résultat (ex: ['title', 'updateDate', 'numberOfActiveProjects']). Réduit fortement la taille de la réponse. Absent = résumé standard (nom, email, ville, statut...). Les noms inconnus sont ignorés."New value: +"Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés."
- Changed
boond_roles_search1 field changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
boond_threads_search1 field changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
boond_todolists_search1 field changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
boond_validations_search1 field changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
boond_webhooks_search1 field changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection : attributs à afficher par résultat (ex: ['title','updateDate']). Absent = résumé standard. Noms inconnus ignorés.", + "items": { + "type": "string" + }, + "type": "array" +}
17 tool updates
v2.8.0- Changed
boond_absences_create4 fields changed- added
Input schema / properties / absencesPeriodsAdded value: +{ + "description": "Périodes d'absence Boond brutes", + "items": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" +} - added
Input schema / properties / durationAdded value: +{ + "description": "Durée en jours ; calculée automatiquement si absente", + "type": "number" +} - changed
Input schema / properties / typeOf / descriptionPrevious value: -"Type d'absence (congé payé, RTT, maladie, sans solde...)"New value: +"Libellé de l'absence (congé payé, RTT, maladie, sans solde...)" - added
Input schema / properties / workUnitTypeReferenceAdded value: +{ + "description": "Référence du type d'unité d'absence, défaut 1", + "maximum": 9007199254740991, + "minimum": 1, + "type": "integer" +}
- Changed
boond_absences_search4 fields changed- removed
Input schema / properties / endDateRemoved value: -{ - "description": "Date de fin de période (YYYY-MM-DD)", - "type": "string" -} - added
Input schema / properties / endMonthAdded value: +{ + "description": "Mois de fin de période (YYYY-MM)", + "type": "string" +} - removed
Input schema / properties / startDateRemoved value: -{ - "description": "Date de début de période (YYYY-MM-DD)", - "type": "string" -} - added
Input schema / properties / startMonthAdded value: +{ + "description": "Mois de début de période (YYYY-MM)", + "type": "string" +}
- Added
boond_deliveries_create - Changed
boond_expenses_create2 fields changed- added
Input schema / properties / exchangeRateAgencyAdded value: +{ + "description": "Taux de change agence", + "type": "number" +} - added
Input schema / properties / termAdded value: +{ + "description": "Période de la note de frais (YYYY-MM)", + "type": "string" +}
- Changed
boond_expenses_update2 fields changed- added
Input schema / properties / exchangeRateAgencyAdded value: +{ + "description": "Taux de change agence", + "type": "number" +} - added
Input schema / properties / termAdded value: +{ + "description": "Période de la note de frais (YYYY-MM)", + "type": "string" +}
- Changed
boond_invoices_create7 fields changed- removed
Input schema / properties / companyIdRemoved value: -{ - "description": "ID de la société facturée", - "type": "string" -} - removed
Input schema / properties / dueDateRemoved value: -{ - "description": "Date d'échéance (YYYY-MM-DD)", - "type": "string" -} - added
Input schema / properties / expectedPaymentDateAdded value: +{ + "description": "Date d'échéance/paiement attendu (YYYY-MM-DD)", + "type": "string" +} - added
Input schema / properties / invoicePaymentsAdded value: +{ + "description": "Paiements client de la facture", + "items": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" +} - added
Input schema / properties / invoiceRecordsAdded value: +{ + "description": "Lignes de facture Boond", + "items": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" +} - added
Input schema / properties / orderIdAdded value: +{ + "description": "ID du bon de commande associé", + "type": "string" +} - removed
Input schema / properties / projectIdRemoved value: -{ - "description": "ID du projet associé", - "type": "string" -}
- Changed
boond_invoices_update4 fields changed- removed
Input schema / properties / dueDateRemoved value: -{ - "description": "Date d'échéance (YYYY-MM-DD)", - "type": "string" -} - added
Input schema / properties / expectedPaymentDateAdded value: +{ + "description": "Date d'échéance/paiement attendu (YYYY-MM-DD)", + "type": "string" +} - added
Input schema / properties / invoicePaymentsAdded value: +{ + "description": "Paiements client de la facture", + "items": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" +} - added
Input schema / properties / invoiceRecordsAdded value: +{ + "description": "Lignes de facture Boond", + "items": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" +}
- Changed
boond_orders_create4 fields changed- added
Input schema / properties / customerAgreementAdded value: +{ + "description": "Accord client reçu", + "type": "boolean" +} - added
Input schema / properties / endDateAdded value: +{ + "description": "Date de fin couverte (YYYY-MM-DD)", + "type": "string" +} - added
Input schema / properties / schedulesAdded value: +{ + "description": "Lignes/échéances de commande", + "items": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" +} - added
Input schema / properties / startDateAdded value: +{ + "description": "Date de début couverte (YYYY-MM-DD)", + "type": "string" +}
- Changed
boond_orders_update4 fields changed- added
Input schema / properties / customerAgreementAdded value: +{ + "description": "Accord client reçu", + "type": "boolean" +} - added
Input schema / properties / endDateAdded value: +{ + "description": "Date de fin couverte (YYYY-MM-DD)", + "type": "string" +} - added
Input schema / properties / schedulesAdded value: +{ + "description": "Lignes/échéances de commande", + "items": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" +} - added
Input schema / properties / startDateAdded value: +{ + "description": "Date de début couverte (YYYY-MM-DD)", + "type": "string" +}
- Added
boond_payments_create - Changed
boond_payments_search3 fields changed- added
Input schema / properties / projectIdAdded value: +{ + "description": "Filtrer par ID projet", + "type": "string" +} - added
Input schema / properties / purchaseIdAdded value: +{ + "description": "Filtrer par ID achat", + "type": "string" +} - added
Input schema / properties / resourceIdAdded value: +{ + "description": "Filtrer par ID ressource", + "type": "string" +}
- Changed
boond_projects_create1 field changed- added
Input schema / properties / typeOfAdded value: +{ + "description": "Type de projet (ID du dictionnaire setting.typeOf.project)", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +}
- Changed
boond_projects_update1 field changed- added
Input schema / properties / typeOfAdded value: +{ + "description": "Type de projet (ID du dictionnaire setting.typeOf.project)", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +}
- Added
boond_provider_invoices_create - Changed
boond_provider_invoices_search5 fields changed- changed
Input schema / properties / companyId / descriptionPrevious value: -"Filtrer par ID société fournisseur"New value: +"Filtrer par ID societe fournisseur" - changed
Input schema / properties / keywords / descriptionPrevious value: -"Mots-clés de recherche"New value: +"Mots-cles de recherche" - changed
Input schema / properties / page / descriptionPrevious value: -"Numéro de page (max: 100)"New value: +"Numero de page (max: 100)" - changed
Input schema / properties / pageSize / descriptionPrevious value: -"Résultats par page"New value: +"Resultats par page" - added
Input schema / properties / resourceIdAdded value: +{ + "description": "Filtrer par ID ressource via mot-cle COMP<id>", + "type": "string" +}
- Changed
boond_purchases_create2 fields changed- added
Input schema / properties / contactIdAdded value: +{ + "description": "ID du contact fournisseur", + "type": "string" +} - added
Input schema / properties / titleAdded value: +{ + "description": "Titre de l'achat/sous-traitance", + "type": "string" +}
- Added
boond_timesheets_create
141 tool updates
v2.7.0- Changed
boond_absences_delete4 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "deleted": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "reason": { + "description": "Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur)", + "type": "string" + } + }, + "required": [ + "id", + "deleted" + ], + "type": "object" +}
- Changed
boond_absences_get3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_accounts_get3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_accounts_search1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Nombre d'éléments retournés sur cette page", + "type": "number" + }, + "items": { + "items": { + "additionalProperties": false, + "properties": { + "attributes": { + "additionalProperties": {}, + "description": "Attributs projetés (présent si `fields` est fourni)", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "id": { + "type": "string" + }, + "summary": { + "description": "Résumé standard (absent si `fields` est fourni)", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "total": { + "description": "Nombre total de résultats côté BoondManager", + "type": "number" + } + }, + "required": [ + "count", + "items" + ], + "type": "object" +}
- Changed
boond_actions_create9 fields changed- added
Input schema / properties / endDate / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([+-]\\d{2}:?\\d{2}|Z)?$" - added
Input schema / properties / positioningIdAdded value: +{ + "description": "ID du positionnement à lier à l'action (relation positioning). Requis par l'API pour les types d'action liés aux positionnements (ex. RQ) — sans lui, erreur 422 « 1002 - Wrong or missing attribute (/data/relationships/positioning) ».", + "type": "string" +} - changed
Input schema / properties / startDate / descriptionPrevious value: -"Date de début au format ISO avec timezone (ex: 2026-06-05T10:00:00+0200)"New value: +"Date de début au format ISO 8601 avec timezone (ex: 2026-06-05T10:00:00+0200)" - added
Input schema / properties / startDate / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([+-]\\d{2}:?\\d{2}|Z)?$" - added
Input schema / properties / typeOf / anyOfAdded value: +[ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "minLength": 1, + "type": "string" + } +] - changed
Input schema / properties / typeOf / descriptionPrevious value: -"Type d'action : ID numérique du dictionnaire BoondManager (setting.action.*, via boond_application_dictionary)"New value: +"Type d'action : ID numérique du dictionnaire (setting.action.*, via boond_application_dictionary) ou libellé personnalisé si BOOND_DICTIONARY_OVERRIDES est configuré" - removed
Input schema / properties / typeOf / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / typeOf / minimumRemoved value: -0 - removed
Input schema / properties / typeOf / typeRemoved value: -"integer"
- Changed
boond_actions_delete4 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "deleted": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "reason": { + "description": "Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur)", + "type": "string" + } + }, + "required": [ + "id", + "deleted" + ], + "type": "object" +}
- Changed
boond_actions_get3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Added
boond_actions_update - Changed
boond_advantages_get3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_agencies_get3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_agencies_search1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Nombre d'éléments retournés sur cette page", + "type": "number" + }, + "items": { + "items": { + "additionalProperties": false, + "properties": { + "attributes": { + "additionalProperties": {}, + "description": "Attributs projetés (présent si `fields` est fourni)", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "id": { + "type": "string" + }, + "summary": { + "description": "Résumé standard (absent si `fields` est fourni)", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "total": { + "description": "Nombre total de résultats côté BoondManager", + "type": "number" + } + }, + "required": [ + "count", + "items" + ], + "type": "object" +}
- Changed
boond_business_units_get3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_business_units_search1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Nombre d'éléments retournés sur cette page", + "type": "number" + }, + "items": { + "items": { + "additionalProperties": false, + "properties": { + "attributes": { + "additionalProperties": {}, + "description": "Attributs projetés (présent si `fields` est fourni)", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "id": { + "type": "string" + }, + "summary": { + "description": "Résumé standard (absent si `fields` est fourni)", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "total": { + "description": "Nombre total de résultats côté BoondManager", + "type": "number" + } + }, + "required": [ + "count", + "items" + ], + "type": "object" +}
- Changed
boond_calendars_get3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_calendars_search1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Nombre d'éléments retournés sur cette page", + "type": "number" + }, + "items": { + "items": { + "additionalProperties": false, + "properties": { + "attributes": { + "additionalProperties": {}, + "description": "Attributs projetés (présent si `fields` est fourni)", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "id": { + "type": "string" + }, + "summary": { + "description": "Résumé standard (absent si `fields` est fourni)", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "total": { + "description": "Nombre total de résultats côté BoondManager", + "type": "number" + } + }, + "required": [ + "count", + "items" + ], + "type": "object" +}
- Changed
boond_candidates_actions3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_candidates_administrative3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_candidates_create1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "id": { + "description": "Identifiant de l'entité créée/modifiée", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" +}
- Changed
boond_candidates_delete4 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "deleted": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "reason": { + "description": "Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur)", + "type": "string" + } + }, + "required": [ + "id", + "deleted" + ], + "type": "object" +}
- Changed
boond_candidates_get4 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité"New value: +"Identifiant unique de l'entité (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$" - added
Input schema / properties / tab / patternAdded value: +"^[a-zA-Z][a-zA-Z-]*$"
- Changed
boond_candidates_information3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_candidates_positionings3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_candidates_search3 fields changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection côté client : liste d'attributs JSON:API à afficher pour chaque résultat (ex: ['title', 'updateDate', 'numberOfActiveProjects']). Réduit fortement la taille de la réponse. Absent = résumé standard (nom, email, ville, statut...). Les noms inconnus sont ignorés.", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Input schema / properties / tools / descriptionPrevious value: -"IDs d'outils/technos. Logique OU par défaut. Pour ET, ajouter '#AND#' en 1er élément."New value: +"IDs d'outils/technos (dictionnaire setting.tool). Logique OU par défaut. Pour ET, ajouter '#AND#' en 1er élément: tools=['#AND#','12','34']." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Nombre d'éléments retournés sur cette page", + "type": "number" + }, + "items": { + "items": { + "additionalProperties": false, + "properties": { + "attributes": { + "additionalProperties": {}, + "description": "Attributs projetés (présent si `fields` est fourni)", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "id": { + "type": "string" + }, + "summary": { + "description": "Résumé standard (absent si `fields` est fourni)", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "total": { + "description": "Nombre total de résultats côté BoondManager", + "type": "number" + } + }, + "required": [ + "count", + "items" + ], + "type": "object" +}
- Changed
boond_candidates_technical_data3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_candidates_update1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "id": { + "description": "Identifiant de l'entité créée/modifiée", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" +}
- Changed
boond_companies_actions3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_companies_contacts3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_companies_create1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "id": { + "description": "Identifiant de l'entité créée/modifiée", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" +}
- Changed
boond_companies_delete4 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "deleted": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "reason": { + "description": "Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur)", + "type": "string" + } + }, + "required": [ + "id", + "deleted" + ], + "type": "object" +}
- Changed
boond_companies_get4 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité"New value: +"Identifiant unique de l'entité (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$" - added
Input schema / properties / tab / patternAdded value: +"^[a-zA-Z][a-zA-Z-]*$"
- Changed
boond_companies_information3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_companies_invoices3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_companies_opportunities3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_companies_orders3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_companies_projects3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_companies_provider_invoices3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_companies_purchases3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_companies_search2 fields changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection côté client : liste d'attributs JSON:API à afficher pour chaque résultat (ex: ['title', 'updateDate', 'numberOfActiveProjects']). Réduit fortement la taille de la réponse. Absent = résumé standard (nom, email, ville, statut...). Les noms inconnus sont ignorés.", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Nombre d'éléments retournés sur cette page", + "type": "number" + }, + "items": { + "items": { + "additionalProperties": false, + "properties": { + "attributes": { + "additionalProperties": {}, + "description": "Attributs projetés (présent si `fields` est fourni)", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "id": { + "type": "string" + }, + "summary": { + "description": "Résumé standard (absent si `fields` est fourni)", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "total": { + "description": "Nombre total de résultats côté BoondManager", + "type": "number" + } + }, + "required": [ + "count", + "items" + ], + "type": "object" +}
- Changed
boond_companies_update1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "id": { + "description": "Identifiant de l'entité créée/modifiée", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" +}
- Changed
boond_contacts_actions3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_contacts_create1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "id": { + "description": "Identifiant de l'entité créée/modifiée", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" +}
- Changed
boond_contacts_delete4 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "deleted": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "reason": { + "description": "Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur)", + "type": "string" + } + }, + "required": [ + "id", + "deleted" + ], + "type": "object" +}
- Changed
boond_contacts_get4 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité"New value: +"Identifiant unique de l'entité (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$" - added
Input schema / properties / tab / patternAdded value: +"^[a-zA-Z][a-zA-Z-]*$"
- Changed
boond_contacts_information3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_contacts_invoices3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_contacts_opportunities3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_contacts_orders3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_contacts_projects3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_contacts_search3 fields changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection côté client : liste d'attributs JSON:API à afficher pour chaque résultat (ex: ['title', 'updateDate', 'numberOfActiveProjects']). Réduit fortement la taille de la réponse. Absent = résumé standard (nom, email, ville, statut...). Les noms inconnus sont ignorés.", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Input schema / properties / tools / descriptionPrevious value: -"IDs d'outils. Logique OU par défaut, '#AND#' en 1er pour ET."New value: +"IDs d'outils/technos (dictionnaire setting.tool). Logique OU par défaut. Pour ET, ajouter '#AND#' en 1er élément: tools=['#AND#','12','34']." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Nombre d'éléments retournés sur cette page", + "type": "number" + }, + "items": { + "items": { + "additionalProperties": false, + "properties": { + "attributes": { + "additionalProperties": {}, + "description": "Attributs projetés (présent si `fields` est fourni)", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "id": { + "type": "string" + }, + "summary": { + "description": "Résumé standard (absent si `fields` est fourni)", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "total": { + "description": "Nombre total de résultats côté BoondManager", + "type": "number" + } + }, + "required": [ + "count", + "items" + ], + "type": "object" +}
- Changed
boond_contacts_update1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "id": { + "description": "Identifiant de l'entité créée/modifiée", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" +}
- Changed
boond_contracts_get3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_deliveries_get3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Added
boond_documents_create - Added
boond_documents_delete - Added
boond_documents_get - Changed
boond_expenses_create1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "id": { + "description": "Identifiant de l'entité créée/modifiée", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" +}
- Changed
boond_expenses_delete4 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "deleted": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "reason": { + "description": "Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur)", + "type": "string" + } + }, + "required": [ + "id", + "deleted" + ], + "type": "object" +}
- Changed
boond_expenses_get3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_expenses_search1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Nombre d'éléments retournés sur cette page", + "type": "number" + }, + "items": { + "items": { + "additionalProperties": false, + "properties": { + "attributes": { + "additionalProperties": {}, + "description": "Attributs projetés (présent si `fields` est fourni)", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "id": { + "type": "string" + }, + "summary": { + "description": "Résumé standard (absent si `fields` est fourni)", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "total": { + "description": "Nombre total de résultats côté BoondManager", + "type": "number" + } + }, + "required": [ + "count", + "items" + ], + "type": "object" +}
- Changed
boond_expenses_update1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "id": { + "description": "Identifiant de l'entité créée/modifiée", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" +}
- Changed
boond_flags_get3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_flags_search1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Nombre d'éléments retournés sur cette page", + "type": "number" + }, + "items": { + "items": { + "additionalProperties": false, + "properties": { + "attributes": { + "additionalProperties": {}, + "description": "Attributs projetés (présent si `fields` est fourni)", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "id": { + "type": "string" + }, + "summary": { + "description": "Résumé standard (absent si `fields` est fourni)", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "total": { + "description": "Nombre total de résultats côté BoondManager", + "type": "number" + } + }, + "required": [ + "count", + "items" + ], + "type": "object" +}
- Changed
boond_invoices_create1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "id": { + "description": "Identifiant de l'entité créée/modifiée", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" +}
- Changed
boond_invoices_delete4 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "deleted": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "reason": { + "description": "Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur)", + "type": "string" + } + }, + "required": [ + "id", + "deleted" + ], + "type": "object" +}
- Changed
boond_invoices_get3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_invoices_search1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Nombre d'éléments retournés sur cette page", + "type": "number" + }, + "items": { + "items": { + "additionalProperties": false, + "properties": { + "attributes": { + "additionalProperties": {}, + "description": "Attributs projetés (présent si `fields` est fourni)", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "id": { + "type": "string" + }, + "summary": { + "description": "Résumé standard (absent si `fields` est fourni)", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "total": { + "description": "Nombre total de résultats côté BoondManager", + "type": "number" + } + }, + "required": [ + "count", + "items" + ], + "type": "object" +}
- Changed
boond_invoices_update1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "id": { + "description": "Identifiant de l'entité créée/modifiée", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" +}
- Changed
boond_logs_get3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_logs_search1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Nombre d'éléments retournés sur cette page", + "type": "number" + }, + "items": { + "items": { + "additionalProperties": false, + "properties": { + "attributes": { + "additionalProperties": {}, + "description": "Attributs projetés (présent si `fields` est fourni)", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "id": { + "type": "string" + }, + "summary": { + "description": "Résumé standard (absent si `fields` est fourni)", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "total": { + "description": "Nombre total de résultats côté BoondManager", + "type": "number" + } + }, + "required": [ + "count", + "items" + ], + "type": "object" +}
- Changed
boond_notifications_get3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_opportunities_actions3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_opportunities_create14 fields changed- added
Input schema / properties / agencyIdAdded value: +{ + "description": "ID de l'agence (relation agency)", + "type": "string" +} - changed
Input schema / properties / companyId / descriptionPrevious value: -"ID de la société cliente"New value: +"ID de la société cliente (relation company)" - changed
Input schema / properties / contactId / descriptionPrevious value: -"ID du contact associé"New value: +"ID du contact associé (relation contact)" - added
Input schema / properties / criteriaAdded value: +{ + "description": "Critères / compétences recherchées (texte libre). Alimente le matching de boond_workflow_candidats_pour_opportunite.", + "maxLength": 5000, + "type": "string" +} - added
Input schema / properties / expertiseAreaAdded value: +{ + "description": "Domaine d'expertise : ID du dictionnaire setting.expertiseArea (via boond_application_dictionary)", + "type": "string" +} - added
Input schema / properties / hrManagerIdAdded value: +{ + "description": "ID de la ressource responsable RH (relation hrManager)", + "type": "string" +} - added
Input schema / properties / mainManagerIdAdded value: +{ + "description": "ID de la ressource responsable principal / commercial (relation mainManager)", + "type": "string" +} - changed
Input schema / properties / note / descriptionPrevious value: -"Notes / description"New value: +"Description de l'opportunité (mappée sur /data/attributes/description)" - added
Input schema / properties / note / maxLengthAdded value: +65000 - added
Input schema / properties / poleIdAdded value: +{ + "description": "ID du pôle (relation pole)", + "type": "string" +} - changed
Input schema / properties / startDate / descriptionPrevious value: -"Date de début prévue (YYYY-MM-DD)"New value: +"Date de début prévue (YYYY-MM-DD ou 'immediate')" - added
Input schema / properties / turnoverEstimatedExcludingTaxAdded value: +{ + "description": "Chiffre d'affaires estimé HT (montant)", + "type": "number" +} - added
Input schema / properties / typeOfAdded value: +{ + "description": "Type d'opportunité : ID numérique du dictionnaire setting.typeOf.project (ex: 1, 3), via boond_application_dictionary", + "maximum": 9007199254740991, + "minimum": 1, + "type": "integer" +} - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "id": { + "description": "Identifiant de l'entité créée/modifiée", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" +}
- Changed
boond_opportunities_delete4 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "deleted": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "reason": { + "description": "Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur)", + "type": "string" + } + }, + "required": [ + "id", + "deleted" + ], + "type": "object" +}
- Changed
boond_opportunities_get4 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité"New value: +"Identifiant unique de l'entité (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$" - added
Input schema / properties / tab / patternAdded value: +"^[a-zA-Z][a-zA-Z-]*$"
- Changed
boond_opportunities_information3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_opportunities_positionings3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_opportunities_projects3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_opportunities_search3 fields changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection côté client : liste d'attributs JSON:API à afficher pour chaque résultat (ex: ['title', 'updateDate', 'numberOfActiveProjects']). Réduit fortement la taille de la réponse. Absent = résumé standard (nom, email, ville, statut...). Les noms inconnus sont ignorés.", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Input schema / properties / tools / descriptionPrevious value: -"IDs d'outils."New value: +"IDs d'outils/technos (dictionnaire setting.tool). Logique OU par défaut. Pour ET, ajouter '#AND#' en 1er élément: tools=['#AND#','12','34']." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Nombre d'éléments retournés sur cette page", + "type": "number" + }, + "items": { + "items": { + "additionalProperties": false, + "properties": { + "attributes": { + "additionalProperties": {}, + "description": "Attributs projetés (présent si `fields` est fourni)", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "id": { + "type": "string" + }, + "summary": { + "description": "Résumé standard (absent si `fields` est fourni)", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "total": { + "description": "Nombre total de résultats côté BoondManager", + "type": "number" + } + }, + "required": [ + "count", + "items" + ], + "type": "object" +}
- Changed
boond_opportunities_simulation3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_opportunities_update16 fields changed- added
Input schema / properties / agencyIdAdded value: +{ + "description": "ID de l'agence (relation agency)", + "type": "string" +} - added
Input schema / properties / companyIdAdded value: +{ + "description": "ID de la société cliente (relation company)", + "type": "string" +} - added
Input schema / properties / contactIdAdded value: +{ + "description": "ID du contact associé (relation contact)", + "type": "string" +} - added
Input schema / properties / criteriaAdded value: +{ + "description": "Critères / compétences recherchées (texte libre). Alimente le matching de boond_workflow_candidats_pour_opportunite.", + "maxLength": 5000, + "type": "string" +} - changed
Input schema / properties / endDate / descriptionPrevious value: -"Date de fin (YYYY-MM-DD)"New value: +"Date de fin prévue (YYYY-MM-DD)" - added
Input schema / properties / expertiseAreaAdded value: +{ + "description": "Domaine d'expertise : ID du dictionnaire setting.expertiseArea (via boond_application_dictionary)", + "type": "string" +} - added
Input schema / properties / hrManagerIdAdded value: +{ + "description": "ID de la ressource responsable RH (relation hrManager)", + "type": "string" +} - added
Input schema / properties / mainManagerIdAdded value: +{ + "description": "ID de la ressource responsable principal / commercial (relation mainManager)", + "type": "string" +} - changed
Input schema / properties / note / descriptionPrevious value: -"Notes"New value: +"Description de l'opportunité (mappée sur /data/attributes/description)" - added
Input schema / properties / note / maxLengthAdded value: +65000 - added
Input schema / properties / poleIdAdded value: +{ + "description": "ID du pôle (relation pole)", + "type": "string" +} - changed
Input schema / properties / startDate / descriptionPrevious value: -"Date de début (YYYY-MM-DD)"New value: +"Date de début prévue (YYYY-MM-DD ou 'immediate')" - changed
Input schema / properties / state / descriptionPrevious value: -"État"New value: +"État de l'opportunité" - added
Input schema / properties / turnoverEstimatedExcludingTaxAdded value: +{ + "description": "Chiffre d'affaires estimé HT (montant)", + "type": "number" +} - added
Input schema / properties / typeOfAdded value: +{ + "description": "Type d'opportunité : ID numérique du dictionnaire setting.typeOf.project (ex: 1, 3), via boond_application_dictionary", + "maximum": 9007199254740991, + "minimum": 1, + "type": "integer" +} - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "id": { + "description": "Identifiant de l'entité créée/modifiée", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" +}
- Changed
boond_orders_create1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "id": { + "description": "Identifiant de l'entité créée/modifiée", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" +}
- Changed
boond_orders_delete4 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "deleted": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "reason": { + "description": "Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur)", + "type": "string" + } + }, + "required": [ + "id", + "deleted" + ], + "type": "object" +}
- Changed
boond_orders_get3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_orders_search1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Nombre d'éléments retournés sur cette page", + "type": "number" + }, + "items": { + "items": { + "additionalProperties": false, + "properties": { + "attributes": { + "additionalProperties": {}, + "description": "Attributs projetés (présent si `fields` est fourni)", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "id": { + "type": "string" + }, + "summary": { + "description": "Résumé standard (absent si `fields` est fourni)", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "total": { + "description": "Nombre total de résultats côté BoondManager", + "type": "number" + } + }, + "required": [ + "count", + "items" + ], + "type": "object" +}
- Changed
boond_orders_update1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "id": { + "description": "Identifiant de l'entité créée/modifiée", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" +}
- Changed
boond_payments_get3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_poles_get3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_poles_search1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Nombre d'éléments retournés sur cette page", + "type": "number" + }, + "items": { + "items": { + "additionalProperties": false, + "properties": { + "attributes": { + "additionalProperties": {}, + "description": "Attributs projetés (présent si `fields` est fourni)", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "id": { + "type": "string" + }, + "summary": { + "description": "Résumé standard (absent si `fields` est fourni)", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "total": { + "description": "Nombre total de résultats côté BoondManager", + "type": "number" + } + }, + "required": [ + "count", + "items" + ], + "type": "object" +}
- Changed
boond_positionings_delete4 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "deleted": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "reason": { + "description": "Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur)", + "type": "string" + } + }, + "required": [ + "id", + "deleted" + ], + "type": "object" +}
- Changed
boond_positionings_get3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_positionings_search8 fields changed- changed
Input schema / properties / candidateId / descriptionPrevious value: -"Filtrer par ID candidat"New value: +"Filtrer par ID candidat (envoyé à l'API comme référence keywords CAND<id>)" - added
Input schema / properties / companyIdAdded value: +{ + "description": "Filtrer par ID société (envoyé à l'API comme référence keywords CSOC<id>)", + "type": "string" +} - added
Input schema / properties / contactIdAdded value: +{ + "description": "Filtrer par ID contact (envoyé à l'API comme référence keywords CCON<id>)", + "type": "string" +} - changed
Input schema / properties / keywords / descriptionPrevious value: -"Mots-clés de recherche"New value: +"Mots-clés de recherche. L'API y accepte aussi des références d'entités (AO<id>, CAND<id>, COMP<id>...) — les filtres *Id ci-dessous sont convertis automatiquement en de telles références." - changed
Input schema / properties / opportunityId / descriptionPrevious value: -"Filtrer par ID opportunité"New value: +"Filtrer par ID opportunité (envoyé à l'API comme référence keywords AO<id>)" - added
Input schema / properties / productIdAdded value: +{ + "description": "Filtrer par ID produit (envoyé à l'API comme référence keywords PROD<id>)", + "type": "string" +} - removed
Input schema / properties / projectIdRemoved value: -{ - "description": "Filtrer par ID projet", - "type": "string" -} - changed
Input schema / properties / resourceId / descriptionPrevious value: -"Filtrer par ID ressource"New value: +"Filtrer par ID ressource (envoyé à l'API comme référence keywords COMP<id>)"
- Added
boond_positionings_update - Changed
boond_products_create1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "id": { + "description": "Identifiant de l'entité créée/modifiée", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" +}
- Changed
boond_products_delete4 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "deleted": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "reason": { + "description": "Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur)", + "type": "string" + } + }, + "required": [ + "id", + "deleted" + ], + "type": "object" +}
- Changed
boond_products_get4 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité"New value: +"Identifiant unique de l'entité (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$" - added
Input schema / properties / tab / patternAdded value: +"^[a-zA-Z][a-zA-Z-]*$"
- Changed
boond_products_search1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Nombre d'éléments retournés sur cette page", + "type": "number" + }, + "items": { + "items": { + "additionalProperties": false, + "properties": { + "attributes": { + "additionalProperties": {}, + "description": "Attributs projetés (présent si `fields` est fourni)", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "id": { + "type": "string" + }, + "summary": { + "description": "Résumé standard (absent si `fields` est fourni)", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "total": { + "description": "Nombre total de résultats côté BoondManager", + "type": "number" + } + }, + "required": [ + "count", + "items" + ], + "type": "object" +}
- Changed
boond_products_update1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "id": { + "description": "Identifiant de l'entité créée/modifiée", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" +}
- Changed
boond_projects_actions3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_projects_create1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "id": { + "description": "Identifiant de l'entité créée/modifiée", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" +}
- Changed
boond_projects_delete4 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "deleted": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "reason": { + "description": "Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur)", + "type": "string" + } + }, + "required": [ + "id", + "deleted" + ], + "type": "object" +}
- Changed
boond_projects_deliveries_groupments3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_projects_get4 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité"New value: +"Identifiant unique de l'entité (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$" - added
Input schema / properties / tab / patternAdded value: +"^[a-zA-Z][a-zA-Z-]*$"
- Changed
boond_projects_information3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_projects_orders3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_projects_productivity3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_projects_purchases3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_projects_search2 fields changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection côté client : liste d'attributs JSON:API à afficher pour chaque résultat (ex: ['title', 'updateDate', 'numberOfActiveProjects']). Réduit fortement la taille de la réponse. Absent = résumé standard (nom, email, ville, statut...). Les noms inconnus sont ignorés.", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Nombre d'éléments retournés sur cette page", + "type": "number" + }, + "items": { + "items": { + "additionalProperties": false, + "properties": { + "attributes": { + "additionalProperties": {}, + "description": "Attributs projetés (présent si `fields` est fourni)", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "id": { + "type": "string" + }, + "summary": { + "description": "Résumé standard (absent si `fields` est fourni)", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "total": { + "description": "Nombre total de résultats côté BoondManager", + "type": "number" + } + }, + "required": [ + "count", + "items" + ], + "type": "object" +}
- Changed
boond_projects_simulation3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_projects_update1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "id": { + "description": "Identifiant de l'entité créée/modifiée", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" +}
- Changed
boond_provider_invoices_get3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_purchases_delete4 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "deleted": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "reason": { + "description": "Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur)", + "type": "string" + } + }, + "required": [ + "id", + "deleted" + ], + "type": "object" +}
- Changed
boond_purchases_get3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_reporting_companies17 fields changed- added
Input schema / properties / companiesAdded value: +{ + "description": "Filtrer sur ces IDs de sociétés.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / companiesStatesAdded value: +{ + "description": "IDs d'états de sociétés (dictionnaire setting.state.company).", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - changed
Input schema / properties / endDate / descriptionPrevious value: -"Date de fin YYYY-MM-DD. Requis."New value: +"Date de fin (YYYY-MM-DD). Requis par l'API." - added
Input schema / properties / maxCompaniesAdded value: +{ + "description": "Nombre de sociétés par page (1-10, défaut 1). Le nombre de résultats = sociétés × indicateurs.", + "maximum": 10, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / narrowPerimeterAdded value: +{ + "description": "Si true, jointure ET entre les filtres `perimeter*` (au lieu de OU par défaut).", + "type": "boolean" +} - changed
Input schema / properties / page / descriptionPrevious value: -"Numéro de page (max: 100)"New value: +"Numéro de page (défaut: 1, max: 100)" - added
Input schema / properties / perimeterAgenciesAdded value: +{ + "description": "IDs d'agences. Conserve les entités dont le responsable appartient à ces agences.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / perimeterBusinessUnitsAdded value: +{ + "description": "IDs de business units. Conserve les entités dont le responsable appartient à ces BU.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / perimeterDynamicAdded value: +{ + "description": "Périmètre dynamique relatif à l'utilisateur courant (raccourci sans avoir à connaître son propre ID). Valeurs : 'data' (mes propres données), 'managers' (mon équipe / mes N-1), 'agencies' (mes agences), 'poles' (mes pôles), 'businessUnits' (mes BU). Combinable.", + "items": { + "enum": [ + "data", + "agencies", + "poles", + "businessUnits", + "managers" + ], + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / perimeterManagersAdded value: +{ + "description": "IDs des managers (ressources). Conserve les entités dont le responsable est l'un de ces managers. Pour 'mon équipe / N-1 d'une personne X', passer [X_id]. Obtenir son propre ID via boond_application_current_user.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / perimeterPolesAdded value: +{ + "description": "IDs de pôles. Conserve les entités dont le responsable appartient à ces pôles.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / periodDynamicAdded value: +{ + "description": "Période dynamique relative à aujourd'hui (avec period='dynamicPeriod') : today, thisWeek, thisMonth, thisTrimester, thisSemester, thisYear, thisFiscalYear, yesterday, lastWeek, lastMonth, lastTrimester, lastSemester, lastYear, lastFiscalYear, tomorrow, nextWeek, nextMonth, nextTrimester, nextSemester, nextYear, nextFiscalYear, lastCustomPeriod, nextCustomPeriod.", + "type": "string" +} - added
Input schema / properties / periodDynamicParametersAdded value: +{ + "description": "Paramètres de la période personnalisée (utilisé avec periodDynamic=lastCustomPeriod/nextCustomPeriod).", + "type": "string" +} - added
Input schema / properties / scorecardsAdded value: +{ + "description": "IDs des scorecards (indicateurs) à retourner.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / showPercentageAdded value: +{ + "description": "Afficher les valeurs en pourcentage plutôt qu'en valeur réelle.", + "type": "boolean" +} - changed
Input schema / properties / startDate / descriptionPrevious value: -"Date de début YYYY-MM-DD. Requis."New value: +"Date de début (YYYY-MM-DD). Requis par l'API." - added
Input schema / properties / useCacheAdded value: +{ + "description": "Cache de reporting : 'withCache' (valeurs mises en cache) ou 'withoutCache' (recalcul, défaut).", + "enum": [ + "withCache", + "withoutCache" + ], + "type": "string" +}
- Changed
boond_reporting_production_plans21 fields changed- added
Input schema / properties / companiesAdded value: +{ + "description": "Filtrer sur ces IDs de sociétés.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / contactsAdded value: +{ + "description": "Filtrer sur ces IDs de contacts.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - changed
Input schema / properties / endDate / descriptionPrevious value: -"Date de fin YYYY-MM-DD. Requis."New value: +"Date de fin (YYYY-MM-DD). Requis par l'API." - added
Input schema / properties / narrowPerimeterAdded value: +{ + "description": "Si true, jointure ET entre les filtres `perimeter*` (au lieu de OU par défaut).", + "type": "boolean" +} - changed
Input schema / properties / page / descriptionPrevious value: -"Numéro de page (max: 100)"New value: +"Numéro de page (défaut: 1, max: 100)" - added
Input schema / properties / perimeterAgenciesAdded value: +{ + "description": "IDs d'agences. Conserve les entités dont le responsable appartient à ces agences.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / perimeterBusinessUnitsAdded value: +{ + "description": "IDs de business units. Conserve les entités dont le responsable appartient à ces BU.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / perimeterDynamicAdded value: +{ + "description": "Périmètre dynamique relatif à l'utilisateur courant (raccourci sans avoir à connaître son propre ID). Valeurs : 'data' (mes propres données), 'managers' (mon équipe / mes N-1), 'agencies' (mes agences), 'poles' (mes pôles), 'businessUnits' (mes BU). Combinable.", + "items": { + "enum": [ + "data", + "agencies", + "poles", + "businessUnits", + "managers" + ], + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / perimeterManagersAdded value: +{ + "description": "IDs des managers (ressources). Conserve les entités dont le responsable est l'un de ces managers. Pour 'mon équipe / N-1 d'une personne X', passer [X_id]. Obtenir son propre ID via boond_application_current_user.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / perimeterPolesAdded value: +{ + "description": "IDs de pôles. Conserve les entités dont le responsable appartient à ces pôles.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / periodDynamicAdded value: +{ + "description": "Période dynamique relative à aujourd'hui (avec period='dynamicPeriod') : today, thisWeek, thisMonth, thisTrimester, thisSemester, thisYear, thisFiscalYear, yesterday, lastWeek, lastMonth, lastTrimester, lastSemester, lastYear, lastFiscalYear, tomorrow, nextWeek, nextMonth, nextTrimester, nextSemester, nextYear, nextFiscalYear, lastCustomPeriod, nextCustomPeriod.", + "type": "string" +} - added
Input schema / properties / periodDynamicParametersAdded value: +{ + "description": "Paramètres de la période personnalisée (utilisé avec periodDynamic=lastCustomPeriod/nextCustomPeriod).", + "type": "string" +} - added
Input schema / properties / positioningPeriodAdded value: +{ + "description": "'created' (positionnements créés entre les dates, défaut) ou 'running' (en cours sur la période).", + "enum": [ + "created", + "running" + ], + "type": "string" +} - added
Input schema / properties / positioningStatesAdded value: +{ + "description": "IDs d'états de positionnement (dictionnaire setting.state.positioning).", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / projectsAdded value: +{ + "description": "Filtrer sur ces IDs de projets.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / resourceStatesAdded value: +{ + "description": "IDs d'états de ressources (dictionnaire setting.state.resource).", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / resourceTypesAdded value: +{ + "description": "IDs de types de ressources (dictionnaire setting.typeOf.resource).", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / scorecardsAdded value: +{ + "description": "IDs des scorecards (indicateurs) à retourner.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / showContractsAdded value: +{ + "description": "Afficher les contrats associés.", + "type": "boolean" +} - changed
Input schema / properties / startDate / descriptionPrevious value: -"Date de début YYYY-MM-DD. Requis."New value: +"Date de début (YYYY-MM-DD). Requis par l'API." - added
Input schema / properties / useCacheAdded value: +{ + "description": "Cache de reporting : 'withCache' (valeurs mises en cache) ou 'withoutCache' (recalcul, défaut).", + "enum": [ + "withCache", + "withoutCache" + ], + "type": "string" +}
- Changed
boond_reporting_projects20 fields changed- added
Input schema / properties / companiesAdded value: +{ + "description": "Filtrer sur ces IDs de sociétés.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / contactsAdded value: +{ + "description": "Filtrer sur ces IDs de contacts.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - changed
Input schema / properties / endDate / descriptionPrevious value: -"Date de fin YYYY-MM-DD."New value: +"Date de fin (YYYY-MM-DD)." - added
Input schema / properties / maxProjectsAdded value: +{ + "description": "Nombre de projets par page (1-10, défaut 1). Le nombre de résultats = projets × indicateurs.", + "maximum": 10, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / narrowPerimeterAdded value: +{ + "description": "Si true, jointure ET entre les filtres `perimeter*` (au lieu de OU par défaut).", + "type": "boolean" +} - changed
Input schema / properties / page / descriptionPrevious value: -"Numéro de page (max: 100)"New value: +"Numéro de page (défaut: 1, max: 100)" - added
Input schema / properties / perimeterAgenciesAdded value: +{ + "description": "IDs d'agences. Conserve les entités dont le responsable appartient à ces agences.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / perimeterBusinessUnitsAdded value: +{ + "description": "IDs de business units. Conserve les entités dont le responsable appartient à ces BU.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / perimeterDynamicAdded value: +{ + "description": "Périmètre dynamique relatif à l'utilisateur courant (raccourci sans avoir à connaître son propre ID). Valeurs : 'data' (mes propres données), 'managers' (mon équipe / mes N-1), 'agencies' (mes agences), 'poles' (mes pôles), 'businessUnits' (mes BU). Combinable.", + "items": { + "enum": [ + "data", + "agencies", + "poles", + "businessUnits", + "managers" + ], + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / perimeterManagersAdded value: +{ + "description": "IDs des managers (ressources). Conserve les entités dont le responsable est l'un de ces managers. Pour 'mon équipe / N-1 d'une personne X', passer [X_id]. Obtenir son propre ID via boond_application_current_user.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / perimeterPolesAdded value: +{ + "description": "IDs de pôles. Conserve les entités dont le responsable appartient à ces pôles.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / periodDynamicAdded value: +{ + "description": "Période dynamique relative à aujourd'hui (avec period='dynamicPeriod') : today, thisWeek, thisMonth, thisTrimester, thisSemester, thisYear, thisFiscalYear, yesterday, lastWeek, lastMonth, lastTrimester, lastSemester, lastYear, lastFiscalYear, tomorrow, nextWeek, nextMonth, nextTrimester, nextSemester, nextYear, nextFiscalYear, lastCustomPeriod, nextCustomPeriod.", + "type": "string" +} - added
Input schema / properties / periodDynamicParametersAdded value: +{ + "description": "Paramètres de la période personnalisée (utilisé avec periodDynamic=lastCustomPeriod/nextCustomPeriod).", + "type": "string" +} - added
Input schema / properties / projectStatesAdded value: +{ + "description": "IDs d'états de projets (dictionnaire setting.state.project).", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / projectTypesAdded value: +{ + "description": "IDs de types de projets (dictionnaire setting.typeOf.project).", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / projectsAdded value: +{ + "description": "Filtrer sur ces IDs de projets.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / resourcesAdded value: +{ + "description": "Filtrer sur ces IDs de ressources.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / scorecardsAdded value: +{ + "description": "IDs des scorecards (indicateurs) à retourner.", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Input schema / properties / startDate / descriptionPrevious value: -"Date de début YYYY-MM-DD."New value: +"Date de début (YYYY-MM-DD)." - added
Input schema / properties / useCacheAdded value: +{ + "description": "Cache de reporting : 'withCache' (valeurs mises en cache) ou 'withoutCache' (recalcul, défaut).", + "enum": [ + "withCache", + "withoutCache" + ], + "type": "string" +}
- Changed
boond_reporting_resources23 fields changed- added
Input schema / properties / companiesAdded value: +{ + "description": "Filtrer sur ces IDs de sociétés.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / contactsAdded value: +{ + "description": "Filtrer sur ces IDs de contacts.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - changed
Input schema / properties / endDate / descriptionPrevious value: -"Date de fin YYYY-MM-DD. Requis."New value: +"Date de fin (YYYY-MM-DD)." - added
Input schema / properties / maxResourcesAdded value: +{ + "description": "Nombre de ressources par page (1-10, défaut 1). Le nombre de résultats = ressources × indicateurs.", + "maximum": 10, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / narrowPerimeterAdded value: +{ + "description": "Si true, jointure ET entre les filtres `perimeter*` (au lieu de OU par défaut).", + "type": "boolean" +} - changed
Input schema / properties / page / descriptionPrevious value: -"Numéro de page (max: 100)"New value: +"Numéro de page (défaut: 1, max: 100)" - added
Input schema / properties / perimeterAgenciesAdded value: +{ + "description": "IDs d'agences. Conserve les entités dont le responsable appartient à ces agences.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / perimeterBusinessUnitsAdded value: +{ + "description": "IDs de business units. Conserve les entités dont le responsable appartient à ces BU.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / perimeterDynamicAdded value: +{ + "description": "Périmètre dynamique relatif à l'utilisateur courant (raccourci sans avoir à connaître son propre ID). Valeurs : 'data' (mes propres données), 'managers' (mon équipe / mes N-1), 'agencies' (mes agences), 'poles' (mes pôles), 'businessUnits' (mes BU). Combinable.", + "items": { + "enum": [ + "data", + "agencies", + "poles", + "businessUnits", + "managers" + ], + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / perimeterManagersAdded value: +{ + "description": "IDs des managers (ressources). Conserve les entités dont le responsable est l'un de ces managers. Pour 'mon équipe / N-1 d'une personne X', passer [X_id]. Obtenir son propre ID via boond_application_current_user.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / perimeterPolesAdded value: +{ + "description": "IDs de pôles. Conserve les entités dont le responsable appartient à ces pôles.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / periodAdded value: +{ + "description": "Découpage temporel : 'onePeriod' (unique, entre startDate/endDate), 'dynamicPeriod' (selon periodDynamic), 'monthly' (6 mois depuis startDate), 'quarterly', 'semiAnnual', 'annual'. La synthèse accepte aussi 'weekly'.", + "type": "string" +} - added
Input schema / properties / periodDynamicAdded value: +{ + "description": "Période dynamique relative à aujourd'hui (avec period='dynamicPeriod') : today, thisWeek, thisMonth, thisTrimester, thisSemester, thisYear, thisFiscalYear, yesterday, lastWeek, lastMonth, lastTrimester, lastSemester, lastYear, lastFiscalYear, tomorrow, nextWeek, nextMonth, nextTrimester, nextSemester, nextYear, nextFiscalYear, lastCustomPeriod, nextCustomPeriod.", + "type": "string" +} - added
Input schema / properties / periodDynamicParametersAdded value: +{ + "description": "Paramètres de la période personnalisée (utilisé avec periodDynamic=lastCustomPeriod/nextCustomPeriod).", + "type": "string" +} - added
Input schema / properties / projectsAdded value: +{ + "description": "Filtrer sur ces IDs de projets.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / reportingCategoryAdded value: +{ + "description": "Vue : 'showByResources' (défaut, sans returnedPeriod) ou 'showByPeriods' (returnedPeriod requis).", + "enum": [ + "showByResources", + "showByPeriods" + ], + "type": "string" +} - added
Input schema / properties / resourceStatesAdded value: +{ + "description": "IDs d'états de ressources (dictionnaire setting.state.resource).", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / resourceTypesAdded value: +{ + "description": "IDs de types de ressources (dictionnaire setting.typeOf.resource).", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / resourcesAdded value: +{ + "description": "Filtrer sur ces IDs de ressources.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / scorecardsAdded value: +{ + "description": "IDs des scorecards (indicateurs) à retourner.", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Input schema / properties / startDate / descriptionPrevious value: -"Date de début YYYY-MM-DD. Requis."New value: +"Date de début (YYYY-MM-DD)." - added
Input schema / properties / useCacheAdded value: +{ + "description": "Cache de reporting : 'withCache' (valeurs mises en cache) ou 'withoutCache' (recalcul, défaut).", + "enum": [ + "withCache", + "withoutCache" + ], + "type": "string" +} - removed
Input schema / requiredRemoved value: -[ - "startDate", - "endDate" -]
- Changed
boond_reporting_synthesis23 fields changed- added
Input schema / properties / companiesAdded value: +{ + "description": "Filtrer sur ces IDs de sociétés.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / compareIndicatorsAdded value: +{ + "description": "Indicateurs à comparer entre deux périodes.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / compareIndicatorsPeriodAdded value: +{ + "description": "Période de comparaison des indicateurs (défaut 'period').", + "type": "string" +} - added
Input schema / properties / contactsAdded value: +{ + "description": "Filtrer sur ces IDs de contacts.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - changed
Input schema / properties / endDate / descriptionPrevious value: -"Date de fin YYYY-MM-DD. Requis."New value: +"Date de fin (YYYY-MM-DD)." - added
Input schema / properties / narrowPerimeterAdded value: +{ + "description": "Si true, jointure ET entre les filtres `perimeter*` (au lieu de OU par défaut).", + "type": "boolean" +} - changed
Input schema / properties / page / descriptionPrevious value: -"Numéro de page (max: 100)"New value: +"Numéro de page (défaut: 1, max: 100)" - added
Input schema / properties / perimeterAgenciesAdded value: +{ + "description": "IDs d'agences. Conserve les entités dont le responsable appartient à ces agences.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / perimeterBusinessUnitsAdded value: +{ + "description": "IDs de business units. Conserve les entités dont le responsable appartient à ces BU.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / perimeterDynamicAdded value: +{ + "description": "Périmètre dynamique relatif à l'utilisateur courant (raccourci sans avoir à connaître son propre ID). Valeurs : 'data' (mes propres données), 'managers' (mon équipe / mes N-1), 'agencies' (mes agences), 'poles' (mes pôles), 'businessUnits' (mes BU). Combinable.", + "items": { + "enum": [ + "data", + "agencies", + "poles", + "businessUnits", + "managers" + ], + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / perimeterManagersAdded value: +{ + "description": "IDs des managers (ressources). Conserve les entités dont le responsable est l'un de ces managers. Pour 'mon équipe / N-1 d'une personne X', passer [X_id]. Obtenir son propre ID via boond_application_current_user.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / perimeterPolesAdded value: +{ + "description": "IDs de pôles. Conserve les entités dont le responsable appartient à ces pôles.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / periodAdded value: +{ + "description": "Découpage temporel : 'onePeriod' (unique, entre startDate/endDate), 'dynamicPeriod' (selon periodDynamic), 'monthly' (6 mois depuis startDate), 'quarterly', 'semiAnnual', 'annual'. La synthèse accepte aussi 'weekly'.", + "type": "string" +} - added
Input schema / properties / periodDynamicAdded value: +{ + "description": "Période dynamique relative à aujourd'hui (avec period='dynamicPeriod') : today, thisWeek, thisMonth, thisTrimester, thisSemester, thisYear, thisFiscalYear, yesterday, lastWeek, lastMonth, lastTrimester, lastSemester, lastYear, lastFiscalYear, tomorrow, nextWeek, nextMonth, nextTrimester, nextSemester, nextYear, nextFiscalYear, lastCustomPeriod, nextCustomPeriod.", + "type": "string" +} - added
Input schema / properties / periodDynamicParametersAdded value: +{ + "description": "Paramètres de la période personnalisée (utilisé avec periodDynamic=lastCustomPeriod/nextCustomPeriod).", + "type": "string" +} - added
Input schema / properties / projectsAdded value: +{ + "description": "Filtrer sur ces IDs de projets.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / reportingCategoryAdded value: +{ + "description": "Catégorie de synthèse (défaut 'commercialSynthesis') : commercial, RH, recrutement, activité & frais, facturation, ou globale. `resources` n'est pas disponible hors d'une vue par ressources.", + "enum": [ + "commercialSynthesis", + "humanResourcesSynthesis", + "recruitmentSynthesis", + "activityExpensesSynthesis", + "billingSynthesis", + "globalSynthesis" + ], + "type": "string" +} - added
Input schema / properties / reportingTypeAdded value: +{ + "description": "Type de données : 'realData' (défaut, réel) ou 'targetsData' (objectifs).", + "enum": [ + "realData", + "targetsData" + ], + "type": "string" +} - added
Input schema / properties / resourcesAdded value: +{ + "description": "Filtrer sur ces IDs de ressources.", + "items": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": "array" +} - added
Input schema / properties / scorecardsAdded value: +{ + "description": "IDs des scorecards (indicateurs) à retourner.", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Input schema / properties / startDate / descriptionPrevious value: -"Date de début YYYY-MM-DD. Requis."New value: +"Date de début (YYYY-MM-DD). Requis par l'API." - added
Input schema / properties / useCacheAdded value: +{ + "description": "Cache de reporting : 'withCache' (valeurs mises en cache) ou 'withoutCache' (recalcul, défaut).", + "enum": [ + "withCache", + "withoutCache" + ], + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "startDate", - "endDate" -]New value: +[ + "startDate" +]
- Changed
boond_resources_absences_reports3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_resources_actions3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_resources_administrative3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_resources_advantages3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_resources_create1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "id": { + "description": "Identifiant de l'entité créée/modifiée", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" +}
- Changed
boond_resources_delete4 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "deleted": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "reason": { + "description": "Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur)", + "type": "string" + } + }, + "required": [ + "id", + "deleted" + ], + "type": "object" +}
- Changed
boond_resources_expenses_reports3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_resources_get4 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité"New value: +"Identifiant unique de l'entité (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$" - added
Input schema / properties / tab / patternAdded value: +"^[a-zA-Z][a-zA-Z-]*$"
- Changed
boond_resources_information3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_resources_positionings3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_resources_projects3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_resources_search2 fields changed- added
Input schema / properties / fieldsAdded value: +{ + "description": "Projection côté client : liste d'attributs JSON:API à afficher pour chaque résultat (ex: ['title', 'updateDate', 'numberOfActiveProjects']). Réduit fortement la taille de la réponse. Absent = résumé standard (nom, email, ville, statut...). Les noms inconnus sont ignorés.", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Nombre d'éléments retournés sur cette page", + "type": "number" + }, + "items": { + "items": { + "additionalProperties": false, + "properties": { + "attributes": { + "additionalProperties": {}, + "description": "Attributs projetés (présent si `fields` est fourni)", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "id": { + "type": "string" + }, + "summary": { + "description": "Résumé standard (absent si `fields` est fourni)", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "total": { + "description": "Nombre total de résultats côté BoondManager", + "type": "number" + } + }, + "required": [ + "count", + "items" + ], + "type": "object" +}
- Changed
boond_resources_technical_data3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_resources_times_reports3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_resources_update1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "id": { + "description": "Identifiant de l'entité créée/modifiée", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" +}
- Changed
boond_roles_get3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_roles_search1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Nombre d'éléments retournés sur cette page", + "type": "number" + }, + "items": { + "items": { + "additionalProperties": false, + "properties": { + "attributes": { + "additionalProperties": {}, + "description": "Attributs projetés (présent si `fields` est fourni)", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "id": { + "type": "string" + }, + "summary": { + "description": "Résumé standard (absent si `fields` est fourni)", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "total": { + "description": "Nombre total de résultats côté BoondManager", + "type": "number" + } + }, + "required": [ + "count", + "items" + ], + "type": "object" +}
- Changed
boond_threads_get3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_threads_search1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Nombre d'éléments retournés sur cette page", + "type": "number" + }, + "items": { + "items": { + "additionalProperties": false, + "properties": { + "attributes": { + "additionalProperties": {}, + "description": "Attributs projetés (présent si `fields` est fourni)", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "id": { + "type": "string" + }, + "summary": { + "description": "Résumé standard (absent si `fields` est fourni)", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "total": { + "description": "Nombre total de résultats côté BoondManager", + "type": "number" + } + }, + "required": [ + "count", + "items" + ], + "type": "object" +}
- Changed
boond_todolists_get3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_todolists_search1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Nombre d'éléments retournés sur cette page", + "type": "number" + }, + "items": { + "items": { + "additionalProperties": false, + "properties": { + "attributes": { + "additionalProperties": {}, + "description": "Attributs projetés (présent si `fields` est fourni)", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "id": { + "type": "string" + }, + "summary": { + "description": "Résumé standard (absent si `fields` est fourni)", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "total": { + "description": "Nombre total de résultats côté BoondManager", + "type": "number" + } + }, + "required": [ + "count", + "items" + ], + "type": "object" +}
- Changed
boond_validations_get3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_webhooks_get3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Identifiant unique de l'entité BoondManager"New value: +"Identifiant unique de l'entité BoondManager (numérique)" - removed
Input schema / properties / id / minLengthRemoved value: -1 - added
Input schema / properties / id / patternAdded value: +"^\\d+$"
- Changed
boond_webhooks_search1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "count": { + "description": "Nombre d'éléments retournés sur cette page", + "type": "number" + }, + "items": { + "items": { + "additionalProperties": false, + "properties": { + "attributes": { + "additionalProperties": {}, + "description": "Attributs projetés (présent si `fields` est fourni)", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "id": { + "type": "string" + }, + "summary": { + "description": "Résumé standard (absent si `fields` est fourni)", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "total": { + "description": "Nombre total de résultats côté BoondManager", + "type": "number" + } + }, + "required": [ + "count", + "items" + ], + "type": "object" +}
2 tool updates
v2.2.0- Changed
boond_actions_create17 fields changed- changed
Input schema / properties / candidateId / descriptionPrevious value: -"ID du candidat associé"New value: +"ID du candidat auquel rattacher l'action (dependsOn)" - changed
Input schema / properties / companyId / descriptionPrevious value: -"ID de la société associée"New value: +"ID de la société associée (uniquement en complément d'un contactId)" - changed
Input schema / properties / contactId / descriptionPrevious value: -"ID du contact associé"New value: +"ID du contact auquel rattacher l'action (dependsOn)" - removed
Input schema / properties / contentRemoved value: -{ - "description": "Contenu / description", - "type": "string" -} - changed
Input schema / properties / endDate / descriptionPrevious value: -"Date de fin"New value: +"Date de fin (même format que startDate)" - added
Input schema / properties / opportunityIdAdded value: +{ + "description": "ID de l'opportunité à laquelle rattacher l'action (dependsOn)", + "type": "string" +} - added
Input schema / properties / projectIdAdded value: +{ + "description": "ID du projet auquel rattacher l'action (dependsOn)", + "type": "string" +} - changed
Input schema / properties / resourceId / descriptionPrevious value: -"ID de la ressource associée"New value: +"ID de la ressource à laquelle rattacher l'action (dependsOn)" - changed
Input schema / properties / startDate / descriptionPrevious value: -"Date de début (YYYY-MM-DD ou ISO)"New value: +"Date de début au format ISO avec timezone (ex: 2026-06-05T10:00:00+0200)" - removed
Input schema / properties / subjectRemoved value: -{ - "description": "Sujet de l'action", - "type": "string" -} - added
Input schema / properties / textAdded value: +{ + "description": "Contenu / notes de l'action", + "type": "string" +} - added
Input schema / properties / titleAdded value: +{ + "description": "Titre de l'action", + "type": "string" +} - changed
Input schema / properties / typeOf / descriptionPrevious value: -"Type d'action (ex: call, email, meeting, note)"New value: +"Type d'action : ID numérique du dictionnaire BoondManager (setting.action.*, via boond_application_dictionary)" - added
Input schema / properties / typeOf / maximumAdded value: +9007199254740991 - removed
Input schema / properties / typeOf / minLengthRemoved value: -1 - added
Input schema / properties / typeOf / minimumAdded value: +0 - changed
Input schema / properties / typeOf / typePrevious value: -"string"New value: +"integer"
- Added
boond_reporting_projects
170 tool updates
v2.1.0- First observed
boond_absences_create - First observed
boond_absences_delete - First observed
boond_absences_get - First observed
boond_absences_search - First observed
boond_absences_update - First observed
boond_accounts_get - First observed
boond_accounts_search - First observed
boond_actions_create - First observed
boond_actions_delete - First observed
boond_actions_get - First observed
boond_actions_search - First observed
boond_advantages_get - First observed
boond_advantages_search - First observed
boond_agencies_get - First observed
boond_agencies_search - First observed
boond_application_current_user - First observed
boond_application_dictionary - First observed
boond_business_units_get - First observed
boond_business_units_search - First observed
boond_calendars_get - First observed
boond_calendars_search - First observed
boond_candidates_actions - First observed
boond_candidates_administrative - First observed
boond_candidates_create - First observed
boond_candidates_delete - First observed
boond_candidates_get - First observed
boond_candidates_information - First observed
boond_candidates_positionings - First observed
boond_candidates_search - First observed
boond_candidates_technical_data - First observed
boond_candidates_update - First observed
boond_companies_actions - First observed
boond_companies_contacts - First observed
boond_companies_create - First observed
boond_companies_delete - First observed
boond_companies_get - First observed
boond_companies_information - First observed
boond_companies_invoices - First observed
boond_companies_opportunities - First observed
boond_companies_orders - First observed
boond_companies_projects - First observed
boond_companies_provider_invoices - First observed
boond_companies_purchases - First observed
boond_companies_search - First observed
boond_companies_update - First observed
boond_contacts_actions - First observed
boond_contacts_create - First observed
boond_contacts_delete - First observed
boond_contacts_get - First observed
boond_contacts_information - First observed
boond_contacts_invoices - First observed
boond_contacts_opportunities - First observed
boond_contacts_orders - First observed
boond_contacts_projects - First observed
boond_contacts_search - First observed
boond_contacts_update - First observed
boond_contracts_create - First observed
boond_contracts_get - First observed
boond_deliveries_get - First observed
boond_deliveries_search - First observed
boond_expenses_create - First observed
boond_expenses_delete - First observed
boond_expenses_get - First observed
boond_expenses_search - First observed
boond_expenses_update - First observed
boond_flags_get - First observed
boond_flags_search - First observed
boond_invoices_create - First observed
boond_invoices_delete - First observed
boond_invoices_get - First observed
boond_invoices_search - First observed
boond_invoices_update - First observed
boond_logs_get - First observed
boond_logs_search - First observed
boond_notifications_get - First observed
boond_notifications_search - First observed
boond_opportunities_actions - First observed
boond_opportunities_create - First observed
boond_opportunities_delete - First observed
boond_opportunities_get - First observed
boond_opportunities_information - First observed
boond_opportunities_positionings - First observed
boond_opportunities_projects - First observed
boond_opportunities_search - First observed
boond_opportunities_simulation - First observed
boond_opportunities_update - First observed
boond_orders_create - First observed
boond_orders_delete - First observed
boond_orders_get - First observed
boond_orders_search - First observed
boond_orders_update - First observed
boond_payments_get - First observed
boond_payments_search - First observed
boond_planning_absences_search - First observed
boond_poles_get - First observed
boond_poles_search - First observed
boond_positionings_create - First observed
boond_positionings_delete - First observed
boond_positionings_get - First observed
boond_positionings_search - First observed
boond_products_create - First observed
boond_products_delete - First observed
boond_products_get - First observed
boond_products_search - First observed
boond_products_update - First observed
boond_projects_actions - First observed
boond_projects_create - First observed
boond_projects_delete - First observed
boond_projects_deliveries_groupments - First observed
boond_projects_get - First observed
boond_projects_information - First observed
boond_projects_orders - First observed
boond_projects_productivity - First observed
boond_projects_purchases - First observed
boond_projects_search - First observed
boond_projects_simulation - First observed
boond_projects_update - First observed
boond_provider_invoices_get - First observed
boond_provider_invoices_search - First observed
boond_purchases_create - First observed
boond_purchases_delete - First observed
boond_purchases_get - First observed
boond_purchases_search - First observed
boond_reporting_companies - First observed
boond_reporting_production_plans - First observed
boond_reporting_resources - First observed
boond_reporting_synthesis - First observed
boond_resources_absences_reports - First observed
boond_resources_actions - First observed
boond_resources_administrative - First observed
boond_resources_advantages - First observed
boond_resources_create - First observed
boond_resources_delete - First observed
boond_resources_expenses_reports - First observed
boond_resources_get - First observed
boond_resources_information - First observed
boond_resources_positionings - First observed
boond_resources_projects - First observed
boond_resources_reference_create - First observed
boond_resources_reference_delete - First observed
boond_resources_reference_update - First observed
boond_resources_search - First observed
boond_resources_technical_data - First observed
boond_resources_technical_data_update - First observed
boond_resources_times_reports - First observed
boond_resources_timesheets - First observed
boond_resources_update - First observed
boond_roles_get - First observed
boond_roles_search - First observed
boond_threads_get - First observed
boond_threads_search - First observed
boond_timesheets_get - First observed
boond_timesheets_search - First observed
boond_todolists_get - First observed
boond_todolists_search - First observed
boond_validations_get - First observed
boond_validations_search - First observed
boond_webhooks_get - First observed
boond_webhooks_search - First observed
boond_workflow_candidats_pour_opportunite - First observed
boond_workflow_cartographie_competences - First observed
boond_workflow_cvs_a_mettre_a_jour - First observed
boond_workflow_factures_a_relancer - First observed
boond_workflow_fiche_consultant - First observed
boond_workflow_fin_de_mission - First observed
boond_workflow_pipeline_commercial - First observed
boond_workflow_recap_hebdo - First observed
boond_workflow_recherche_profil_competences - First observed
boond_workflow_staffing_disponible - First observed
boond_workflow_synthese_equipe
TDQS
Scored across 182 tools
Each tool targets a distinct entity-action combination, and descriptions explicitly contrast alternative tools ('Plutôt que: ...') to prevent misselection. Even closely related getters (e.g., boond_resources_timesheets vs boond_timesheets_search) are clearly differentiated by starting point and scope.
All tools follow a uniform boond_<entity>_<action> snake_case pattern, with consistent verbs like search, get, create, update, delete and tab-specific getters (information, technical_data, actions). Even workflow and reporting tools follow the same convention (boond_workflow_*, boond_reporting_*), yielding a highly predictable naming scheme.
At 182 tools, the set is far beyond the recommended range and even the 25+ threshold for 'too many'. While the BoondManager domain is broad, many tab-specific getters duplicate boond_<entity>_get with a tab parameter, and the workflow_* tools are essentially runbook generators that could be prompts, inflating the count unnecessarily.
The tool set provides full CRUD for all major entities (candidates, resources, contacts, companies, opportunities, projects, invoices, orders, actions, absences, expenses, positionings) plus comprehensive tab-specific getters, reporting, workflows, documents, and reference lookups. Minor gaps (e.g., no update/delete for timesheets, deliveries, or contracts) are acceptable given the workflow constraints of those entities.
Maintenance
Related MCP Connectors
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Marketo MCP server for AI. 130 tools to operate Marketo from Claude, Cursor, or ChatGPT.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP server to connect Claude with Beebole for time tracking, enabling project and task listing, time entry retrieval, and time logging.279 npmMIT
- AlicenseNot gradedqualityDmaintenanceA comprehensive MCP server with 206+ tools across 16 integrations that gives Claude access to real accounts (LinkedIn, Twitter, Slack, Gmail, WhatsApp, etc.) by extracting auth tokens straight from your browser, no API keys or OAuth needed.8 npm3MIT
- FlicenseNot gradedqualityDmaintenanceMCP server to connect Claude with Odoo 18, enabling CRUD operations on Odoo models via natural language.2-
- FlicenseNot gradedqualityDmaintenanceAn MCP server integrating with the BoondManager API to enable AI assistants to search, retrieve, create, and update records across 94 tools in 8 business domains.-