artemis
Server Details
Les chiffres de votre officine (ventes, stock, marges) dans votre IA, en lecture seule.
- Status
- Healthy
- Uptime
- 37.7% over 25 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 11 tools
Descriptions are unusually explicit about when to use each tool ("À utiliser quand…", "Pas pour…"), which helps a lot, and most tools target distinct resources (product search vs. product detail vs. monthly sales vs. taxonomy lookup). However, several pairs genuinely overlap: gamme_laboratoire largely duplicates top_ventes filtered on a laboratoire; stock_dormant duplicates part of couverture_stock (whose own description even names stock_dormant); palmares vs. top_ventes differ mainly by grouping dimension, not by resource. An agent must read carefully to pick between period-based ranking tools.
All names are lowercase French snake_case with no prefixes, so they are readable and stylistically uniform. But there is no consistent verb_noun pattern: some are verbs (chercher_produit, lister), many are noun phrases (bilan_mensuel, fiche_produit, gamme_laboratoire, ventes_mois, top_ventes), and some are bare nouns (officine, palmares). Mixed conventions, still interpretable.
11 tools is well within a comfortable range for a pharmacy analytics server, and each tool covers a plausible analytic question (trend, ranking, stock risk, dormant stock, product detail, taxonomy). The only mild bloat is the near-duplication between gamme_laboratoire and top_ventes, and stock_dormant vs. couverture_stock.
The read-only analytics surface is broad: pharmacy identity, catalogue search, taxonomies, per-product detail, monthly trend, period rankings, supplier range, stock-out/overstock coverage and dormant stock are all present. Gaps are minor: no overall stock inventory listing/valuation beyond officine's aggregate, and no day-level or order/purchase-side view, but the stated domain (sales, margin, stock insight) is covered without dead ends.
Available Tools
11 toolsbilan_mensuelBilan mensuelARead-onlyIdempotentInspect
L'officine mois par mois (les N derniers mois pleins, le mois en cours à part, ou du/au), avec le total des mois pleins : unités, chiffre d'affaires TTC et HT, marge en euros (marge_eur = quantité × (prix de vente HT − PAMP)) et en pourcentage du prix de vente HT, références vendues. Filtrable par laboratoire, famille, groupe (parapharmacie, médicaments, LPP…) ou mots du nom des produits (produit : « solaire, spf »). comparer=an_dernier met chaque mois face au même mois un an avant, écarts calculés ; avec produit, les produits retenus sont rendus pour vérification. À utiliser quand le pharmacien demande l'évolution de ses ventes ou de sa marge, compare un mois ou une saison à l'an dernier. Pas pour une question médicale, une posologie, un dossier patient ni un prix du marché. Month-by-month sales, revenue and margin of the pharmacy, filterable.
| Name | Required | Description | Default |
|---|---|---|---|
| au | No | Dernier mois compris, AAAA-MM. | |
| du | No | Premier mois compris, AAAA-MM. Avec au, remplace mois (« cet été » : du 2026-06 au 2026-08). | |
| mois | No | Les N derniers mois pleins ; le mois en cours est rendu à part (ignoré avec du/au). | |
| rayon | No | Rayon SyderaAI (Solaire, Compléments alimentaires, Cheveux, Contention, Homéopathie…), nom exact (lister quoi=rayons) ; plusieurs au choix, séparés par des virgules. Pour « mon rayon solaire », « mes compléments ». | |
| groupe | No | Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile ; medicaments_conseil = sans ordonnance, non remboursés ; medicaments_ordonnance_non_rembourses = sur ordonnance, non remboursés ; medicaments_non_rembourses = les deux ; a_verifier = les produits rangés dans aucun groupe (la ligne « (à vérifier) »). | |
| exclure | No | Écarter les produits dont le nom contient l'un de ces mots, séparés par des virgules (« rivastigmine, firmagon ») : pour retirer ce qu'un filtre de mots attrape à tort. | |
| famille | No | Famille du logiciel (son propre rangement), nom exact (lister le donne) ; plusieurs au choix, séparées par des virgules ; « (sans famille) » retient les produits qui n'en ont aucune. | |
| produit | No | Ne compter que les produits dont le nom ou le laboratoire contient ces mots (abréviations du logiciel comprises), comme q dans top_ventes ; plusieurs possibilités séparées par des virgules (« solaire, spf »). Pour une molécule, essayez d'abord le paramètre molecule (base publique des médicaments) ; si la réponse dit que la composition n'est pas chargée, ou pour une classe (vitamine D, magnésium, probiotiques…), donnez vous-même la molécule et les marques que vous connaissez (vitamine D : « vitamine d, cholecalciferol, uvedose, zymad, adrigyl »), puis vérifiez les produits retenus et reformulez si l'un n'en est pas. | |
| comparer | No | Chaque mois face au même mois un an avant (champs *_avant, evolution_ca_pct), total compris. | |
| molecule | No | Substance active, d'après la base publique des médicaments (« paracetamol », « amoxicilline ») ; plusieurs séparées par des virgules. Retient tous les médicaments qui la contiennent, associations comprises ; la parapharmacie n'a pas de molécule. Si la réponse dit que la composition n'est pas chargée, donnez les marques dans q ou produit. | |
| type_soin | No | Le type de matériel de soin : gamme_blanche (pansements, compresses, bandes, sparadraps et sets), ou un type précis (sets_pansement, contention, glycemie…). | |
| generiques | No | seules : les génériques ; exclure : princeps et médicaments hors groupe générique. | inclure |
| sous_rayon | No | Sous-rayon SyderaAI (Protection solaire, Sommeil, Anti-Poux, Anti-moustiques & insectes…), nom exact (lister quoi=sous_rayons) ; plusieurs au choix. Pour « mes anti-poux », « mes compléments sommeil ». | |
| laboratoire | No | Nom exact du laboratoire (lister le donne) ; plusieurs au choix, séparés par des virgules ; « (laboratoire non identifié) » retient les produits sans laboratoire. | |
| associations | No | exclure : la substance seule (paracétamol sans codéine) ; seules : les associations. | inclure |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive. The description adds real behavioral context beyond them: how margin is computed (quantité × (prix de vente HT − PAMP)), that comparer=an_dernier produces écarts and *_avant fields, that the current month is returned separately, and that selected products are surfaced for verification. It does not disclose broader limits such as data freshness or row caps.
Agents need to know what a tool does to the 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 main purpose and metric definitions are front-loaded and every sentence carries information about scope, formulas, or filters. It is dense and somewhat long for a single paragraph, but appropriately sized for a 15-parameter analytical tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity and the absence of an output schema, the description explains the main return values (units, revenue HT/TTC, margin in euros and percent, references sold) and the comparison fields. It leaves some gaps around the exact shape of the separate current-month block and the full comparison output, but covers enough for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so every parameter is already documented in the schema. The description synthesizes the filter set (laboratoire, famille, groupe, produit) and the comparer behavior, but this largely repeats schema content rather than adding new semantics. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: month-by-month pharmacy sales, revenue and margin, with explicit metrics (unités, CA TTC/HT, marge_eur, références vendues) and filter options. The intended scope is clear, but differentiation from siblings like ventes_mois or palmares is only implicit; the only sibling named is top_ventes as an analogy, not as an alternative to choose between.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('À utiliser quand le pharmacien demande l'évolution de ses ventes ou de sa marge, compare un mois ou une saison à l'an dernier') and clear exclusions (medical questions, posology, patient records, market prices). Alternatives among sibling tools are not named, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chercher_produitChercher un produitARead-onlyIdempotentInspect
Trouve des produits de l'officine par nom, par code CIP ou par molécule : cip, nom, laboratoire, famille, substances actives (dci), générique ou princeps, prix catalogue TTC, stock, dernier mois vendu. Plusieurs mots dans n'importe quel ordre, abréviations du logiciel comprises ; tolère une faute de frappe ou un mot absent : si aucun nom ne contient tous les mots, rend les noms les plus proches, avec les mots retrouvés (correspond) et une proximite de 0 à 1. molecule=paracetamol rend tous les médicaments qui en contiennent, quelle que soit la marque. anomalie liste ce qui est à corriger dans le logiciel : prix d'achat qui paraît faux (prix_achat_improbable, avec le PAMP et la marge au prix catalogue), sans prix d'achat, vendu à perte au prix catalogue (marge_negative), prix catalogue qui ne concorde pas avec l'encaissé (prix_catalogue_incoherent), sans famille, sans laboratoire. À utiliser avant tout outil qui prend un code CIP, quand le pharmacien cite un produit par son nom ou sa molécule, ou demande ce qui est faux ou incomplet dans son logiciel. Au plus 50 lignes. Pas pour une question médicale, une posologie, un dossier patient ni un prix du marché. Searches the pharmacy's own catalogue by name or CIP code, typo-tolerant.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Mot(s) du nom, ou un code CIP à 13 chiffres. Facultatif si molecule, type_soin ou anomalie est donné. | |
| page | No | Page suivante d'une liste tronquée (même limite). | |
| rayon | No | Rayon SyderaAI (Solaire, Compléments alimentaires, Cheveux, Contention, Homéopathie…), nom exact (lister quoi=rayons) ; plusieurs au choix, séparés par des virgules. Pour « mon rayon solaire », « mes compléments ». | |
| groupe | No | Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile ; medicaments_conseil = sans ordonnance, non remboursés ; medicaments_ordonnance_non_rembourses = sur ordonnance, non remboursés ; medicaments_non_rembourses = les deux ; a_verifier = les produits rangés dans aucun groupe (la ligne « (à vérifier) »). | |
| limite | No | ||
| anomalie | No | Lister les produits du logiciel qui ont ce défaut ; q devient facultatif. Triés par enjeu (chiffre d'affaires des douze derniers mois). | |
| molecule | No | Substance active, d'après la base publique des médicaments (« paracetamol », « amoxicilline ») ; plusieurs séparées par des virgules. Retient tous les médicaments qui la contiennent, associations comprises ; la parapharmacie n'a pas de molécule. Si la réponse dit que la composition n'est pas chargée, donnez les marques dans q ou produit. | |
| type_soin | No | Le type de matériel de soin : gamme_blanche (pansements, compresses, bandes, sparadraps et sets), ou un type précis (sets_pansement, contention, glycemie…). | |
| generiques | No | seules : les génériques ; exclure : princeps et médicaments hors groupe générique. | inclure |
| sous_rayon | No | Sous-rayon SyderaAI (Protection solaire, Sommeil, Anti-Poux, Anti-moustiques & insectes…), nom exact (lister quoi=sous_rayons) ; plusieurs au choix. Pour « mes anti-poux », « mes compléments sommeil ». | |
| associations | No | exclure : la substance seule (paracétamol sans codéine) ; seules : les associations. | inclure |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent annotations: discloses typo tolerance and word-order insensitivity, the proximity/correspond fallback behavior, molecule expansion to all brands, anomaly listing with sorting by revenue, and the 50-row cap with page paging. Doesn't describe the exact shape of returned objects, but annotations plus this text cover most of what an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded correctly with the resource and fields, but the prose is a single dense run-on mixing search semantics, anomaly semantics and usage rules, and the closing English sentence 'Searches the pharmacy's own catalogue by name or CIP code, typo-tolerant' duplicates information already given in French.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter read tool with no output schema, the description covers what comes back (CIP, nom, laboratoire, famille, DCI, prix, stock, dernier mois vendu), the row cap, the paging mechanism and the anomaly taxonomy. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 91%, so baseline is 3. The description still adds meaning: it explains that q is optional when molecule/anomaly/type_soin is supplied, that multiple words can come in any order with software abbreviations, and gives a concrete molecule example ('molecule=paracetamol rend tous les médicaments qui en contiennent').
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ('Trouve des produits de l'officine') and enumerates the searchable keys (nom, CIP, molécule) plus the returned fields. It is clearly distinguishable from siblings like fiche_produit or lister.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it ('avant tout outil qui prend un code CIP', when the pharmacist names a product or asks what is wrong in the software) and when not to (medical questions, posology, patient records, market prices). Also names the alternative route implicitly via fiche_produit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
couverture_stockCouverture de stockARead-onlyIdempotentInspect
Ce qui va manquer : produits vendus sur N mois pleins dont le stock couvre au plus X jours, avec un résumé (déjà en rupture, à 7 jours ou moins, mis à part). ruptures=exclure montre ce qui va tomber à zéro, seules ce qui manque déjà ; tri=debit met les gros volumes d'abord (commander en priorité). Fins de saison et ventes ponctuelles mises à part. Avec jours_min, l'inverse : le stock en trop, les produits vendus dont le stock couvre au moins jours_min jours, triés par valeur au-delà (jours_min=180 : plus de six mois de stock), avec l'excès regroupé par laboratoire et par famille. Filtres laboratoire, famille, groupe. Au plus 200 lignes. À utiliser quand le pharmacien demande ses ruptures, ce qu'il doit commander, ce qui risque de manquer, ou ce qu'il a en trop par rapport à ce qu'il vend (ce qui ne se vend plus du tout : stock_dormant). Pas pour une question médicale, une posologie, un dossier patient ni un prix du marché. Products about to run out, given their recent sales, with a summary.
| Name | Required | Description | Default |
|---|---|---|---|
| tri | No | couverture : le plus urgent d'abord ; debit : les plus gros volumes mensuels d'abord. | couverture |
| mois | No | ||
| rayon | No | Rayon SyderaAI (Solaire, Compléments alimentaires, Cheveux, Contention, Homéopathie…), nom exact (lister quoi=rayons) ; plusieurs au choix, séparés par des virgules. Pour « mon rayon solaire », « mes compléments ». | |
| groupe | No | Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile ; medicaments_conseil = sans ordonnance, non remboursés ; medicaments_ordonnance_non_rembourses = sur ordonnance, non remboursés ; medicaments_non_rembourses = les deux ; a_verifier = les produits rangés dans aucun groupe (la ligne « (à vérifier) »). | |
| limite | No | ||
| famille | No | Famille du logiciel (son propre rangement), nom exact (lister le donne) ; plusieurs au choix, séparées par des virgules ; « (sans famille) » retient les produits qui n'en ont aucune. | |
| molecule | No | Substance active, d'après la base publique des médicaments (« paracetamol », « amoxicilline ») ; plusieurs séparées par des virgules. Retient tous les médicaments qui la contiennent, associations comprises ; la parapharmacie n'a pas de molécule. Si la réponse dit que la composition n'est pas chargée, donnez les marques dans q ou produit. | |
| ruptures | No | inclure | |
| jours_max | No | ||
| jours_min | No | Le stock en trop : les produits dont le stock couvre au moins ce nombre de jours de ventes (remplace jours_max). | |
| type_soin | No | Le type de matériel de soin : gamme_blanche (pansements, compresses, bandes, sparadraps et sets), ou un type précis (sets_pansement, contention, glycemie…). | |
| generiques | No | seules : les génériques ; exclure : princeps et médicaments hors groupe générique. | inclure |
| sous_rayon | No | Sous-rayon SyderaAI (Protection solaire, Sommeil, Anti-Poux, Anti-moustiques & insectes…), nom exact (lister quoi=sous_rayons) ; plusieurs au choix. Pour « mes anti-poux », « mes compléments sommeil ». | |
| laboratoire | No | Nom exact du laboratoire (lister le donne) ; plusieurs au choix, séparés par des virgules ; « (laboratoire non identifié) » retient les produits sans laboratoire. | |
| associations | No | exclure : la substance seule (paracétamol sans codéine) ; seules : les associations. | inclure |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the description's job is to add operational detail, and it does: a 200-row cap, the response summary buckets (already out of stock, 7 days or less, set aside), tri=debit prioritising high-volume items to order first, and the fact that jours_min inverts the whole query and regroups excess by laboratoire and famille. It also warns that season-end and one-off sales are set aside, which materially changes how results should be read.
Agents need to know what a tool does to the 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 substance is front-loaded and dense with no filler, but the clauses are strung into long run-ons that mix the two modes, the summary, the filters and the exclusions in one block. The trailing English sentence 'Products about to run out, given their recent sales, with a summary.' restates the opening in another language and does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter, no-output-schema analytical tool, the description covers both modes, the summary contents, the row cap, the grouping, and the when-not-to-use cases. Minor gaps remain: it does not reconcile the stated 200-row ceiling with the much lower default of 50, nor explain how 'mois pleins' is computed, but none of these would cause a wrong invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 73%, so the schema carries much of the load, yet the description adds real meaning for the non-obvious parameters: ruptures value semantics ('exclure montre ce qui va tomber à zéro, seules ce qui manque déjà'), tri=debit, and jours_min with a concrete example (jours_min=180 ≈ six months of stock). It names the filter dimensions (laboratoire, famille, groupe) but leaves molecule, type_soin, generiques, associations and sous_rayon entirely to 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 definition identifies the resource and the two analysis modes precisely: products sold over N full months whose stock covers at most X days, or, with jours_min, the inverse (excess stock). It deliberately carves out stock_dormant for products that no longer sell at all, which separates it from its closest sibling. It opens with an oblique nominal phrase ('Ce qui va manquer') rather than a verb+resource statement, but the intent is unambiguous by the second clause.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit user-intent triggers ('le pharmacien demande ses ruptures, ce qu'il doit commander, ce qui risque de manquer, ou ce qu'il a en trop') plus a named alternative for the adjacent case ('ce qui ne se vend plus du tout : stock_dormant'). It also states exclusions ('Pas pour une question médicale, une posologie, un dossier patient ni un prix du marché'), which no sibling name alone would convey.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fiche_produitFiche produitARead-onlyIdempotentInspect
Tout sur un ou plusieurs produits (jusqu'à 20 codes CIP) : identité, prix catalogue, PAMP et taux de marge catalogue, état de stock (quantité, valeur, emplacement), N mois de ventes (quantité, prix moyen encaissé, marge en euros et en pourcentage), total, moyenne, couverture en jours et, pour un seul produit, son rang dans sa famille ; pour plusieurs produits, leur total réuni (toutes présentations confondues, mois par mois). À utiliser quand le pharmacien veut le détail d'une référence précise, en comparer quelques-unes ou additionner une famille de produits. Pas pour une question médicale, une posologie, un dossier patient ni un prix du marché. Prix de l'officine seulement. Un prix proposé au pharmacien n'est pas conseillé par Artemis ni par SyderaAI : prix de sa zone et effet sur ses ventes inconnus ici ; une décision fiable demande un outil de pricing qui suit sa zone (sans en citer). Full sales, stock and margin detail for up to 20 products of the pharmacy.
| Name | Required | Description | Default |
|---|---|---|---|
| cips | Yes | Codes CIP exacts, obtenus par chercher_produit. | |
| mois | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context: scope is limited to officine prices, market/zone prices are unknown here, and proposed prices are not advised. It does not cover result size or latency for up to 20 products, hence not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content inventory is front-loaded and useful, but the text is a single very long sentence that bundles return fields, usage rules and caveats together. The trailing English sentence ('Full sales, stock and margin detail...') duplicates the French description and adds no new information, which is avoidable padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description enumerates the return payload in detail (per-product figures, totals, averages, cover in days, rank only for a single product, aggregated family totals for multiple). Combined with annotations covering safety, an agent has everything needed to call it correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: cips is documented in the schema, mois is not. The description compensates by explaining that the tool returns 'N mois de ventes' and that multi-product totals are computed 'mois par mois', giving the agent the meaning of the unlabeled parameter. It still does not state the 1-24 range or default 12 in prose, but those are in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names the resource (produit) and enumerates precisely what the tool returns: identity, catalogue price, PAMP, margin rate, stock state, N months of sales, totals, averages, cover in days and family rank. It also contrasts with siblings by pointing to chercher_produit for CIP codes and by excluding pricing/market questions, so an agent can tell it apart from ventes_mois, palmares or stock_dormant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('détail d'une référence précise, en comparer quelques-unes ou additionner une famille de produits') plus explicit when-not ('Pas pour une question médicale, une posologie, un dossier patient ni un prix du marché'). It even names the missing capability needed instead (a pricing tool tracking the pharmacy's zone), which is strong routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gamme_laboratoireGamme d'un laboratoireARead-onlyIdempotentInspect
Toute la gamme d'un laboratoire dans l'officine sur une période (les N derniers mois pleins, ou du/au), produit par produit, références sans vente comprises : unités, chiffre d'affaires, marge en euros et en pourcentage, prix catalogue, PAMP, stock, et le total de la gamme. Trié par unités, chiffre d'affaires, marge ou progression ; comparer=an_dernier ou periode_precedente ajoute la période comparée, l'évolution des ventes et celle du prix d'achat de chaque produit et de la gamme. Pour comparer deux laboratoires, appeler deux fois. Au plus 200 lignes. À utiliser pour préparer un rendez-vous avec un laboratoire ou passer sa gamme en revue. Pas pour une question médicale, une posologie, un dossier patient ni un prix du marché. Prix de l'officine seulement. Un prix proposé au pharmacien n'est pas conseillé par Artemis ni par SyderaAI : prix de sa zone et effet sur ses ventes inconnus ici ; une décision fiable demande un outil de pricing qui suit sa zone (sans en citer). Every product of one supplier in the pharmacy, with sales, stock, margin and comparison.
| Name | Required | Description | Default |
|---|---|---|---|
| au | No | Dernier mois compris, AAAA-MM. | |
| du | No | Premier mois compris, AAAA-MM. Avec au, remplace mois (« cet été » : du 2026-06 au 2026-08). | |
| tri | No | unites (défaut), ca (chiffre d'affaires), marge (en euros), marge_pct (taux de marge) ; avec comparer : progression_eur, progression_pct, ou progression_pamp (les prix d'achat qui ont le plus monté). | unites |
| mois | No | Les N derniers mois pleins (ignoré avec du/au). | |
| ordre | No | croissant : du plus petit au plus grand (les plus faibles marges, les plus fortes baisses). | decroissant |
| limite | No | ||
| comparer | No | Ajoute, par ligne et au total, la période comparée (champs *_avant) et evolution_ca_pct : an_dernier = les mêmes mois un an avant ; periode_precedente = autant de mois juste avant. | |
| laboratoire | Yes | Nom exact, tel que lister le rend. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish read-only, idempotent, non-destructive behavior, and the description adds important operational context beyond them: the period logic, row cap of 200, comparison behavior, pharmacy-only pricing scope, and the limitation that it does not advise on proposed prices.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core scope and output metrics, and its length is justified by the tool's complexity. It loses a little sharpness from the redundant final English sentence and the somewhat verbose pricing caveat, but the structure remains usable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 and eight parameters, the description still explains the returned metrics, period scope, comparison behavior, row limit, and usage boundaries well enough for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high at 88%, so the schema already documents most parameters. The description still adds useful meaning about how period selection and comparison work together, especially that comparer adds compared-period values and evolution of sales and purchase price per product and for the whole range.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: returning a laboratory's full product range in the pharmacy over a period, product by product, including references with no sales and aggregate totals. It names the exact metrics returned and distinguishes this from adjacent tools by emphasizing laboratory-level range analysis rather than generic product listing or medical questions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance: preparing a laboratory meeting or reviewing its range. It also gives explicit exclusions: not for medical questions, dosage, patient files, or market pricing, and notes that comparing two laboratories requires two calls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listerLister les laboratoires, les familles, les groupes ou les moléculesARead-onlyIdempotentInspect
Les laboratoires ou les familles tels que le logiciel de la pharmacie les écrit, les groupes de produits (parapharmacie, médicaments, LPP…) les molécules (substances actives connues de la base publique des médicaments) ou les rayons et sous-rayons SyderaAI (rangement de la parapharmacie), avec le nombre de références, vendues et en stock ; quoi=codes_changes : les produits que le logiciel vend désormais sous un autre code (ancien et nouveau code, dates). Au plus 150 lignes. À utiliser pour obtenir l'orthographe exacte d'un laboratoire, d'une famille ou d'une molécule avant de filtrer un autre outil, ou savoir quels produits ont changé de code. Pas pour une question médicale, une posologie, un dossier patient ni un prix du marché. Lists the exact supplier, family or group names used by the pharmacy.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | ||
| quoi | Yes | ||
| limite | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered. The description adds useful behavioral context beyond that: a hard result cap of 150 lines, that counts of references/sold/stock are returned, and what codes_changes reports (old and new code, dates). It does not discuss pagination or result ordering, hence not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One long run-on sentence with semicolons carries all the meaning, followed by a redundant English restatement ('Lists the exact supplier, family or group names used by the pharmacy'). The enumeration is front-loaded after a noun-phrase opening, but the structure is dense and the duplicated final line does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter read tool with no output schema and annotations already covering safety, the description is nearly complete: it explains what categories are returned, includes reference/sold/stock counts and a 150-row cap. The gaps are the undocumented q filter and the unexplained types_soin enum value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It explains most of the quoi enum values (laboratoires/familles, groupes, molecules, rayons/sous-rayons, codes_changes) and implies limite via 'Au plus 150 lignes', but it never explains the q search parameter and omits the types_soin enum value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific read resource and enumerates every domain it covers: supplier/family spellings, product groups (parapharmacie, médicaments, LPP), molecules, SyderaAI rayons/sous-rayons, and code changes. It explicitly marks what it is not for (medical questions, posology, patient records, market prices), which sets it apart from siblings like chercher_produit and fiche_produit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the two concrete triggers: get the exact spelling of a supplier/family/molecule before filtering another tool, or find products that changed code. It also lists explicit exclusions, so an agent can decide both when to call it and when not to.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
officineMon officineARead-onlyIdempotentInspect
À appeler en premier. Qui est l'officine (nom, adresse, téléphone, identifiants), depuis quand elle a changé de logiciel le cas échéant, ses chiffres clés des douze derniers mois pleins (valeur du stock au PAMP, chiffre d'affaires, marge en euros et en pourcentage) et la qualité des données. À utiliser dès qu'un pharmacien d'officine parle de sa pharmacie, de ses ventes, de son stock ou de sa marge, pour savoir de quelle officine il s'agit et à quelle date les chiffres ont été relevés. Pas pour une question médicale, une posologie, un dossier patient ni un prix du marché. Identifies the pharmacy and gives its key yearly figures; call it first.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, non-open-world, so the safety profile is covered. The description adds real behavioral context beyond that: the figures are scoped to the last twelve full months ('mois pleins'), a data-quality signal is included, and it tells the agent to surface the measurement date, which matters for interpreting stale figures. It does not discuss failure modes or what happens if the pharmacy is unidentified.
Agents need to know what a tool does to the 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 priority instruction ('À appeler en premier') is front-loaded, followed by the payload list, then the exclusions and a one-line English restatement. The middle sentence is a dense enumeration, but each listed field (PAMP valuation, margin, data quality, software-change date) earns its place by telling the agent what it can answer with.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 zero parameters and no output schema, the description carries the full burden of describing what comes back, and it does so completely: identity fields, historical context, twelve months of financials, and a data-quality indicator plus the reference date. Nothing an agent needs in order to decide to call it or to interpret the answer is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline of 4 applies; the description correctly implies no input is needed by framing the call as 'call it first' to discover which pharmacy the user is talking about. No parameter meaning is missing because 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 states a concrete verb+resource (identify the pharmacy and return its identity plus twelve full months of key figures), enumerating the exact payload: name, address, phone, identifiers, software-change date, stock value at PAMP, revenue, margin in euros and percent, and data quality. It also fixes its position against the siblings ('À appeler en premier') and excludes medical/patient/market-price territory, so an agent can separate it from bilan_mensuel, ventes_mois or chercher_produit without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is explicit: call it first, and use it whenever a pharmacist talks about their pharmacy, sales, stock or margin, to establish which pharmacy and at what date figures were measured. Negative guidance is also explicit (not for a medical question, dosage, patient record or market price). It stops short of naming the sibling tools to redirect to, so routing beyond the exclusion list is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
palmaresPalmarès des laboratoires, des familles, des groupes, des molécules ou d'une liste de nomsARead-onlyIdempotentInspect
Le classement des laboratoires, des familles (les rayons tels que le logiciel de la pharmacie les écrit), des groupes (parapharmacie, médicaments remboursés ou non, LPP, laits infantiles), des molécules (substances actives, avec la part des génériques dans chaque ligne), des types de soin (pansements, sets, contention, glycémie…), des rayons et sous-rayons SyderaAI (Solaire, Compléments alimentaires › Sommeil, Cheveux › Anti-Poux…), ou d'une LISTE de noms que vous donnez (par=liste, produit=« gallia, guigoz, novalac, picot » : une ligne par nom, tout comparé en UN appel, jamais un appel par nom) sur une période (les N derniers mois pleins, ou du/au) : unités, chiffre d'affaires TTC et HT, marge en euros et en pourcentage, références vendues, le stock de chaque ligne (références, unités, valeur au PAMP, jours de stock) et le total. Trié par chiffre d'affaires, marge, taux de marge, unités, stock ou progression ; comparer=an_dernier ou periode_precedente ajoute la période comparée, l'évolution des ventes et celle du prix d'achat (evolution_pamp_pct : quels laboratoires ont augmenté leurs prix) ; produit = ne compter que les produits dont le nom contient un mot. Au plus 50 lignes. À utiliser pour savoir quels laboratoires, quels rayons ou quelle part (parapharmacie, médicaments) pèsent le plus, combien de stock ils immobilisent et en combien de jours il tourne, lesquels progressent ou ont augmenté leurs prix, ou préparer un rendez-vous avec un laboratoire. Pas pour une question médicale, une posologie, un dossier patient ni un prix du marché. Ranks the pharmacy's suppliers, product families or product groups by revenue, margin or growth.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Optionnel : mot du nom du laboratoire, de la famille ou du groupe (pas des produits : voir produit). | |
| au | No | Dernier mois compris, AAAA-MM. | |
| du | No | Premier mois compris, AAAA-MM. Avec au, remplace mois (« cet été » : du 2026-06 au 2026-08). | |
| par | Yes | liste : une ligne par nom donné dans produit (au moins deux), pour comparer plusieurs gammes ou fabricants en un appel. | |
| tri | No | ca (défaut), marge en euros, marge_pct (taux de marge), unites, stock (valeur du stock) ; avec comparer : progression_eur, progression_pct, ou progression_pamp (hausse du prix d'achat). | ca |
| mois | No | Les N derniers mois pleins (ignoré avec du/au). | |
| ordre | No | croissant : du plus petit au plus grand (les plus faibles marges, les plus fortes baisses). | decroissant |
| rayon | No | Rayon SyderaAI (Solaire, Compléments alimentaires, Cheveux, Contention, Homéopathie…), nom exact (lister quoi=rayons) ; plusieurs au choix, séparés par des virgules. Pour « mon rayon solaire », « mes compléments ». | |
| ca_min | No | Écarter de la liste les lignes sous ce chiffre d'affaires TTC (dans la période ou la période comparée), utile avec un tri par taux ou par progression ; le total porte toujours sur tout. | |
| groupe | No | Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile ; medicaments_conseil = sans ordonnance, non remboursés ; medicaments_ordonnance_non_rembourses = sur ordonnance, non remboursés ; medicaments_non_rembourses = les deux ; a_verifier = les produits rangés dans aucun groupe (la ligne « (à vérifier) »). | |
| limite | No | ||
| exclure | No | Écarter les produits dont le nom contient l'un de ces mots, séparés par des virgules (« rivastigmine, firmagon ») : pour retirer ce qu'un filtre de mots attrape à tort. | |
| famille | No | Optionnel : restreindre aux produits de cette famille (plusieurs au choix, séparées par des virgules). | |
| produit | No | Ne compter que les produits dont le nom ou le laboratoire contient ces mots (abréviations du logiciel comprises), comme q dans top_ventes ; plusieurs possibilités séparées par des virgules (« solaire, spf »). Pour une molécule, essayez d'abord le paramètre molecule (base publique des médicaments) ; si la réponse dit que la composition n'est pas chargée, ou pour une classe (vitamine D, magnésium, probiotiques…), donnez vous-même la molécule et les marques que vous connaissez (vitamine D : « vitamine d, cholecalciferol, uvedose, zymad, adrigyl »), puis vérifiez les produits retenus et reformulez si l'un n'en est pas. | |
| comparer | No | Ajoute, par ligne et au total, la période comparée (champs *_avant) et evolution_ca_pct : an_dernier = les mêmes mois un an avant ; periode_precedente = autant de mois juste avant. | |
| molecule | No | Substance active, d'après la base publique des médicaments (« paracetamol », « amoxicilline ») ; plusieurs séparées par des virgules. Retient tous les médicaments qui la contiennent, associations comprises ; la parapharmacie n'a pas de molécule. Si la réponse dit que la composition n'est pas chargée, donnez les marques dans q ou produit. | |
| type_soin | No | Le type de matériel de soin : gamme_blanche (pansements, compresses, bandes, sparadraps et sets), ou un type précis (sets_pansement, contention, glycemie…). | |
| generiques | No | seules : les génériques ; exclure : princeps et médicaments hors groupe générique. | inclure |
| sous_rayon | No | Sous-rayon SyderaAI (Protection solaire, Sommeil, Anti-Poux, Anti-moustiques & insectes…), nom exact (lister quoi=sous_rayons) ; plusieurs au choix. Pour « mes anti-poux », « mes compléments sommeil ». | |
| laboratoire | No | Optionnel : restreindre aux produits de ce laboratoire. | |
| associations | No | exclure : la substance seule (paracétamol sans codéine) ; seules : les associations. | inclure |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safe read profile, yet the description adds real behavior: the 50-row cap, the rule that a name list is one row per name in a single call and never one call per name, the extra fields added by comparer (*_avant, evolution_ca_pct, evolution_pamp_pct), and that ca_min filters rows while the total still covers everything. Missing only finer detail such as ordering of the returned rows or empty-result behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the grouping modes, which is the right priority, but the body is a single run-on sentence chained with semicolons that is hard to parse, and the final English sentence duplicates the French scope statement. Content mostly earns its place; the packaging does not.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 21-parameter, output-schema-less tool, the description compensates well by enumerating the output metrics (unités, CA TTC/HT, marge €/%, stock, PAMP, jours de stock, total) and the comparison fields. It does not describe how rows/keys are labeled when grouping by several dimensions at once, which is the main remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 95%, so nearly every parameter already carries its own explanation; the prose largely restates par, produit, comparer and tri. Baseline 3 applies, with only marginal cross-parameter guidance added (liste needs multiple names, filter-then-verify for molecule classes).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Le classement des laboratoires, des familles... des molécules...') and enumerates every grouping mode it covers, so an agent can immediately differentiate it from top_ventes or gamme_laboratoire. The scope (period, metrics, ranking) is stated concretely rather than tautologically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the intended questions ('quels laboratoires, quels rayons ou quelle part... pèsent le plus', 'préparer un rendez-vous avec un laboratoire') and explicit exclusions ('Pas pour une question médicale, une posologie, un dossier patient ni un prix du marché'). It also routes within itself for the molecule case (try molecule first, then fall back to produit).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_dormantStock dormantARead-onlyIdempotentInspect
Ce qui dort : produits en stock sans vente depuis N mois, avec le PAMP et la valeur immobilisée, triés par valeur, plus le total et la répartition de TOUT le stock dormant par laboratoire et par famille ; les produits dont la saison commence sont mis à part. Filtres laboratoire, famille, groupe. Au plus 200 lignes. À utiliser quand le pharmacien demande ce qui ne tourne plus, combien d'argent dort, prépare un déstockage ou un rendez-vous avec un laboratoire. Pas pour une question médicale, une posologie, un dossier patient ni un prix du marché. Products in stock with no sale for N months, with the money tied up, by supplier and family.
| Name | Required | Description | Default |
|---|---|---|---|
| rayon | No | Rayon SyderaAI (Solaire, Compléments alimentaires, Cheveux, Contention, Homéopathie…), nom exact (lister quoi=rayons) ; plusieurs au choix, séparés par des virgules. Pour « mon rayon solaire », « mes compléments ». | |
| groupe | No | Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile ; medicaments_conseil = sans ordonnance, non remboursés ; medicaments_ordonnance_non_rembourses = sur ordonnance, non remboursés ; medicaments_non_rembourses = les deux ; a_verifier = les produits rangés dans aucun groupe (la ligne « (à vérifier) »). | |
| limite | No | ||
| famille | No | Famille du logiciel (son propre rangement), nom exact (lister le donne) ; plusieurs au choix, séparées par des virgules ; « (sans famille) » retient les produits qui n'en ont aucune. | |
| molecule | No | Substance active, d'après la base publique des médicaments (« paracetamol », « amoxicilline ») ; plusieurs séparées par des virgules. Retient tous les médicaments qui la contiennent, associations comprises ; la parapharmacie n'a pas de molécule. Si la réponse dit que la composition n'est pas chargée, donnez les marques dans q ou produit. | |
| type_soin | No | Le type de matériel de soin : gamme_blanche (pansements, compresses, bandes, sparadraps et sets), ou un type précis (sets_pansement, contention, glycemie…). | |
| generiques | No | seules : les génériques ; exclure : princeps et médicaments hors groupe générique. | inclure |
| sous_rayon | No | Sous-rayon SyderaAI (Protection solaire, Sommeil, Anti-Poux, Anti-moustiques & insectes…), nom exact (lister quoi=sous_rayons) ; plusieurs au choix. Pour « mes anti-poux », « mes compléments sommeil ». | |
| laboratoire | No | Nom exact du laboratoire (lister le donne) ; plusieurs au choix, séparés par des virgules ; « (laboratoire non identifié) » retient les produits sans laboratoire. | |
| associations | No | exclure : la substance seule (paracétamol sans codéine) ; seules : les associations. | inclure |
| mois_sans_vente | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive, closed-world behavior. The description adds meaningful behavioral context beyond that: sorting by value, row cap of 200, totals and breakdowns across all dormant stock, and seasonal products separated out.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is front-loaded with what the tool returns and is appropriately detailed for an 11-parameter analytical tool. The English sentence repeats the French summary, which is mildly redundant but not confusing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 and lack of an output schema, the description is complete enough: it explains the return content, aggregation behavior, row limit, seasonal exception, filters, use cases, and exclusions. The parameter schema supplies the remaining detail at high coverage.
Complex tools with many parameters or behaviors need more documentation. 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 high at 82%, so the schema already carries most parameter meaning. The description only mentions the laboratoire, famille, and groupe filters plus the N-month window, adding little beyond the structured parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource and condition: in-stock products with no sale for N months, including tied-up value, sorted by value, with totals and breakdowns. It is clear what the tool returns, but it does not explicitly differentiate itself from sibling tools such as couverture_stock or top_ventes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear when-to-use triggers: the pharmacist asks what is not moving, how much money is dormant, preparing destocking, or a lab meeting. It also gives explicit when-not-to-use cases, though it does not name alternative sibling tools for adjacent questions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
top_ventesMeilleures ventesARead-onlyIdempotentInspect
Les produits sur une période (les N derniers mois pleins, ou du/au), classés par unités, chiffre d'affaires, marge, taux de marge ou progression : unités, chiffre d'affaires TTC et HT, marge en euros et en pourcentage, prix catalogue et prix moyen encaissé, PAMP, stock, et le total de tout ce que les filtres retiennent. Filtres : mots du nom (plusieurs au choix), laboratoire, famille, groupe (parapharmacie, médicaments, LPP…), rayon et sous-rayon SyderaAI (« mon rayon solaire » : rayon=Solaire). comparer=an_dernier ou periode_precedente ajoute la période comparée et l'évolution. Au plus 100 lignes. Les ventes ponctuelles (un seul mois fait l'essentiel, puis rien) sont marquées vente_ponctuelle (ponctuelles=exclure les écarte, seules ne garde qu'elles) ; avec comparer, chaque produit porte aussi l'évolution de son prix d'achat ; le total donne aussi le stock actuel des produits retenus. stock_max=0 ne garde que ce qui n'est plus en stock ; saisonniers=seules ne garde que les produits dont la période fait l'essentiel de l'année (préparer une saison : du/au sur la même saison l'an dernier). À utiliser pour « ce qui se vend le mieux », « ce qui me rapporte le plus » (tri=marge), « ce qui a le plus progressé ou baissé » (comparer + tri=progression_eur, ordre croissant pour les baisses), « quels prix d'achat ont monté » (comparer + tri=progression_pamp), « prépare-moi l'hiver » (du 2025-10 au 2025-12, saisonniers=seules), « ce qui se vendait et que je n'ai plus » (stock_max=0), « les coups ponctuels » (ponctuelles=seules), « ce que je vends à perte » (marge_pct_max=0), dans un rayon, un groupe ou chez un laboratoire. Pas pour une question médicale, une posologie, un dossier patient ni un prix du marché. Prix de l'officine seulement. Un prix proposé au pharmacien n'est pas conseillé par Artemis ni par SyderaAI : prix de sa zone et effet sur ses ventes inconnus ici ; une décision fiable demande un outil de pricing qui suit sa zone (sans en citer). Products of the pharmacy over any period, sorted by units, revenue, margin or growth, with totals and comparison.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Mots du nom ou du laboratoire (abréviations du logiciel comprises) ; plusieurs possibilités séparées par des virgules (« solaire, spf, écran »). Pour une molécule, essayez d'abord le paramètre molecule (base publique des médicaments) ; si la réponse dit que la composition n'est pas chargée, ou pour une classe (vitamine D, magnésium, probiotiques…), donnez vous-même la molécule et les marques que vous connaissez (vitamine D : « vitamine d, cholecalciferol, uvedose, zymad, adrigyl »), puis vérifiez les produits retenus et reformulez si l'un n'en est pas. | |
| au | No | Dernier mois compris, AAAA-MM. | |
| du | No | Premier mois compris, AAAA-MM. Avec au, remplace mois (« cet été » : du 2026-06 au 2026-08). | |
| tri | No | unites (défaut), ca (chiffre d'affaires), marge (en euros), marge_pct (taux de marge) ; avec comparer : progression_eur, progression_pct, ou progression_pamp (les prix d'achat qui ont le plus monté). Avec saisonniers=seules : ecart (ce qui manque le plus pour la saison). | unites |
| mois | No | Les N derniers mois pleins (ignoré avec du/au). | |
| page | No | Page suivante de la liste (même tri, même limite). | |
| ordre | No | croissant : du plus petit au plus grand (les plus faibles marges, les plus fortes baisses). | decroissant |
| rayon | No | Rayon SyderaAI (Solaire, Compléments alimentaires, Cheveux, Contention, Homéopathie…), nom exact (lister quoi=rayons) ; plusieurs au choix, séparés par des virgules. Pour « mon rayon solaire », « mes compléments ». | |
| ca_min | No | Écarter de la liste les lignes sous ce chiffre d'affaires TTC (dans la période ou la période comparée), utile avec un tri par taux ou par progression ; le total porte toujours sur tout. | |
| groupe | No | Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile ; medicaments_conseil = sans ordonnance, non remboursés ; medicaments_ordonnance_non_rembourses = sur ordonnance, non remboursés ; medicaments_non_rembourses = les deux ; a_verifier = les produits rangés dans aucun groupe (la ligne « (à vérifier) »). | |
| limite | No | ||
| exclure | No | Écarter les produits dont le nom contient l'un de ces mots, séparés par des virgules (« rivastigmine, firmagon ») : pour retirer ce qu'un filtre de mots attrape à tort. | |
| famille | No | Famille du logiciel (son propre rangement), nom exact (lister le donne) ; plusieurs au choix, séparées par des virgules ; « (sans famille) » retient les produits qui n'en ont aucune. | |
| comparer | No | Ajoute, par ligne et au total, la période comparée (champs *_avant) et evolution_ca_pct : an_dernier = les mêmes mois un an avant ; periode_precedente = autant de mois juste avant. | |
| molecule | No | Substance active, d'après la base publique des médicaments (« paracetamol », « amoxicilline ») ; plusieurs séparées par des virgules. Retient tous les médicaments qui la contiennent, associations comprises ; la parapharmacie n'a pas de molécule. Si la réponse dit que la composition n'est pas chargée, donnez les marques dans q ou produit. | |
| stock_max | No | Ne garder que les produits dont le stock actuel est au plus ce nombre (0 = plus en stock), total compris. | |
| type_soin | No | Le type de matériel de soin : gamme_blanche (pansements, compresses, bandes, sparadraps et sets), ou un type précis (sets_pansement, contention, glycemie…). | |
| generiques | No | seules : les génériques ; exclure : princeps et médicaments hors groupe générique. | inclure |
| sous_rayon | No | Sous-rayon SyderaAI (Protection solaire, Sommeil, Anti-Poux, Anti-moustiques & insectes…), nom exact (lister quoi=sous_rayons) ; plusieurs au choix. Pour « mes anti-poux », « mes compléments sommeil ». | |
| laboratoire | No | Nom exact du laboratoire (lister le donne) ; plusieurs au choix, séparés par des virgules ; « (laboratoire non identifié) » retient les produits sans laboratoire. | |
| ponctuelles | No | Les ventes ponctuelles : exclure les écarte (une tendance sans les coups isolés), seules ne garde qu'elles. | inclure |
| saisonniers | No | seules : les produits dont la période fait l'essentiel de l'année, au moins 1,6 fois la part d'une période ordinaire (40 % sur 3 mois, 80 % sur 6 mois ; part_de_l_annee_pct), confirmés l'année d'avant, avec leur stock actuel et l'écart entre les ventes de la saison et ce stock. | inclure |
| associations | No | exclure : la substance seule (paracétamol sans codéine) ; seules : les associations. | inclure |
| marge_pct_max | No | Ne garder que les produits dont la marge des ventes de la période est au plus ce pourcentage : 0 = vendus à perte (d'après le PAMP du logiciel). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and non-destructive, so safety is covered. The description adds useful behavior beyond that: the 100-row cap, that totals always cover everything filters retain even when rows are trimmed, that comparer adds *_avant fields and evolution_ca_pct, and a pricing-scope disclaimer (pharmacy prices only, no market pricing, no advice). However, it does not describe pagination interaction with totals or the vente_ponctuelle/saisonnier detection heuristics in enough precision for the agent to anticipate row-level flags; solid but not fully transparent – a 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with scope and outputs, which is good, but the paragraph is very dense: the return columns are effectively listed twice ('classés par…' then 'unités, chiffre d'affaires TTC et HT…'), and the closing pricing-scope caveat plus the English echo sentence add length without new decision-relevant content. Justified by 24 parameters, but tighten-able.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 24 optional parameters, 96% schema coverage, no output schema and no nested objects, the description supplies the missing pieces: what the totals mean, the row cap and page behavior, the comparison fields, and the domain limits (officine prices only). An agent can call this correctly without further context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 96%, so the schema carries parameter semantics and the baseline is 3. The description nevertheless adds meaning beyond it: it explains what comparer produces (comparison period and evolution), what stock_max=0 signals, how ponctuelles/saisonniers behave, and how tri options pair with comparer. Marginal but real added value over 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?
Opens with a specific verb+resource+scope: products over a period, ranked by units, revenue, margin, margin rate or growth. It enumerates the exact return columns (TTC/HT, marge, PAMP, stock) so an agent can separate it from siblings like ventes_mois or palmares without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit mapping of natural-language questions to parameter combinations ('ce qui me rapporte le plus' → tri=marge; 'prépare-moi l'hiver' → du/saisonniers; 'ce que je vends à perte' → marge_pct_max=0) and explicitly excludes medical/prescription/patient/market-price questions. Nothing is left to inference about when to select this vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ventes_moisVentes d'un moisARead-onlyIdempotentInspect
Toutes les ventes d'un mois, référence par référence (quantité, prix moyen encaissé, PAMP, chiffre d'affaires, marge en euros et en pourcentage, et le même produit le mois précédent), par pages de 100 triées par chiffre d'affaires ; la première page résume aussi le mois rayon par rayon face au mois précédent. Filtres laboratoire, famille, groupe. À utiliser quand le pharmacien veut le détail complet d'un mois donné. Pas pour une question médicale, une posologie, un dossier patient ni un prix du marché. Line-by-line sales of the pharmacy for one month, paginated.
| Name | Required | Description | Default |
|---|---|---|---|
| mois | Yes | AAAA-MM | |
| page | No | ||
| groupe | No | Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile ; medicaments_conseil = sans ordonnance, non remboursés ; medicaments_ordonnance_non_rembourses = sur ordonnance, non remboursés ; medicaments_non_rembourses = les deux ; a_verifier = les produits rangés dans aucun groupe (la ligne « (à vérifier) »). | |
| famille | No | Famille du logiciel (son propre rangement), nom exact (lister le donne) ; plusieurs au choix, séparées par des virgules ; « (sans famille) » retient les produits qui n'en ont aucune. | |
| laboratoire | No | Nom exact du laboratoire (lister le donne) ; plusieurs au choix, séparés par des virgules ; « (laboratoire non identifié) » retient les produits sans laboratoire. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly, idempotent, non-destructive annotations, the description discloses pagination by 100, sorting by revenue, a special first-page summary by rayon versus the previous month, filter dimensions, and the exact metrics returned. No statement contradicts the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core behavior is front-loaded and each part of the description carries useful information. The long metric parenthetical is dense but justified, while the final English sentence partly duplicates the opening.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 five-parameter analytics tool with no output schema, the description explains the returned metrics, pagination behavior, first-page summary, available filters, and usage exclusions. An agent has enough context to call it and interpret the results 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 high and already documents mois, groupe, famille, and laboratoire well. The description adds useful operational semantics for page results, notably 100 rows per page sorted by chiffre d'affaires, though it does not add much beyond the schema for the filter parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: all sales for one month, reference by reference, with named metrics. It implicitly distinguishes the complete detail from summary/top views through 'référence par référence' and 'détail complet', but it does not explicitly name sibling tools such as bilan_mensuel or top_ventes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear usage condition: use when the pharmacist wants the complete detail for a given month. It also lists explicit exclusions (medical question, dosage, patient record, market price), but it does not route the agent to specific alternative tools.
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.
7 tool updates
- Changed
bilan_mensuel2 fields changed- changed
Input schema / properties / groupe / descriptionPrevious value: -"Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile ; medicaments_conseil = sans ordonnance, non remboursés ; medicaments_ordonnance_non_rembourses = sur ordonnance, non remboursés ; medicaments_non_rembourses = les deux."New value: +"Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile ; medicaments_conseil = sans ordonnance, non remboursés ; medicaments_ordonnance_non_rembourses = sur ordonnance, non remboursés ; medicaments_non_rembourses = les deux ; a_verifier = les produits rangés dans aucun groupe (la ligne « (à vérifier) »)." - changed
Input schema / properties / groupe / enumPrevious value: -[ - "parapharmacie", - "medicaments", - "medicaments_rembourses", - "medicaments_non_rembourses", - "medicaments_conseil", - "medicaments_ordonnance_non_rembourses", - "medicaments_prix_fixe", - "lpp", - "laits_infantiles" -]New value: +[ + "parapharmacie", + "medicaments", + "medicaments_rembourses", + "medicaments_non_rembourses", + "medicaments_conseil", + "medicaments_ordonnance_non_rembourses", + "medicaments_prix_fixe", + "lpp", + "laits_infantiles", + "a_verifier" +]
- Changed
chercher_produit3 fields changed- changed
Input schema / properties / anomalie / enumPrevious value: -[ - "prix_achat_improbable", - "sans_prix_achat", - "marge_negative", - "sans_famille", - "sans_laboratoire" -]New value: +[ + "prix_achat_improbable", + "sans_prix_achat", + "marge_negative", + "prix_catalogue_incoherent", + "sans_famille", + "sans_laboratoire" +] - changed
Input schema / properties / groupe / descriptionPrevious value: -"Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile ; medicaments_conseil = sans ordonnance, non remboursés ; medicaments_ordonnance_non_rembourses = sur ordonnance, non remboursés ; medicaments_non_rembourses = les deux."New value: +"Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile ; medicaments_conseil = sans ordonnance, non remboursés ; medicaments_ordonnance_non_rembourses = sur ordonnance, non remboursés ; medicaments_non_rembourses = les deux ; a_verifier = les produits rangés dans aucun groupe (la ligne « (à vérifier) »)." - changed
Input schema / properties / groupe / enumPrevious value: -[ - "parapharmacie", - "medicaments", - "medicaments_rembourses", - "medicaments_non_rembourses", - "medicaments_conseil", - "medicaments_ordonnance_non_rembourses", - "medicaments_prix_fixe", - "lpp", - "laits_infantiles" -]New value: +[ + "parapharmacie", + "medicaments", + "medicaments_rembourses", + "medicaments_non_rembourses", + "medicaments_conseil", + "medicaments_ordonnance_non_rembourses", + "medicaments_prix_fixe", + "lpp", + "laits_infantiles", + "a_verifier" +]
- Changed
couverture_stock2 fields changed- changed
Input schema / properties / groupe / descriptionPrevious value: -"Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile ; medicaments_conseil = sans ordonnance, non remboursés ; medicaments_ordonnance_non_rembourses = sur ordonnance, non remboursés ; medicaments_non_rembourses = les deux."New value: +"Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile ; medicaments_conseil = sans ordonnance, non remboursés ; medicaments_ordonnance_non_rembourses = sur ordonnance, non remboursés ; medicaments_non_rembourses = les deux ; a_verifier = les produits rangés dans aucun groupe (la ligne « (à vérifier) »)." - changed
Input schema / properties / groupe / enumPrevious value: -[ - "parapharmacie", - "medicaments", - "medicaments_rembourses", - "medicaments_non_rembourses", - "medicaments_conseil", - "medicaments_ordonnance_non_rembourses", - "medicaments_prix_fixe", - "lpp", - "laits_infantiles" -]New value: +[ + "parapharmacie", + "medicaments", + "medicaments_rembourses", + "medicaments_non_rembourses", + "medicaments_conseil", + "medicaments_ordonnance_non_rembourses", + "medicaments_prix_fixe", + "lpp", + "laits_infantiles", + "a_verifier" +]
- Changed
palmares2 fields changed- changed
Input schema / properties / groupe / descriptionPrevious value: -"Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile ; medicaments_conseil = sans ordonnance, non remboursés ; medicaments_ordonnance_non_rembourses = sur ordonnance, non remboursés ; medicaments_non_rembourses = les deux."New value: +"Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile ; medicaments_conseil = sans ordonnance, non remboursés ; medicaments_ordonnance_non_rembourses = sur ordonnance, non remboursés ; medicaments_non_rembourses = les deux ; a_verifier = les produits rangés dans aucun groupe (la ligne « (à vérifier) »)." - changed
Input schema / properties / groupe / enumPrevious value: -[ - "parapharmacie", - "medicaments", - "medicaments_rembourses", - "medicaments_non_rembourses", - "medicaments_conseil", - "medicaments_ordonnance_non_rembourses", - "medicaments_prix_fixe", - "lpp", - "laits_infantiles" -]New value: +[ + "parapharmacie", + "medicaments", + "medicaments_rembourses", + "medicaments_non_rembourses", + "medicaments_conseil", + "medicaments_ordonnance_non_rembourses", + "medicaments_prix_fixe", + "lpp", + "laits_infantiles", + "a_verifier" +]
- Changed
stock_dormant2 fields changed- changed
Input schema / properties / groupe / descriptionPrevious value: -"Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile ; medicaments_conseil = sans ordonnance, non remboursés ; medicaments_ordonnance_non_rembourses = sur ordonnance, non remboursés ; medicaments_non_rembourses = les deux."New value: +"Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile ; medicaments_conseil = sans ordonnance, non remboursés ; medicaments_ordonnance_non_rembourses = sur ordonnance, non remboursés ; medicaments_non_rembourses = les deux ; a_verifier = les produits rangés dans aucun groupe (la ligne « (à vérifier) »)." - changed
Input schema / properties / groupe / enumPrevious value: -[ - "parapharmacie", - "medicaments", - "medicaments_rembourses", - "medicaments_non_rembourses", - "medicaments_conseil", - "medicaments_ordonnance_non_rembourses", - "medicaments_prix_fixe", - "lpp", - "laits_infantiles" -]New value: +[ + "parapharmacie", + "medicaments", + "medicaments_rembourses", + "medicaments_non_rembourses", + "medicaments_conseil", + "medicaments_ordonnance_non_rembourses", + "medicaments_prix_fixe", + "lpp", + "laits_infantiles", + "a_verifier" +]
- Changed
top_ventes2 fields changed- changed
Input schema / properties / groupe / descriptionPrevious value: -"Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile ; medicaments_conseil = sans ordonnance, non remboursés ; medicaments_ordonnance_non_rembourses = sur ordonnance, non remboursés ; medicaments_non_rembourses = les deux."New value: +"Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile ; medicaments_conseil = sans ordonnance, non remboursés ; medicaments_ordonnance_non_rembourses = sur ordonnance, non remboursés ; medicaments_non_rembourses = les deux ; a_verifier = les produits rangés dans aucun groupe (la ligne « (à vérifier) »)." - changed
Input schema / properties / groupe / enumPrevious value: -[ - "parapharmacie", - "medicaments", - "medicaments_rembourses", - "medicaments_non_rembourses", - "medicaments_conseil", - "medicaments_ordonnance_non_rembourses", - "medicaments_prix_fixe", - "lpp", - "laits_infantiles" -]New value: +[ + "parapharmacie", + "medicaments", + "medicaments_rembourses", + "medicaments_non_rembourses", + "medicaments_conseil", + "medicaments_ordonnance_non_rembourses", + "medicaments_prix_fixe", + "lpp", + "laits_infantiles", + "a_verifier" +]
- Changed
ventes_mois2 fields changed- changed
Input schema / properties / groupe / descriptionPrevious value: -"Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile ; medicaments_conseil = sans ordonnance, non remboursés ; medicaments_ordonnance_non_rembourses = sur ordonnance, non remboursés ; medicaments_non_rembourses = les deux."New value: +"Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile ; medicaments_conseil = sans ordonnance, non remboursés ; medicaments_ordonnance_non_rembourses = sur ordonnance, non remboursés ; medicaments_non_rembourses = les deux ; a_verifier = les produits rangés dans aucun groupe (la ligne « (à vérifier) »)." - changed
Input schema / properties / groupe / enumPrevious value: -[ - "parapharmacie", - "medicaments", - "medicaments_rembourses", - "medicaments_non_rembourses", - "medicaments_conseil", - "medicaments_ordonnance_non_rembourses", - "medicaments_prix_fixe", - "lpp", - "laits_infantiles" -]New value: +[ + "parapharmacie", + "medicaments", + "medicaments_rembourses", + "medicaments_non_rembourses", + "medicaments_conseil", + "medicaments_ordonnance_non_rembourses", + "medicaments_prix_fixe", + "lpp", + "laits_infantiles", + "a_verifier" +]
7 tool updates
- Changed
bilan_mensuel3 fields changed- changed
Input schema / properties / groupe / descriptionPrevious value: -"Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile."New value: +"Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile ; medicaments_conseil = sans ordonnance, non remboursés ; medicaments_ordonnance_non_rembourses = sur ordonnance, non remboursés ; medicaments_non_rembourses = les deux." - changed
Input schema / properties / groupe / enumPrevious value: -[ - "parapharmacie", - "medicaments", - "medicaments_rembourses", - "medicaments_non_rembourses", - "medicaments_prix_fixe", - "lpp", - "laits_infantiles" -]New value: +[ + "parapharmacie", + "medicaments", + "medicaments_rembourses", + "medicaments_non_rembourses", + "medicaments_conseil", + "medicaments_ordonnance_non_rembourses", + "medicaments_prix_fixe", + "lpp", + "laits_infantiles" +] - changed
Input schema / properties / mois / descriptionPrevious value: -"Les N derniers mois, le mois en cours compris (ignoré avec du/au)."New value: +"Les N derniers mois pleins ; le mois en cours est rendu à part (ignoré avec du/au)."
- Changed
chercher_produit1 field changed- added
Input schema / properties / groupeAdded value: +{ + "description": "Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile ; medicaments_conseil = sans ordonnance, non remboursés ; medicaments_ordonnance_non_rembourses = sur ordonnance, non remboursés ; medicaments_non_rembourses = les deux.", + "enum": [ + "parapharmacie", + "medicaments", + "medicaments_rembourses", + "medicaments_non_rembourses", + "medicaments_conseil", + "medicaments_ordonnance_non_rembourses", + "medicaments_prix_fixe", + "lpp", + "laits_infantiles" + ], + "type": "string" +}
- Changed
couverture_stock2 fields changed- changed
Input schema / properties / groupe / descriptionPrevious value: -"Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile."New value: +"Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile ; medicaments_conseil = sans ordonnance, non remboursés ; medicaments_ordonnance_non_rembourses = sur ordonnance, non remboursés ; medicaments_non_rembourses = les deux." - changed
Input schema / properties / groupe / enumPrevious value: -[ - "parapharmacie", - "medicaments", - "medicaments_rembourses", - "medicaments_non_rembourses", - "medicaments_prix_fixe", - "lpp", - "laits_infantiles" -]New value: +[ + "parapharmacie", + "medicaments", + "medicaments_rembourses", + "medicaments_non_rembourses", + "medicaments_conseil", + "medicaments_ordonnance_non_rembourses", + "medicaments_prix_fixe", + "lpp", + "laits_infantiles" +]
- Changed
palmares2 fields changed- changed
Input schema / properties / groupe / descriptionPrevious value: -"Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile."New value: +"Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile ; medicaments_conseil = sans ordonnance, non remboursés ; medicaments_ordonnance_non_rembourses = sur ordonnance, non remboursés ; medicaments_non_rembourses = les deux." - changed
Input schema / properties / groupe / enumPrevious value: -[ - "parapharmacie", - "medicaments", - "medicaments_rembourses", - "medicaments_non_rembourses", - "medicaments_prix_fixe", - "lpp", - "laits_infantiles" -]New value: +[ + "parapharmacie", + "medicaments", + "medicaments_rembourses", + "medicaments_non_rembourses", + "medicaments_conseil", + "medicaments_ordonnance_non_rembourses", + "medicaments_prix_fixe", + "lpp", + "laits_infantiles" +]
- Changed
stock_dormant2 fields changed- changed
Input schema / properties / groupe / descriptionPrevious value: -"Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile."New value: +"Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile ; medicaments_conseil = sans ordonnance, non remboursés ; medicaments_ordonnance_non_rembourses = sur ordonnance, non remboursés ; medicaments_non_rembourses = les deux." - changed
Input schema / properties / groupe / enumPrevious value: -[ - "parapharmacie", - "medicaments", - "medicaments_rembourses", - "medicaments_non_rembourses", - "medicaments_prix_fixe", - "lpp", - "laits_infantiles" -]New value: +[ + "parapharmacie", + "medicaments", + "medicaments_rembourses", + "medicaments_non_rembourses", + "medicaments_conseil", + "medicaments_ordonnance_non_rembourses", + "medicaments_prix_fixe", + "lpp", + "laits_infantiles" +]
- Changed
top_ventes3 fields changed- changed
Input schema / properties / groupe / descriptionPrevious value: -"Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile."New value: +"Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile ; medicaments_conseil = sans ordonnance, non remboursés ; medicaments_ordonnance_non_rembourses = sur ordonnance, non remboursés ; medicaments_non_rembourses = les deux." - changed
Input schema / properties / groupe / enumPrevious value: -[ - "parapharmacie", - "medicaments", - "medicaments_rembourses", - "medicaments_non_rembourses", - "medicaments_prix_fixe", - "lpp", - "laits_infantiles" -]New value: +[ + "parapharmacie", + "medicaments", + "medicaments_rembourses", + "medicaments_non_rembourses", + "medicaments_conseil", + "medicaments_ordonnance_non_rembourses", + "medicaments_prix_fixe", + "lpp", + "laits_infantiles" +] - changed
Input schema / properties / saisonniers / descriptionPrevious value: -"seules : les produits dont la période fait au moins 40 % des ventes de l'année (part_de_l_annee_pct), avec leur stock actuel et l'écart entre les ventes de la saison et ce stock."New value: +"seules : les produits dont la période fait l'essentiel de l'année, au moins 1,6 fois la part d'une période ordinaire (40 % sur 3 mois, 80 % sur 6 mois ; part_de_l_annee_pct), confirmés l'année d'avant, avec leur stock actuel et l'écart entre les ventes de la saison et ce stock."
- Changed
ventes_mois2 fields changed- changed
Input schema / properties / groupe / descriptionPrevious value: -"Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile."New value: +"Le statut des produits, classement SyderaAI (pas une famille du logiciel) : parapharmacie = ni médicament, ni LPP, ni lait infantile ; medicaments_conseil = sans ordonnance, non remboursés ; medicaments_ordonnance_non_rembourses = sur ordonnance, non remboursés ; medicaments_non_rembourses = les deux." - changed
Input schema / properties / groupe / enumPrevious value: -[ - "parapharmacie", - "medicaments", - "medicaments_rembourses", - "medicaments_non_rembourses", - "medicaments_prix_fixe", - "lpp", - "laits_infantiles" -]New value: +[ + "parapharmacie", + "medicaments", + "medicaments_rembourses", + "medicaments_non_rembourses", + "medicaments_conseil", + "medicaments_ordonnance_non_rembourses", + "medicaments_prix_fixe", + "lpp", + "laits_infantiles" +]
11 tool updates
- First observed
bilan_mensuel - First observed
chercher_produit - First observed
couverture_stock - First observed
fiche_produit - First observed
gamme_laboratoire - First observed
lister - First observed
officine - First observed
palmares - First observed
stock_dormant - First observed
top_ventes - First observed
ventes_mois
Related MCP Connectors
Ask Claude or ChatGPT about your PrestaShop sales, stock and orders. Safe edits with undo.
Query your books, company data, business health, and ship invoices from your AI assistant.
Odoo MCP connector for ChatGPT and Claude: ask sales, invoices and stock in plain words. Read-only.
Connect your Odoo to Claude and ChatGPT: ask about sales, stock, customers and invoices.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceEnables read-only investigation of NOVA's Dolibarr accounting and commercial data through an AI assistant, with privacy protection and deterministic accounting rules.-
- FlicenseNot gradedqualityAmaintenanceEnables integrated search and ordering across eight pharmaceutical wholesalers to compare prices and manage inventory. Users can monitor stock levels and execute orders through natural language commands in Claude.-
- FlicenseNot gradedqualityCmaintenanceEnables fully local retrieval-augmented generation over pharmaceutical sales intelligence, providing MCP tools to search drug labels, clinical trial outcomes, and sales call notes via natural-language queries.-
- FlicenseNot gradedqualityDmaintenanceEnables AI-powered analysis of healthcare market segments, product comparisons, and sales data insights using natural language processing and retrieval-augmented generation.2-
Glama MCP Gateway
Add one secure layer between your agents and this server.