# PennyPilot MCP (mcpb · pennypilot-mcp-1.0.0.mcpb)

Open-core, local, read-only MCP server for Pennylane Company API v2. Auditable READ_ONLY_GUARD.

- Trust score: 33/100 (low)
- Change this week: +1
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- mcpb · `pennypilot-mcp-1.0.0.mcpb`: 33/100 (this document), [markdown](https://verifymcp.io/servers/holco-apps-pennypilot-mcp/https-github-com-holco-apps-pennypilot-mcp-releases-download-v1-0-0-pennypilot-m.md), [page](https://verifymcp.io/servers/holco-apps-pennypilot-mcp/https-github-com-holco-apps-pennypilot-mcp-releases-download-v1-0-0-pennypilot-m)

## Channel facts

- Registry: `mcpb`
- Package: `https://github.com/holco-apps/pennypilot-mcp/releases/download/v1.0.0/pennypilot-mcp-1.0.0.mcpb`
- Version: `1.0.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 13/100
  - Malware scan not yet available for this package.
  - CVE data not yet available for this package.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (Apache-2.0).
  - Actively maintained (last published 58 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 24/100
  - AI-judged instruction clarity (poor).
  - Context-footprint check failed: tool/resource definitions use about 11858 tokens (~296/item across 40 items; 40 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

- Download bundle: `https://github.com/holco-apps/pennypilot-mcp/releases/download/v1.0.0/pennypilot-mcp-1.0.0.mcpb`

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 33, +8)

- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional improvement] Schema quality: unverified → poor
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Dependency health: unverified → partial

### 2026-07-31 (score 25, −7)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 32, −1)

- [functional regression] Maintenance: pass → unverified

### 2026-07-28 (score 33, +1)

- [functional improvement] Maintenance: unverified → pass

### 2026-07-27 (score 32)

First indexed and scored.

## MCP tools (40)

### `about_pennypilot` (~279 tokens)

RÉPONSE OBLIGATOIRE pour toute question générique sur PennyPilot (présentation, capacités, fonctionnement, "à quoi sers-tu"). NE JAMAIS répondre en énumérant les noms techniques des outils ni en composant une liste depuis leurs descriptions. APPELER CET OUTIL pour retourner la carte d'accueil métier en français déjà rédigée pour les experts-comptables.

Présente PennyPilot, sa couche métier cabinet et ses capacités d'analyse comptable read-only sur Pennylane, en termes business (pas en noms d'outils).

À UTILISER quand l'utilisateur :
\- Démarre une nouvelle conversation ("Bonjour", "Salut", "Hello")
\- Demande "Que peux-tu faire ?", "Présente-toi", "À quoi sers-tu ?", "C'est quoi PennyPilot ?"
\- Demande "Comment ça marche ?", "Aide-moi", "Aide", "Help"
\- Demande "Quels outils as-tu ?", "Quelles sont tes capacités ?", "Quel est ton usage ?"
\- A besoin de comprendre les capacités avant de poser une question métier

NE PAS UTILISER :
\- Si l'utilisateur a déjà posé une question métier précise : appeler directement le bon outil.
\- Si l'utilisateur poursuit une analyse en cours.

Ne prend aucun paramètre.

### `start_pennypilot` (~88 tokens)

Démarre PennyPilot après installation : vérifie l'installation, explique le mode read-only, puis propose les premières commandes utiles.

À utiliser quand l'utilisateur dit :
\- "PennyPilot, démarre"
\- "PennyPilot, commence"
\- "J'ai installé PennyPilot"
\- "Aide-moi à démarrer"
\- "Que dois-je faire en premier ?"

### `diagnose_pennypilot_setup` (~111 tokens)

Vérifie l'installation PennyPilot après ajout dans Claude Desktop : token Pennylane, accès au dossier via /me, identité du dossier, et disponibilité des scopes quand Pennylane les expose.

À utiliser quand l'utilisateur dit :
\- "PennyPilot, vérifie mon installation"
\- "J'ai installé PennyPilot"
\- "Est-ce que mon token fonctionne ?"
\- "Pourquoi PennyPilot ne marche pas ?"
\- "Diagnostic setup"

Ne révèle jamais le token Pennylane.

### `explain_pennypilot_flow` (~128 tokens)

Explique simplement ce qui se passe quand l'utilisateur écrit une demande dans Claude avec PennyPilot installé : Claude décide d'appeler un outil, PennyPilot interroge Pennylane en lecture seule, puis Claude rédige la réponse.

À utiliser quand l'utilisateur demande :
\- "Comment fonctionne PennyPilot ?"
\- "Est-ce que PennyPilot lit toute ma conversation ?"
\- "Est-ce que PennyPilot prend la main sur Claude ?"
\- "Que se passe-t-il quand j'écris une question ?"
\- "Mes données sortent-elles de mon poste ?"

### `show_cabinet_config` (~150 tokens)

Affiche les règles cabinet configurables actuellement actives dans PennyPilot : seuils de matérialité (branchés), sources autorisées + typologies + ton (déclarés). Première brique de la couche métier cabinet (v0.3.0).

À utiliser quand l'utilisateur :
\- Demande "Quelles sont les règles cabinet actives ?", "Affiche la config cabinet"
\- Veut vérifier les seuils qui pilotent la pré-révision
\- Veut comprendre quelles sources externes sont autorisées
\- Diagnostique un comportement inattendu de `generate_revision_triage`

Ne prend aucun paramètre. Lecture seule pure (aucun appel Pennylane).

### `generate_charte_ia_cabinet` (~293 tokens)

Génère une charte d'usage IA cabinet prête à personnaliser : couvre l'AI Act (art. 4 AI Literacy + art. 50 transparence), les obligations CSOEC (valeur sensible professionnel + référent IA), les outils autorisés vs shadow IA, et l'audit trail des décisions assistées. Template structuré en 7 sections. Réutilise les obligations de l'art. 226-13 du Code pénal.

Input parameters:

- `cabinet_name` (string): Nom du cabinet pour personnaliser la charte. Si absent, utilise le nom du compte PennyPilot.
- `cabinet_size` (string): Taille du cabinet : solo (1 EC), petit (2-10), moyen (11-50), grand (50+). Adapte la cadre suggere.
- `referent_ia_name` (string): Nom du référent IA cabinet désigné. Si absent, indique "À désigner".
- `tools_authorized` (string): Liste libre des outils IA autorisés (séparés par virgule). Exemple : "ChatGPT Business, Claude Pro, PennyPilot". Si absent, utilise une liste générique recommandée.
- `tools_forbidden` (string): Liste libre des outils IA interdits (séparés par virgule). Exemple : "ChatGPT gratuit, Gemini gratuit". Si absent, indique simplement les comptes personnels.

### `diagnose_ai_transparency` (~95 tokens)

Génère un diagnostic de conformité AI Act (art. 50-55) sur la transparence, l'explicabilité et la traçabilité de la réponse précédente ou de la session.

Input parameters:

- `previous_response_context` (string): Contexte de la réponse précédente à diagnostiquer (résumé court de quel tool a été appelé). Optionnel : si absent, fournit un diagnostic générique sur la session courante.

### `find_unpaid_customer_invoices` (~330 tokens)

Liste les factures clients **non payées** dont l'échéance est dépassée pour le dossier comptable courant Pennylane. Renvoie un résumé chiffré (nombre de factures, montant total TTC dû, classement des clients par montant en retard), un signalement spécifique des factures avec plus de 60 jours de retard, et le détail des 20 plus anciennes.

À utiliser quand l'utilisateur demande :
\- "Quelles factures clients sont en retard ?"
\- "Combien d'argent on attend des clients ?"
\- "Liste les impayés"
\- "Qui me doit de l'argent ?"
\- "Factures en retard de plus de X jours"
\- "Top 10 / Top 20 des clients en retard" (paramètre top_n)

Ne PAS utiliser pour :
\- Les factures **fournisseurs** non payées (à venir : find_unpaid_supplier_invoices)
\- Le détail d'**une seule facture** (utiliser un autre tool quand il existera)
\- Un calcul de chiffre d'affaires ou de marge (utiliser get_company_pnl)

Input parameters:

- `days_overdue` (number): Seuil minimum de jours de retard. Optionnel, défaut 0 (toutes les factures avec échéance passée). Mettre 30 pour filtrer les factures avec plus de 30 jours de retard, etc.
- `top_n` (number): Nombre de clients à afficher dans le classement par montant dû. Optionnel, défaut 10. Borné entre 1 et 50.

### `get_company_pnl` (~355 tokens)

Compte de résultat d'une entreprise pour un mois, un trimestre ou une année, présenté en **Soldes Intermédiaires de Gestion (SIG)** : marge commerciale, production de l'exercice, valeur ajoutée, EBE, résultat d'exploitation, courant, exceptionnel et net, avec comparatif vs période précédente et détection d'anomalies.

Mode prise en main : si le contexte cabinet n'est pas fourni, lance quand même le P&L avec contexte auto et hypothèses explicites. Ne bloque pas sur des questions préalables ; pose les questions de validation en fin de réponse.

À utiliser quand l'utilisateur demande :
\- "Donne-moi le P&L d'avril 2026"
\- "Compte de résultat du dossier" / "les SIG du dossier"
\- "Quelle a été la marge / la valeur ajoutée / l'EBE sur le T1 ?"

Ne PAS utiliser pour :
\- Les factures impayées (utiliser find_unpaid_customer_invoices)
\- Le détail compte par compte (utiliser get_chart_of_accounts ou browse_account_ledger)
\- Bilan / trésorerie (futur tool v0.3)

Input parameters:

- `company` (string): Optionnel : Nom ou ID de la société Pennylane à cibler (mode cabinet uniquement).
- `dossier_context` (string): Contexte cabinet établi avec l'utilisateur. Optionnel : si absent ou trop court, PennyPilot utilise un contexte auto et indique ses hypothèses.
- `period` (string): Période : "2026-04" (mois), "2026-Q1" (trimestre), "2026" (année). Défaut : mois précédent.

### `get_trial_balance` (~573 tokens)

Balance générale (trial balance) du dossier sur une période : pour chaque compte, total débit, total crédit et solde, avec sous-totaux par classe PCG (1 à 8) et total général. C'est la vue de référence en révision et en clôture.

À utiliser quand l'utilisateur demande :
\- "Donne-moi la balance générale 2025"
\- "Solde des comptes 70 sur l'exercice" (account_prefix "70")
\- "Balance des comptes de tiers" (prefix "4"), "de trésorerie" (prefix "5")
\- "Quel est le solde du compte 706 sur le T1 ?"
\- "Balance comparée N vs N-1"

Paramètres :
\- `period` : "2026" (année), "2026-Q1" (trimestre) ou "2026-04" (mois). Défaut : mois précédent.
\- `period_start` / `period_end` (optionnels) : plage de dates personnalisée au format YYYY-MM-DD. Si les deux sont fournis, ils priment sur `period` (ex : balance du 2026-01-15 au 2026-03-20). Le comparatif N-1 n'est pas calculé sur une plage personnalisée.
\- `account_prefix` (optionnel) : restreint aux comptes commençant par ce préfixe (ex "70", "401", "5").
\- `compare` (optionnel) : true pour ajouter un comparatif des soldes par classe vs la période N-1.

Ne PAS utiliser pour :
\- Le détail des écritures d'un compte (utiliser browse_account_ledger)
\- Le compte de résultat / la marge (utiliser get_company_pnl)
\- L'export FEC réglementaire complet (utiliser generate_fec_export)

Input parameters:

- `account_prefix` (string): Préfixe de numéro de compte optionnel (ex '70', '401', '5'). Sans filtre, balance complète toutes classes.
- `company` (string): Optionnel : Nom ou ID de la société Pennylane à cibler (mode cabinet uniquement).
- `compare` (boolean): Ajouter un comparatif des soldes par classe vs la période N-1.
- `period` (string): Période : "YYYY" (année), "YYYY-Qn" (trimestre) ou "YYYY-MM" (mois). Défaut : mois précédent.
- `period_end` (string): Fin de plage personnalisée (YYYY-MM-DD). Si fourni avec period_start, prime sur `period`.
- `period_start` (string): Début de plage personnalisée (YYYY-MM-DD). Si fourni avec period_end, prime sur `period`.

### `get_bank_transactions` (~285 tokens)

Liste les **opérations bancaires** d'un dossier sur une période : date, libellé, compte bancaire, catégorie analytique, et montant en encaissement / décaissement, avec totaux et flux net de trésorerie.

À utiliser quand l'utilisateur demande :
\- "Mouvements bancaires de mars 2026"
\- "Encaissements / décaissements du mois"
\- "Opérations sur le compte X"
\- "Flux de trésorerie sur le trimestre"

Paramètres :
\- `period` : "2026" (année), "2026-Q1" (trimestre) ou "2026-04" (mois). Défaut : mois précédent.
\- `bank_account_id` (optionnel) : restreint à un compte bancaire précis.

Ne PAS utiliser pour :
\- La liste des comptes / soldes (utiliser list_bank_accounts)
\- Le grand livre du compte 512 (utiliser browse_account_ledger)

Input parameters:

- `bank_account_id` (string): Filtre optionnel sur l’identifiant d’un compte bancaire.
- `company` (string): Optionnel : Nom ou ID de la société Pennylane à cibler (mode cabinet uniquement).
- `period` (string): Période : "YYYY", "YYYY-Qn" ou "YYYY-MM". Défaut : mois précédent.

### `list_bank_accounts` (~142 tokens)

Liste les **comptes bancaires** du dossier Pennylane : nom du compte, établissement, IBAN (masqué), devise et solde courant. Donne une vue rapide de la position de trésorerie par compte.

À utiliser quand l'utilisateur demande :
\- "Quels comptes bancaires a le dossier ?"
\- "Quel est le solde en banque ?" / "Position de trésorerie"
\- "Liste des banques du client"

Ne PAS utiliser pour :
\- Le détail des opérations bancaires (utiliser get_bank_transactions)
\- Les comptes comptables 512 du grand livre (utiliser browse_account_ledger / get_trial_balance)

### `list_analytical_categories` (~137 tokens)

Liste le **plan analytique** du dossier Pennylane : les axes analytiques (groupes de catégories) et les catégories rattachées. Sert à comprendre comment le dossier ventile son activité (par projet, établissement, activité, etc.).

À utiliser quand l'utilisateur demande :
\- "Quels axes analytiques a le dossier ?"
\- "Liste les catégories analytiques"
\- "Comment est structurée la compta analytique ?"

Ne PAS utiliser pour :
\- Les montants ventilés par catégorie (à venir : drill-down par écriture)
\- Le plan comptable général (utiliser get_chart_of_accounts)

### `get_invoice_detail` (~225 tokens)

Détail complet d'une **facture** (client ou fournisseur) : en-tête (numéro, date, tiers, montants HT/TTC, statut, échéance), lignes de facturation, paiements enregistrés et transactions bancaires rapprochées.

À utiliser quand l'utilisateur demande :
\- "Détail de la facture client 42"
\- "Lignes de la facture fournisseur X"
\- "Cette facture est-elle payée ? rapprochée ?"

Paramètres :
\- `invoice_id` (requis) : identifiant de la facture.
\- `invoice_type` : "customer" (client, défaut) ou "supplier" (fournisseur).

Ne PAS utiliser pour :
\- La liste des factures impayées (utiliser find_unpaid_customer_invoices)
\- Le compte de résultat (utiliser get_company_pnl)

Input parameters:

- `invoice_id` (string, required): Identifiant de la facture Pennylane.
- `invoice_type` (string): Type de facture : "customer" (défaut) ou "supplier".

### `get_aged_balance` (~518 tokens)

\**Balance âgée** (échéancier) clients ou fournisseurs : pour chaque tiers, l'encours ouvert ventilé par tranche d'ancienneté (0-30 / 31-60 / 61-90 / +90 jours), avec totaux par tranche.

C'est la vraie balance âgée comptable : elle se base sur les **écritures non lettrées** des comptes de tiers (411 clients / 401 fournisseurs) = les postes réellement ouverts, et non sur la liste des factures.

À utiliser quand l'utilisateur demande :
\- "Balance âgée clients" / "échéancier clients"
\- "Quels clients ont des créances de plus de 90 jours ?"
\- "Encours fournisseurs par ancienneté"
\- "Balance âgée du client 411DUPONT" (utiliser account_prefix)

Paramètres :
\- `account_class` : "customers" (411), "suppliers" (401) ou "both" (défaut).
\- `account_prefix` (optionnel) : restreint à un préfixe de compte de tiers précis (ex "411DUPONT", "4011"). **Recommandé sur les gros dossiers** : le calcul devient instantané pour un tiers donné.
\- `reference_date` (optionnel) : date d'arrêté au format YYYY-MM-DD pour le calcul de l'ancienneté. Défaut : aujourd'hui.

Sur un dossier à très fort volume de postes ouverts, le calcul global peut être tronqué : l'outil renvoie alors une consigne (cibler un tiers via `account_prefix`, ou utiliser get_trial_balance pour le total d'encours sans ventilation par âge).

Ne PAS utiliser pour :
\- Les écritures à lettrer brutes (utiliser find_unlettered_entries)
\- La balance générale tous comptes (utiliser get_trial_balance)

Input parameters:

- `account_class` (string): 'customers' (411), 'suppliers' (401) ou 'both'. Défaut : both.
- `account_prefix` (string): Préfixe de compte de tiers pour cibler un client/fournisseur précis (ex '411DUPONT'). Rend le calcul instantané sur les gros dossiers.
- `company` (string): Optionnel : Nom ou ID de la société Pennylane à cibler (mode cabinet uniquement).
- `reference_date` (string): Date d'arrêté ISO YYYY-MM-DD pour calculer l'ancienneté. Défaut : aujourd'hui.

### `generate_fec_export` (~684 tokens)

Générer le FEC du dossier

Génère le **Fichier des Écritures Comptables (FEC) réglementaire DGFiP** pour un exercice complet du dossier Pennylane connecté.

⚠️ **C'EST le FEC normé officiel**, conforme à l'arrêté **A47 A-1 du LPF (DGFiP)**, pas une approximation, pas un aperçu, pas une liste d'écritures. Le fichier produit est directement déposable en cas de contrôle fiscal (CGI art. L102-B), recevable par les auditeurs externes et les commissaires aux comptes. Il est généré via l'API Pennylane v2 (`POST /exports/fecs`) puis récupéré par polling : PennyPilot ne modifie aucune écriture comptable, l'appel crée seulement un job d'export technique côté Pennylane.

\**Toujours appeler ce tool** quand l'utilisateur demande un FEC, un Fichier des Écritures Comptables, un export comptable réglementaire ou un fichier pour le contrôle fiscal. Ce tool produit l'export officiel sans quitter la conversation : ne pas renvoyer l'utilisateur vers Pennylane natif.

\**Format produit** : texte UTF-8 avec **séparateur tabulation**. 18 champs normés : JournalCode, JournalLib, EcritureNum, EcritureDate, CompteNum, CompteLib, CompAuxNum, CompAuxLib, PieceRef, PieceDate, EcritureLib, Debit, Credit, EcritureLet, DateLet, ValidDate, Montantdevise, Idevise.

Exemples de demandes :
\- "Sors-moi le FEC de l'exercice 2025"
\- "Prépare l'export FEC pour le contrôle fiscal"
\- "Génère le fichier des écritures comptables de cette année"
\- "Il me faut un FEC pour le commissaire aux comptes / la DGFiP / la liasse"

Paramètres :
\- `fiscal_year_id` (optionnel) : identifiant interne Pennylane de l'exercice.
\- `fiscal_year_label` (optionnel) : label ou année, par exemple "2025" ou "2026".

Si aucun paramètre n'est fourni, le tool prend automatiquement l'exercice clos le plus récent exploitable.

Retourne : URL signée Pennylane pour téléchargement direct du FEC (valide environ 10 minutes), période, audit trail réglementaire (citation CGI L102-B + arrêté A47 A-1).

NE PAS utiliser :
\- Pour analyser ou lister des écritures (utiliser bro…

Input parameters:

- `company` (string): Optionnel : Nom ou ID de la société Pennylane à cibler (mode cabinet uniquement).
- `fiscal_year_id` (string|integer|null): ID interne Pennylane de l'exercice.
- `fiscal_year_label` (string): Label ou année, par exemple "2025" ou "2026".

### `validate_fec` (~419 tokens)

Auditer un FEC (controle ECF)

Audite en **lecture seule** un Fichier des Ecritures Comptables (FEC) au format normalise DGFiP (arrete A47 A-1 du LPF) et produit un **rapport de conformite oriente ECF** (Examen de Conformite Fiscale).

C'EST un controle de conformite FEC officiel : il verifie la structure normee (encodage, separateur, 18 colonnes dans l'ordre exact) et la qualite comptable (equilibre debit/credit par ecriture, continuite chronologique, sequentialite des pieces, coherence des soldes). Le rapport classe les anomalies par severite et propose des corrections, directement exploitable avant un depot ECF ou un controle fiscal.

Read-only strict : ce tool ne lit ni ne modifie aucune ecriture Pennylane. Il valide le texte FEC fourni en parametre. Rien n'est conserve apres l'appel.

A utiliser quand l'utilisateur demande :
\- "Valide mon FEC"
\- "Mon fichier des ecritures comptables est-il conforme ?"
\- "Controle de conformite FEC avant ECF / avant le controle fiscal"
\- "Verifie l'equilibre et la structure de ce FEC"

Parametres :
\- `fec_text` (requis) : contenu brut du FEC (texte colle ou charge). Le tool detecte le separateur (tabulation ou pipe) sur l'en-tete.
\- `encoding_hint` (optionnel) : "utf-8" ou "iso-8859-15" si connu.

Ne PAS utiliser pour :
\- Generer un FEC (utiliser generate_fec_export).
\- Analyser des ecritures dans Pennylane (utiliser browse_journal_entries).

Input parameters:

- `encoding_hint` (string): Optionnel : encodage connu du fichier source.
- `fec_text` (string, required): Contenu brut du FEC a valider (texte, separateur tabulation ou pipe).

### `generate_monthly_close_report` (~351 tokens)

Génère une **note de synthèse mensuelle complète** pour un dossier, prête à coller dans le livrable client. Chaîne plusieurs analyses : P&L, trésorerie clients, dépenses anormales (vs moyenne 3 mois), doublons fournisseurs, actions cabinet priorisées. Markdown structuré.

Mode prise en main : si le contexte cabinet n'est pas fourni, lance quand même une première synthèse avec contexte auto et hypothèses explicites. Ne bloque pas sur des questions préalables ; pose les questions de validation en fin de note.

À utiliser quand l'utilisateur demande :
\- "Génère la note de synthèse de [mois]"
\- "Prépare la note mensuelle pour [mois] sur [client]"
\- "Bilan du mois clos"

Ne PAS utiliser pour :
\- Une simple lecture du P&L (utiliser get_company_pnl, plus léger)
\- Le détail des factures impayées (utiliser find_unpaid_customer_invoices)
\- Plusieurs mois consécutifs (1 mois à la fois)

Input parameters:

- `dossier_context` (string): Contexte cabinet du dossier (1-3 phrases) : activité, modèle B2B/B2C, saisonnalité de la période, particularités comptables, état de saisie. Optionnel : si absent, PennyPilot utilise un contexte auto…
- `month` (string): Mois cible au format "YYYY-MM" (ex : "2026-04"). Optionnel : par défaut, PennyPilot utilise le mois précédent.
- `tone` (string): Ton : neutral (défaut), alerting, concise, detailed.

### `generate_revision_triage` (~552 tokens)

Produit un **cockpit de pré-révision** pour le dossier comptable courant Pennylane : checklist d'urgence, points bloquants par cycle (411/401/charges/produits), drafts de demandes client, commentaires de révision pré-rédigés, et audit trail strict.

Strictement **lecture seule** : aucune modification dans Pennylane (pas de lettrage, pas de création d'écriture, pas d'envoi de demande). Le collaborateur copie ce qui l'intéresse dans son dossier de travail.

À utiliser quand l'utilisateur demande :
\- "Prépare la révision de mai"
\- "Prépare la pré-révision"
\- "Donne-moi le cockpit avant ouverture du dossier"
\- "Triage de révision pour T1 2026"
\- "Qu'est-ce qui bloque la révision ce mois-ci ?"
\- "Liste les blockers révision"

Paramètres :
\- `period` : "YYYY-MM" (mois), "YYYY-Qn" (trimestre), ou "YYYY" (exercice). Défaut : mois précédent.
\- `scope` : "monthly_review" (défaut) / "closing" / "supervision".
\- `materiality_threshold_eur` : seuil de matérialité, défaut 100€.
\- `include_client_requests` : produit la section "Demandes client préparées", défaut true.
\- `dossier_context` : contexte d'activité (saisonnalité, multi-établissements, particularités). Si absent, PennyPilot lance une première pré-révision avec contexte auto et hypothèses explicites.

Ne PAS utiliser pour :
\- Faire le lettrage automatique (PennyPilot est read-only par conception).
\- Envoyer un message au client (drafts à copier manuellement).
\- La note de synthèse mensuelle finale (utiliser `generate_monthly_close_report`).

Input parameters:

- `dossier_context` (string): Contexte du dossier (activité, saisonnalité, multi-établissements, particularités cabinet). Si non fourni, l'outil demandera confirmation avant analyse.
- `include_client_requests` (boolean): Inclure la section 'Demandes client préparées'. Défaut : true.
- `materiality_threshold_eur` (number): Seuil de matérialité en euros. Défaut : 100.
- `period` (string): Période comptable. Format : 'YYYY-MM' (mois), 'YYYY-Qn' (trimestre), 'YYYY' (exercice). Défaut : mois précédent.
- `scope` (string): Type de révision. Défaut : monthly_review.

### `generate_dossier_health_check` (~502 tokens)

Produit une **Revue analytique dossier** read-only pour le dossier Pennylane courant : score synthétique, indicateurs manager, alertes prioritaires et audit trail.

À utiliser quand l'utilisateur demande :
\- "Fais la revue analytique du dossier"
\- "Prépare la revue analytique"
\- "Fais le health check du dossier"
\- "Quels sont les risques du dossier ?"
\- "Est-ce que le dossier est sain ?"
\- "Donne-moi les anomalies principales avant revue manager"
\- "Prépare une revue rapide trésorerie / BFR / marge / TVA"

La Revue analytique dossier couvre :
\- trésorerie (512/53) ;
\- BFR proxy (411 - 401) ;
\- produits / charges / résultat calculé ;
\- TVA 445 ;
\- dettes fiscales et sociales 43/44 ;
\- comptes d'attente 471/472 ;
\- lettrage 411/401 ;
\- impayés clients et doublons fournisseurs potentiels.

Strictement **lecture seule** : aucune modification dans Pennylane. La sortie sépare constat, pourquoi, source, confiance et action suggérée.

Paramètres :
\- `period` : "YYYY-MM" (mois), "YYYY-Qn" (trimestre), ou "YYYY" (exercice). Défaut : mois précédent.
\- `materiality_threshold_eur` : seuil de matérialité, défaut depuis règles cabinet.
\- `dossier_context` : contexte d'activité / saisonnalité / particularités cabinet. Si absent, l'outil lance une première revue avec contexte auto et hypothèses explicites.

Ne PAS utiliser pour :
\- Certifier les comptes.
\- Remplacer la pré-révision détaillée (utiliser `generate_revision_triage`).
\- Répondre directement au client final sans validation cabinet.

Input parameters:

- `company` (string): Optionnel : Nom ou ID de la société Pennylane à cibler (mode cabinet uniquement).
- `dossier_context` (string): Contexte du dossier : activité, saisonnalité, multi-établissements, éléments connus du cabinet.
- `materiality_threshold_eur` (number): Seuil de matérialité en euros. Défaut : règles cabinet.
- `period` (string): Période comptable. Format : 'YYYY-MM', 'YYYY-Qn', ou 'YYYY'. Défaut : mois précédent.

### `prepare_client_communication` (~154 tokens)

Prépare 3 variantes de message client (Standard/Urgent/Pédagogique) à partir d'une anomalie comptable détectée, avec citation officielle. PennyPilot n'envoie rien : la décision finale d'envoi reste humaine.

Input parameters:

- `anomalie` (string, required): Anomalie comptable détectée. Exemple : "Facture du 12/04/2026 de 2400 EUR sans justificatif (compte 401, fournisseur X)".
- `context_hints` (string): Contexte libre optionnel : relation client, urgence, echeance souhaitee, dossier, ton.
- `tone_hint` (string): Variante souhaitee. Par defaut, retourne les 3 variantes.

### `enrich_company_official_profile` (~96 tokens)

Retourne une fiche entreprise officielle (SIREN, NAF, forme juridique, siège, dirigeants disponibles) depuis recherche-entreprises.api.gouv.fr. Si le SIREN est absent, tente de le lire depuis le dossier Pennylane connecté.

Input parameters:

- `siren` (string): SIREN 9 chiffres. Optionnel : si absent, PennyPilot tente de le lire depuis /me Pennylane.

### `prepare_rdv_brief` (~128 tokens)

Prépare un brief de rendez-vous client : photo financière, état du dossier, points chauds, opportunités de conseil, questions à poser et audit trail. Lecture seule, à valider par l'expert avant usage client.

Input parameters:

- `dossier_context` (string): Nom client + contexte du rendez-vous ou particularités du dossier.
- `month` (string): Mois analysé au format YYYY-MM. Défaut : mois précédent.
- `rdv_objectif` (string): Objectif du RDV : revue trimestrielle, financement, cession, point cash, etc.

### `search_bofip` (~107 tokens)

Recherche une doctrine BOFiP officielle par mots-clés fiscaux (TVA, IS, CIR, BIC, BNC, TVS). V0.4 : top sections seedées + validation source officielle, sans scraping agressif.

Input parameters:

- `category` (string): Catégorie fiscale optionnelle pour pré-filtrer.
- `query` (string, required): Terme de recherche, ex : "TVA déductible", "DAS-2 honoraires", "CIR".

### `list_journals` (~192 tokens)

Liste **tous les journaux comptables** (livres journaux) du dossier Pennylane : journal des ventes (VE), journal des achats (AC), journal de banque (BQ), journal des opérations diverses (OD), etc. Retourne pour chaque journal son code, son libellé, son type, et un compteur du nombre d'écritures de la période courante si disponible.

À utiliser quand l'utilisateur demande :
\- "Liste les journaux du dossier"
\- "Quels sont les codes journaux utilisés ?"
\- "Quels journaux sont configurés sur le dossier ?"
\- "C'est quoi le code journal VE / AC / BQ ici ?"

Ne PAS utiliser pour :
\- Voir les **écritures** d'un journal précis (utiliser browse_account_ledger ou browse_journal_entries)
\- Le plan comptable (utiliser get_chart_of_accounts)

### `get_chart_of_accounts` (~354 tokens)

Récupère le **plan comptable** (chart of accounts) du dossier Pennylane, groupé par classe PCG (1=capitaux, 2=immobilisations, 3=stocks, 4=tiers, 5=trésorerie, 6=charges, 7=produits). Retourne pour chaque compte son numéro, son libellé, sa classe, et son flag actif/utilisé.

À utiliser quand l'utilisateur demande :
\- "Donne-moi le plan comptable du dossier"
\- "Quels comptes 6xxx sont utilisés ?" / "Liste les comptes de la classe 5"
\- "Le compte 411000 existe-t-il sur ce dossier ?"
\- "Comment est ventilé le plan comptable ?"
\- "Lister tous les comptes fournisseurs"

Optionnellement filtrable par préfixe de numéro (ex : "6" pour toutes les charges, "411" pour comptes clients individuels). Sans filtre, retourne les classes 1-7 résumées + détail classes 4-6-7 (les plus utilisées en exploitation).

Ne PAS utiliser pour :
\- Voir les **écritures** d'un compte (utiliser browse_account_ledger)
\- Le solde d'un compte (utiliser get_company_pnl ou browse_account_ledger qui inclut les soldes)

Input parameters:

- `account_prefix` (string): Filtre optionnel sur le préfixe du numéro de compte. Ex : '6' (toutes charges), '60' (achats), '411' (comptes clients individuels), '512' (comptes banques). Sans filtre, vue globale du plan.

### `browse_account_ledger` (~509 tokens)

Affiche le **Grand livre d'un compte** sur une période donnée : toutes les écritures du compte avec date, libellé, journal d'origine, débit, crédit et solde courant cumulé. C'est l'équivalent de la vue "Grand livre" dans l'interface Pennylane (ou de la consultation d'un compte dans le PCG).

À utiliser quand l'utilisateur demande :
\- "Écritures du compte 411 sur janvier 2026"
\- "Grand livre du compte 401 ABCDE sur Q1"
\- "Détails du compte 512000 le mois dernier"
\- "Toutes les écritures du compte X entre X et Y"
\- "Mouvement du compte de banque"

Paramètres :
\- `account_number` (requis) : le numéro de compte exact ou un préfixe sans wildcard (ex : "411", "401000", "512100"). Si plusieurs comptes matchent, on renvoie une erreur explicite.
\- `period_start` (requis) : début période au format ISO date (YYYY-MM-DD).
\- `period_end` (requis) : fin période au format ISO date (YYYY-MM-DD).
\- `aggregate` (optionnel) : si true, renvoie uniquement le **solde net** débit/crédit du compte (ou du préfixe) sur la période, sans lister les écritures. À privilégier pour les questions de type "combien d'amortissement sur mars ?" et pour les comptes très volumineux (caisse retail, amortissements ligne à ligne) dont le détail dépasse des dizaines de milliers de lignes.

Ne PAS utiliser pour :
\- Le plan comptable (utiliser get_chart_of_accounts)
\- La balance de tous les comptes / par classe (utiliser get_trial_balance)

Input parameters:

- `account_number` (string, required): Numéro de compte exact ou préfixe (ex : '411', '401000', '512100').
- `aggregate` (boolean): Si true, renvoie seulement le solde net (débit/crédit) sans lister les écritures. Recommandé pour les comptes très volumineux ou les questions de solde.
- `company` (string): Optionnel : Nom ou ID de la société Pennylane à cibler (mode cabinet uniquement).
- `period_end` (string, required): Date fin ISO YYYY-MM-DD.
- `period_start` (string, required): Date début ISO YYYY-MM-DD.

### `find_unlettered_entries` (~456 tokens)

Liste les **écritures non lettrées** (lettrage en attente) sur les comptes clients (411*) ou fournisseurs (401*) du dossier Pennylane. Renvoie un résumé par compte avec montant en attente, nombre d'écritures, top 20 par ancienneté.

Le lettrage = associer une facture à son règlement (ou plusieurs règlements à plusieurs factures qui se compensent). C'est une tâche répétitive cabinet, qui prend du temps mais qui dégage la lecture des soldes clients / fournisseurs.

À utiliser quand l'utilisateur demande :
\- "Quelles écritures sont en attente de lettrage ?"
\- "Liste les comptes clients qui ont du lettrage à faire"
\- "Combien d'écritures fournisseurs non lettrées ?"
\- "Faut-il lettrer le compte 411 ABCDE ?"
\- "Liste les vieilles écritures non lettrées"

Paramètres optionnels :
\- `account_class` : "customers" (411*) | "suppliers" (401*) | "both" (défaut : both).
\- `account_prefix` : préfixe précis de compte tiers (ex : "411ABC" ou "401DUPONT") pour borner les gros dossiers.
\- `older_than_days` : seuil d'ancienneté minimum en jours (défaut 0).

Ne PAS utiliser pour :
\- Voir le détail d'un compte (utiliser browse_account_ledger)
\- Faire le lettrage lui-même (l'API v0.2 de PennyPilot est en lecture seule)

Input parameters:

- `account_class` (string): 'customers' (411*), 'suppliers' (401*), ou 'both'. Défaut : both.
- `account_prefix` (string): Préfixe précis de compte tiers pour borner les gros dossiers (ex '411ABC' ou '401DUPONT').
- `company` (string): Optionnel : Nom ou ID de la société Pennylane à cibler (mode cabinet uniquement).
- `older_than_days` (number): Filtre les écritures de plus de N jours. Défaut 0 (toutes).

### `browse_journal_entries` (~337 tokens)

Liste les **écritures comptables** (ledger entries, pas seulement les lignes) sur une période, optionnellement filtrées par journal. Vue chronologique de l'activité comptable du dossier.

À utiliser quand l'utilisateur demande :
\- "Écritures de mai 2026"
\- "Toutes les écritures du journal des ventes en avril"
\- "Liste les OD du dernier trimestre"
\- "Mouvements comptables sur la période X-Y"
\- "Quelles écritures dans le journal de banque ?"

Paramètres :
\- `period_start` (requis) : début période ISO YYYY-MM-DD.
\- `period_end` (requis) : fin période ISO YYYY-MM-DD.
\- `journal_code` (optionnel) : code du journal à filtrer (ex : "VE", "AC", "BQ", "OD"). Si absent, toutes les écritures de la période, tous journaux confondus.

Ne PAS utiliser pour :
\- Voir les LIGNES d'écriture par compte (utiliser browse_account_ledger)
\- Le détail d'une seule écriture (utiliser get_journal_entry_detail)
\- La liste des journaux configurés (utiliser list_journals)

Input parameters:

- `company` (string): Optionnel : Nom ou ID de la société Pennylane à cibler (mode cabinet uniquement).
- `journal_code` (string): Code journal optionnel : 'VE','AC','BQ','OD',etc.
- `period_end` (string, required): Date fin ISO YYYY-MM-DD.
- `period_start` (string, required): Date début ISO YYYY-MM-DD.

### `get_journal_entry_detail` (~260 tokens)

Récupère le **détail complet d'une écriture comptable** : entête (date, journal, libellé, référence, statut), toutes ses lignes débit/crédit par compte, et informations associées (pièces jointes liées, état de lettrage). Permet l'audit ou la vérification d'une écriture précise.

À utiliser quand l'utilisateur demande :
\- "Détail de l'écriture #X"
\- "Vérifie cette écriture (id=...)"
\- "Toutes les lignes de l'écriture du 15 mai journal des ventes"
\- "Cette écriture est-elle équilibrée ?"

Paramètres :
\- `entry_id` (requis) : l'ID interne Pennylane de l'écriture (colonne "ID écriture" dans browse_journal_entries). Ne pas utiliser la référence pièce ou le numéro de facture.

Ne PAS utiliser pour :
\- Lister plusieurs écritures (utiliser browse_journal_entries)
\- Voir les écritures d'UN compte sur une période (utiliser browse_account_ledger)

Input parameters:

- `entry_id` (string, required): ID Pennylane de l'écriture comptable (champ "id" dans les listes).

### `audit_recent_changes` (~223 tokens)

Audit trail : liste les **modifications récentes** apportées aux écritures comptables (créations, mises à jour, suppressions de lignes d'écriture). Utile pour le contrôle interne, la conformité, ou un audit qualité du dossier.

À utiliser quand l'utilisateur demande :
\- "Quelles écritures ont été modifiées récemment ?"
\- "Qui a touché à la compta ces 7 derniers jours ?"
\- "Audit des modifications de la semaine"
\- "Y a-t-il eu des suppressions d'écritures ?"
\- "Liste les changements depuis X"

Paramètre :
\- `since_days` (optionnel) : nombre de jours en arrière à examiner. Défaut 7. Max recommandé 90.

Ne PAS utiliser pour :
\- Voir le détail d'une écriture (utiliser get_journal_entry_detail)
\- Modifier une écriture (PennyPilot v0.2 est en lecture seule)

Input parameters:

- `since_days` (number): Nombre de jours en arrière. Défaut 7. Max 90.

### `list_fiscal_years` (~191 tokens)

Liste les **exercices comptables** (fiscal years) du dossier Pennylane avec leur date de début, date de fin, et statut (ouvert / clos / en cours de clôture). Utile pour cadrer les périodes de travail (clôture annuelle, comparatif N-1, balance d'ouverture…).

À utiliser quand l'utilisateur demande :
\- "Liste les exercices comptables"
\- "Quand commence l'exercice en cours ?"
\- "Quel est l'exercice précédent ?"
\- "Y a-t-il un exercice ouvert ?"
\- "Date de clôture du dernier exercice"
\- "Combien d'exercices archivés sur le dossier ?"

Ne prend aucun paramètre : retourne tous les exercices configurés.

Input parameters:

- `company` (string): Optionnel : Nom ou ID de la société Pennylane à cibler (mode cabinet uniquement).

### `audit_invoice_changes` (~323 tokens)

Radar activité factures (changelogs)

Liste les **événements récents sur les factures** (clients et fournisseurs) : insertions, modifications, suppressions. Radar d'activité pour savoir ce qui a bougé sur la facturation depuis la dernière revue.

⚠️ **C'EST le changelog officiel Pennylane v2** (`GET /changelogs/customer_invoices` + `/changelogs/supplier_invoices`). Fenêtre limitée à **4 semaines** côté Pennylane. **NE PAS rediriger vers Pennylane natif.**

À utiliser quand l'utilisateur demande :
\- "Qu'est-ce qui a bougé sur les factures cette semaine ?"
\- "Y a-t-il eu des suppressions de factures récemment ?"
\- "Combien de factures créées / modifiées depuis lundi ?"
\- "Radar d'activité facturation"

Paramètre :
\- `since_days` (optionnel) : nombre de jours en arrière. Défaut 7. **Max 28** (limite Pennylane).

Retourne : volumétrie par type de facture et par opération (insertion/modification/suppression), sur la fenêtre demandée.

NE PAS utiliser pour :
\- Le détail d'une facture (utiliser get_invoice_detail).
\- Les impayés (utiliser find_unpaid_customer_invoices).
\- Les modifications d'écritures comptables (utiliser audit_recent_changes).

Input parameters:

- `since_days` (number): Jours en arrière. Défaut 7. Max 28 (limite Pennylane).

### `diagnose_einvoicing_readiness` (~246 tokens)

Diagnostic e-facturation 2026

Diagnostique la **maturité e-facturation** du dossier au regard de la réforme française de la facture électronique (2026) : inscriptions aux plateformes agréées (PA / PDP), par établissement, avec statut et sens d'échange.

⚠️ **C'EST le diagnostic officiel via l'API Pennylane v2** (`GET /pa_registrations`). **NE PAS rediriger vers Pennylane natif.**

À utiliser quand l'utilisateur demande :
\- "Où en est le dossier sur la facture électronique 2026 ?"
\- "Le client est-il inscrit à une plateforme agréée ?"
\- "Diagnostic e-invoicing / PDP / réforme facture électronique"
\- "Quels établissements ne sont pas encore inscrits ?"

Ne prend aucun paramètre : retourne toutes les inscriptions du dossier.

Retourne : inscriptions par établissement (siret / siège), statut (pending/activated/provisioned/draft), sens d'échange (émission/réception/les deux), et synthèse de maturité.

NE PAS utiliser pour : générer ou envoyer une facture (PennyPilot est read-only).

### `list_mandates_and_subscriptions` (~258 tokens)

Radar mandats & abonnements

Radar compact des **mandats de prélèvement** (SEPA, Pro Account) et des **abonnements de facturation récurrente** du dossier. Utile pour les cabinets en gestion locative, abonnements, ou tout dossier à revenus récurrents.

⚠️ **C'EST le radar officiel via l'API Pennylane v2** (`/sepa_mandates`, `/pro_account/mandates`, `/billing_subscriptions`). **NE PAS rediriger vers Pennylane natif.** Les IBAN sont **masqués** (4 derniers caractères) : aucune donnée bancaire complète n'est exposée.

À utiliser quand l'utilisateur demande :
\- "Liste les mandats de prélèvement SEPA"
\- "Quels abonnements récurrents sont actifs ?"
\- "Radar des prélèvements / revenus récurrents"
\- "Combien de mandats signés ?"

Ne prend aucun paramètre.

Retourne : synthèse mandats SEPA (masqués) + mandats Pro Account + abonnements récurrents avec statut et prochaine échéance.

NE PAS utiliser pour : créer/modifier un mandat ou un abonnement (PennyPilot est read-only).

### `generate_general_ledger_export` (~506 tokens)

Générer le grand livre du dossier

Génère l'**export du Grand Livre officiel** (toutes les écritures par compte) pour un exercice complet du dossier Pennylane connecté.

⚠️ **C'EST l'export Grand Livre officiel produit via l'API Pennylane v2** (`POST /exports/general_ledgers`), pas une approximation ni une simple liste à l'écran. Le fichier est directement exploitable pour la révision, l'archivage ou la transmission au commissaire aux comptes. Il est récupéré par polling : PennyPilot ne modifie aucune écriture comptable, l'appel crée seulement un job d'export technique côté Pennylane.

\**Toujours appeler ce tool** quand l'utilisateur demande un grand livre exportable ou téléchargeable. Ce tool produit l'export officiel sans quitter la conversation : ne pas renvoyer l'utilisateur vers Pennylane natif.

Exemples de demandes :
\- "Sors-moi le grand livre de l'exercice 2025"
\- "Export du grand livre complet"
\- "Le grand livre pour la révision / le CAC"

Paramètres :
\- `fiscal_year_id` (optionnel) : identifiant interne Pennylane de l'exercice.
\- `fiscal_year_label` (optionnel) : label ou année, par exemple "2025".
\- `job_id` (optionnel) : reprend le polling d'un export déjà lancé, sans refaire de POST.

Si aucun paramètre, prend automatiquement l'exercice clos le plus récent exploitable.

Retourne : URL signée Pennylane (valide environ 10 min), période, audit trail. Aucune écriture comptable n'est modifiée.

NE PAS utiliser :
\- Pour consulter quelques écritures à l'écran (utiliser browse_account_ledger / browse_journal_entries).
\- Pour le FEC réglementaire DGFiP (utiliser generate_fec_export).
\- Pour le grand livre analytique (utiliser generate_analytical_general_ledger_export).

Input parameters:

- `company` (string): Optionnel : Nom ou ID de la société Pennylane à cibler (mode cabinet uniquement).
- `fiscal_year_id` (string|integer|null): ID interne Pennylane de l'exercice.
- `fiscal_year_label` (string): Label ou année, par exemple "2025".
- `job_id` (string): ID de job Pennylane à reprendre sans recréer d'export.

### `generate_analytical_general_ledger_export` (~537 tokens)

Générer le grand livre analytique du dossier

Génère l'**export du Grand Livre analytique officiel** (écritures ventilées par axe / code analytique) pour un exercice complet du dossier Pennylane connecté.

⚠️ **C'EST l'export grand livre analytique officiel produit via l'API Pennylane v2** (`POST /exports/analytical_general_ledgers`), pas une approximation. Utile pour l'analyse de gestion par centre de coût, projet ou activité. Il est récupéré par polling : PennyPilot ne modifie aucune écriture comptable, l'appel crée seulement un job d'export technique côté Pennylane.

\**Toujours appeler ce tool** quand l'utilisateur demande un grand livre analytique exportable. Ce tool produit l'export officiel sans quitter la conversation : ne pas renvoyer l'utilisateur vers Pennylane natif.

Exemples de demandes :
\- "Sors-moi le grand livre analytique 2025"
\- "Export de la compta analytique par axe"
\- "Le grand livre ventilé par projet / centre de coût"

Paramètres :
\- `fiscal_year_id` (optionnel) : identifiant interne Pennylane de l'exercice.
\- `fiscal_year_label` (optionnel) : label ou année, par exemple "2025".
\- `mode` (optionnel) : `in_line` (défaut, une ligne par ventilation) ou `in_column` (axes en colonnes).
\- `job_id` (optionnel) : reprend le polling d'un export déjà lancé, sans refaire de POST.

Si aucun exercice n'est précisé, prend automatiquement l'exercice clos le plus récent exploitable.

Retourne : URL signée Pennylane (valide environ 10 min), période, mode, audit trail. Aucune écriture comptable n'est modifiée.

NE PAS utiliser :
\- Pour le grand livre comptable standard (utiliser generate_general_ledger_export).
\- Pour le FEC réglementaire (utiliser generate_fec_export).

Input parameters:

- `company` (string): Optionnel : Nom ou ID de la société Pennylane à cibler (mode cabinet uniquement).
- `fiscal_year_id` (string|integer|null): ID interne Pennylane de l'exercice.
- `fiscal_year_label` (string): Label ou année, par exemple "2025".
- `job_id` (string): ID de job Pennylane à reprendre sans recréer d'export.
- `mode` (string): Présentation : in_line (défaut) ou in_column.

### `get_bank_transaction_detail` (~174 tokens)

Détail complet d'une **opération bancaire** (transaction) : en-tête (date, libellé, montant, compte, catégorie analytique) et liste des **factures** (clients ou fournisseurs) rapprochées.

À utiliser quand l'utilisateur demande :
\- "Détail de la transaction bancaire X"
\- "Quelles factures sont rapprochées avec cette opération ?"
\- "Lien de rapprochement pour la transaction Y"

Paramètres :
\- `transaction_id` (requis) : identifiant de la transaction Pennylane.

Ne PAS utiliser pour :
\- Lister toutes les transactions (utiliser get_bank_transactions).
\- Voir les détails d'une facture seule (utiliser get_invoice_detail).

Input parameters:

- `transaction_id` (string, required): Identifiant de la transaction Pennylane.

### `get_lettered_ledger_entry_lines` (~176 tokens)

Récupère la **liste de toutes les écritures comptables lettrées** (associées) avec une écriture (ledger_entry_line) donnée du dossier Pennylane. Permet d'analyser le détail du lettrage (quelles factures et règlements se compensent).

À utiliser quand l'utilisateur demande :
\- "Qu'est-ce qui est lettré avec l'écriture X ?"
\- "Détail du lettrage pour la ligne d'ID Y"
\- "Avec quel paiement cette facture a-t-elle été lettrée ?"

Paramètres :
\- `ledger_entry_line_id` (requis) : identifiant de la ligne d'écriture (ledger_entry_line).

Input parameters:

- `ledger_entry_line_id` (string, required): Identifiant de la ligne d’écriture.

### `detect_supplier_payment_risks` (~414 tokens)

Radar anomalies RIB / fraude fournisseur

Radar **lecture seule** des anomalies sur les coordonnees bancaires (RIB / IBAN) des **fournisseurs** d'un dossier. Repere les IBAN malformes, les incoherences pays (IBAN etranger pour un fournisseur francais), les IBAN hors zone SEPA, et les changements recents d'IBAN sur un fournisseur recurrent.

⚠️ **C'EST le radar officiel via l'API Pennylane v2** (`GET /suppliers`). **NE PAS rediriger vers Pennylane natif.** Les IBAN sont **masques** (4 derniers caracteres) ; aucune donnee bancaire complete n'est exposee.

⚠️ **Cet outil ALERTE seulement.** Il ne suspend aucun paiement, ne modifie rien. Toute mise en paiement reste une **decision humaine** du cabinet.

A utiliser quand l'utilisateur demande :
\- "Y a-t-il des RIB suspects chez mes fournisseurs ?"
\- "Verifie les IBAN fournisseurs avant la campagne de paiement"
\- "Un fournisseur a-t-il change d'IBAN recemment ?"
\- "Detecte les risques de fraude au virement fournisseur"

Parametre :
\- `since_days` (optionnel) : fenetre, en jours, pour reperer les changements recents d'IBAN. Defaut 90. Max 28 si l'historique passe par le changelog Pennylane (borne API).

Retourne : un classement des fournisseurs en **bloquant / a verifier / ok**, avec la raison de chaque alerte et un rappel explicite que l'outil n'agit pas.

NE PAS utiliser pour :
\- Le detail d'une facture fournisseur (utiliser get_invoice_detail).
\- Les mandats SEPA / prelevements (utiliser list_mandates_and_subscriptions).

Input parameters:

- `since_days` (number): Fenetre en jours pour les changements recents d'IBAN. Defaut 90.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/holco-apps-pennypilot-mcp/https-github-com-holco-apps-pennypilot-mcp-releases-download-v1-0-0-pennypilot-m#diagnostics

## Score history

- 2026-08-03: 33
- 2026-08-02: 25
- 2026-08-01: 25
- 2026-07-31: 25
- 2026-07-30: 32
- 2026-07-28: 33
- 2026-07-27: 32

## Links

- Repository: https://github.com/holco-apps/pennypilot-mcp
- Website: https://apps.holco.co/mcp/pennylane
- Changelog RSS feed: https://verifymcp.io/servers/holco-apps-pennypilot-mcp/https-github-com-holco-apps-pennypilot-mcp-releases-download-v1-0-0-pennypilot-m/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/holco-apps-pennypilot-mcp/https-github-com-holco-apps-pennypilot-mcp-releases-download-v1-0-0-pennypilot-m/changelog.json
- HTML version of this page: https://verifymcp.io/servers/holco-apps-pennypilot-mcp/https-github-com-holco-apps-pennypilot-mcp-releases-download-v1-0-0-pennypilot-m
