OpenLMNP
OpenLMNP is an open-source, self-hosted accounting server for French LMNP (furnished rental) management, providing a comprehensive API to:
Property Management: Create, update, and retrieve detailed property information including acquisition cost, surface area, and tax regime.
Income & Expense Tracking: Manually record or bulk import Airbnb/Booking CSVs with duplicate detection; categorize expenses with VAT, manage platform fees and tourist taxes.
Depreciation & Amortization: Manage furniture, property works, and structural components with automatic annual depreciation calculations.
Loan Management: Track loans, view details, and generate amortization schedules.
Fiscal Year & Tax: Compute fiscal results with depreciation capping and deficit carry-forward; compare micro-BIC vs. réel regimes, run simulations, and project up to 20 years.
Document Generation: Generate FEC files (legally compliant), tax return PDFs (Cerfa 2031, 2033), and TVA declarations.
Document Attachments: Attach justification files (invoices/receipts) to transactions; export all documents as ZIP.
Dashboard & Onboarding: Get summary dashboards and track setup progress.
System: Multi-user with data isolation, listing of all valid enums (categories, sources, etc.).
Importe les données de transactions Airbnb (CSV) dans le logiciel de comptabilité LMNP, créant les revenus locatifs et détectant les doublons.
OpenLMNP
Logiciel open source de comptabilité LMNP (Location Meublée Non Professionnelle)
Gérez vos biens en location meublée, calculez vos amortissements, et produisez votre liasse fiscale au régime réel — sans abonnement, chez vous.
🚀 Démo live · 📦 Installation · 📚 Documentation · 🇬🇧 English

🎯 Essayez sans rien installer — la démo en ligne crée un bac à sable éphémère et isolé pour chaque visiteur, pré-rempli avec 4 années de comptabilité fictive. Connexion :
demo@openlmnp.fr/demo2026.
Sommaire
Related MCP server: Aikount MCP
Pourquoi OpenLMNP ?
Le régime réel LMNP est presque toujours plus avantageux que le micro-BIC pour un meublé, mais il exige des amortissements par composant, une liasse fiscale (2031, 2033) et un FEC conforme. Les options habituelles ont chacune leur défaut :
OpenLMNP | Tableur maison | SaaS comptable | Expert-comptable | |
Coût | Gratuit (AGPLv3) | Gratuit | Abonnement annuel | Honoraires annuels |
Vos données | Chez vous (auto-hébergé) | Chez vous | Cloud d'un tiers | Chez un tiers |
Amortissements par composant | ✅ Automatiques | ⚠️ Formules à maintenir | ✅ | ✅ |
Liasse fiscale + FEC | ✅ Générés | ❌ | ✅ | ✅ |
Calculs au centime (bcmath) | ✅ | ⚠️ Arrondis flottants | ✅ | ✅ |
OpenLMNP automatise le régime réel de bout en bout et reste un outil d'aide : pour les situations complexes (indivision, TVA para-hôtelière, passage en LMP…), un expert-comptable reste recommandé.
Fonctionnalités
🏠 Comptabilité & amortissements
Amortissement par composant — gros œuvre, toiture, plomberie, agencements (durées standards)
Travaux & mobilier — amortissement dédié ou au prorata, gestion neuf/occasion
Emprunts — tableau d'amortissement automatique, intérêts déductibles
Écritures comptables — génération automatique selon le plan comptable LMNP
Multi-biens — adresse, surfaces, quote-part résidence principale, valeur vénale
📋 Fiscal & déclarations
Exercices chaînés — reports N−1, amortissements différés, plafonnement
Simulateur micro-BIC vs régime réel — avec verdict chiffré
Projection pluriannuelle — tableau sur 5 à 20 ans, année de bascule des régimes
Télédéclaration interactive — lignes Cerfa 2031, 2033-A/B/C/D, 2042-C-PRO avec boutons « Copier »
Liasse fiscale PDF — génération complète
FEC conforme — article A.47 A-1 du LPF, 18 colonnes, format légal
🔌 Import & intégrations
Import CSV Airbnb / Booking — formats FR/EN, détection des doublons
Export CSV — recettes, charges, télédéclaration
API MCP (45 outils) — pilotez votre comptabilité depuis un assistant IA (Claude, etc.)
Mises à jour automatiques — notification et déploiement depuis GitHub
🛡️ Confort & sécurité
Multi-utilisateurs — chaque propriétaire voit uniquement ses données
Assistants guidés — onboarding, création de bien, clôture fiscale, emprunt, import annuel
Justificatifs — pièces uploadées sur charges, travaux et mobilier
Guide intégré & badges de progression — mise en route, suivi régulier, déclaration annuelle
Dark mode — natif Filament
234 tests automatisés — Pest PHP, 629 assertions (détail)
Captures d'écran
Simulateur | Projection | Télédéclaration |
|
|
|
D'autres captures : tableau de bord · charges
Documentation
Document | Contenu |
Auto-hébergement via Docker : build, run, volumes de persistance, variables d'environnement, mise à jour et sauvegarde | |
Amortissement par composant, FEC, liasse fiscale 2031/2033, import CSV, simulateur, multi-biens, emprunts, justificatifs | |
Activer et utiliser le mode démo multi-utilisateurs (sandbox éphémère isolé par visiteur) | |
Questions courantes : gratuité, confidentialité des données, régime réel vs micro-BIC, sauvegardes… | |
Règles fiscales du régime réel : amortissements, abattements, plafonds, réforme 2026 | |
Détail des 234 tests automatisés, suite par suite | |
Choix de design de l'interface Filament |
Pour contribuer au projet, voir CONTRIBUTING.md.
Stack technique
Composant | Technologie |
Framework | Laravel 13 |
Admin UI | Filament 5 |
Interactivité | Livewire 4 |
Base de données | SQLite (PostgreSQL en option) |
DomPDF | |
Calculs financiers | PHP bcmath (précision décimale) |
Tests | Pest PHP |
Déploiement | Docker |
Installation rapide (Docker)
Avec l'image officielle manganate06/openlmnp :
docker run -d --name openlmnp -p 8090:8000 \
-v openlmnp-database:/var/www/html/database \
-v openlmnp-storage:/var/www/html/storage \
--restart unless-stopped manganate06/openlmnp:latestOu en construisant l'image depuis les sources :
git clone https://github.com/manganate006/openlmnp.git
cd openlmnp
docker build -t openlmnp .
docker run -d --name openlmnp -p 8090:8000 --restart unless-stopped openlmnpAccès : http://localhost:8090
Compte démo : demo@openlmnp.fr / demo2026
Installation LXC Proxmox (script communautaire)
Sur un hôte Proxmox VE, crée un conteneur LXC prêt à l'emploi en une seule commande :
bash -c "$(curl -fsSL https://raw.githubusercontent.com/manganate006/openlmnp/main/community-scripts/ct/openlmnp.sh)"Debian 13 · nginx + PHP 8.4-FPM · SQLite. Un mot de passe admin aléatoire est généré à
l'installation et enregistré dans /opt/openlmnp/admin_credentials.txt.
ℹ️ Nécessite un dépôt public avec une release publiée (le script récupère la dernière release GitHub).
Installation développement
git clone https://github.com/manganate006/openlmnp.git
cd openlmnp
composer install
cp .env.docker .env
php artisan key:generate
touch database/database.sqlite
php artisan migrate:fresh --seed
php artisan serveConfiguration
À la première visite, créez votre compte sur /register : il devient
administrateur, puis la page d'inscription se referme automatiquement
(instance personnelle par défaut — réglable via ALLOW_REGISTRATION).
Ajoutez ensuite votre SIREN dans votre profil pour les documents fiscaux.
Variable | Description | Défaut |
| Base de données |
|
| Chemin SQLite |
|
| Langue |
|
| Inscription : |
|
| Invitation ponctuelle à donner son avis sur le logiciel (voir ci-dessous) |
|
Donner son avis (et comment l'éteindre)
Après un moment d'utilisation réelle, l'application propose une fois de dire ce que vous pensez du logiciel : un pouce, et si vous le souhaitez un mot. C'est le seul retour que reçoit un projet développé sur du temps libre.
Rien ne quitte votre instance. Sans FEEDBACK_FORWARD_EMAIL, votre retour est simplement
enregistré dans votre propre base ; l'écran de confirmation vous propose alors de l'envoyer
vous-même, par votre client mail, si vous en avez envie. Aucun envoi automatique, aucun appel
sortant.
Pour la désactiver complètement :
FEEDBACK_ENABLED=falseLes seuils sont réglables sans toucher au code : FEEDBACK_MIN_SECONDS (240),
FEEDBACK_MIN_ACTIONS (1), FEEDBACK_COOLDOWN_DAYS (30), FEEDBACK_AUDIENCES.
Emails (optionnel)
Aucun email ne part par défaut (MAIL_MAILER=log) — l'application fonctionne très
bien sans. Pour activer le lien « Mot de passe oublié », branchez le SMTP de votre
choix via les variables MAIL_* (l'expéditeur est votre propre adresse ; SPF/DKIM
sont gérés par votre fournisseur). Et en cas d'oubli sans SMTP, depuis le serveur :
php artisan openlmnp:reset-password vous@exemple.fr📖 Référence complète — toutes les variables, volumes de persistance, comptes, SMTP pas à pas, sauvegarde : docs/INSTALLATION.md
Tests
234 tests Pest PHP, 629 assertions — services de calcul, pages Filament, isolation multi-utilisateurs, mode démo. Détail suite par suite : docs/TESTS.md.
# Lancer tous les tests
vendor/bin/pest
# Par catégorie
vendor/bin/pest --filter="Depreciation"
vendor/bin/pest --filter="FiscalYear"
vendor/bin/pest --filter="Filament"Contribution
Les contributions sont les bienvenues ! Merci d'ouvrir une issue avant de soumettre une PR.
# Fork + clone
git checkout -b feature/ma-fonctionnalite
# ... modifier ...
vendor/bin/pest # vérifier que les tests passent
git commit -m "feat: description"
git push origin feature/ma-fonctionnalite
# Ouvrir une PR💛 Comment nous soutenir ?
OpenLMNP est développé sur mon temps libre. Si l'outil vous rend service, voici comment m'aider à continuer :
⭐ Mettez une étoile sur le repo — ça aide d'autres loueurs meublés à découvrir le projet
💛 Devenez sponsor via GitHub Sponsors — quelques euros par mois financent le temps de développement
🐛 Signalez un bug ou proposez une fonctionnalité via les issues
🔧 Contribuez du code — voir CONTRIBUTING.md
Merci à toutes celles et ceux qui soutiennent le projet !
Licence
AGPLv3 — Logiciel libre. Vous pouvez l'utiliser, le modifier et le redistribuer à condition de partager les modifications sous la même licence.
Crédits
Available Tools
44 toolsattach_documentAttach DocumentADestructiveInspect
Attache un document justificatif (facture, reçu, devis) à une charge, un mobilier ou un poste de travaux. Trois modes d'entrée mutuellement exclusifs : file_base64 (contenu encodé), file_path (chemin absolu sur le serveur, nécessite MCP_FILE_PATH_PREFIX), file_url (URL http/https téléchargée par le serveur). Le chemin de stockage est : documents/{user_id}/{type}/{filename}.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | ||
| label | Yes | ||
| amount | No | ||
| file_url | No | ||
| filename | No | ||
| file_path | No | ||
| record_id | Yes | ||
| file_base64 | No | ||
| document_date | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true. The description adds details about the storage path pattern and mutual exclusivity of input modes, providing additional 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, comprising two sentences. The first covers purpose, the second covers input modes and storage path. Could benefit from structured formatting (e.g., bullet points), but it is 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?
With 9 parameters, 3 required, no output schema, and a destructive annotation, the description covers input modes and storage path but omits descriptions for many parameters and does not explain return behavior or error handling. Incomplete for a tool of this 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 0%, so the description must compensate. It explains the three file input modes and the storage path, but many parameters (type, label, amount, filename, record_id, document_date) are not described, leaving significant gaps.
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 (attaching a supporting document) and the target resources (charge, mobilier, poste de travaux). It also specifies three mutually exclusive input modes, distinguishing it from siblings like delete_document or export_documents.
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 explains when to use each input mode (file_base64, file_path, file_url) and mentions a prerequisite for file_path (MCP_FILE_PATH_PREFIX). While it doesn't explicitly state when not to use this tool vs alternatives, the context of the tool's purpose is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_micro_bicCompare Micro BicARead-onlyInspect
Compare le régime micro-BIC et le régime réel pour une année fiscale. Calcule le résultat imposable dans chaque régime et indique lequel est le plus avantageux. L'abattement micro-BIC est de 50 % pour les meublés classés, 30 % pour les non classés (loi Le Meur 2026). Tous les montants sont en euros.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | ||
| abatement_rate | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, and the description adds behavioral details like calculation logic and specific abatement rates (50% for classified furnished, 30% for non-classified). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no fluff. The first sentence states the purpose, and the second adds critical rate details. Optimal 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?
Covers core behavior and rates but omits return value information and prerequisite conditions (e.g., need for fiscal year data). Given lack of output schema, the description should at least hint at what the tool returns.
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 0% schema description coverage, the description partially explains parameters: it mentions 'year' implicitly and provides default abatement rates. However, it does not clarify that 'abatement_rate' is an optional override 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 clearly states it compares micro-BIC and réel regimes, calculates taxable income, and indicates the more advantageous regime. It specifies abatement rates for different accommodation types, making it distinct from sibling tools like compute_fiscal_year or compute_tva.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for fiscal year comparison but does not explicitly state prerequisites (e.g., having financial data) or when not to use it. No alternatives are mentioned, though the tool is unique among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compute_depreciationCompute DepreciationBRead-onlyInspect
Calcule le détail des amortissements LMNP pour un bien immobilier et une année donnée. Retourne la ventilation par composant immeuble, travaux et mobilier, ainsi que le total annuel, tous les montants exprimés en euros.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | ||
| property_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, indicating a non-mutating operation. The description adds 'calculates' which aligns, but no further behavioral traits (e.g., permission requirements, data freshness) are disclosed 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?
Two sentences with minimal waste, though the second sentence is somewhat long. The information is front-loaded but could be more structured (e.g., listing the breakdown components explicitly).
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 absence of an output schema, the description partially explains return values (breakdown by component, total annual amount). However, with many sibling tools and no output schema, more detail on the result structure or edge cases would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% with no parameter descriptions. The description mentions 'bien immobilier et une année donnée' linking to property_id and year, but does not explain valid values, formats, or relationships. More detail is needed to compensate for the lack of schema 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 tool calculates LMNP depreciation details for a property and year, with a breakdown by component. The verb 'calculate' and resource 'depreciation details' are specific, and it distinguishes from sibling tools like compute_fiscal_year or compute_loan_schedule.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like compute_fiscal_year or compare_micro_bic. The description implies it's for annual depreciation but does not state prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compute_fiscal_yearCompute Fiscal YearAIdempotentInspect
Calcule le résultat fiscal complet d'un exercice LMNP pour une année donnée : recettes, charges, amortissements (avec plafonnement et report), résultat fiscal net, et solde TVA. Crée l'exercice s'il n'existe pas encore. Tous les montants sont retournés en euros.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide idempotentHint=true. Description adds that it creates the fiscal year if nonexistent, discloses depreciation capping and carryforward, and states amounts in euros. 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 a single, information-dense sentence that lists components, side effect, and currency. No unnecessary 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?
No output schema, but description enumerates return components (recettes, charges, amortissements, etc.). Does not mention prerequisites or behavior if year already exists, but sufficient for a complex compute tool given 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 has one integer parameter 'year' with 0% description coverage. Description mentions 'pour une année donnée', making the parameter's purpose clear from context, compensating for lack of explicit 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 clearly states the verb 'Calcule' and the resource 'résultat fiscal complet d'un exercice LMNP pour une année donnée', listing specific components (recettes, charges, amortissements, etc.). It distinguishes from siblings like compute_depreciation and compute_tva by being comprehensive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used to compute full fiscal results, possibly after data entry, and notes it creates the year if missing. No explicit when-not or alternatives, but sibling tools like get_fiscal_year and compute_depreciation provide context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compute_loan_scheduleCompute Loan ScheduleADestructiveInspect
Génère (ou régénère) le tableau d'amortissement d'un emprunt immobilier. Supprime les échéances existantes et recalcule toutes les mensualités (capital, intérêts, assurance). Retourne un résumé financier ainsi que la première et la dernière échéance. Tous les montants sont en euros.
| Name | Required | Description | Default |
|---|---|---|---|
| loan_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true. The description adds that it deletes existing installments and recalculates monthly payments, and notes it returns a financial summary plus first and last installment. This provides useful behavioral context beyond the annotation.
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 three sentences in French, front-loading the purpose, then explaining behavior and output. No unnecessary 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 one-parameter tool with no output schema, the description covers purpose, side effects, and return summary. It could mention when regeneration is needed but is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter loan_id has no description in the schema (0% coverage) and the description does not explain its meaning or usage. No added value over the schema's basic type declaration.
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 generates or regenerates the amortization table for a real estate loan, specifying it deletes existing installments and recalculates monthly payments. This distinguishes it from the sibling get_loan_schedule which is read-only.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for recalculation after loan changes but does not explicitly state when to use or not use this tool versus alternatives. No exclusions or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compute_tvaCompute TvaARead-onlyInspect
Calcule la déclaration de TVA pour les biens para-hôteliers assujettis (régime TVA liable) sur une année donnée. Retourne la TVA collectée, déductible et le solde à payer ou à récupérer, ventilés par bien, par taux et par trimestre. Tous les montants sont en euros.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, which matches the description's 'calculate' semantics (read-only computation). The description does not add behavioral traits beyond this: no mention of permissions, performance, or side effects. It adequately aligns but adds no extra value over 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?
Two sentences, no fluff. First sentence states purpose and scope; second details outputs and currency. Front-loaded and 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 tool with one parameter and no output schema, the description covers the purpose, scope (para-hotel properties subject to VAT), outputs (collected/deductible/balance), granularity (by property, rate, quarter), and currency. It does not clarify whether it computes for all or selected properties, but given the single year parameter, it's implied. Nearly complete for the 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 has one integer parameter 'year' with 0% description coverage. The description mentions 'sur une année donnée' (for a given year), providing basic semantic meaning. However, it does not specify format (YYYY), range, or relation to other years. This is minimal compensation for the lack of schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it calculates VAT declarations for para-hotel properties subject to VAT regime for a given year. It specifies output components (VAT collected, deductible, balance) and breakdown by property, rate, and quarter. The verb 'calculate' and resource 'VAT declaration' are specific and unique among siblings like compute_depreciation or compute_fiscal_year.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description does not mention conditions, prerequisites, or cases where another tool (e.g., compute_fiscal_year) would be more appropriate. Implicit usage for VAT queries is clear, but no comparative advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_expenseCreate ExpenseBDestructiveInspect
Crée une charge d'exploitation pour un bien LMNP. Le montant est en euros. Catégories disponibles : property_tax, insurance, energy, maintenance, supplies, platform_fees, accounting, telecom, travel, cleaning, other.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| amount | Yes | ||
| category | Yes | ||
| tva_rate | No | ||
| description | Yes | ||
| property_id | Yes | ||
| expense_date | Yes | ||
| is_dedicated | No | ||
| recurring_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, and the description confirms it creates an expense. However, it adds minimal new behavioral context (e.g., no side effects, auth needs, or validation rules).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence plus a succinct list. It is front-loaded and efficient, with 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?
With 9 parameters and no output schema, the description fails to explain many parameter meanings (e.g., tva_rate, is_dedicated, recurring_type) and return behavior. It is incomplete for the tool's 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 description coverage is 0%, so the description must compensate. It only hints at the 'category' parameter (listing categories) and 'amount' (euros), leaving 7 other parameters undocumented. This is insufficient for correct parameter usage.
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 'create' and resource 'expense for an LMNP property,' along with the currency and available categories. It distinguishes well from sibling tools like create_income and update_expense.
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 does not provide any guidance on when to use this tool versus alternatives. It lacks information about prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_furnitureCreate FurnitureBDestructiveInspect
Crée un élément de mobilier amortissable pour un bien LMNP. Le montant est en euros. La durée d'amortissement est de 5 ans par défaut (3 ans pour le mobilier d'occasion). L'amortissement annuel est calculé automatiquement.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | ||
| tva_rate | No | ||
| description | Yes | ||
| property_id | Yes | ||
| is_dedicated | No | ||
| purchase_date | Yes | ||
| duration_years | No | ||
| is_second_hand | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context beyond the destructiveHint annotation by mentioning automatic depreciation calculation and default periods for new and second-hand furniture. However, it does not disclose potential impacts on financial reports or irreversible nature of the action.
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 at three sentences, providing core purpose and key behavior without superfluous text. Could be better organized but is 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?
Given the complexity (8 parameters, no output schema, no param descriptions in schema), the description is insufficient. It lacks details on return value, error handling, and full behavioral scope.
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 0% schema description coverage and 8 parameters, the description only covers amount, duration_years defaults, and is_second_hand impact. Missing explanations for tva_rate, is_dedicated, purchase_date format, and other parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a depreciable furniture item for an LMNP property, distinguishing it from siblings like list_furniture, update_furniture, and delete_furniture. It also provides specific details about amount in euros and default depreciation period.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for creating furniture items but does not explicitly state when to use this tool versus alternatives like list_furniture or update_furniture. It also lacks prerequisites (e.g., property must exist) or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_incomeCreate IncomeCDestructiveInspect
Crée un revenu locatif pour un bien LMNP. Le montant est en euros (ex: 125.50). La source peut être : airbnb, booking, abritel, direct, other.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| amount | Yes | ||
| source | Yes | ||
| tva_rate | No | ||
| guest_name | No | ||
| income_date | Yes | ||
| property_id | Yes | ||
| tourist_tax | No | ||
| checkin_date | No | ||
| platform_fee | No | ||
| checkout_date | No | ||
| reservation_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation indicates destructiveHint: true, but the description adds no behavioral context beyond that. It does not disclose effects like permissions needed, return value, or side effects. The description carries little additional transparency beyond the annotation.
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 (two sentences) with key info front-loaded. No unnecessary words, but could benefit from more structured parameter 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 12 parameters and no output schema, the description is too minimal. It fails to explain important parameters like property_id, income_date format, or optional fields. The tool's complexity demands more complete documentation.
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 0% schema description coverage, the description only clarifies two parameters (amount in euros, source enum). The other 10 parameters (e.g., property_id, income_date, tva_rate) remain undocumented in both schema and description, which is insufficient for a tool with 12 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it creates a rental income for an LMNP property, specifying amount in euros and listing allowed sources. However, it does not explicitly differentiate from siblings like create_expense, but the name and context make it clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides minimal usage context (amount in euros, allowed sources) but lacks explicit guidance on when to use this tool versus alternatives (e.g., update_income) or when not to use it. No when-not or alternative information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_propertyCreate PropertyADestructiveInspect
Crée un nouveau bien immobilier LMNP pour l'utilisateur connecté. Les montants (acquisition_price, notary_fees, market_value) sont en euros. Les surfaces (total_area, rented_area) sont en m². Type : apartment, house, room, studio, other. Rental type : seasonal, long_term, mixed. TVA : exempt, liable.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | ||
| name | Yes | ||
| type | No | ||
| notes | No | ||
| address | No | ||
| total_area | No | ||
| tva_regime | No | ||
| agency_fees | No | ||
| notary_fees | No | ||
| postal_code | No | ||
| rental_type | No | ||
| rented_area | No | ||
| market_value | No | ||
| land_percentage | No | ||
| acquisition_date | Yes | ||
| acquisition_price | Yes | ||
| market_value_date | No | ||
| rental_start_date | No | ||
| is_primary_residence | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation destructiveHint=true indicates mutation, and the description confirms creation. It adds unit details for monetary and area fields but lacks info on validation, permissions, side effects, or return values beyond basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief (3 sentences) and front-loaded with the main action. It conveys key details efficiently, though some organization could improve scannability.
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, 3 required, and no output schema, the description covers the main action and critical field units but omits what the tool returns (e.g., created property ID) and lacks detail on required fields beyond listing units for some.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains units for acquisition_price, notary_fees, market_value, total_area, rented_area and lists valid values for type, rental_type, and tva_regime. However, with 0% schema description coverage and 19 parameters, many (e.g., city, address, notes) remain unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Crée un nouveau bien immobilier LMNP pour l'utilisateur connecté.' This is a specific verb+resource (create property) with domain context (LMNP). It differentiates from sibling tools like get_property, list_properties, and update_property.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when the user wants to add a new property but does not explicitly state when to use this tool versus alternatives like update_property. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_property_workCreate Property WorkADestructiveInspect
Crée un poste de travaux immobiliers amortissables pour un bien LMNP. Le montant est en euros. La durée d'amortissement est de 10 ans par défaut. L'amortissement annuel est calculé automatiquement en tenant compte de la quote-part si le poste n'est pas dédié.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | ||
| tva_rate | No | ||
| work_date | Yes | ||
| description | Yes | ||
| property_id | Yes | ||
| is_dedicated | No | ||
| duration_years | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description discloses automatic depreciation calculation, default 10-year duration, quote-part adjustment for non-dedicated items, and that amount is in euros. 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 concise with three sentences, all relevant and front-loaded with the core action. 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 destructive tool with 7 parameters and no output schema, the description covers key behavior but omits parameter details and return value expectations. Adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not explain any parameter beyond implicit context (e.g., amount in euros). Failed to add meaning to the schema, which is critical given low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it creates a depreciable work item for LMNP property, specifies currency, default duration, and automatic depreciation calculation. It distinguishes from sibling tools like create_expense or create_furniture.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for creating depreciable work items but does not explicitly mention when not to use or provide alternatives like create_expense for non-depreciable costs. No exclusion criteria given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_documentDelete DocumentADestructiveInspect
Supprime un document justificatif par son identifiant. Le fichier physique est également supprimé du stockage. Cette action est irréversible.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds context beyond the annotation: physical file deletion and irreversibility. The annotation already marks destructiveHint=true, but the description explains the consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler. Every word 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 delete operation with one param and no output schema, the description covers purpose, side effects (physical deletion), and irreversibility. Lacks error handling or permission notes.
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?
Only one parameter (document_id) with 0% schema description coverage. Description mentions 'par son identifiant' but does not explain what the ID represents or how to obtain it.
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 'Supprime' and the resource 'document justificatif' with identifier. It distinguishes from sibling delete tools (e.g., delete_income) by specifying it's for documents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like deleting associated records first. Does not mention prerequisites or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_expenseDelete ExpenseBDestructiveInspect
Supprime une charge d'exploitation par son identifiant. Les documents justificatifs associés sont également supprimés. Cette action est irréversible.
| Name | Required | Description | Default |
|---|---|---|---|
| expense_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description adds that associated supporting documents are also deleted and that the action is irreversible, providing useful 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?
Two sentences with essential information: purpose first, then consequences. No filler 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 destructive tool with one parameter, the description covers the core action and side effects. However, it lacks parameter details and context about prerequisites or error conditions.
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 0% schema description coverage and no mention of the sole parameter 'expense_id' in the description, the description fails to add any meaning to 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 clearly states the tool deletes an operating expense by ID, with specific verb and resource. It does not explicitly differentiate from sibling delete tools, but the resource type 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?
No guidance on when to use this tool versus alternatives, nor any preconditions or postconditions. The description only states the action and its irreversibility.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_furnitureDelete FurnitureADestructiveInspect
Supprime un élément de mobilier par son identifiant. Les documents justificatifs associés sont également supprimés. Cette action est irréversible.
| Name | Required | Description | Default |
|---|---|---|---|
| furniture_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds context beyond annotations: associated documents are also deleted and the action is irreversible. Annotations already indicate destructiveness, so description enriches understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, no fluff, front-loaded with the core action. Very efficient for the information provided.
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 delete operation with one parameter and no output schema, the description covers the essentials: what is deleted, cascading deletion, and irreversibility. Adequate for the complexity level.
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 0% description coverage and no parameter details. The description only says 'par son identifiant', which does not add meaning beyond the schema's property name and type. For a required integer ID, more detail (e.g., where to find the ID) would help.
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 ('Supprime'), the resource ('élément de mobilier'), and the identifier method ('par son identifiant'). It also mentions that associated documents are deleted, which distinguishes it from other delete tools among 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?
No guidance on when to use vs alternatives or when not to use. Only mentions irreversibility, which is a behavioral note rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_incomeDelete IncomeADestructiveInspect
Supprime un revenu locatif par son identifiant. Cette action est irréversible.
| Name | Required | Description | Default |
|---|---|---|---|
| income_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds 'irréversible' (irreversible) beyond the destructiveHint annotation, reinforcing the permanent nature. No mention of permission requirements or cascade effects, but sufficient for a simple delete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise, front-loaded sentences with no redundant information. Every word 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 one-parameter delete tool without output schema, the description is complete enough: action, parameter, irreversibility. Could mention return value but not essential.
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 confirms income_id is the identifier, but with 0% schema coverage, it only minimally compensates by stating deletion by ID. No additional format or source 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 clearly states the action (delete), the resource (rental income), and the method (by ID). It distinguishes from siblings like create_income and update_income.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like update_income or list_incomes. The only added context is irreversibility, but no when-to or when-not-to advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_property_workDelete Property WorkADestructiveInspect
Supprime un poste de travaux immobiliers par son identifiant. Les documents justificatifs associés sont également supprimés. Cette action est irréversible.
| Name | Required | Description | Default |
|---|---|---|---|
| work_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotation already indicates destructiveHint: true. Description adds value by disclosing cascade deletion of associated documents and irreversibility, which goes beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences in French, no filler words, front-loaded with action. Efficiently communicates core functionality and key side effects.
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?
Simple tool with one param and no output schema. Description covers deletion and cascade. Could mention what happens if work_id does not exist, but overall sufficient for basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% with no description. The tool has one parameter (work_id) with only type integer. Description does not explain the parameter meaning or format, relying on the name 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 clearly states that it deletes a property work by its ID and mentions that associated supporting documents are also deleted, distinguishing it from other delete tools in the 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?
No guidance on when to use this tool vs alternatives (e.g., other delete tools). Lacks conditions, prerequisites, or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_documentsExport DocumentsARead-onlyInspect
Génère un fichier ZIP contenant tous les justificatifs (factures, reçus, devis) de l'utilisateur, organisés par année et type (charges/mobilier/travaux). Filtrage optionnel par année et/ou type. Retourne une URL de téléchargement temporaire.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | ||
| year | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations set readOnlyHint=true, indicating no destructive side effects. The description adds context: it generates a packaged file (ZIP) and returns a download URL, consistent with read-only behavior. It explains the organization and filtering, which goes beyond annotations without 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 two sentences, front-loading the main action and result. Every sentence adds value: what is generated, how it's organized, optional filters, and output type. 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 read-only export tool with two optional parameters and no output schema, the description covers the core functionality: exported content (all documents), organization (by year and type), optional filters, and return format (temporary URL). It does not detail URL expiration or size limits, but these are minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the burden. It explains that 'type' filters by document type (charges/mobilier/travaux as implied in the first sentence) and 'year' filters by year. This adds meaning beyond the bare schema, though it does not enumerate possible string values for type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a ZIP file containing all user supporting documents (invoices, receipts, quotes), organized by year and type. It specifies optional filtering and a temporary download URL. This clearly distinguishes it from sibling tools like attach_document or list_expenses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for exporting documents with optional filters but does not provide explicit guidance on when to use this tool versus alternatives. No exclusions or when-not-to-use scenarios are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_fecGenerate FecAInspect
Génère le Fichier des Écritures Comptables (FEC) pour un exercice fiscal. Le FEC est un fichier réglementaire au format normé (article A.47 A-1 du LPF, 18 colonnes, séparateur TAB) requis en cas de contrôle fiscal. L'exercice est calculé avant la génération si nécessaire. Retourne le chemin du fichier généré.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It reveals that the tool returns the file path and mentions that the fiscal year is computed if necessary, but does not disclose side effects (e.g., file creation/overwrite), authorization needs, or error conditions.
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 three sentences in French, front-loading the core purpose, then providing regulatory context and output info. Every sentence adds value 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 simple tool with one parameter and no annotations or output schema, the description covers purpose, regulatory context, format, and output. It lacks prerequisites (e.g., existence of fiscal year data) but the mention of automatic calculation mitigates this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only adds that the year corresponds to the fiscal year. It does not clarify accepted range, format, or what happens if the year cannot be computed, leaving ambiguity given the required 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 clearly states it generates the FEC, a regulatory accounting file, for a fiscal year. It explains the regulatory basis (article A.47 A-1 du LPF) and format (18 columns, TAB separator), distinguishing it from siblings like generate_tax_return.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage in a tax control context but does not explicitly state when to use this tool versus alternatives or provide exclusions. The phrase 'calculé avant la génération si nécessaire' gives some context but lacks precision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_tax_returnGenerate Tax ReturnAInspect
Génère la liasse fiscale LMNP au format PDF (formulaires 2031, 2033-A à 2033-G) pour un exercice fiscal donné. L'exercice est recalculé avant la génération si nécessaire. Retourne le chemin du PDF généré et un résumé des montants clés de la déclaration.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Mentions fiscal year recalculation before generation, a key behavioral aspect, but lacks details on side effects (e.g., does recalculation modify data?) and no annotations to provide safety 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?
Two sentences, front-loaded with core action, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, input, side effect (recalculation), and output (path and summary), sufficient for a simple tool with one parameter and no 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?
Single parameter 'year' is explained implicitly via context (fiscal year), but schema has no descriptions; description adds moderate clarity.
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 clearly states it generates LMNP tax return PDF with specific forms (2031, 2033-A to 2033-G) for a given fiscal year, which is precise and distinguishes from other tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this over related tools like compute_fiscal_year or generate_fec; context implies it's for final declaration but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dashboard_summaryGet Dashboard SummaryARead-onlyInspect
Retourne un tableau de bord agrégé pour l'utilisateur : nombre de biens et emprunts, recettes et charges totales pour l'année demandée (défaut : année en cours), résultat fiscal si l'exercice existe, et répartition des recettes par plateforme et des charges par catégorie.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so description adds value by detailing the returned data (e.g., fiscal result, breakdowns). It does not mention limitations like data freshness or permissions, but the behavioral context 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 a single, reasonably concise sentence that front-loads the main purpose and enumerates components. It is efficient but slightly dense.
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 no output schema, the description effectively covers the main output components (counts, totals, breakdowns). It could mention currency or default year logic, but it is mostly complete for a summary 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 sole parameter (year) is explained with default behavior ('default: current year'). This adds meaning beyond the schema, though format or bounds could be clarified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns an aggregated dashboard with specific data (properties, loans, revenues, expenses, fiscal result, breakdowns). It distinguishes from sibling tools like get_property, list_incomes, etc., which are more granular.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used for obtaining a high-level summary, but it does not explicitly state when to use it vs alternatives or provide '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.
get_expenseGet ExpenseARead-onlyInspect
Retourne le détail complet d'une charge par son identifiant : montant TTC/HT, TVA, catégorie, type de récurrence, flag dédié et montant effectif après application de la quote-part si non dédié.
| Name | Required | Description | Default |
|---|---|---|---|
| expense_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true; description adds detailed return field list (effective amount, share, etc.) beyond annotation. No contradictory or missing behavioral 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?
Single dense sentence front-loads purpose. Every phrase adds value. Could be split but 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?
Simple tool with one param and no output schema. Description adequately covers return fields and purpose. Does not explain parameter in detail or error handling, but sufficient for typical 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 has 0% parameter description coverage. Description only implicitly mentions 'par son identifiant' for expense_id, no format, range, or example. Minimal added 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?
Description uses specific verbs ('retourne le détail complet') and resource ('charge'), lists key fields (montant TTC/HT, TVA, catégorie, etc.), and clearly distinguishes from siblings like list_expenses (list vs individual 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?
Implies use for single expense detail by ID, but no explicit when-to-use vs list or get income tools. Standard behavior for a get-by-ID, but lacks explicit alternatives or context exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fiscal_yearGet Fiscal YearARead-onlyInspect
Retourne le détail complet d'un exercice fiscal par son année : résultat fiscal, recettes, charges, amortissements (total, plafonné, reporté), TVA, form_data du formulaire 2031/2033, et informations de télétransmission.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, so description adds value by listing the returned data categories but does not disclose additional behavioral traits (e.g., permissions, limits, side effects). Adequate but not exceptional.
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?
Single sentence captures tool's purpose and return content with no redundancy or unnecessary words. Efficiently 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?
Given simple tool (1 param, no output schema), description reasonably covers return data fields. Could be more complete by noting any error conditions or year validity, but adequate for basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% with one property 'year' (integer). Description mentions 'by its year' but does not explicitly clarify the parameter's meaning, format, or constraints (e.g., range, required). Adds marginal semantic value beyond 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?
Description clearly states it returns full details of a fiscal year by a specific year, listing explicit fields (result, revenues, expenses, depreciations, VAT, form_data, teletransmission info). This distinguishes it from sibling tools like list_fiscal_years (list) and compute_fiscal_year (compute).
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?
Description implies usage when needing comprehensive details of a single fiscal year, but lacks explicit when-to-use vs when-not-to-use guidance. No mention of alternatives or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_incomeGet IncomeARead-onlyInspect
Retourne le détail complet d'une recette locative par son identifiant : montants TTC/HT, TVA, frais de plateforme, taxe de séjour, informations de réservation et du voyageur.
| Name | Required | Description | Default |
|---|---|---|---|
| income_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description adds value by specifying the exact data returned (amounts, taxes, fees, reservation, traveler info). No 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?
Single sentence that is front-loaded with the main action and then lists details. Slightly lengthy but clear and 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?
Given no output schema, the description adequately explains return fields. For a simple read operation with one parameter, it covers the essential context. Could mention if pagination or limits apply, but not needed 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?
Only one parameter (income_id) is self-evident from the description 'by its identifier'. With 0% schema description coverage, the description implicitly covers the parameter meaning but adds no extra format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns complete rental income details by ID, listing specific data fields (amounts, VAT, fees, taxes, reservation, traveler info). It distinguishes itself from siblings like list_incomes (list) and create/update_income (mutations).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage when a specific income ID is known, contrasting with list_incomes which requires no ID. No explicit when-not-to-use or alternatives, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_loanGet LoanARead-onlyInspect
Retourne le détail complet d'un emprunt immobilier avec un résumé financier : capital, taux, durée, mensualité, assurance, coût total, intérêts et assurances de l'année courante.
| Name | Required | Description | Default |
|---|---|---|---|
| loan_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description adds no additional behavioral traits. It 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 a single sentence that conveys the action, resource, and output fields efficiently, with 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?
Despite no output schema, the description lists the key fields returned (capital, rate, term, monthly payment, etc.), providing complete information for an agent to understand the tool's output.
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 (loan_id) is self-explanatory from its name and schema. The description does not elaborate on it but provides context on what the tool returns, which is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('retourne') and resource ('détail complet d'un emprunt immobilier') and lists the returned fields, clearly distinguishing it from siblings like list_loans and get_loan_schedule.
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?
While no explicit when/when-not guidance is provided, the name and description make it obvious that this tool is for retrieving full details of a single loan, which is sufficient given the context of sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_loan_scheduleGet Loan ScheduleARead-onlyInspect
Retourne le tableau d'amortissement complet d'un emprunt avec filtre optionnel par année. Chaque ligne contient : numéro d'échéance, date, capital remboursé, intérêts, assurance, total et capital restant dû. Inclut les totaux de la période.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | ||
| loan_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate readOnlyHint=true, so the description adds value by detailing the output structure (each row includes number, date, capital repaid, interest, insurance, total, remaining principal) and noting period totals. No contradictions. While not exhaustive, it provides useful behavioral context beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences. The first sentence states the core function and optional filter; the second details the output fields. No wasted words, front-loaded with the main 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?
Given the absence of an output schema, the description provides a complete list of fields returned and mentions period totals. However, it omits information on error handling, pagination, or how to interpret the results. For a read-only retrieval tool, this is mostly sufficient but could be slightly more comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so descriptions must compensate. The description mentions the optional year filter, adding meaning to the year parameter. However, loan_id is not explained beyond its name, so only partial compensation. The description does not cover the required parameter adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the complete amortization table of a loan with optional year filter. It explicitly lists the fields in each row, making the purpose very specific. The verb 'Retourne' plus the resource 'tableau d'amortissement' is clear and distinct from sibling tools like compute_loan_schedule.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. Sibling tools include compute_loan_schedule and list_loans, but no explicit distinction is made. The agent is left to infer that this retrieves an existing schedule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_onboarding_statusGet Onboarding StatusCRead-onlyInspect
Retourne l'état d'avancement de l'onboarding LMNP de l'utilisateur pour l'année courante : création du bien, saisie des recettes et charges, configuration des amortissements, clôture de l'exercice et génération de la liasse fiscale PDF.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it as readOnlyHint=true, which is respected. The description adds context about the return content (property creation, income entry, etc.) but does not disclose any other behavioral traits such as data freshness, authorization requirements, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently lists the key components. However, in French it is somewhat long; could be slightly restructured for 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?
With no output schema, the description should outline the return structure more clearly (e.g., whether it returns boolean flags, percentages, etc.). It only lists components without specifying their format. The year parameter ambiguity also reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one optional parameter 'year' with 0% description coverage. The description mentions 'current year' but does not explain that the parameter allows specifying a different year, leading to ambiguity. It adds minimal 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 clearly states the tool returns the progress status of LMNP onboarding, listing specific components. This distinguishes it from siblings like get_dashboard_summary, but does not explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like get_dashboard_summary or list_fiscal_years. The description only explains what it does, not under what conditions it should be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_projectionGet ProjectionBRead-onlyInspect
Calcule une projection pluriannuelle du résultat fiscal LMNP sur plusieurs années. Pour chaque année : revenus estimés, charges, amortissements (bâti + travaux + mobilier), plafonnement, report cumulé, résultat fiscal net, comparaison micro-BIC. Tous les montants sont en euros.
| Name | Required | Description | Default |
|---|---|---|---|
| years | No | ||
| start_year | No | ||
| income_growth | No | ||
| expense_growth | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context beyond the readOnlyHint annotation by detailing the calculated information per year (revenus, charges, amortissements, plafonnement, report, résultat net, comparaison micro-BIC). It does not disclose all side effects or authentication needs, but for a read-only computation, this 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 a single concise sentence that packs a lot of information about the output structure. It is front-loaded and contains no unnecessary words. Slightly dense but effective.
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 4 parameters (all undocumented in schema) and no output schema. The description explains the output well but omits parameter explanations, leaving significant gaps 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 0%. The description does not explain any of the four parameters (years, start_year, income_growth, expense_growth). For a projection tool, understanding these parameters is crucial, and the description fails to provide any 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 clearly states the tool calculates a multi-year projection of the LMNP tax result, specifying the included components (revenus, charges, amortissements, etc.) and that amounts are in euros. This is a specific verb+resource combination that distinguishes it from siblings like get_simulation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for projections but does not explicitly state when to use it versus alternatives (e.g., get_simulation). No guidance on prerequisites, when not to use, or sibling comparison is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_propertyGet PropertyBRead-onlyInspect
Retourne le détail complet d'un bien immobilier : caractéristiques, montants financiers, base amortissable, et comptage des composants, travaux, mobilier et emprunts associés.
| Name | Required | Description | Default |
|---|---|---|---|
| property_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. The description adds value by listing the types of data returned, but does not disclose additional behavioral traits such as authorization needs or performance implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence that front-loads the action. It is concise but could be slightly improved with structural elements like bullet points for the listed items.
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 no output schema, the description provides a reasonable overview of the returned data categories. It is adequate but not exhaustive given the lack of 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 has no description for property_id, and the tool description does not explain the parameter's meaning. With 0% schema coverage, the description fails to compensate, leaving the agent to guess the parameter's purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the complete detail of a real estate property, specifying categories like characteristics, financial amounts, and counts. It uses a specific verb and resource, differentiating from siblings like list_properties which return summaries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives. The context implies it is for fetching full details by ID, but there is no when-not or alternative naming.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_simulationGet SimulationBRead-onlyInspect
Compare le régime micro-BIC et le régime réel pour une année donnée. Retourne : revenus bruts, résultats micro-BIC (50% ou 30% selon classement), résultat réel (après charges et amortissements), avantage fiscal, recommandation, et économie d'impôt estimée pour différentes TMI. Tous les montants sont en euros.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | ||
| abatement | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true. The description adds detail on return values but does not disclose behavioral aspects like required permissions or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences in French efficiently convey the tool's purpose and return fields. No unnecessary 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?
Given the absence of output schema and missing parameter details, the description is insufficient for an agent to fully understand inputs and expected outputs. Parameter 'abatement' is not clarified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description does not explain the 'year' or 'abatement' parameters. Without parameter descriptions, an agent cannot correctly invoke the tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool compares micro-BIC and réel regimes for a given year, listing specific outputs. It distinguishes from most siblings by focusing on simulation with detailed tax savings per TMI.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like compare_micro_bic. It does not specify prerequisites or contexts where this simulation is applicable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_airbnb_csvImport Airbnb CsvADestructiveInspect
Importe un fichier CSV Airbnb (historique des transactions ou réservations) dans un bien donné. Le contenu du fichier CSV doit être encodé en base64 dans le champ csv_base64. Retourne le nombre de lignes importées, ignorées et les erreurs éventuelles.
| Name | Required | Description | Default |
|---|---|---|---|
| preview | No | ||
| csv_base64 | Yes | ||
| property_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Malgré l'annotation destructiveHint=true qui signale une modification, la description ajoute que l'outil retourne le nombre de lignes importées, ignorées et les erreurs. Cela fournit un aperçu du comportement attendu.
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?
Deux phrases concises : d'abord l'objectif, puis l'instruction d'encodage, enfin le retour. Aucun mot superflu.
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 d'import simple, la description couvre l'essentiel : quoi faire (importer CSV), comment (base64), et résultat (lignes importées/ignorées/erreurs). Le paramètre preview n'est pas mentionné, mais cela n'empêche pas l'utilisation correcte.
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 description compense en partie le manque de description dans le schéma : elle explique le rôle de csv_base64 (encodé en base64) et de property_id (implicite). Cependant, le paramètre preview n'est pas expliqué.
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?
Verbe clair ('Importe') et ressource spécifique ('fichier CSV Airbnb... dans un bien donné'). Se distingue des outils frères (create_income, create_expense) car c'est un import en masse spécifique à Airbnb.
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?
Indique explicitement que le CSV doit être encodé en base64. Ne précise pas quand utiliser cet outil vs les alternatives, mais le contexte (import CSV) le rend unique.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesList CategoriesARead-onlyInspect
Retourne toutes les valeurs valides pour les champs de type enum : catégories de charges, sources de revenus, types de bien, types de location, régimes TVA et types de récurrence. Indispensable avant de créer un revenu ou une charge pour connaître les valeurs acceptées.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint, and the description adds context about returning enum values. It does not contradict annotations and gives additional behavioral insight into what the tool retrieves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences: the first describes the output, the second gives usage context. 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?
Despite no output schema, the description fully explains what the tool returns (valid enum values) and its purpose, which is complete for a simple listing 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 tool has no parameters, and schema coverage is 100%. Baseline is 4, and the description does not need to add parameter context.
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 returns valid enum values for multiple field types (expense categories, income sources, etc.) and explains its crucial role before creating records. It distinguishes itself from sibling tools that deal with specific records.
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 'Indispensable avant de créer un revenu ou une charge' (essential before creating an income or expense), providing clear guidance on when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_expensesList ExpensesBRead-onlyInspect
Liste les charges déductibles de l'utilisateur avec filtres optionnels par bien, année et catégorie. Catégories disponibles : property_tax, insurance, energy, maintenance, supplies, platform_fees, accounting, telecom, travel, cleaning, other.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | ||
| category | No | ||
| property_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so no contradiction. Description adds optional filters but no extra behavioral context like pagination, sorting, or performance implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with main purpose. Efficient with no redundant 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?
Adequate for a simple list tool but missing details on output format (e.g., returns list of expense objects), pagination, or sorting behavior. Could be more 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 has 3 parameters with 0% description coverage. Description partially compensates by listing category options and mentioning year and property_id as filters, but doesn't explain parameter 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?
Description clearly states verb 'list' and resource 'expenses' with optional filters by property, year, and category. Lists available categories. Distinguishes from siblings like list_incomes (different resource) and get_expense (single item).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives. Among siblings, there are many list tools, but no comparative context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_fiscal_yearsList Fiscal YearsARead-onlyInspect
Liste tous les exercices fiscaux de l'utilisateur triés par année décroissante. Pour chaque exercice : statut, résultat fiscal, recettes totales, charges totales, amortissements, amortissements plafonnés et report déficitaire.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the agent knows it is a safe read. The description adds behavioral details: it returns all fiscal years sorted descending and enumerates the fields (status, fiscal result, revenues, etc.), which is useful context beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence for the action and one sentence listing the returned fields. Every word earns its place; no redundancy. It is front-loaded with the main 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?
Given no output schema, the description covers the return fields adequately. It explains sorting and lists each field returned. For a simple read-only listing tool with no parameters and good annotations, this is sufficient and complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema description coverage is 100% (vacuously). According to guidelines, 0 parameters results in a baseline of 4. The description does not need to add parameter semantics since there are none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all fiscal years sorted by decreasing year, with a specific list of returned fields. The verb 'list' and resource 'fiscal years' are explicit, and the context of sibling tools (e.g., get_fiscal_year) implies this tool is for listing all, not retrieving a single 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 does not provide explicit guidance on when to use this tool versus alternatives (e.g., get_fiscal_year for a specific year). Usage is implied from the verb 'list' and the sorting order, but no exclusions or when-not-to-use information is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_furnitureList FurnitureARead-onlyInspect
Liste le mobilier et équipements amortissables de l'utilisateur avec filtre optionnel par bien. Retourne pour chaque élément : description, montant d'achat, date, durée d'amortissement, amortissement annuel, flag dédié et occasion.
| Name | Required | Description | Default |
|---|---|---|---|
| property_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already covers the safety profile. The description adds the return fields but does not disclose ordering, pagination, or any side effects. Adequate but not enriched.
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 one sentence that efficiently conveys purpose, optional filter, and return fields. 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?
The description lists return fields, which is helpful given no output schema. However, it omits details like pagination, ordering, or whether the list includes all items. Slightly incomplete for a list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'property_id' has no schema description, but the description explains it as an optional property filter, adding meaning beyond the schema. Good compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists furniture and amortizable equipment with an optional property filter, and specifies the returned fields. No 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 implies a listing operation but does not explicitly state when to use it versus other tools like create_furniture or update_furniture. No alternatives or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_incomesList IncomesBRead-onlyInspect
Liste les recettes locatives de l'utilisateur avec filtres optionnels par bien, année et plateforme (airbnb, booking, abritel, direct, other). Retourne les montants en euros avec TVA, frais de plateforme et taxe de séjour.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | ||
| source | No | ||
| property_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description confirms a read operation. The description adds detail about returned amounts but does not disclose potential limitations like pagination, ordering, or data freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It front-loads the action and lists key details. Slightly more structure could improve readability, but it is concise.
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, so the description must describe return values. It mentions amounts with VAT, fees, and taxes, but does not clarify if the response is paginated, ordered, or includes metadata. Given the tool's simplicity, the description is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It names three filters (property, year, platform) and lists example platform values. However, it does not specify formats, validation rules, or whether parameters are optional (though none are required).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists rental incomes with optional filters by property, year, and platform. It also specifies return content (amounts with VAT, platform fees, tourist tax), distinguishing it from sibling tools like get_income (single record) and list_expenses.
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 does not provide explicit guidance on when to use this tool versus alternatives (e.g., get_income for a single record, create_income for adding data). No when-not-to-use or references to siblings are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_loansList LoansARead-onlyInspect
Liste les emprunts immobiliers de l'utilisateur avec filtre optionnel par bien. Retourne pour chaque emprunt : banque, capital, taux, durée, mensualité, assurance, dates de début/fin et coût total estimé.
| Name | Required | Description | Default |
|---|---|---|---|
| property_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, indicating a safe read operation without side effects. The description adds value by specifying the return fields, which is context beyond the annotations. However, it does not disclose any potential limitations like pagination, sorting, or performance implications. With annotations covering the safety profile, the description provides moderate additional 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 a single, well-structured sentence that front-loads the action and resource. Every word adds value: the verb (Liste), the resource (les emprunts immobiliers), the filter (avec filtre optionnel par bien), and the return fields. No superfluous 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?
Given the tool's simplicity (one optional parameter, no output schema), the description is fairly complete. It explains the purpose, filtering option, and return fields. The agent can understand what data to expect. A minor improvement would be to note ordering or pagination, but it's not essential for a list tool of this size. The description does not rely on an output schema, so it adequately covers the result 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?
The schema has 1 parameter (property_id) with 0% description coverage. The description mentions an 'optional filter by property' but does not explicitly link it to the parameter name. The field name is self-explanatory, so the description partially compensates for the missing schema description. It adds meaning by clarifying the filter is optional, but no format or constraints are given.
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 the user's real estate loans with an optional filter by property, and enumerates the returned fields (bank, capital, rate, duration, monthly payment, insurance, start/end dates, total estimated cost). This distinguishes it from sibling tools like 'get_loan' (single loan) and 'get_loan_schedule' (amortization schedule).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you need a list of loans, optionally filtered by a property. However, it does not explicitly mention when to avoid using this tool (e.g., when a single loan's details are needed, use 'get_loan' instead) or discuss prerequisites. The guidance is clear but lacks explicit exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_propertiesList PropertiesARead-onlyInspect
Liste tous les biens immobiliers de l'utilisateur authentifié avec leurs informations clés (surface, prix d'acquisition, quote-part, type de location).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only. The description adds value by specifying the scope (authenticated user's properties) and returned fields, but does not mention any other behavioral traits like pagination 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?
Single, concise sentence in French that efficiently communicates the tool's function and key output fields without any 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?
The description covers what the tool does and key fields returned, but lacks details about pagination, ordering, or whether the listing includes all properties at once. Given simplicity, it is adequate but not 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?
No parameters are defined, so schema coverage is 100%. The description adds context about the output content beyond schema, meeting the baseline for zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all properties for the authenticated user, with specific key fields (surface, acquisition price, share, rental type), distinguishing it from siblings like 'get_property' which retrieves a single property.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as 'get_property' for a single property or other list tools. The description implies use for a full list but lacks explicit when-to-use or when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_property_componentsList Property ComponentsBRead-onlyInspect
Liste les composants d'amortissement par ventilation d'un bien immobilier (gros œuvre, toiture, électricité, etc.). Retourne chaque composant avec son pourcentage, la base de calcul, la durée et l'amortissement annuel. La somme des pourcentages doit être 100 %.
| Name | Required | Description | Default |
|---|---|---|---|
| property_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. The description adds that the sum of percentages must be 100%, which is useful behavioral constraint. No side effects or auth needs are mentioned, but read-only nature is clear.
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 three short sentences in French, front-loading the purpose and providing essential details without redundancy. 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?
Given the simple parameter set and no output schema, the description adequately covers the tool's function and return structure. It lacks error handling or pagination info, but these are minor for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description only indirectly implies property_id identifies the property. No format, constraints, or default values are provided, relying on the schema's 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 clearly states it lists depreciation components for a property with examples (gros œuvre, toiture, électricité) and specifies the returned fields. However, it does not explicitly differentiate from sibling tools like get_property or compute_depreciation, which could be confused.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description implies it is for viewing component breakdown, but lacks any when-not-to-use or comparative context with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_property_worksList Property WorksARead-onlyInspect
Liste les travaux immobiliers amortissables de l'utilisateur avec filtre optionnel par bien. Retourne pour chaque travail : description, montant TTC/HT, date, durée d'amortissement, amortissement annuel et flag dédié.
| Name | Required | Description | Default |
|---|---|---|---|
| property_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, and the description adds value by specifying the return fields (description, amount, date, depreciation period, annual depreciation, flag). Missing details on pagination or sorting, but acceptable for a simple 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?
Single sentence, front-loaded with purpose, no redundant words. Efficient and clear.
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 purpose and return fields, but lacks details on flag meaning, pagination, or ordering. For a list tool with no output schema, some gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description explains the property_id parameter as an optional filter, adding meaning beyond the bare schema. No further syntax details provided, but sufficient for a single integer 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 clearly states the tool lists amortizable real estate works with an optional property filter, distinguishing it from other list tools like list_expenses or list_incomes.
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 explains the optional filter but does not explicitly state when to use this tool versus alternatives like list_furniture or create_property_work, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_expenseUpdate ExpenseCDestructiveInspect
Met à jour une charge d'exploitation existante. Seuls les champs fournis sont modifiés (mise à jour partielle). Le montant est en euros.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| amount | No | ||
| category | No | ||
| tva_rate | No | ||
| expense_id | Yes | ||
| description | No | ||
| expense_date | No | ||
| is_dedicated | No | ||
| recurring_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds that only provided fields are modified and amount is in euros, extending the destructiveHint annotation. However, it does not disclose error handling, permission requirements, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences are concise and front-loaded with the action, but the description could be more structured with parameter details without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters, no output schema, and only destructiveHint annotation, the description lacks important context like required fields, validation rules, and return value, leaving significant gaps for agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for 9 parameters. The description only mentions 'amount in euros' and partial update, leaving parameter semantics entirely to the schema names, which are insufficient.
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 operating expense with partial update behavior. It distinguishes from create_expense and list_expenses, but does not explicitly differentiate from other update tools like update_income.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, no prerequisites, and no context for required fields like expense_id existence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_furnitureUpdate FurnitureAIdempotentInspect
Met à jour un élément de mobilier existant. Seuls les champs fournis sont modifiés (mise à jour partielle). Le montant est en euros. L'amortissement annuel est recalculé automatiquement si le montant ou la durée changent.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | No | ||
| tva_rate | No | ||
| description | No | ||
| furniture_id | Yes | ||
| is_dedicated | No | ||
| purchase_date | No | ||
| duration_years | No | ||
| is_second_hand | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds behavioral context beyond idempotentHint annotation: it confirms partial update (only provided fields changed) and automatic recalculation of annual depreciation when amount or duration change. 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?
Three concise sentences, front-loaded with purpose, no extraneous text. 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?
Given 8 parameters, no output schema, and only idempotent annotation, the description covers partial update and depreciation but does not address validation rules, return values, or what happens with invalid inputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description must compensate. It explains that 'amount' is in euros and that 'duration_years' affects depreciation. However, other parameters (tva_rate, description, is_dedicated, purchase_date, is_second_hand) are not clarified, leaving gaps.
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 clearly states it updates an existing furniture item. Verb 'update' and resource 'furniture' are specific. However, it does not explicitly differentiate from the sibling 'create_furniture' or 'delete_furniture', but the word 'existing' implies 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?
No guidance on when to use this tool versus alternatives like 'create_furniture' or 'delete_furniture'. No prerequisites or context for usage are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_incomeUpdate IncomeBDestructiveInspect
Met à jour un revenu locatif existant. Seuls les champs fournis sont modifiés (mise à jour partielle). Le montant est en euros.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| amount | No | ||
| source | No | ||
| tva_rate | No | ||
| income_id | Yes | ||
| guest_name | No | ||
| income_date | No | ||
| tourist_tax | No | ||
| checkin_date | No | ||
| platform_fee | No | ||
| checkout_date | No | ||
| reservation_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotation destructiveHint=true already indicates mutation. Description adds 'partial update' behavior but lacks details on permissions, side effects, or response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no fluff. Could be slightly more informative without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 12 parameters, no output schema, and destructive nature, the description is too sparse. Missing return value, required income_id emphasis, and field 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?
With 0% schema coverage, description only clarifies amount unit (euros) but ignores 11 other parameters, leaving them undocumented.
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 'update' and the resource 'income' (rental income), distinguishing it from create, delete, and get tools. It also specifies partial update and currency.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, no prerequisites or when-not-to-use cases mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_propertyUpdate PropertyAIdempotentInspect
Met à jour les champs d'un bien immobilier existant. Seuls les champs fournis sont modifiés. Les montants sont en euros, les surfaces en m².
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | ||
| name | No | ||
| type | No | ||
| notes | No | ||
| address | No | ||
| total_area | No | ||
| tva_regime | No | ||
| agency_fees | No | ||
| notary_fees | No | ||
| postal_code | No | ||
| property_id | Yes | ||
| rental_type | No | ||
| rented_area | No | ||
| market_value | No | ||
| land_percentage | No | ||
| acquisition_date | No | ||
| acquisition_price | No | ||
| market_value_date | No | ||
| rental_start_date | No | ||
| is_primary_residence | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare idempotentHint=true, and the description adds that only provided fields are modified (partial update) and specifies units. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, front-loaded with key information. Efficient and focused.
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 and description does not mention return value or side effects. Missing information on permissions, validation rules, and behavior for required vs optional 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 coverage is 0%, and the description only mentions units but does not explain any of the 20 parameters. While parameter names are somewhat self-explanatory, an AI agent would benefit from additional clarification for fields like tva_regime, rental_type, etc.
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 existing property fields, specifies partial update behavior, and mentions units (euros, m²). It distinguishes from sibling tools like create_property and delete_property.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for modifying an existing property, but does not explicitly state when to use or when not to use alternatives. However, the context is clear given sibling tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_property_workUpdate Property WorkAIdempotentInspect
Met à jour un poste de travaux immobiliers existant. Seuls les champs fournis sont modifiés (mise à jour partielle). Le montant est en euros. L'amortissement annuel est recalculé automatiquement si le montant ou la durée changent.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | No | ||
| work_id | Yes | ||
| tva_rate | No | ||
| work_date | No | ||
| description | No | ||
| is_dedicated | No | ||
| duration_years | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide idempotentHint: true. The description adds that the amount is in euros and that annual depreciation is automatically recalculated if amount or duration change, which is behavioral info beyond annotations. No contradiction detected.
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. The main purpose is front-loaded. Every sentence adds value: what the tool does, partial update behavior, currency unit, and automatic recalculation. 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?
Despite 7 parameters and no output schema, the description covers key behavioral aspects (partial update, auto-recalculation). It does not explain return value or error conditions, but given idempotentHint and typical mutation patterns, it is fairly 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 0%, so the description must compensate. It adds meaning for 'amount' (in euros) and 'duration_years' (triggers auto-recalculation). However, other parameters like work_id, tva_rate, work_date, description, is_dedicated are not described, leaving gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Met à jour un poste de travaux immobiliers existant' (updates an existing property work item) and specifies it's a partial update (only provided fields modified). This distinguishes it from create and 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?
The description explicitly says only provided fields are modified (partial update), implying it is used for updating existing works rather than creating new ones. It does not name alternatives but the context with sibling tools (create_property_work, delete_property_work) provides sufficient differentiation.
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. Dates show when Glama detected each change.
44 tool updates
v0.1.1- First observed
attach_document - First observed
compare_micro_bic - First observed
compute_depreciation - First observed
compute_fiscal_year - First observed
compute_loan_schedule - First observed
compute_tva - First observed
create_expense - First observed
create_furniture - First observed
create_income - First observed
create_property - First observed
create_property_work - First observed
delete_document - First observed
delete_expense - First observed
delete_furniture - First observed
delete_income - First observed
delete_property_work - First observed
export_documents - First observed
generate_fec - First observed
generate_tax_return - First observed
get_dashboard_summary - First observed
get_expense - First observed
get_fiscal_year - First observed
get_income - First observed
get_loan - First observed
get_loan_schedule - First observed
get_onboarding_status - First observed
get_projection - First observed
get_property - First observed
get_simulation - First observed
import_airbnb_csv - First observed
list_categories - First observed
list_expenses - First observed
list_fiscal_years - First observed
list_furniture - First observed
list_incomes - First observed
list_loans - First observed
list_properties - First observed
list_property_components - First observed
list_property_works - First observed
update_expense - First observed
update_furniture - First observed
update_income - First observed
update_property - First observed
update_property_work
TDQS
Each tool targets a specific resource or action with clear boundaries. Even the compute tools (e.g., compute_fiscal_year vs compute_tva) have distinct inputs and outputs, eliminating ambiguity.
All tools follow a consistent verb_noun pattern in snake_case (e.g., list_incomes, create_income, compute_fiscal_year). No mixing of conventions or vague names.
44 tools is high but justified by the complexity of LMNP management (fiscal, depreciation, loans, TVA). Some redundancy between compare_micro_bic and get_simulation, but overall scope warrants the number.
Covers all major CRUD operations for core entities (properties, incomes, expenses, furniture, works) and advanced computations. Missing delete for properties and loans creates minor gaps, but workflows are still usable.
Maintenance
Related MCP Connectors
Hosted MCP server for Mini Accountant: invoices, expenses, customers, analytics, tax estimates.
Headless API-first double-entry accounting & bookkeeping engine. 84 MCP tools over HTTP.
MCP server for Quaderno — tax-rate calculation, invoices, contacts, products, receipts & expenses.
Dated, sourced calculation API for French personal tax (income tax, IFI, PER, CEHR) and retirement.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA Python MCP server that calculates French income tax using the official DGFiP source code compiled locally. It enables accurate tax simulations for 2023 income based on real French tax forms without network calls.MIT
- AlicenseAqualityAmaintenanceMCP server for Spanish accounting for freelancers and SMEs, enabling AI agents to issue invoices, OCR expense PDFs, reconcile bank transactions, and prepare quarterly VAT (Modelo 303).23MIT
- FlicenseNot gradedqualityBmaintenanceA public, no-auth remote MCP server that exposes Arc & Ledger's free tax calculators and intake funnel as tools inside AI assistants. Provides tools for IRS notice explanation, FBAR/FATCA, LLC vs S-Corp comparison, quarterly tax estimates, and more.-
- AlicenseNot gradedqualityBmaintenanceA read-only MCP server for the NuMetric.work accounting/POS/ERP platform, exposing 38 tools to query live business data such as financial statements, invoices, taxes, projects, inventory, and documents. It enables AI assistants to answer from real accounting data without any create, edit, or delete capabilities.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/manganate006/openlmnp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server


