{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-05T19:28:48.954Z","url":"https://verifymcp.io/servers/ai4xedu-hidden-tokens/hidden-tokens-connector","markdownUrl":"https://verifymcp.io/servers/ai4xedu-hidden-tokens/hidden-tokens-connector.md","server":{"slug":"ai4xedu-hidden-tokens","name":"Hidden Tokens","registryName":"io.github.ai4xedu/hidden-tokens","description":"Anonymize client files on your computer before Claude reads them; real values restored locally.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"hidden-tokens-connector","type":"mcpb","identifier":"https://github.com/ai4xedu/hidden-tokens-releases/releases/download/v0.21.1/hidden-tokens-connector-2.60.4.mcpb","withdrawn":false,"url":"https://verifymcp.io/servers/ai4xedu-hidden-tokens/hidden-tokens-connector","version":null,"transport":"stdio","scoredAt":"2026-11-05T07:01:33.826Z"},"score":{"total":42,"tier":"low","status":"scored","weekDelta":0,"history":[{"date":"2026-11-05","total":42},{"date":"2026-11-04","total":42},{"date":"2026-11-03","total":41},{"date":"2026-11-02","total":41},{"date":"2026-11-01","total":41},{"date":"2026-10-31","total":41},{"date":"2026-10-30","total":41},{"date":"2026-10-29","total":42},{"date":"2026-10-28","total":42},{"date":"2026-10-27","total":41}]},"categories":[{"name":"Supply Chain Security","score":24,"verdict":"partial","reasons":["No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.","Known CVEs were checked across the 119 of 120 dependencies we could resolve, so this covers what we could see, not the whole tree.","No install/post-install scripts declared.","Dependency health was assessed across the 119 of 120 dependencies we could resolve, so this covers what we could see, not the whole tree."],"codes":[{"code":"supplychain.malware_inconclusive","args":{"reason":"ecosystem_unsupported"}},{"code":"cve.tree_partial","args":{"seen":"120","resolved":"119"}},{"code":"installscript.none","args":{}},{"code":"dephealth.tree_partial","args":{"deps":"119","seen":"120","resolved":"119","unhealthy":"28"}}]},{"name":"Provenance & Transparency","score":19,"verdict":"fail","reasons":["Repository check failed: no source repository is declared.","Provenance check failed: no build-provenance attestation is published.","Clear OSI-approved license (MIT).","Actively maintained (last published 2 days ago).","Disclosure check failed: no security disclosure policy was found in the source repository."],"codes":[{"code":"provenance.repo_none","args":{}},{"code":"provenance.none","args":{}},{"code":"license.osi","args":{"spdx":"MIT"}},{"code":"maintenance.recent","args":{"age_days":"2"}},{"code":"disclosure.absent","args":{}}]},{"name":"Schema Quality & AI Usability","score":72,"verdict":"fail","reasons":["100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).","AI-judged instruction clarity (excellent).","Context-footprint check failed: tool/resource definitions use about 13012 tokens (~464/item across 28 items; 28 tools + 0 resources), over budget; trim descriptions and params.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.descriptions","args":{"pct":"100"}},{"code":"schema.ai_quality","args":{"band":"excellent"}},{"code":"schema.footprint_heavy","args":{"avg":"464","items":"28","tools":"28","tokens":"13012","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":0,"verdict":"unverified","reasons":["Stability not yet verified: two runs of the same published version returned different tool surfaces, so we cannot tell a change in the package from a difference in our own sandbox run."],"codes":[{"code":"stability.capture_disagreement","args":{}}]},{"name":"Tool Coverage","score":97,"verdict":"partial","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","90% of tool parameters carry a description."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"90"}}]},{"name":"Tool Safety","score":100,"verdict":"pass","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","We read all 28 captured tool definition(s), and no name or description among them implies an irreversible operation.","An AI judge read all 29 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_none","args":{"tools":"28"}},{"code":"toolsafety.manipulation_clean","args":{"units":"29","judged":"29"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28."],"codes":[{"code":"protocol.supported","args":{"latest":"2026-07-28","version":"2025-11-25"}}]}],"inconclusive":["No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.","Stability not yet verified: two runs of the same published version returned different tool surfaces, so we cannot tell a change in the package from a difference in our own sandbox run."],"malware":[],"components":[{"slug":"hidden-tokens-connector","type":"mcpb","identifier":"https://github.com/ai4xedu/hidden-tokens-releases/releases/download/v0.21.1/hidden-tokens-connector-2.60.4.mcpb","withdrawn":false,"score":42,"current":true,"url":"https://verifymcp.io/servers/ai4xedu-hidden-tokens/hidden-tokens-connector","markdownUrl":"https://verifymcp.io/servers/ai4xedu-hidden-tokens/hidden-tokens-connector.md"}],"facts":[{"label":"Registry","value":"mcpb"},{"label":"Package","value":"https://github.com/ai4xedu/hidden-tokens-releases/releases/download/v0.21.1/hidden-tokens-connector-2.60.4.mcpb"},{"label":"Transport","value":"stdio"},{"label":"SHA-256","value":"3076ba1d2d492fb3dbe7c285f0e2c4af16dc3b8ed720f6ad23a9fd56cd72758f"}],"install":{"available":true,"bundleSha256":"3076ba1d2d492fb3dbe7c285f0e2c4af16dc3b8ed720f6ad23a9fd56cd72758f"},"tools":[{"name":"list_files","title":"List working-folder files","description":"File access to the user's Hidden Tokens folder. CALL THIS FIRST whenever the user mentions their files, folder, case, matter, dossier, patient file, medical records, CVs, logs, documents, exhibits, pieces, contracts, invoices, spreadsheets, emails or scans with nothing attached, or asks you to open their Hidden Tokens folder: they are HERE, in the user's Hidden Tokens working folder on their computer. Lists those files (Word, PDF, Excel, CSV, text, emails, scanned images) without reading them. Never ask the user to upload, attach or connect files while this tool is available.\n\nÀ APPELER EN PREMIER quand l'utilisateur parle de son dossier, de ses pièces ou de ses fichiers sans rien joindre : ils sont ici. Liste les fichiers traitables du dossier de travail (Excel, CSV, Word, PDF, texte, scans), sans lire leur contenu. Les noms de fichiers peuvent contenir des noms de clients : ils sont MASQUÉS (•••) et chaque fichier reçoit un repère stable [F-XXXXX] à utiliser dans les autres outils. Si l'utilisateur donne le nom exact d'un fichier, il peut aussi être utilisé tel quel. Sur le contenu de ces fichiers, réponds avec les outils Hidden Tokens seulement, jamais à partir d'une conversation passée ni de ta mémoire.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":275},{"name":"anonymise_file","title":"Anonymise a file","description":"Read, open or analyse one of the user's files (Word, PDF, Excel, CSV, text, email) safely: it is pseudonymised on the user's computer, then its content is returned to you for analysis.\n\nPseudonymise un fichier du dossier de travail (Excel/CSV, Word .docx, PDF natif, texte .md/.txt) AVANT toute analyse. Modes choisis automatiquement : TABLEAU (colonnes sensibles codées en entier), DOCUMENT (facture, document mis en page → codage à l'intérieur des cellules), WORD (copie .docx codée, mise en forme conservée, métadonnées retirées ; suivi des modifications et commentaires gardés en texte codé : [supprimé par …], [inséré par …], [commentaire de …]) et PDF/TEXTE (contenu extrait, anonymisé, livré en .md). Dans tous les modes, le VERROU code en plus tout ce qui n'est pas prouvé inoffensif : noms propres, mots inconnus du dictionnaire, références, identifiants (cartes bancaires et permis de conduire compris). Les NOMBRES d'un tableur sont nombres : finance sensible (paie, résultat…) protégée, le reste en clair, réglable colonne par colonne (chiffres, chiffres_par_colonne) ; dates et mots courants restent lisibles. FONCTIONNEMENT EN DEUX TEMPS : sans confirmer, renvoie le PLAN (rien n'est écrit) — présente-le à l'utilisateur, puis rappelle avec confirmer: true. Les valeurs réelles ne sont jamais renvoyées. Toujours utiliser cet outil AVANT de travailler sur un fichier contenant des données personnelles.","inputs":[{"name":"chiffres","type":"string","required":false,"description":"Mode pour TOUS les nombres du fichier. Absent = réglage du dossier posé dans l'appli Hidden Tokens, sinon « auto » : chaque colonne numérique est classée d'après son en-tête — finance sensible (paie,…"},{"name":"chiffres_par_colonne","type":"object","required":false,"description":"Corrections colonne par colonne, telles que l'utilisateur les demande après le PLAN : { \"en-tête affiché\" ou \"lettre de colonne\": \"clair\" | \"gabarit\" | \"indice\" }. Prime sur le mode global. Ne s'appl…"},{"name":"colonnes_a_coder","type":"array","required":false,"description":"Mode tableau : en-têtes de colonnes à coder EN ENTIER en plus de la détection automatique"},{"name":"colonnes_a_exclure","type":"array","required":false,"description":"Mode tableau : en-têtes de colonnes à ne pas coder en entier (le verrou y code quand même les noms propres)"},{"name":"confirmer","type":"boolean","required":false,"description":"false/absent = renvoyer le PLAN sans rien écrire ; true = exécuter (après accord de l'utilisateur)"},{"name":"dates","type":"string","required":false,"description":"Rendu lisible seulement. « naissance » (défaut) : seules les dates de naissance sont décalées, les autres restent exactes (un âge peut varier d'un an). « toutes » : toutes les dates complètes du doss…"},{"name":"generaliser","type":"boolean","required":false,"description":"Textes et PDF : code aussi les villes (LIEU-…, décodées dans la réponse), ramène une date de naissance à sa décennie et un âge à sa tranche. À proposer quand le test de réidentification du plan est \ud83d…"},{"name":"lignes","type":"string","required":false,"description":"Grand tableau ou long texte : les lignes de l'aperçu à montrer, par exemple « 301-600 » (défaut : les 300 premières). Avec confirmer: true ; même clé, même copie codée"},{"name":"mode","type":"string","required":false,"description":"Défaut auto : la mise en page décide (en-têtes homogènes = tableau, sinon document)"},{"name":"nom_fichier","type":"string","required":true,"description":"Repère [F-XXXXX] donné par lister_fichiers, ou nom/chemin relatif dans le dossier de travail"},{"name":"onglet","type":"string","required":false,"description":"Onglet à traiter : son numéro (« 2 ») ou son nom (défaut : TOUS les onglets, dans une seule copie codée)"},{"name":"rendu","type":"string","required":false,"description":"Rendu de ce que l'IA reçoit. Absent = réglage du dossier posé dans l'appli Hidden Tokens, sinon « codes » : chaque donnée devient un code (NOM-001…). « lisible » : prénoms, noms, sociétés, villes cod…"},{"name":"valeurs_a_coder","type":"array","required":false,"description":"Noms propres à coder EN PLUS de la détection automatique — demande-les à l'utilisateur, ne les invente jamais"},{"name":"valeurs_a_exclure","type":"array","required":false,"description":"Valeurs que l'utilisateur veut EXPLICITEMENT laisser en clair dans le fichier (elles restent masquées dans l'aperçu)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":1268},{"name":"anonymise_folder","title":"Anonymise a folder","description":"Read, open or analyse the user's whole folder or case file at once (all documents, one key): pseudonymised on the user's computer before you see it.\n\nTraite d'un coup tous les fichiers Excel/CSV/Word/PDF du dossier de travail (ou ceux dont le nom contient `motif`) : chaque feuille est anonymisée en mode tableau ou document selon sa mise en page, puis passée au VERROU ; les PDF natifs sortent en .md, les PDF scannés sont ignorés et signalés. UNE SEULE clé — la même valeur garde le même code d'un fichier à l'autre, c'est ce qui permet de croiser les fichiers codés. FONCTIONNEMENT EN DEUX TEMPS : sans confirmer, renvoie le PLAN (repères des fichiers + comptes, rien n'est écrit) — présente-le à l'utilisateur puis rappelle avec confirmer: true. Le compte rendu ne contient JAMAIS de contenu, seulement des comptes et des repères ; un rapport de synthèse est écrit sur le poste. Pour travailler ensuite sur UN fichier dans la conversation, utiliser anonymise_file.","inputs":[{"name":"chiffres","type":"string","required":false,"description":"Mode pour TOUS les nombres du fichier. Absent = réglage du dossier posé dans l'appli Hidden Tokens, sinon « auto » : chaque colonne numérique est classée d'après son en-tête — finance sensible (paie,…"},{"name":"chiffres_par_colonne","type":"object","required":false,"description":"Corrections colonne par colonne, telles que l'utilisateur les demande après le PLAN : { \"en-tête affiché\" ou \"lettre de colonne\": \"clair\" | \"gabarit\" | \"indice\" }. Prime sur le mode global. Ne s'appl…"},{"name":"confirmer","type":"boolean","required":false,"description":"false/absent = PLAN sans rien écrire ; true = exécuter (après accord de l'utilisateur)"},{"name":"dates","type":"string","required":false,"description":"Rendu lisible seulement. « naissance » (défaut) : seules les dates de naissance sont décalées, les autres restent exactes (un âge peut varier d'un an). « toutes » : toutes les dates complètes du doss…"},{"name":"generaliser","type":"boolean","required":false,"description":"Textes et PDF : code aussi les villes (LIEU-…, décodées dans la réponse), ramène une date de naissance à sa décennie et un âge à sa tranche. À proposer quand le test de réidentification du plan est \ud83d…"},{"name":"motif","type":"string","required":false,"description":"Filtre sur le nom de fichier AFFICHÉ (masqué) ou le repère, ex. « facture ». Vide = tous"},{"name":"rendu","type":"string","required":false,"description":"Rendu de ce que l'IA reçoit. Absent = réglage du dossier posé dans l'appli Hidden Tokens, sinon « codes » : chaque donnée devient un code (NOM-001…). « lisible » : prénoms, noms, sociétés, villes cod…"},{"name":"valeurs_a_coder","type":"array","required":false,"description":"Noms propres à coder en plus dans tout le lot — demande-les à l'utilisateur, ne les invente jamais"},{"name":"valeurs_a_exclure","type":"array","required":false,"description":"Valeurs à laisser en clair dans tout le lot (sur demande explicite de l'utilisateur)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":941},{"name":"read_scan","title":"Read a scan (local OCR)","description":"Read a scanned document, photo or image (local OCR): scanned letters, minutes, ID cards, receipts, stamped pages.\n\nFait l'OCR d'un SCAN (image .png/.jpg/.tif ou PDF sans couche de texte) ENTIÈREMENT sur le poste, hors ligne. Le texte reconnu N'EST JAMAIS renvoyé ici : il est écrit dans un fichier « …-ocr-A-RELIRE.md » que l'UTILISATEUR doit relire et corriger — l'OCR se trompe, et un identifiant mal reconnu ne serait pas détecté à l'anonymisation (ce serait une fuite silencieuse). Une fois le fichier relu, appelle anonymise_file sur CE fichier. Ne propose jamais d'envoyer l'image d'origine à une IA : pour donner l'image elle-même, c'est redact_image.","inputs":[{"name":"nom_fichier","type":"string","required":true,"description":"Repère [F-XXXXX] ou nom du scan dans le dossier de travail (.pdf, .png, .jpg, .tif…)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":224},{"name":"redact_image","title":"Redact an image","description":"Redact a screenshot, photo or scanned image with black boxes, on the user's computer.\n\nPose des BANDEAUX NOIRS sur une image (capture d'écran, photo de pièce, scan .png/.jpg/.tif ou PDF scanné), entièrement sur le poste : OCR local, puis le même moteur et le même verrou que pour un texte décident ce qui est sensible (noms, identifiants, comptes, adresses, références, mots inconnus) ; un mot mal lu et inconnu est noirci d'office. Les bandeaux sont GRAVÉS dans une nouvelle image PNG (pas superposés). TROIS TEMPS : sans confirmer, renvoie le PLAN (rien n'est écrit) ; avec confirmer: true, écrit l'image caviardée sur le poste — l'UTILISATEUR doit l'ouvrir et vérifier (l'OCR ne voit ni signature, ni tampon, ni écriture manuscrite, ni visage) ; seulement s'il confirme qu'il ne reste rien de lisible, rappelle avec envoyer: true pour recevoir l'image caviardée. Pour travailler sur le TEXTE d'un scan, préférer read_scan.","inputs":[{"name":"confirmer","type":"boolean","required":false,"description":"true = écrire l'image caviardée sur le poste (après accord sur le plan)"},{"name":"envoyer","type":"boolean","required":false,"description":"true = renvoyer ici l'image caviardée DÉJÀ écrite — uniquement après que l'utilisateur l'a ouverte et validée"},{"name":"nom_fichier","type":"string","required":true,"description":"Repère [F-XXXXX] ou nom de l'image / du PDF scanné dans le dossier de travail"},{"name":"valeurs_a_coder","type":"array","required":false,"description":"Noms propres à noircir EN PLUS — demande-les à l'utilisateur, ne les invente jamais"},{"name":"valeurs_a_exclure","type":"array","required":false,"description":"Valeurs que l'utilisateur veut EXPLICITEMENT laisser visibles"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":399},{"name":"encode_text","title":"Encode a text","description":"Pseudonymise or anonymise a text before it is sent to an AI.\n\nRemplace, dans un texte libre, les noms, sociétés, adresses, téléphones, mails, identifiants et mots inconnus par les codes de la clé du dossier (NOM-001…), avec le même moteur et le même verrou qu'un fichier. Rien n'est écrit sur le poste sauf la clé (cumulative). C'est l'entrée du verrou universel : la sentinelle Hidden Tokens l'appelle pour chaque message envoyé à une IA depuis le navigateur. Depuis Claude : si l'utilisateur a collé un texte confidentiel en clair, propose de le coder avec cet outil et ne réutilise QUE le texte codé rendu.","inputs":[{"name":"consigne","type":"boolean","required":false,"description":"Réservé à la passerelle de poste : le texte est la consigne système de Claude Desktop, son vocabulaire fixe reste lisible. Jamais pour un message de l'utilisateur."},{"name":"contenu","type":"string","required":true,"description":"Le texte en clair à coder (un message, un courrier, des notes)"},{"name":"dates","type":"string","required":false,"description":"Rendu lisible seulement. « naissance » (défaut) : seules les dates de naissance sont décalées, les autres restent exactes (un âge peut varier d'un an). « toutes » : toutes les dates complètes du doss…"},{"name":"generaliser","type":"boolean","required":false,"description":"Textes et PDF : code aussi les villes (LIEU-…, décodées dans la réponse), ramène une date de naissance à sa décennie et un âge à sa tranche. À proposer quand le test de réidentification du plan est \ud83d…"},{"name":"rendu","type":"string","required":false,"description":"Rendu de ce que l'IA reçoit. Absent = réglage du dossier posé dans l'appli Hidden Tokens, sinon « codes » : chaque donnée devient un code (NOM-001…). « lisible » : prénoms, noms, sociétés, villes cod…"},{"name":"source","type":"string","required":false,"description":"D'où vient le texte (« chatgpt.com », « claude.ai »…) — pour le journal seulement"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":589},{"name":"deanonymise","title":"Restore real values to a file","description":"Write the final answer, report, letter, brief or Word document with the real names restored (decode, de-anonymise), on the user's computer.\n\nRemplace les codes (NOM-001…) d'un texte ou d'un tableau par les vraies valeurs, LOCALEMENT : le résultat décodé est écrit dans un fichier sur le poste de l'utilisateur et n'apparaît JAMAIS dans la conversation. À utiliser en fin de travail, sur ta réponse finale (texte ou tableau TSV contenant les codes). Pour un courrier, des conclusions, un contrat : format \"docx\" rend un document Word (titres #, listes, **gras**, *italique* et tableaux | a | b | du Markdown sont mis en forme). Pour un e-mail, un message ou une réponse que l'utilisateur va COLLER (messagerie, WhatsApp, formulaire) : format \"presse_papiers\" le pose en clair dans son presse-papiers, sans fichier — il n'a plus qu'à coller (⌘V / Ctrl+V).","inputs":[{"name":"contenu","type":"string","required":true,"description":"Le texte ou tableau (TSV, tabulations) contenant les codes à retraduire"},{"name":"format","type":"string","required":false,"description":"auto (défaut) : tableau TSV → .xlsx, texte → .md ; docx : document Word mis en forme ; presse_papiers : en clair dans le presse-papiers, prêt à coller"},{"name":"nom_sortie","type":"string","required":false,"description":"Nom de base du fichier de sortie (défaut : « resultat »)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":328},{"name":"decode_word","title":"Decode a Word document","description":"Restore the real names in a Word (.docx) document written with codes or pseudonyms; the result stays on the user's computer.\n\nRemplace les codes (NOM-001…) d'un document Word par les vraies valeurs, mise en forme conservée (corps, en-têtes, pieds de page, notes, commentaires), et écrit le .docx décodé sur le poste de l'utilisateur — il n'apparaît JAMAIS dans la conversation. Pour la copie codée qu'a produite anonymise_file (retravaillée dans Word ou par toi), ou un .docx que tu as créé à partir des codes. Ne l'ouvre pas ensuite.","inputs":[{"name":"nom_fichier","type":"string","required":true,"description":"Repère [F-XXXXX] (lister_fichiers) ou chemin relatif du .docx contenant les codes"},{"name":"nom_sortie","type":"string","required":false,"description":"Nom de base du fichier décodé (défaut : celui du fichier, codé)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":208},{"name":"decode_pptx","title":"Decode a PowerPoint deck","description":"Decode a PowerPoint (.pptx) you built with the codes: real names put back on the user's computer; copied placeholder figures are flagged.\n\nPour une présentation que TU as construite avec les codes (puis enregistrée par l'utilisateur dans son dossier de travail) : remplace codes et pseudonymes par les vraies valeurs partout — diapositives, notes de l'orateur, tableaux, graphiques (titres, catégories, séries), classeurs intégrés aux graphiques, textes alternatifs, commentaires — et écrit le .pptx décodé sur le poste. Il n'apparaît JAMAIS ici. Les nombres ne sont pas touchés : si tu as recopié des chiffres FACTICES (gabarit), l'outil le dit — refais alors ces diapositives avec build_presentation, qui calcule sur les vraies données. Ne l'ouvre pas ensuite.","inputs":[{"name":"nom_fichier","type":"string","required":true,"description":"Repère [F-XXXXX] (lister_fichiers) ou chemin relatif du .pptx contenant les codes"},{"name":"nom_sortie","type":"string","required":false,"description":"Nom de base du fichier décodé (défaut : celui du fichier, codé)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":256},{"name":"restore_figures","title":"Put real figures back in a workbook","description":"Put the real figures and names back into a spreadsheet or Excel workbook built on the template.\n\nL'IA a construit un classeur (formules, tableaux croisés, graphiques, mise en forme) sur le GABARIT produit par anonymise_file ou anonymise_folder, et l'utilisateur l'a enregistré dans son dossier de travail. Cet outil y remet, SUR LE POSTE, les vraies valeurs des cellules de données et les vrais noms à la place des codes, demande le recalcul des formules et le rafraîchissement des graphiques à l'ouverture, et écrit un nouveau fichier (*-decode-*). Rien de réel ne revient dans la conversation. Condition : l'onglet de données doit garder le nom et la disposition que Hidden Tokens lui a donnés (ajouter des onglets, formules et graphiques à côté est libre).","inputs":[{"name":"nom_fichier","type":"string","required":true,"description":"Le classeur .xlsx construit sur le gabarit : repère [F-XXXXX] ou chemin relatif dans le dossier de travail"},{"name":"nom_sortie","type":"string","required":false,"description":"Nom de base du fichier produit (défaut : celui du classeur)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":244},{"name":"build_workbook","title":"Build an Excel workbook","description":"Build an Excel workbook (tables, formulas, charts) on the user's computer with the real names put back — to deliver or share a spreadsheet without asking for folder access.\n\nPour livrer un classeur Excel (tableaux, formules, graphiques) à partager : DÉCRIS-le ici au lieu de le construire de ton côté ou de demander l'accès au dossier. Donne les onglets (lignes de cellules ; une formule commence par « = », ex. « =SUM(C5:C12) ») et les graphiques (type colonnes / barres / lignes / secteurs, plages comme « C5:C12 » ou « 'Onglet'!C5:C12 »). Écris les noms tels que tu les vois (codes ou pseudonymes) : Hidden Tokens construit le .xlsx SUR LE POSTE, y remet les vrais noms (cellules, onglets, titres, séries), et Excel recalcule formules et graphiques à l'ouverture. Rien de réel ne revient ici ; tu ne vois pas le fichier — dis à l'utilisateur de l'ouvrir. Les montants que tu as lus en clair restent tels quels ; pour des nombres protégés (gabarit), passe par restore_figures.","inputs":[{"name":"graphiques","type":"array","required":false,"description":null},{"name":"nom_sortie","type":"string","required":true,"description":"Nom du classeur, sans extension (ex. « Q3-2026-Sales-Report »)"},{"name":"onglets","type":"array","required":true,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":309},{"name":"draw_dashboard","title":"Draw a chart or dashboard locally","description":"Draw a chart, dashboard or diagram (Vega-Lite, Graphviz) with the user's real data on their computer, instead of an artifact.\n\nAu lieu d'un artefact (qui exigerait les vraies données dans la conversation) : tu DÉCRIS le tableau de bord, Hidden Tokens le dessine SUR LE POSTE avec les vraies données, relues dans les fichiers à chaque rendu. Tu ne vois jamais le résultat réel ; tu reçois un APERÇU (image) dessiné sur les copies *-anonymise, pour juger la mise en page.\nGESTES :\n1. Sans argument : la liste des tableaux.  2. `titre` seul : ce que tu avais écrit (pour le reprendre).\n3. `titre` + `sources` sans contenu : la FORME de chaque source (colonnes, types, nombre de lignes, une ligne d'exemple codée) — commence par là, une fois le fichier anonymisé (anonymise_file : sans copie codée, pas de forme). Les dates d'Excel arrivent en texte ISO (« 2026-03-15 »).\n4. `titre` + `sources` + contenu : déposer ou remplacer (le même titre remplace).  5. `titre` + `rafraichir: true` : relire les sources et redessiner.\nCONTENU (se combinent, sauf `html`) :\n- `vega_lite` (RECOMMANDÉ) : une spec Vega-Lite v6, ou une liste (12 max). Données : `\"data\": {\"name\": \"<nom de source>\"}`, champs = en-têtes tels que tu les vois. Agrégats, filtres, calculs, couches, facettes, sélections (`params`) : tout Vega-Lite, sans `url` ni `href`. Thème, police, nombres à la française, infobulles : fournis. `\"usermeta\": {\"largeur\": \"pleine\"}` : toute la largeur.\n- `graphviz` : un schéma DOT (organigramme, flux, liens entre personnes et sociétés), ou une liste. Écris les noms en codes, entre guillemets.\n- CARTES (dans vega_lite) : fonds embarqués `fond:monde` (vu du Maroc), `fond:maroc-regions` (12 régions), `fond:france-regions` (TopoJSON, propriétés code et nom), `fond:noms` (toute graphie d'une région ou d'un pays → `code`), `fond:villes` (`ville` → `lat`, `lon`). Recette : un calque `{data: {name: 'fond:maroc-regions'}, mark: {type: 'geoshape', fill: '#EEEEF3'}}`, puis un calque sur ta source : lookup…","inputs":[{"name":"controles","type":"array","required":false,"description":"Contrôles de bouclage : deux mesures qui doivent tomber juste (grand livre = balance, somme des lignes = total publié) ; ✓/✗ sur la page"},{"name":"exporter","type":"string","required":false,"description":"« xlsx » : le tableau en Excel pour le financier (chiffres clés en nombres formatés, un onglet par graphique avec les données tracées et un vrai graphique Excel, un onglet par source avec ses lignes…"},{"name":"figer","type":"boolean","required":false,"description":"Figer le tableau `titre` : redessiné maintenant, copié en lecture seule avec les empreintes SHA-256 de ses sources, signé par le poste, inscrit au grand livre ; rafraichir ne touche jamais une versio…"},{"name":"graphiques","type":"array","required":false,"description":null},{"name":"graphviz","type":null,"required":false,"description":null},{"name":"html","type":"string","required":false,"description":null},{"name":"indicateurs","type":"array","required":false,"description":"Chiffres clés en tuiles, au-dessus des graphiques : agrégats, ratios (`rapport`), variations (`reference`)"},{"name":"langue","type":"string","required":false,"description":"Langue de la page, du Word et des nombres (défaut : la langue du dossier) ; gardée pour les rendus suivants"},{"name":"nom_fichier","type":"string","required":false,"description":"Graphiques express : le fichier *-anonymise.xlsx"},{"name":"onglet","type":"string","required":false,"description":"Graphiques express : numéro ou nom de l'onglet"},{"name":"ouvrir","type":"boolean","required":false,"description":"Ouvrir la page dans le navigateur après le rendu (défaut : oui)"},{"name":"rafraichir","type":"boolean","required":false,"description":"Relire les sources et redessiner le tableau `titre`"},{"name":"sources","type":"object","required":false,"description":"{ \"ventes\": { \"fichier\": \"[F-7K2QM]\", \"onglet\": \"1\" } } — lues EN CLAIR sur le poste à chaque rendu"},{"name":"supprimer","type":"boolean","required":false,"description":"Supprimer le tableau `titre`"},{"name":"tableaux","type":"array","required":false,"description":"Tableaux en VRAIES valeurs sur la page (filtre, tri, limite, total) ; tu n'en vois que l'aperçu codé"},{"name":"texte","type":"string","required":false,"description":"Texte du tableau (Markdown léger : ## titre, **gras**, listes), en codes"},{"name":"titre","type":"string","required":false,"description":"Le nom du tableau (en codes s'il nomme quelqu'un) ; le même titre remplace"},{"name":"vega_lite","type":null,"required":false,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":2194},{"name":"compute","title":"Compute exact figures locally","description":"Compute totals, averages, counts, rankings or breakdowns by category or period on the user's real data, exactly, on their computer — instead of doing the arithmetic yourself on coded or protected numbers.\n\nUn chiffre (total, moyenne, médiane, comptage, classement, répartition par catégorie ou par période) : au lieu de le compute toi-même sur des nombres protégés (faux en gabarit, à l'échelle en indice) ou de tête sur des milliers de lignes, DÉCRIS le calcul ; Hidden Tokens l'exécute SUR LE POSTE avec les vraies valeurs, relues dans l'original.\nTU REÇOIS, selon le mode de chaque colonne (dit par anonymise_file et par la forme des sources) : CLAIR → la valeur exacte ; INDICE → la valeur à l'échelle + la part du total (un montant exact révélerait le facteur secret) ; GABARIT → la part du total (somme) ou un indice relatif, 100 = l'ensemble (moyenne, médiane), seulement pour les groupes d'au moins 5 lignes ; comptes et valeurs distinctes : toujours exacts. Les MONTANTS EXACTS s'affichent à l'utilisateur sur son poste (page locale) : ne les invente pas, ne les recalcule pas, renvoie-le à cette page.\nRefusés : filtre ou regroupement sur une colonne protégée ; min/max d'une colonne en gabarit.\nWORD : avec un `titre`, une ligne seule `[[calcul: <titre>]]` dans un Word que tu rédiges (deanonymise format docx, decode_word) devient le tableau des VRAIES valeurs, recalculé à l'instant. `titre` seul : relance un calcul enregistré.","inputs":[{"name":"filtre","type":"object","required":false,"description":"{ \"Statut\": \"Payée\", \"Ville\": [\"Rabat\", \"Fès\"], \"Date\": { \"min\": \"2026-01-01\" } } — valeurs telles que tu les vois (codes)"},{"name":"grouper_par","type":"array","required":false,"description":"En-têtes, ou { \"colonne\": \"Date\", \"par\": \"mois\" } (jour, mois, trimestre, annee)"},{"name":"limite","type":"integer","required":false,"description":"Nombre de groupes rendus (les premiers après le tri)"},{"name":"mesures","type":"array","required":false,"description":null},{"name":"montrer","type":"boolean","required":false,"description":"Ouvrir la page des vraies valeurs chez l'utilisateur (défaut : oui dès qu'une mesure porte sur une colonne protégée)"},{"name":"source","type":"object","required":false,"description":"{ \"fichier\": \"[F-7K2QM]\", \"onglet\": \"1\" } — le fichier doit avoir été anonymisé"},{"name":"titre","type":"string","required":false,"description":"Nom du calcul (en codes s'il nomme quelqu'un) : l'enregistre pour [[calcul: <titre>]]"},{"name":"tri","type":"object","required":false,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":602},{"name":"build_document","title":"Build a Word report locally","description":"Build a Word report, memo or letter on the user's computer, in their own Word template, with real names, exact figures inside sentences, tables and charts — instead of writing the document with codes yourself.\n\nLe RAPPORT, la note, le courrier Word à livrer : tu écris le texte en codes (Markdown léger : # titres, listes, **gras**, tableaux | a | b |) ; Hidden Tokens le construit SUR LE POSTE, vrais noms remis, dans le MODÈLE WORD DU CLIENT (`modele` : un .dotx ou .docx — styles, police, en-tête et pied de page, logo ; à défaut, le seul .dotx du dossier). Tu ne vois jamais le résultat.\nCHIFFRES EXACTS : déclare des `calculs` (même description que l'outil compute : source, filtre, grouper_par, mesures, tri, limite) puis place-les : `{{nom}}` dans une phrase = la valeur exacte (un seul groupe) ; `{{nom : Rabat}}` = le groupe Rabat ; `#2` = la 2e mesure ; une ligne seule `[[calcul: nom]]` = le tableau complet. Ici, le résultat ne va qu'à l'utilisateur : filtres et regroupements sur colonnes protégées, min et max permis. N'écris JAMAIS de montant toi-même : tes nombres sont protégés.\nAussi : `[[graphique: <titre du tableau de bord> #n]]` et `[[chiffres: <titre>]]` (draw_dashboard), `[[calcul: <titre>]]` d'un calcul enregistré.","inputs":[{"name":"calculs","type":"object","required":false,"description":"{ \"ca_total\": { source, mesures: [{ colonne, agregat: \"somme\" }] }, \"ca_ville\": { source, grouper_par: [\"Ville\"], mesures: […] } }"},{"name":"contenu","type":"string","required":true,"description":"Le texte en codes, Markdown léger, avec les marqueurs {{…}} et [[…]]"},{"name":"modele","type":"string","required":false,"description":"Repère [F-XXXXX] du modèle Word du client (.dotx ou .docx). Absent : le seul .dotx du dossier, s'il y en a un"},{"name":"nom_sortie","type":"string","required":true,"description":"Nom du document (en codes s'il nomme quelqu'un)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":488},{"name":"build_presentation","title":"Build a PowerPoint deck locally","description":"Build a PowerPoint deck (slides, native charts, tables, key figures, speaker notes) on the user's computer with the real data — instead of making the .pptx yourself.\n\nPour une présentation (comité de direction, point client, restitution) : au lieu de fabriquer un .pptx de ton côté (tu n'as que les codes et des chiffres protégés), DÉCRIS les diapositives ici. Hidden Tokens construit le .pptx SUR LE POSTE : vrais noms, vrais chiffres relus dans les sources, graphiques PowerPoint NATIFS (modifiables), tableaux, chiffres clés en tuiles, notes de l'orateur ; cartes et schémas (vega_lite avec `fond:…`, graphviz) en images. Tu reçois une PLANCHE des diapositives dessinée sur les copies codées : la mise en page est celle de l'utilisateur, pas les valeurs.\nSources : comme draw_dashboard (`{ \"ventes\": { \"fichier\": \"[F-XXXXX]\" } }`) ; demande-lui d'abord leur forme avec `draw_dashboard` (`titre` + `sources`). Une diapositive = un titre + au plus : puces ou texte, 4 indicateurs, UN visuel (graphique, tableau, vega_lite ou graphviz). Texte et visuel se partagent la largeur. Écris les noms en codes. 5 à 12 diapositives conviennent à une réunion.\n`colonnes` (2 ou 3) : deux graphiques côte à côte, une comparaison avant/après, trois options — chacune son intertitre, ses puces, son visuel.\n`modele` : le modèle PowerPoint du client (.potx) — couleurs, police, logo appliqués ; le logo n'apparaît pas dans ta planche (un cadre LOGO à sa place).\n`depuis_tableau` : exporter en PowerPoint un tableau de bord déjà déposé (son titre), sans rien décrire.","inputs":[{"name":"depuis_tableau","type":"string","required":false,"description":"Le titre d'un tableau de bord existant, à exporter tel quel"},{"name":"diapositives","type":"array","required":false,"description":null},{"name":"langue","type":"string","required":false,"description":"Langue des nombres et des libellés (défaut : celle du tableau repris, sinon du dossier)"},{"name":"logo","type":"string","required":false,"description":"Repère d'une image PNG ou JPEG à poser en logo (remplace celui du modèle)"},{"name":"modele","type":"string","required":false,"description":"Repère [F-XXXXX] du modèle PowerPoint du client (.potx ou .pptx) : ses couleurs, sa police et son logo. Absent : le seul .potx du dossier, s'il y en a un"},{"name":"nom_sortie","type":"string","required":true,"description":"Nom du fichier, sans extension (ex. « Comite-direction-T1 »)"},{"name":"ouvrir","type":"boolean","required":false,"description":"Ouvrir le fichier dans PowerPoint après l'écriture (défaut : oui)"},{"name":"sources","type":"object","required":false,"description":null},{"name":"titre","type":"string","required":false,"description":"Titre du document (défaut : titre de la 1re diapositive)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":646},{"name":"list_secrets","title":"List the vault's secrets","description":"List the secrets (API keys, passwords, tokens, database URLs) kept in this computer's encrypted vault, by code — never their values.\n\nListe les secrets (SECRET-…) que Hidden Tokens garde dans le coffre chiffré de ce poste : code, libellé (le nom de la variable, ex. DATABASE_URL), classe (test / production / inconnue) et dernier usage. Jamais la valeur, sa longueur ni une empreinte. Sers-t'en avant write_secret_file ; ne demande jamais la valeur d'un secret à l'utilisateur.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":123},{"name":"write_secret_file","title":"Write a config file with secrets","description":"Write a .env or configuration file with the real secrets put in on the user's computer, from a template that cites SECRET-… codes — instead of asking the user for a key or password.\n\nÉcrit sur le poste un fichier de configuration (.env*, .ini, .toml, .yaml, .json, .properties) à partir d'un gabarit qui cite des secrets par leur code (SECRET-004 ou {{SECRET-004}}) : Hidden Tokens met les vraies valeurs à la place, droits 600. Tu ne reçois que le compte des remplacements ; ne lis jamais le fichier écrit. Refusé : une destination qu'un dépôt git n'ignore pas (ajoute-la d'abord au .gitignore), le dossier Hidden-Tokens, un dossier synchronisé (iCloud, OneDrive, Dropbox), un fichier existant que Hidden Tokens n'a pas écrit. Un secret de production ou de classe inconnue demande l'accord de l'utilisateur dans une fenêtre du système, hors du chat, à chaque fois. Les autres codes du gabarit (NOM-001…) sont décodés aussi.","inputs":[{"name":"contenu","type":"string","required":true,"description":"Le gabarit : le texte du fichier, avec les secrets cités par leur code (DATABASE_URL=SECRET-004)."},{"name":"destination","type":"string","required":true,"description":"Chemin ABSOLU du fichier à écrire (ou ~/…), ex. /Users/moi/code/api/.env.recette."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":303},{"name":"run_with_secrets","title":"Run a program with secrets","description":"Run a program (database migration, integration tests, CLI) with API keys, passwords or tokens injected as environment variables on the user's computer, after their approval outside the chat — the output comes back with the secrets removed.\n\nLance sur le poste un programme qui a besoin de secrets (migration de base, tests d'intégration, outil en ligne de commande) : Hidden Tokens met la vraie valeur de chaque SECRET-… dans une variable d'environnement de CE programme seulement. Pas de shell : `commande` est un tableau (programme puis arguments) ; sh -c, bash -c, node -e, python -c, env, printenv… sont refusés. L'utilisateur donne son accord dans une fenêtre du système, hors du chat (« Toujours pour ce programme » possible pour les secrets de test seulement). Tu reçois le code de sortie, la durée et la sortie, dont chaque valeur injectée (et ses encodages courants) est remplacée par son code. Ne cherche jamais à faire afficher un secret.","inputs":[{"name":"commande","type":"array","required":true,"description":"Le programme puis ses arguments, ex. [\"npx\", \"prisma\", \"migrate\", \"deploy\"]."},{"name":"delai_s","type":"integer","required":false,"description":"Délai en secondes avant d'arrêter le programme (120 par défaut, 600 au plus)."},{"name":"dossier","type":"string","required":true,"description":"Dossier de travail du programme : chemin ABSOLU (ou ~/…)."},{"name":"env","type":"object","required":true,"description":"Variables d'environnement : nom → code SECRET-… (ou valeur ordinaire sans secret), ex. { \"DATABASE_URL\": \"SECRET-004\" }."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":336},{"name":"key_status","title":"Key and licence status","description":"Status of the pseudonymisation key, the licence and the mode.\n\nIndique combien de codes la clé de session contient (par type), l'état de la licence, et où vivent la clé et les fichiers produits. Ne révèle jamais les correspondances.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":59},{"name":"ai_journal","title":"Show what the AI received","description":"Show what the AI received: the local log and audit trail of everything sent to Claude.\n\nProduit, sur le poste, la page « Ce que Claude a vu » : toutes les réponses que Hidden Tokens a envoyées à l'IA, revérifiées contre la clé actuelle, plus les fichiers *-anonymise.* mis à sa disposition. Renvoie uniquement des comptes et le chemin de la page. À proposer quand l'utilisateur, son DPO ou son service informatique veut une preuve de ce qui est sorti.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":113},{"name":"replay_journal","title":"Replay what the AI received","description":"Replay what the AI received as a before/after slider page (the user's clear text versus the coded text actually sent), on the user's computer, for a demo or a DPO; the page holds real values and is never shown to the AI.\n\nProduit, sur le poste, une page locale où chaque réponse envoyée à l'IA se rejoue sous un curseur : à gauche le texte en clair (reconstitué avec la clé, comme deanonymise), à droite le texte codé exactement tel qu'il est parti vers l'IA ; les valeurs qui changent sont surlignées des deux côtés, un curseur global pilote toutes les cartes. La page contient les vraies valeurs : elle est écrite dans journal-ia/ (jamais servie à l'IA), ouverte dans le navigateur si possible, et l'outil ne renvoie que des comptes et le chemin. À proposer pour une démonstration, ou pour montrer à quelqu'un ce que Hidden Tokens a réellement codé. Pour la preuve destinée au DPO (sans aucune valeur réelle) : ai_journal.","inputs":[{"name":"depuis","type":"string","required":false,"description":"Ne rejouer que les échanges depuis cette date, AAAA-MM-JJ (défaut : tout le journal)"},{"name":"ouvrir","type":"boolean","required":false,"description":"Ouvrir la page dans le navigateur du poste (défaut : oui)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":287},{"name":"seal_folder","title":"Issue a verifiable seal","description":"Produce a verifiable seal, certificate or proof for the client that their data stayed protected.\n\nDélivre un SCEAU que l'avocat joint à sa lettre de mission ou à un envoi : il atteste au CLIENT que les données identifiantes ont été codées avant l'IA sur une période, et le client le vérifie seul (QR code ou hiddentokens.com/verifier-sceau, hors ligne). Le journal est d'abord audité : s'il contient une valeur réelle, aucun sceau n'est délivré. Réservé aux abonnés (le cabinet est certifié par Hidden Tokens). Écrit une page locale imprimable (QR, clause pour la lettre de mission) ; renvoie des comptes, la clause et le lien de vérification.","inputs":[{"name":"depuis","type":"string","required":false,"description":"Début de la période attestée, AAAA-MM-JJ (défaut : premier échange du journal)"},{"name":"reference","type":"string","required":false,"description":"Référence interne du dossier, affichée sur le sceau (ex. « Dossier 2026-118 ») — PAS le nom du client"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":234},{"name":"coverage_report","title":"Team coverage report","description":"Team coverage report for the DPO or management.\n\nProduit la page locale « Rapport de couverture » pour le DPO ou la direction : par poste, les fichiers protégés avant l'IA, les plans non confirmés, les décodages, les montants protégés, les valeurs réelles retrouvées, les portes ouvertes au confinement et la dernière activité. Avec une clé d'équipe, chaque poste dépose ses comptes dans le dossier d'équipe et la page couvre tout le cabinet ; sinon, ce poste seul. Que des comptes : aucune valeur, aucun code, aucun nom de fichier. Renvoie les totaux et le chemin de la page.","inputs":[{"name":"mois","type":"integer","required":false,"description":"Nombre de mois couverts (défaut 3, mois en cours compris)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":162},{"name":"ledger","title":"Signed monthly ledger","description":"Ledger: signed monthly register of AI use for the DPO or auditor (GDPR art. 30 draft entry, AI Act elements, period attestation).\n\nProduit, sur le poste, le « Grand livre Hidden Tokens » : une écriture signée et chaînée par mois achevé et par poste (fichiers protégés, décodages, sceaux délivrés, valeurs retrouvées, politique du cabinet en vigueur), jamais effacée (un audit postérieur ajoute un rectificatif). La page en tire l'attestation de la période, le projet de fiche pour le registre des traitements (RGPD art. 30), les éléments du dossier de déployeur (règlement IA, art. 4 et 26) et l'état des chaînes ; un export JSON l'accompagne. Avec une clé d'équipe, toutes les chaînes du cabinet ; sinon ce poste seul. Que des comptes : aucune valeur, aucun code, aucun nom de fichier. À proposer quand le DPO, un auditeur, un ordre ou un client demande un registre, une attestation annuelle ou la preuve de l'usage de l'IA sur la durée. Renvoie les totaux et les chemins.","inputs":[{"name":"mois","type":"integer","required":false,"description":"Nombre de mois achevés couverts par la page (défaut 12)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":278},{"name":"check_confinement","title":"Check folder confinement","description":"Check that no other app or extension can read the confidential folder.\n\nVérifie, sur le poste et hors ligne, qu'aucune autre porte ne mène aux fichiers confidentiels : autres extensions ou serveurs MCP ayant accès au dossier de travail, dossier Cowork, pilotage du navigateur ou de l'écran, synchronisation cloud du dossier (qui emporterait la clé), droits de la clé. Hidden Tokens garantit que SES réponses ne contiennent aucune valeur réelle ; cet audit dit si une autre porte est ouverte. À proposer à l'installation et dès qu'un plan signale un risque.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":129},{"name":"start_tutorial","title":"Guided tutorial on the sample folder","description":"Start or continue the guided tutorial on the Hidden Tokens sample folder (invented data): says what was already done, the next step and which tool to call. Use when the user wants to learn, try, test or discover Hidden Tokens, or asks for help getting started.\n\nMène, étape par étape, la découverte de Hidden Tokens sur le dossier d'exemple (données inventées, posé par l'appli ou écrit ici) : dit ce qui a déjà été fait d'après le journal local, l'étape suivante et l'outil à appeler — protéger, faire travailler l'IA sur les codes, décoder sur le poste, prouver, le défi, puis un vrai dossier. Refuse un dossier de travail qui contient autre chose. Sur un dossier de travail VIDE, écrit les trois pièces inventées avec creer_dossier_exemple: true (après l'accord de l'utilisateur). À rappeler après chaque geste : il dit la suite.","inputs":[{"name":"creer_dossier_exemple","type":"boolean","required":false,"description":"Écrire le dossier d'exemple (des pièces inventées) dans un dossier de travail VIDE — après l'accord de l'utilisateur"},{"name":"metier","type":"string","required":false,"description":"Le métier de l'utilisateur, pour un dossier d'exemple à son image : avocat, comptable, dirigeant, rh, sante, banque, informatique, autre"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":281},{"name":"leak_challenge","title":"Leak challenge on the sample folder","description":"Keep the score of the leak challenge on the sample folder: the user tries to make an invented identity reach the AI; attempts and leaks are counted from the local journal. Use when the user says challenge, game, leak test, or wants to try to break Hidden Tokens.\n\nTient le score du défi sur le dossier d'exemple : l'utilisateur essaie de faire sortir une identité inventée vers l'IA (par l'extension du navigateur, un fichier ajouté, une question piège) ; chaque envoi compte comme un essai, et l'audit du journal local dit s'il y a eu fuite. action : \"commencer\" (lance ou relance le défi), \"score\" (défaut ; lance le défi s'il n'a pas commencé), \"terminer\". Que des comptes. Refuse un dossier réel.","inputs":[{"name":"action","type":"string","required":false,"description":"commencer, score (défaut) ou terminer"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":198},{"name":"reset_key","title":"Start over with a new key","description":"Start over with a fresh key (the current one is archived).\n\nArchive la clé de session actuelle (rien n'est supprimé — l'archive reste sur le poste, datée) et repart d'une clé vierge. À n'utiliser que si l'utilisateur le demande explicitement : après ça, les anciens fichiers codés ne pourront être décodés qu'avec l'archive.","inputs":[{"name":"confirmer","type":"boolean","required":true,"description":"Doit être true — confirme que l'utilisateur veut bien repartir de zéro"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":108}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T07:01:33.000Z","track":"package","endpoint":null,"declaredUrl":null,"truncated":false,"tls":null,"dnssec":null,"auth":null,"httpsRedirect":null,"transports":[],"provenance":{"outcome":"none","label":"No attestation","reason":"no_attestation","reasonLabel":"No attestation published","discovery":null,"discoveryLabel":null,"sourceRepo":null,"attestationSkipped":null,"attestationSkippedLabel":null},"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":{"nodes":119,"partial":true,"deprecated":null,"stale":28,"noRepo":1}},"mismatches":[],"changelog":{"trackingSince":"2026-10-27","recent":[{"id":"chg_01a1a55c-e424-702b-894e-a28ac549c099","kind":"score.total_changed","summary":"Trust score (41 → 42)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/ai4xedu-hidden-tokens/hidden-tokens-connector#chg-chg_01a1a55c-e424-702b-894e-a28ac549c099"},{"id":"chg_01a19e48-5ed4-7367-ba75-95e09443f0e2","kind":"check.measure","summary":"Schema quality (10477 → 13012)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/ai4xedu-hidden-tokens/hidden-tokens-connector#chg-chg_01a19e48-5ed4-7367-ba75-95e09443f0e2"},{"id":"chg_01a19e10-666a-72f9-8ff8-0ac61ef010d3","kind":"check.measure","summary":"Schema quality (10477 → 12890)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/ai4xedu-hidden-tokens/hidden-tokens-connector#chg-chg_01a19e10-666a-72f9-8ff8-0ac61ef010d3"},{"id":"chg_01a18c3c-6eb3-7039-9e64-8b138555d111","kind":"check.unverifiable","summary":"Stability (0.07 → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/ai4xedu-hidden-tokens/hidden-tokens-connector#chg-chg_01a18c3c-6eb3-7039-9e64-8b138555d111"},{"id":"chg_01a18c3c-6eb4-7146-8d56-e067f3c7062b","kind":"score.total_changed","summary":"Trust score (43 → 41)","materiality":"functional","direction":"regression","scoreDelta":-2,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/ai4xedu-hidden-tokens/hidden-tokens-connector#chg-chg_01a18c3c-6eb4-7146-8d56-e067f3c7062b"},{"id":"chg_01a18bb7-3b1c-7c05-b043-a09e524b6097","kind":"score.total_changed","summary":"Trust score (42 → 43)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/ai4xedu-hidden-tokens/hidden-tokens-connector#chg-chg_01a18bb7-3b1c-7c05-b043-a09e524b6097"},{"id":"chg_01a184c0-8bc0-7bf0-a910-853b19bb3368","kind":"check.measure","summary":"Schema quality (8893 → 10539)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-28","url":"https://verifymcp.io/servers/ai4xedu-hidden-tokens/hidden-tokens-connector#chg-chg_01a184c0-8bc0-7bf0-a910-853b19bb3368"},{"id":"chg_01a181b1-57fd-7823-8aa0-74a8521af8b1","kind":"check.reverified","summary":"Stability (unverified → 0.03)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-28","url":"https://verifymcp.io/servers/ai4xedu-hidden-tokens/hidden-tokens-connector#chg-chg_01a181b1-57fd-7823-8aa0-74a8521af8b1"},{"id":"chg_01a181b1-57fe-74de-aa6c-baa1c007fdf0","kind":"score.total_changed","summary":"Trust score (41 → 42)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-28","url":"https://verifymcp.io/servers/ai4xedu-hidden-tokens/hidden-tokens-connector#chg-chg_01a181b1-57fe-74de-aa6c-baa1c007fdf0"},{"id":"chg_01a17dcc-69cf-7024-a3c4-df309f804d72","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/ai4xedu-hidden-tokens/hidden-tokens-connector#chg-chg_01a17dcc-69cf-7024-a3c4-df309f804d72"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/ai4xedu-hidden-tokens/hidden-tokens-connector/changelog.json"},"links":{"html":"https://verifymcp.io/servers/ai4xedu-hidden-tokens/hidden-tokens-connector","markdown":"https://verifymcp.io/servers/ai4xedu-hidden-tokens/hidden-tokens-connector.md","changelogJson":"https://verifymcp.io/servers/ai4xedu-hidden-tokens/hidden-tokens-connector/changelog.json","changelogRss":"https://verifymcp.io/servers/ai4xedu-hidden-tokens/hidden-tokens-connector.xml","external":[{"label":"Website","href":"https://hiddentokens.com/"}]}}