MADATA / DEV developer docs Français madata.africa

Tool catalog

The registry holds 155 tools; 150 are exposed over MCP (73 read, 77 write). The list actually visible on a workspace depends on the installed modules, the user's permissions and the key scope.

01How to read this catalog

Each tool carries annotations the AI client uses to decide what it can do without asking:

  • read: changes nothing, idempotent.
  • write: creates or modifies data.
  • destructive: cancels or deletes existing data (reverse_move, close_pos_session, refund_payslip…).
  • outbound: touches a third party: email, WhatsApp, tax platform (send_email, send_invoice_to_fne…).

required / optional list the input parameters. The full JSON schema of each tool is returned by tools/list.

Descriptions

The descriptions below are shown as returned by tools/list: that is the text the assistant receives. The API returns them in French.

Multi-company

Write tools also get a company_name parameter injected automatically, useful if the workspace runs several companies.

02Agent, memory & planning

8 tools.

Agent & control

4 tools
suggest_feature_request read

Enregistre une demande de fonctionnalite OU un signalement de bug : capacite reellement inexistante, module non installe, integration externe non supportee (banque, SMS, site marchand tiers), ou dysfonctionnement rapporte par l'utilisateur. SEUL moyen d'enregistrer une suggestion ou un bug : ne pretends JAMAIS l'avoir transmis sans cet appel. 'title' et 'description' doivent decrire le vrai besoin ou le vrai bug, jamais un rapport generique. NE l'appelle PAS si l'utilisateur n'a pas encore decrit le probleme, si tu peux repondre meme partiellement, ni pour une erreur de droits d'acces.

required title · optional description, category

propose_questionnaire read

Affiche un QUESTIONNAIRE d'actions cliquable (cases a cocher + bouton Lancer) au lieu d'une liste d'options en texte. Appelle-le DES QUE tu proposes plusieurs actions au choix (corriger des anomalies compta, exporter, ouvrir des pieces, contacter le comptable). Une option par action concrete ; chaque option porte un 'prompt' = l'instruction que TU executeras si elle est cochee. N'ecris PAS la liste en texte a cote.

required title, options

emit_plan read

Affiche une TODO-LISTE d'execution visible (plan multi-etapes) que l'utilisateur voit se cocher au fur et a mesure. Appelle CET outil AU DEBUT d'une tache LONGUE ou multi-etapes (3 etapes ou plus), AVANT de commencer : ex. cycle de paie (creer employe -> contrat -> fiche -> valider -> envoyer), cloture, import suivi de traitements, audit puis corrections. Donne 2 a 8 etapes courtes a l'imperatif. Ensuite, appelle update_plan_step apres CHAQUE etape terminee pour la marquer 'done'. N'utilise PAS cet outil pour une action unique simple.

required steps

update_plan_step read

Met a jour l'etat d'UNE etape de la todo-liste affichee par emit_plan. Appelle-le des qu'une etape demarre (status 'running') ou se termine (status 'done'). 'index' est la position de l'etape (0 = premiere). Marquer une etape 'done' passe automatiquement la suivante en 'running'.

required index, status

Memory

3 tools
remember write

Memorise DURABLEMENT un fait pour les PROCHAINES conversations. Appelle-le quand l'utilisateur exprime une preference stable, une regle de gestion ou un fait durable sur lui ou son entreprise (ex. 'mes relances partent a 30 jours', 'mon comptable est M. Kone'). 'name' = slug court (permet de mettre a jour la meme memoire plus tard), 'content' clair, 'description' d'une ligne. N'enregistre PAS de donnees sensibles (mots de passe) ni d'elements ephemeres propres a la conversation en cours.

required content · optional name, type, description, scope

recall read

Recherche dans ta memoire long-terme les faits durables deja enregistres sur l'utilisateur ou son entreprise. Utilise-le pour verifier si une preference/regle a deja ete memorisee avant d'agir.

required query

forget writedestructive

Oublie (desactive) une memoire long-terme devenue fausse ou obsolete, identifiee par sa cle 'name'. A utiliser quand l'utilisateur dit qu'une preference/regle a change ou n'est plus valable.

required name

Autonomous scheduling

1 tool
schedule_task write

Planifie une TACHE RECURRENTE que tu executeras seul a la frequence indiquee (ex. chaque lundi : sortir le CA et les impayes ; chaque mois : rapport d'activite envoye par email). Appelle CET outil des que l'utilisateur demande de faire quelque chose REGULIEREMENT, AUTOMATIQUEMENT ou A INTERVALLE. Donne une consigne claire et complete dans 'instruction'. Si l'utilisateur veut recevoir le resultat par email, mets send_report=true et report_email_to.

required instruction · optional name, interval_number, interval_type, send_report, report_email_to

03KPIs & dashboards

14 tools.

get_kpi read

Indicateurs cles d'une periode, avec COMPARAISON automatique a la periode equivalente precedente ('periode_precedente' et 'evolution' en %). C'est l'outil a appeler EN PREMIER pour toute demande de synthese / bilan / point d'activite. Contient : ca_facture_ht et ca_facture_ttc (LE chiffre d'affaires : factures comptabilisees, avoirs deduits), ventes_total (commandes confirmees TTC = prise de commande, a NE PAS appeler chiffre d'affaires), achats, tresorerie, factures clients impayees dont la part DEJA ECHUE (factures_impayees_echues_total/count), ET les indicateurs operationnels de l'espace : FABRICATION (ordres en cours, termines, quantite produite) et STOCK (livraisons a traiter et livraisons_en_retard). Le champ 'bases_de_calcul' explique ce que chaque montant recouvre : lis-le avant de nommer un chiffre. A utiliser pour toute question sur les impayes, les creances, mais AUSSI les KPI de fabrication / production / stock. Pour les KPI d'un autre module non couvert ici, compose aggregate_records sur le modele concerne.

optional period

get_crm_kpi read

KPI CRM AGREGES (vue d'ensemble) : pipeline par etape (nom, nombre, CA potentiel), taux de gain, top 5 commerciaux, opportunites sans activite depuis plus de 7 jours. period = 'month'|'quarter'|'year' (defaut month). NE repond PAS a 'meilleures/top opportunites' : pour lister ou classer des opportunites individuelles, prendre search_opportunities.

optional period, salesperson_name

get_project_kpi read

KPI projets : taches par etape, taches en retard, taux d'avancement global, alertes. project_name = filtre optionnel.

optional project_name

get_pos_kpi read

KPI Point de Vente : sessions ouvertes, CA du jour, ticket moyen, repartition par mode de paiement. date = 'today'|'YYYY-MM-DD' (defaut today).

optional date, pos_config_name

get_pos_cash_discrepancies read

Ecarts de caisse des sessions Point de Vente sur une periode : difference entre le solde theorique de cloture et le solde reel compte (positif = surplus, negatif = manquant). Filtres : date_from/date_to (YYYY-MM-DD, defaut = mois en cours), pos_config_name (nom de la caisse), only_discrepancies=true pour ne renvoyer que les sessions avec un ecart non nul. Renvoie chaque session (caisse, caissier, soldes, ecart) et le total des ecarts. A utiliser des qu'on demande les ecarts/differences/manquants de caisse sur une periode (jour, mois, annee).

optional date_from, date_to, pos_config_name, only_discrepancies

get_helpdesk_kpi read

KPI Helpdesk : tickets ouverts par equipe/priorite, temps moyen de resolution, tickets en retard.

optional team_name

get_fleet_kpi read

KPI Flotte : nombre de vehicules par statut, contrats a renouveler, kilometrage moyen, couts du dernier mois.

get_transport_kpi read

KPI Transport de vrac : tonnage livre, revenu estime, nombre de rotations, cout carburant, marge, meilleurs chauffeurs, matieres les plus transportees, clients les plus rentables et depense par camion. periode = day | week | month | year (defaut week).

optional periode

get_subscription_kpi read

Tableau de bord complet des abonnements : MRR (revenu mensuel recurrent), ARR, nombre d'abonnements actifs, renouvellements imminents, resiliations du mois, en pause, evolution du revenu recurrent sur 12 mois, echeances, alertes et top clients par MRR. Prefere cet outil a get_kpi pour toute question sur les abonnements (MRR, churn, renouvellements, ARR). Parametre optionnel : period.

optional period

get_rental_kpi read

Tableau de bord complet des locations : en cours (biens chez le client), a remettre, retours sous 7 jours, retards, revenu du mois, evolution sur 12 mois, echeancier, alertes et top biens loues. Prefere cet outil a get_kpi pour toute question sur les locations. Parametre optionnel : period.

optional period

get_hr_analytics read

Analyse RH : effectif total et par departement, conges en cours, conges en attente de validation, heures supplementaires si dispo.

get_cash_flow read

Projection de tresorerie A L'ECHEANCE : encaissements attendus (factures clients non payees) et decaissements prevus (factures fournisseurs). horizon_weeks = 1..12 (defaut 4). 'weeks' ventile la TOTALITE de l'encours et chaque ligne porte un 'kind' : 'overdue' = deja echu (exigible tout de suite), 'week' = semaine a venir, 'beyond' = au-dela de l'horizon. La somme des lignes egale les totaux : ne presente jamais un total sans les lignes qui le composent. Fournit aussi la balance agee des creances (balance_agee_creances) et les 5 plus gros debiteurs echus (top_debiteurs_echus), qui sont la matiere d'un plan de relance. Si le champ 'lecture' est present, suis-le.

optional horizon_weeks

get_revenue_forecast read

Estime le chiffre d'affaires FUTUR (previsionnel, prevision, projection) d'une annee a venir a partir de la TENDANCE du CA realise des annees passees. A utiliser des qu'on demande un 'chiffre d'affaires previsionnel', une 'prevision', une 'projection' ou une 'estimation' de CA pour une annee future (ex. 2027, 2028), ou 'combien vais-je faire l'an prochain'. NE PAS refuser ce type de demande : appeler cet outil. Renvoie l'historique annuel du CA, la valeur projetee, le taux de croissance annuel moyen, la methode et un avertissement (estimation non garantie). Montants en devise de la societe, calcules depuis les ecritures validees (droits utilisateur appliques).

optional target_year, years_history

get_attendance_summary read

Synthese des presences : heures travaillees par employe sur une periode (a partir des pointages).

optional employee_name, period

04Business reads

24 tools.

search_sales read

Liste les commandes de vente confirmees sur une periode.

optional date_from, date_to, limit

search_purchases read

Liste les bons de commande d'achat sur une periode.

optional date_from, date_to, limit

get_stock read

Etat du stock : produits avec le plus / moins de quantite disponible.

optional product, limit

get_stock_card read

Fiche de stock / historique de mouvement d'un ou plusieurs produits : stock initial, entrees et sorties detaillees (date, type, reference, partenaire), solde courant et valeur, sur une periode. Renvoie TOUJOURS un recapitulatif par produit (initial / entrees / sorties / final / valeur) ; et le DETAIL mouvement par mouvement quand un produit ou une categorie est precise. Utilise cet outil des qu'on demande l'historique des mouvements, la fiche/carte de stock, les entrees-sorties d'un produit, ou le solde a une date. IMPORTANT : c'est aussi la reponse quand l'utilisateur signale que l'EXPORT PDF de la fiche de stock echoue ou est trop volumineux (des milliers de produits saturent le generateur PDF) : ne renvoie pas vers le PDF, propose plutot de filtrer sur un produit / une categorie et affiche les donnees ici, ou conseille l'export Excel qui gere les gros volumes. Parametres : product = nom produit (partiel OK) ; category = categorie ; date_from / date_to = AAAA-MM-JJ (defaut : depuis le 1er janvier jusqu'a aujourd'hui) ; location = nom emplacement (defaut : entrepot interne principal) ; limit = nombre max de produits au recapitulatif.

optional product, category, date_from, date_to, location, limit

search_invoices read

Liste les factures clients. Par defaut, uniquement les factures impayees (creances clients en attente de paiement) avec leur montant restant du et leur echeance. Mettre only_unpaid=false pour inclure toutes les factures validees.

optional only_unpaid, date_from, date_to, limit

search_contacts read

Recherche des contacts (clients, fournisseurs, employes). name = filtre sur le nom (partiel OK) ; email = filtre email ; contact_type = customer|supplier|any (defaut: any) ; country = pays (nom ou code).

optional name, email, contact_type, country, limit

search_products read

Recherche et COMPTE des produits dans le catalogue. name = filtre nom produit (partiel OK) ; categ = categorie produit ; ref = reference interne ; price = prix de vente EXACT (ex. 1 pour 'produits a 1 franc') ; min_price / max_price = bornes de prix de vente (inclusives). Utilise cet outil des qu'on interroge les produits par prix ('combien de produits a X', 'produits a moins de X', 'entre X et Y') : NE refuse JAMAIS, ne propose pas de fonctionnalite. Le champ 'total_matching' du resultat donne le decompte reel (au-dela des lignes affichees) pour les questions 'combien ?'.

optional name, categ, ref, price, min_price, max_price, limit

search_opportunities read

Liste les opportunites CRM une par une, TRIEES PAR CHIFFRE D'AFFAIRES POTENTIEL DECROISSANT. Outil a utiliser pour 'meilleures opportunites', 'plus grosses opportunites', 'top opportunites', 'classement des opportunites', ou toute recherche d'opportunites individuelles (avec nom, client, commercial, etape et montant de chacune). salesperson = filtre commercial (nom) ; stage = etape du pipeline ; min_amount = montant attendu minimum. Pour une VUE D'ENSEMBLE agregee (pipeline par etape, taux de gain), prendre get_crm_kpi.

optional salesperson, stage, min_amount, limit

search_tasks read

Recherche des taches de projet. project_name = filtre projet ; assignee = filtre utilisateur assigne (nom) ; stage = etape (todo/in_progress/done) ; overdue = true pour les taches en retard uniquement.

optional project_name, assignee, stage, overdue, limit

search_pos_orders read

Recherche des commandes POS. Filtres : date_from/date_to (YYYY-MM-DD), customer_name, session_name, state ('done'|'paid'|'cancel'). Renvoie les commandes avec details.

optional date_from, date_to, customer_name, session_name, state

search_tickets read

Recherche des tickets helpdesk. Filtres : team_name, stage_name, partner_name, assignee_name, priority (0/1/2/3), overdue=true.

optional team_name, stage_name, partner_name, assignee_name, priority, overdue

search_vehicles read

Recherche des vehicules de flotte. Filtres : driver_name, model_name, state_name, contract_expiring_soon=true.

optional driver_name, model_name, state_name, contract_expiring_soon

search_rotations read

Recherche des rotations (voyages) de transport. Filtres : projet_name, camion (nom ou immatriculation), chauffeur_name, matiere_name, etat (brouillon | effectuee | annulee), depuis (YYYY-MM-DD), jusqua (YYYY-MM-DD). Renvoie tonnage net, carburant, N° BL et ticket pont-bascule.

optional projet_name, camion, chauffeur_name, matiere_name, etat, depuis, jusqua, limit

search_manufacturing_orders read

Liste les ordres de fabrication (OF) avec produit, quantite prevue/produite, etat et date planifiee. A utiliser pour 'mes OF en cours', 'ordres de fabrication en retard', 'que produit-on cette semaine'. state = draft|confirmed|progress|to_close|done|cancel, ou 'open' pour tout ce qui n'est ni termine ni annule ; late = true pour les OF dont la date planifiee est depassee ; product = filtre produit ; date_from / date_to = AAAA-MM-JJ sur la date planifiee.

optional state, product, late, date_from, date_to, limit

search_stock_pickings read

Liste les transferts de stock : livraisons clients, receptions fournisseurs et transferts internes, avec partenaire, origine, etat et date prevue. A utiliser pour 'mes livraisons en attente', 'receptions du jour', 'transferts en retard'. kind = outgoing (livraison) | incoming (reception) | internal ; state = draft|waiting|confirmed|assigned|done|cancel, ou 'open' pour tout ce qui reste a traiter ; late = true pour les transferts dont la date prevue est depassee ; partner = filtre client/fournisseur.

optional kind, state, partner, late, limit

search_events read

Liste les evenements de l'agenda. Filtres optionnels : period (today/week/month/quarter/year), date_from/date_to (AAAA-MM-JJ), partner_name (participant). Par defaut : les evenements a venir.

optional period, date_from, date_to, partner_name, limit

search_recurring_payments read

Liste les paiements recurrents (echeanciers automatiques) avec partenaire, montant, periodicite, plage de dates et statut. A utiliser pour 'mes prelevements recurrents', 'abonnements de paiement', 'echeanciers en cours'. state = draft|done ; payment_type = inbound (encaissement) | outbound (decaissement) ; active_only = true pour ceux dont la periode couvre aujourd'hui ; partner = filtre.

optional state, payment_type, partner, active_only, limit

get_fiscal_years read

Liste les exercices fiscaux (nom, dates de debut et de fin, societe) et designe celui qui couvre la date du jour. A utiliser pour 'quel est mon exercice en cours', 'dates de mon exercice fiscal', ou avant de raisonner sur un bilan / une cloture annuelle.

optional limit

get_customer_statement read

Releve de compte client : commandes, montants factures, solde du (reste a payer) par client, avec totaux. Filtres optionnels par periode. Utile pour repondre a 'combien me doit ce client' ou preparer une relance.

required partner_name · optional date_from, date_to

list_overdue_followups read

Liste les clients en retard de paiement (relances) : montant echu, montant total du, niveau de relance atteint. Tri par montant echu decroissant.

optional limit

get_timesheet_summary read

Synthese des feuilles de temps. Filtres : employee_name, project_name, date_from/date_to (YYYY-MM-DD). Renvoie heures par employe et par projet.

optional employee_name, project_name, date_from, date_to

get_customer_wallet read

Solde du portefeuille (wallet / credit prepaye) d'un client du point de vente, avec ses dernieres transactions (recharges et debits).

required partner_name

search_bank_statements read

Liste les releves bancaires (solde de depart/fin, nombre de lignes).

optional limit

get_bank_reconciliation_status read

Etat du rapprochement bancaire : nombre de lignes bancaires non lettrees (a rapprocher) et montant concerne, par journal de banque.

optional journal_name

05Accounting & finance

13 tools.

get_accounting_summary read

Synthese comptable chiffree sur une periode (facon compte de resultat) : produits (chiffre d'affaires et autres produits), charges, resultat (benefice ou perte), plus les postes cles de tresorerie, creances clients, dettes fournisseurs et TVA nette. A utiliser pour 'indicateurs comptables', 'compte de resultat', 'ou en est ma compta', 'mon resultat', 'mes charges', 'mon benefice'. Montants en devise de la societe, calcules depuis les ecritures comptables validees (droits utilisateur appliques).

optional period

get_balance_sheet read

Bilan comptable (ACTIF / PASSIF) a une date donnee, structure facon SYSCOHADA : a l'actif les immobilisations, stocks, creances et tresorerie ; au passif les capitaux propres, le resultat de l'exercice et les dettes. A utiliser des qu'on demande 'le bilan', 'bilan comptable', 'actif passif', 'situation patrimoniale'. Cumulatif depuis l'origine jusqu'a la date (defaut: aujourd'hui), en devise de la societe, depuis les ecritures validees.

optional date_to

check_accounting_consistency read

Analyse les incoherences / anomalies de la comptabilite (audit rapide, facon SYSCOHADA) a partir des ecritures validees : balance generale desequilibree (total debit != total credit), comptes au solde anormal (un compte d'actif au solde crediteur, un compte de passif/produit au solde debiteur, etc.), ecritures comptables non equilibrees, lignes sans compte. A utiliser des qu'on demande des 'incoherences', 'anomalies comptables', 'erreurs de compta', 'auditer ma compta', 'verifier ma comptabilite', 'controle de coherence'. Renvoie la liste des anomalies detectees avec des exemples (chaque exemple porte un 'record_url' et un libelle complet 'name' code+nom : cite TOUJOURS les comptes et pieces par ce libelle complet pour qu'ils soient cliquables). Ne corrige rien (lecture seule, droits utilisateur appliques).

optional date_from, date_to

export_accounting read

Genere un fichier comptable telechargeable (XLSX par defaut, ou CSV) a partir des ecritures validees, facon SYSCOHADA. report = balance (balance generale : par compte, debit/credit/solde) | grand_livre (ecritures detaillees compte par compte) | journal (ecritures par journal) | bilan (actif/passif) | compte_resultat (produits/charges/resultat) | incoherences (liste des anomalies / incoherences comptables detectees par l'audit de coherence). A utiliser quand on demande d'EXPORTER ou de TELECHARGER en Excel/tableur un etat comptable OU le resultat d'une analyse d'incoherences. Pour un simple affichage chiffre, preferer get_balance_sheet ou get_accounting_summary ; pour afficher les anomalies sans fichier, check_accounting_consistency.

required report · optional format, date_from, date_to

generate_accounting_report read

Genere un etat comptable en PDF telechargeable, mis en page facon SYSCOHADA. doc = bilan (ACTIF/PASSIF a une date) | compte_resultat (produits, charges, resultat sur une periode) | balance (balance generale par compte) | incoherences (rapport des anomalies / incoherences comptables detectees par l'audit de coherence). A utiliser quand on demande le bilan / compte de resultat / la balance / un rapport d'incoherences EN PDF ou 'a imprimer'. Les montants sont calcules depuis les ecritures validees (droits utilisateur appliques).

required doc · optional period, date_from, date_to

generate_financial_report read

Genere un RAPPORT COMPTABLE du catalogue complet en PDF ou XLSX, via un parcours guide a choix (l'utilisateur selectionne dans l'interface). report_key : general_ledger (grand livre), journal_ledger (livre des journaux), trial_balance (balance generale), aged_partner (balance agee partenaires), open_items (creances/dettes non lettrees), vat_report (rapport TVA), balance_sheet (bilan), profit_loss (compte de resultat), cash_flow (flux de tresorerie), daybook (carnet de jour), cashbook (livre de caisse), bankbook (livret de banque), tva_ci (declaration TVA CI), budget (analyse budgetaire), assets (immobilisations), analytic (rapports analytiques). IMPORTANT : appelle cet outil SANS inventer de parametres ; s'il manque un choix, il renvoie 'needs_report_choices' et l'interface affiche les options. Quand l'utilisateur a choisi, rappelle l'outil en passant EXACTEMENT les valeurs selectionnees (report_key, format, period ou date_from/date_to/date_at, target_move, advanced, adv_done). Apres generation, propose d'envoyer le fichier par email avec send_email(attachment_id=...).

optional report_key, format, period, date_from, date_to, date_at, target_move, advanced, adv_done

create_journal_entry write

Cree une ecriture comptable (operation diverse) et la COMPTABILISE. A utiliser pour passer une ecriture d'ajustement, de regularisation ou de correction d'un solde anormal. journal = nom ou code du journal (defaut: journal d'operations diverses) ; date = AAAA-MM-JJ (defaut: aujourd'hui) ; ref = libelle de la piece (optionnel) ; lines = liste d'au moins deux lignes [{account, debit, credit, partner?, label?}] ou 'account' = code OU nom du compte. Si la somme des debits n'egale pas la somme des credits, une ligne d'equilibrage est AJOUTEE AUTOMATIQUEMENT sur un compte d'attente (471) : ne demande JAMAIS a l'utilisateur d'ajuster les montants. balancing_account (optionnel) = code du compte d'attente a utiliser.

required lines · optional journal, date, ref, balancing_account

reverse_move writedestructive

Contre-passe (extourne) une ecriture comptable deja comptabilisee en creant l'ecriture inverse. Pour annuler proprement une piece erronee SANS la supprimer. move_id = id de la piece (prioritaire) ou move_ref = numero/nom ; date = date de l'extourne (optionnel) ; reason = motif (optionnel).

optional move_id, move_ref, date, reason

post_move write

Comptabilise (valide) une piece comptable en brouillon (facture, ecriture). move_id = id de la piece (prioritaire) ou move_ref = numero/nom.

optional move_id, move_ref

fix_abnormal_balances write

Corrige EN UNE SEULE ecriture, equilibree par construction, TOUS les comptes au solde anormal (sens contraire a leur nature). A PRIVILEGIER quand on demande de « corriger les comptes au solde anormal » : chaque compte anormal est ramene a zero et la contrepartie totale va sur un compte d'attente (471). L'equilibre est garanti cote serveur : tu n'as JAMAIS a calculer ni ajuster des montants. accounts (optionnel) = liste de codes/noms a corriger (defaut: tous) ; journal, date, balancing_account, date_from/date_to optionnels. Apres correction, re-verifie avec check_accounting_consistency.

optional accounts, journal, date, balancing_account, date_from, date_to, ref

fix_accounting_anomalies write

Corrige TOUTES les anomalies comptables detectees par check_accounting_consistency, chacune EQUILIBREE PAR CONSTRUCTION via le compte d'attente 471. A PRIVILEGIER quand on demande de « corriger les anomalies » : gere a la fois les comptes au solde anormal (ecriture d'ajustement par societe), les lignes sans compte (reimputation sur 471) et les ecritures desequilibrees (ligne d'equilibrage sur 471, ce qui corrige AUSSI la balance generale desequilibree). Regroupe par societe, resout journal et compte d'attente automatiquement : tu n'as JAMAIS a demander le journal ni a ajuster des montants. types (optionnel) = sous-ensemble parmi solde_anormal / ligne_sans_compte / ecriture_desequilibree (defaut: tous). journal, date, balancing_account, date_from/date_to, ref optionnels. NE corrige PAS (volontairement) les comptes de transit non soldes (471, 477...) ni les indicateurs a verifier (T.V.A. au sens inhabituel, tresorerie creditrice...) : ce sont des points a INVESTIGUER manuellement (lettrage, rapprochement, piece manquante), pas des erreurs a solder a l'aveugle ; explique-le a l'utilisateur au lieu de promettre de les corriger. Les lignes de section / note d'une facture n'ont pas de compte par nature : ce ne sont pas des lignes sans compte anormales. Apres correction, re-verifie avec check_accounting_consistency.

validate_invoice write

Comptabilise (valide) une facture client ou fournisseur en brouillon (passe a Comptabilise/Poste). Cibler par name (reference ex. INV/2026/00001 ou BILL/2026/00001), partner_name ou id.

optional id, name, partner_name, move_type

register_payment write

Enregistre le REGLEMENT (encaissement client ou paiement fournisseur) d'une ou plusieurs factures COMPTABILISEES non reglees. invoice_ids = ids des factures, OU invoice_ref = numero/nom ; journal = banque/caisse (optionnel) ; date, amount (optionnels, defaut = solde du).

optional invoice_ids, invoice_ref, journal, date, amount

06Writes & actions

21 tools.

Sales & purchases (write)

18 tools
create_quotation write

Cree un devis (brouillon) pour un client. partner_name = nom du client ; lines = [{product_name, qty}] optionnel.

required partner_name · optional lines

confirm_quotation write

Confirme un devis / commande de vente (passe de Devis a Commande confirmee). Cibler par name (reference ex. S00001), partner_name ou id.

optional id, name, partner_name

create_purchase_order write

Cree un bon de commande d'achat (brouillon) chez un fournisseur. supplier_name = nom du fournisseur ; lines = [{product_name, qty}] (optionnel).

required supplier_name · optional lines

confirm_purchase_order write

Confirme un bon de commande d'achat (passe de Brouillon a Bon de commande envoye). Cibler par name (reference ex. P00001), supplier_name ou id.

optional id, name, supplier_name

create_vendor_bill write

Cree une facture fournisseur (brouillon, NON comptabilisee). supplier_name = nom du fournisseur ; lines = [{product_name, qty, price_unit}] (au moins une ligne ; price_unit optionnel). La facture reste en brouillon : l'utilisateur la verifie et la comptabilise lui-meme dans Madata.

required supplier_name · optional lines

create_customer_invoice write

Cree une facture client (brouillon, NON comptabilisee). customer_name = nom du client ; lines = [{product_name, qty, price_unit}] (au moins une ligne ; price_unit optionnel) ; due_date = AAAA-MM-JJ (optionnel). La facture reste en brouillon pour verification avant validation.

required customer_name · optional lines, due_date

create_transfer write

Cree un transfert de stock en brouillon : operation = 'in' (reception), 'out' (livraison) ou 'internal' (transfert interne) ; lines = [{product_name, qty}]. Pour valider ensuite le transfert, utilise validate_stock_picking ou action_record.

required lines · optional operation

validate_stock_picking write

Valide un transfert / une reception de stock (passe a Fait). Cibler par name (reference ex. WH/IN/00001), partner_name ou id. Si des quantites a la demande n'ont pas ete saisies, utilise les quantites prevues (immediate transfer).

optional id, name, partner_name

create_contact write

Cree un contact (client/fournisseur). name requis ; email, phone, city, is_company (optionnels).

required name · optional email, phone, city, is_company

create_product write

Cree un produit dans le catalogue. name requis ; sale_price, standard_price (cout), categ_name, product_type ('consu'|'service'|'storable'), ref (reference interne) optionnels.

required name · optional sale_price, standard_price, categ_name, product_type, ref

update_product_price write

Met a jour le prix de vente de un ou plusieurs produits. product_name = nom ou partie du nom ; product_ids = liste d'ids. new_price = nouveau prix de vente. Confirmation requise.

required new_price · optional product_name, product_ids

create_category write

Cree une categorie de produits. name = nom ; parent_name = categorie parente optionnelle (pour organiser en arborescence).

required name · optional parent_name

create_expense write

Cree une note de frais pour l'utilisateur courant. name = description de la depense ; amount = montant.

required name, amount

create_lead write

Cree une opportunite commerciale (CRM). name = sujet de l'opportunite ; partner_name = client (optionnel) ; expected_revenue = montant attendu (optionnel).

required name · optional partner_name, expected_revenue

set_lead_stage write

Fait avancer une ou plusieurs opportunites CRM vers une etape du pipeline. ids = liste d'IDs d'opportunites ; stage_name = nom de l'etape cible (resolu par nom approche).

required ids, stage_name

create_task write

Cree une tache de projet. name = titre de la tache ; project_name = nom du projet (optionnel) ; description (optionnel) ; assignees = liste de noms d'utilisateurs a affecter (optionnel).

required name · optional project_name, description, assignees

create_project write

Cree un projet. name = nom du projet (requis) ; manager_name = nom du chef de projet (optionnel) ; description (optionnel).

required name · optional manager_name, description

log_time write

Saisit des heures sur un projet/tache. employee_name requis ; project_name, task_name, hours (defaut 1.0), date (YYYY-MM-DD), description optionnels.

required employee_name · optional project_name, task_name, hours, date, description

Manufacturing

3 tools
create_manufacturing_order write

Cree un ordre de fabrication (brouillon). product_name = produit a fabriquer ; qty = quantite.

required product_name · optional qty

confirm_manufacturing_order write

Confirme un ou plusieurs ordres de fabrication (Brouillon -> Confirme). UN seul : cibler par name (ex. WH/MO/00001), product_name ou id. PLUSIEURS EN UN SEUL APPEL (groupe, une seule confirmation) : all=true confirme TOUS les OF en brouillon ; ou names=[...] / ids=[...] pour une liste precise. Si l'utilisateur demande 'tous' ou une liste, utilise all/names/ids, n'appelle JAMAIS l'outil une fois par OF.

optional id, name, product_name, all, ids, names

mark_manufacturing_done write

Marque un ou plusieurs ordres de fabrication comme Termine (Fait). L'OF doit etre Confirme. UN seul : cibler par name (ex. WH/MO/00001), product_name ou id. PLUSIEURS EN UN SEUL APPEL (groupe, une seule confirmation) : all=true termine TOUS les OF confirmes/en cours ; ou names=[...] / ids=[...] pour une liste precise. Si l'utilisateur demande 'tous les produire' ou une liste, utilise all/names/ids, n'appelle JAMAIS l'outil une fois par OF.

optional id, name, product_name, all, ids, names

07HR & payroll

25 tools.

search_leaves read

Liste les conges / absences (demandes de conges). Filtres optionnels : employe, etat (a_confirmer/a_approuver/approuve/refuse), periode.

optional employee_name, state, period

create_leave write

Cree une demande de conge / absence pour un employe, sur une periode de dates. Le type de conge est optionnel (defaut : le premier type disponible). La demande n'est PAS approuvee automatiquement (utilise validate_leave pour cela).

required employee_name, date_from, date_to · optional leave_type, reason

validate_leave write

Approuve (valide) une demande de conge identifiee par son id ou par employe + periode.

optional leave_id, employee_name, period

search_payslips read

Liste les fiches de paie (bulletins). Filtres optionnels : employee_name, period (today/week/month/quarter/year), state (draft/verify/done/paid/cancel). Renvoie employe, periode, brut, net et etat.

optional employee_name, period, state, limit

search_payslip_batches read

Liste les lots de paie (batches) avec leur etat, le nombre de fiches et la periode.

optional limit

list_payroll_structures read

Liste les structures de paie disponibles (ex. Salaire de base, Solde de tout compte, 13e mois...). A utiliser AVANT create_payslip pour demander a l'utilisateur sur quelle structure generer la fiche. employee_name (optionnel) : indique aussi la structure par defaut du contrat de l'employe.

optional employee_name

create_payslip write

Cree ET calcule une fiche de paie pour un employe. employee_name requis. date_from/date_to au format AAAA-MM-JJ (defaut : mois en cours). struct_name = structure salariale (optionnel, sinon celle du contrat). sursalaire = montant du sursalaire applique sur ce bulletin (optionnel). Renvoie le numero du bulletin, le brut et le net.

required employee_name · optional date_from, date_to, struct_name, sursalaire

set_sursalaire write

Definit le sursalaire d'une fiche de paie (en brouillon ou calculee) puis la recalcule. Cibler par employee_name (+ period ou date_from/date_to) ou par payslip_id. amount = montant.

required amount · optional employee_name, payslip_id, period, date_from, date_to

create_payslip_batch write

Cree un lot de paie et genere les fiches calculees des employes vises. date_from/date_to au format AAAA-MM-JJ (defaut : mois en cours). name = nom du lot (optionnel). department_name = limiter a un departement. employee_names = liste de noms (sinon tous les employes avec un contrat actif). struct_name = structure salariale (optionnel).

optional date_from, date_to, name, department_name, employee_names, struct_name

validate_payslip write

Valide une fiche de paie (passe a l'etat Termine). Cibler par payslip_id ou employee_name (+ period/date).

optional payslip_id, employee_name, period, date_from, date_to

validate_batch write

Valide un lot de paie : valide toutes ses fiches et cloture le lot. Cibler par batch_id ou batch_name.

optional batch_id, batch_name

mark_payslip_paid write

Marque une fiche de paie comme payee (action sensible). La fiche doit etre a l'etat Termine. Cibler par payslip_id ou employee_name (+ period/date).

optional payslip_id, employee_name, period, date_from, date_to

mark_batch_paid write

Marque un lot de paie entier comme paye (action sensible). Cibler par batch_id ou batch_name.

optional batch_id, batch_name

refund_payslip writedestructive

Cree le remboursement (note de credit) d'une fiche de paie : une copie inversee. Cibler par payslip_id ou employee_name (+ period/date).

optional payslip_id, employee_name, period, date_from, date_to

create_employee write

Cree une fiche employe. name requis. job_title (poste), work_email, mobile, department_name optionnels. Etape prealable a la creation d'un contrat puis d'une fiche de paie.

required name · optional job_title, work_email, mobile, department_name

create_contract write

Cree un contrat de travail ACTIF (en cours) pour un employe, prerequis a la creation d'une fiche de paie. employee_name et wage (salaire de base mensuel) requis. date_start (AAAA-MM-JJ, defaut aujourd'hui), date_end, sursalaire, structure_name (structure salariale) optionnels.

required employee_name, wage · optional date_start, date_end, sursalaire, structure_name, name

set_overtime write

Ajoute des heures supplementaires sur une fiche de paie (en brouillon ou calculee) puis recalcule. hours = nombre d'heures ; type = taux de majoration (HS15 +15%, HS50 +50%, HS75 +75%, HS100 +100% ; defaut HS15). Cibler par payslip_id ou employee_name (+ period/date).

required hours · optional payslip_id, employee_name, period, date_from, date_to, type

send_payslip writeoutbound

Genere le PDF d'une fiche de paie et l'envoie par email a l'employe concerne. Cibler par payslip_id ou employee_name (+ period/date). Si l'employe n'a pas d'adresse email, l'outil le signale : redemande l'adresse a l'utilisateur puis rappelle l'outil avec email=<adresse> (elle sera ajoutee a la fiche employe avant l'envoi).

optional payslip_id, employee_name, period, date_from, date_to, email

search_expense_reports read

Liste les notes de frais (rapports de depenses) : employe, montant total, etat (brouillon/soumis/approuve/comptabilise/paye).

optional state, employee_name, limit

approve_expense_report write

Approuve une note de frais soumise (etat 'submit'). Identifiee par son nom ou par l'employe. Demande confirmation.

optional name, employee_name

post_expense_report write

Comptabilise une note de frais approuvee (genere les ecritures comptables). Demande confirmation.

optional name, employee_name

reimburse_expense_report write

Rembourse une note de frais comptabilisee : enregistre le paiement a l'employe (journal au choix). Demande confirmation.

optional name, employee_name, journal_name

search_employee_loans read

Liste les prets (emprunts) des employes : montant, nombre d'echeances, etat, reste a rembourser.

optional employee_name, state, limit

create_employee_loan write

Cree une fiche de pret pour un employe : montant, nombre d'echeances mensuelles, date de premiere echeance, taux optionnel. L'echeancier lineaire est genere automatiquement. Demande confirmation.

required employee_name, amount, installments, first_payment_date · optional rate

confirm_employee_loan write

Confirme une fiche de pret en brouillon (le remboursement demarre). Identifiee par l'employe ou le libelle. Demande confirmation.

optional employee_name, name

08POS, loyalty, subscriptions, assets

20 tools.

Point of sale

3 tools
open_pos_session write

Ouvre une session de caisse (point de vente) sur une caisse donnee (par nom ; la premiere caisse si une seule). Refuse si une session est deja ouverte. Demande confirmation.

optional config_name, opening_cash

close_pos_session writedestructive

Cloture une session POS ouverte. session_name = nom exact ou 'current' pour la session active. Confirmation requise.

required session_name

recharge_customer_wallet write

Recharge le portefeuille (wallet) d'un client du point de vente : credite le solde et enregistre le paiement entrant. Montant strictement positif. Demande confirmation.

required partner_name, amount · optional journal_name

Loyalty & promotions

6 tools
search_promotions read

Liste les offres de promotion / fidelite (promotions, codes promo, coupons, achetez X obtenez Y, cartes de fidelite, cartes-cadeaux, e-wallet) avec leur type, etat (active), periode de validite, code eventuel et nombre de coupons/usages. program_type = filtre optionnel sur le type.

optional program_type, active, limit

get_promotion read

Detail d'une offre de promotion/fidelite : ses regles (conditions) et ses recompenses (remises / produits offerts). name = nom de l'offre.

required name

create_promotion write

Cree une offre de promotion / fidelite. program_type (obligatoire) : 'promotion' (remise auto sur le panier), 'promo_code' (remise via un code a saisir), 'coupons' (coupons a code), 'buy_x_get_y' (achetez X obtenez Y offert), 'loyalty' (carte a points), 'gift_card' (carte-cadeau), 'ewallet' (porte-monnaie), 'next_order_coupons'. name = nom de l'offre. discount_percent OU discount_fixed = valeur de la remise. code = code promo (promo_code). minimum_amount / minimum_qty = conditions d'application. product / product_category = restreint l'offre a un produit ou une categorie. reward_product (+reward_product_qty) = produit offert (buy_x_get_y). date_from / date_to = periode de validite (AAAA-MM-JJ). max_usage = nombre maximum d'utilisations.

required program_type, name · optional discount_percent, discount_fixed, code, minimum_amount, minimum_qty, product, product_category, reward_product, reward_product_qty, date_from, date_to, max_usage

update_promotion write

Modifie une offre existante : remise (discount_percent / discount_fixed), periode (date_from / date_to), plafond (max_usage), ou etat (active=true/false pour activer/desactiver). name = nom de l'offre a modifier.

required name · optional active, discount_percent, discount_fixed, minimum_amount, minimum_qty, date_from, date_to, max_usage

search_coupons read

Suivi des coupons / cartes emis pour une offre : code, points, nombre d'utilisations, client rattache, date d'expiration. program = nom de l'offre (optionnel).

optional program, limit

generate_coupons write

Emet des coupons / cartes pour une offre. program = nom de l'offre ; count = nombre de coupons a generer ; partner = client beneficiaire (optionnel) ; points = points initiaux (optionnel).

required program · optional count, partner, points

Subscriptions & rentals

5 tools
create_subscription write

Cree un devis d'abonnement recurrent pour un client avec un plan (ex. Mensuel, Trimestriel, Annuel) et une ou plusieurs lignes de produits/services recurents. Obligatoires : partner_name, plan_name. Optionnels : products=[{name, qty, price}], start_date (YYYY-MM-DD).

required partner_name, plan_name · optional products, start_date

close_subscription writedestructive

Resilie (cloture) un ou plusieurs abonnements en cours ou en pause (passage a l'etat Resilie). Cible par ids=[...] ou domain=[...]. Parametre optionnel : close_reason (texte, ex. 'Non-paiement'). Ne pas utiliser pour annuler un devis : utiliser action_record(cancel).

optional ids, domain, close_reason

create_rental_order write

Cree un devis de location pour un client, avec les biens a louer, la date de remise et la date de retour. Obligatoires : partner_name, products=[{name, qty}], rental_start_date (YYYY-MM-DD), rental_return_date (YYYY-MM-DD).

required partner_name, products, rental_start_date, rental_return_date

pickup_rental write

Marque les biens d'une ou plusieurs locations comme remis au client (valide la remise sans wizard). La location doit etre confirmee (etat 'A remettre'). Cible par ids=[...] ou domain=[...].

optional ids, domain

return_rental write

Marque les biens d'une ou plusieurs locations comme retournes par le client. La location doit etre en cours (biens chez le client). Cible par ids=[...] ou domain=[...].

optional ids, domain

Assets & budgets

6 tools
search_assets read

Liste les immobilisations (actifs amortissables) : valeur brute, valeur residuelle, categorie, etat (brouillon/en cours/cloture).

optional state, category_name, limit

create_asset write

Cree une immobilisation en brouillon : nom, categorie d'immobilisation (par nom), valeur brute, date. Le plan d'amortissement est calcule automatiquement. Utilise validate_asset ensuite pour la mettre en cours.

required name, category_name, value · optional date, company_id

validate_asset write

Valide une immobilisation en brouillon (passe en cours : l'amortissement demarre). Identifiee par nom ou id.

optional name, asset_id

search_budgets read

Liste les budgets : periode, etat, et par ligne le poste budgetaire, le montant prevu, le montant reel et le montant theorique (suivi budgetaire).

optional state, limit

create_budget write

Cree un budget en brouillon avec ses lignes : nom, periode, et pour chaque ligne un poste budgetaire (par nom) et un montant prevu (negatif pour une depense, positif pour un revenu).

required name, date_from, date_to, lines · optional company_id

confirm_budget write

Fait avancer un budget dans son cycle : confirmer (brouillon -> confirme), valider (confirme -> valide) ou terminer. Identifie par nom.

required name · optional action

09Communication, calendar, RAG, FNE, helpdesk

13 tools.

Communication

3 tools
send_email writeoutbound

Envoie un email au nom de l'utilisateur connecte : objet, corps HTML riche (gras, listes, liens), un ou plusieurs destinataires (adresses libres ET/OU contacts resolus par nom), CC optionnel. Peut joindre un fichier genere par un outil precedent (rapport, facture, export PDF ou Excel) via son attachment_id. Si l'adresse email du profil n'est pas renseignee, l'outil renvoie un message clair a relayer.

required to, subject, body · optional cc, attachment_id

prepare_whatsapp_message readoutbound

Prepare un message WhatsApp pour un contact : renvoie un LIEN pre-rempli a ouvrir. L'integration WhatsApp de Madata n'envoie rien automatiquement : annonce toujours un lien a cliquer, JAMAIS un message deja envoye. partner = nom du contact ; message = texte a pre-remplir (redige-le toi-meme a partir de la demande, en francais et signe au nom de l'entreprise). Pour un envoi reellement automatique, utiliser send_email.

required partner, message

send_payment_followups writeoutbound

Envoie les emails de relance de paiement aux clients en retard (selon leur niveau de relance). Sans partner_names : tous les clients en retard avec email. Demande une confirmation avant tout envoi.

optional partner_names

Calendar

3 tools
create_event write

Cree un evenement d'agenda (reunion, rendez-vous, rappel). name requis. Evenement horaire : start et stop au format 'AAAA-MM-JJ HH:MM'. Journee entiere : allday=true avec start_date/stop_date (AAAA-MM-JJ). location, description optionnels. attendee_names = participants (resolus par nom). reminders = liste de rappels {type: notification|email, duration, interval: minutes|hours|days}. recurrence = {freq: daily|weekly|monthly, interval, count, until} pour un evenement recurrent.

required name · optional start, stop, allday, start_date, stop_date, location, description, attendee_names, reminders, recurrence

update_event write

Modifie un evenement existant (deplacer, changer le lieu, la description ou les participants). Cibler par event_id ou event_name (+ on_date optionnelle). Champs : start, stop, location, description, attendee_names.

optional event_id, event_name, on_date, start, stop, location, description, attendee_names

cancel_event writedestructive

Annule (archive) un evenement d'agenda. Cibler par event_id ou event_name (+ on_date optionnelle).

optional event_id, event_name, on_date

Knowledge base (RAG)

4 tools
upload_knowledge write

Ajoute un document a la base de connaissances de Mia (RAG). title = titre du document ; content = texte brut du document ; scope = 'user' (personnel, defaut) ou 'company' (partage societe). Le contenu est decoupe en fragments et vectorise pour recherche semantique.

required title, content · optional scope

search_knowledge read

Recherche dans la base de connaissances Mia. query = question ou mots-cles. Renvoie les fragments les plus pertinents.

required query · optional top_k

list_knowledge read

Liste les documents de la base de connaissances Mia.

delete_knowledge writedestructive

Supprime un document de la base de connaissances Mia. doc_id = identifiant du document (obtenu via list_knowledge).

required doc_id

FNE (Côte d’Ivoire)

2 tools
get_fne_status read

Etat de la facturation normalisee electronique (FNE / DGI Cote d'Ivoire) : combien de factures sont certifiees, combien restent a transmettre, le montant en attente, le solde de stickers restant et la liste des factures non transmises. A utiliser pour 'cette facture est-elle transmise a la DGI', 'mes factures normalisees', 'factures non certifiees', 'combien de stickers me reste-t-il'. move_type = out_invoice (defaut) ou out_refund (avoirs).

optional move_type, date_from, date_to, limit

send_invoice_to_fne writeoutbound

Transmet une ou plusieurs factures a la DGI via la FNE (certification definitive, consomme un sticker par facture). Cibler UNE facture par name (ex. FAC/2026/00002) ou ids ; all=true transmet TOUTES les factures publiees encore en attente. move_type = out_invoice (defaut) ou out_refund. Pour seulement CONSULTER l'etat de transmission, prendre get_fne_status.

optional name, ids, all, move_type

Helpdesk

1 tool
create_ticket write

Cree un ticket helpdesk. name et team_name requis ; description, partner_name, priority optionnels.

required name, team_name · optional description, partner_name, priority

10Generic queries & exports

12 tools.

query_records read

Consultation GENERIQUE : lit n'importe quel module accessible (ventes, achats, stock, comptabilite, contacts, produits, CRM, projets, RH, fabrication, point de vente...). A utiliser des qu'aucun outil dedie ne convient, PLUTOT QUE DE REFUSER. 'model' = nom technique (sale.order, product.template, res.partner, crm.lead, account.move, stock.picking). 'domain' = [[champ, operateur, valeur], ...] (ET implicite ; '|'/'&' pour combiner). 'fields' = champs a retourner.

required model · optional domain, fields, order, limit, company_id

find_inactive_contacts read

Outil DEDIE pour trouver en UN SEUL appel les contacts (res.partner) sans aucune activite liee : aucun devis/vente, facture, opportunite, achat, evenement d'agenda, vente en caisse ni tache. A utiliser des qu'on demande les contacts 'inutilises', 'sans activite', 'a nettoyer' ou 'a supprimer' (ne JAMAIS refaire ce calcul a la main avec query_records). 'activity_types' = liste des activites qui rendent un contact ACTIF (donc exclu du resultat) ; par defaut toutes. Adapte-la a la demande : 'sans devis ni facture' -> ['sales','invoices']. Le calcul preserve les comptes utilisateurs et la famille de contacts (parent/enfants) d'un client actif. Droits de l'utilisateur appliques. Apres affichage, propose d'ARCHIVER ces contacts via update_records(active=False) ; ne supprime jamais definitivement.

optional activity_types, company_type, limit

aggregate_records read

AGREGATION/CLASSEMENT generique (totaux, 'par mois', 'par client', 'top N'). group_by = champs de regroupement (date : 'date_order:month'), measures = champs numeriques sommes, order = tri sur une mesure. Ajoute le filtre de date des qu'une periode est demandee. Pour le chiffre d'affaires et les meilleurs clients : account.move ou top_customers, JAMAIS sale.order (devis et annules = chiffres faux).

required model, group_by · optional measures, domain, order, limit, company_id

top_customers read

MEILLEURS / TOP CLIENTS par chiffre d'affaires REEL / plus gros clients / classement clients. Outil dedie FIABLE pour ces questions. Calcul sur les FACTURES CLIENT COMPTABILISEES (avoirs deduits), JAMAIS sur les devis (sale.order inclut brouillons et commandes annulees = chiffres gonfles). Renseigne TOUJOURS date_from/date_to quand une periode est demandee. basis='untaxed' (HT, defaut) ou 'total' (TTC).

optional date_from, date_to, basis, limit, company_id

top_products read

MEILLEURES VENTES / TOP PRODUITS / best-sellers / produits les plus vendus : outil dedie fiable. Classe des PRODUITS, jamais des personnes : si la question porte sur QUI vend le plus (« le meilleur vendeur », « mes commerciaux »), c'est top_salespersons qu'il faut appeler, PAS cet outil. Source = lignes de factures client comptabilisees (avoirs deduits), repli automatique sur les commandes confirmees. Renseigne date_from/date_to des qu'une periode est demandee.

optional date_from, date_to, metric, basis, limit, company_id

top_salespersons read

MEILLEURS VENDEURS / TOP COMMERCIAUX / classement de l'equipe de vente : classe des PERSONNES (les vendeurs), pas des produits. A utiliser des que la question porte sur QUI vend le plus : « le meilleur vendeur », « mes meilleurs commerciaux », « qui a le plus vendu », « performance de l'equipe commerciale ». Ne le confonds PAS avec top_products (produits les plus vendus) ni top_customers (clients qui achetent le plus). Source = factures client comptabilisees (avoirs deduits), repli automatique sur les commandes confirmees. Renseigne date_from/date_to des qu'une periode est demandee.

optional date_from, date_to, basis, limit, company_id

top_suppliers read

MEILLEURS / PRINCIPAUX FOURNISSEURS par montant d'ACHATS reel / plus gros fournisseurs / classement fournisseurs : « a qui j'achete le plus », « mes principaux fournisseurs », « top fournisseurs ». Calcul sur les FACTURES FOURNISSEUR COMPTABILISEES (avoirs deduits), repli automatique sur les bons de commande confirmes. Ne le confonds PAS avec top_customers (les clients, qui achetent CHEZ toi). Renseigne date_from/date_to des qu'une periode est demandee.

optional date_from, date_to, basis, limit, company_id

export_records read

Exporte des donnees en fichier CSV telechargeable. dataset = sales|purchases|invoices|stock.

required dataset · optional format, date_from, date_to

generate_report read

Genere le PDF d'un document. doc = quotation|invoice|purchase_order, name = reference du document (ex. S00001).

required doc, name

update_records write

Modifie des champs d'enregistrements EXISTANTS, sur tout module autorise. Cible par domain ou ids. many2one : donne le NOM (resolu automatiquement). many2many/one2many : liste = remplace, {'add':[...]}, {'remove':[...]}, {'set':[...]} ; lignes de document = liste de dicts. UN SEUL appel pour la meme modification sur N enregistrements. Confirmation requise.

required model, values · optional domain, ids

create_record write

CREE un enregistrement dans N'IMPORTE QUEL module auquel l'utilisateur a droit (filet universel) : abonnement (sale.subscription/sale.order), location (sale.order/rental), demande de maintenance (maintenance.request), projet (project.project), etc. model = nom technique du modele ; values = champs (pour une relation many2one, donne le NOM, Mia le resout). Champs relationnels multiples : liste de noms/ids ou {'add':[...]} (many2many : etiquettes, assignes...) ; lignes (one2many) = liste de dicts, ex. values={'order_line':[{'product_id':'Chaise','product_uom_qty':2}]}. N'utilise create_record que si aucun outil dedie n'existe pour ce type d'objet. Confirmation requise (directe en mode goal).

required model, values

action_record write

Execute une TRANSITION de cycle de vie sur des enregistrements de N'IMPORTE QUEL module : confirmer un devis/BC (action='confirm'), valider un transfert ('validate'), comptabiliser ('post'), terminer un OF ('done'), annuler ('cancel'), remettre en brouillon ('draft'), soumettre une note de frais ('submit'), approuver ('approve'), refuser ('refuse'), gagner/perdre une opportunite ('set_won'/'set_lost'), demarrer ('start'). model = modele ; action = l'une des cles ci-dessus ; cible par ids ou domain. N'utilise ceci que si aucun outil dedie (confirm_quotation, validate_invoice...) ne convient mieux.

required model, action · optional domain, ids

11Internal tools (not exposed)

5 import tools are registered but not exposed over MCP: they go through file upload from the UI:

import_records internal

Importe des enregistrements depuis un fichier tabulaire televerse.

import_purchases internal

Cree des bons de commande brouillon depuis un fichier televerse.

import_sales internal

Cree des devis brouillon depuis un fichier televerse.

import_expenses internal

Cree des notes de frais depuis un fichier televerse.

import_inventory internal

Ajuste l'inventaire depuis un fichier televerse.