Journal des modifications
Changements notables du serveur MCP Stratta.
Versions notables du package @stratta/mcp. Le package suit le
versionnage sémantique.
Les normes d’un gros corpus. list_norms accepte query (un code ou des mots du titre)
et limit. Sur un espace de 425 normes, la liste passe de 170 000 à 9 000 caractères, et une
recherche par code rend la norme avant celles qui la citent. La méthode servie à l’agent donne
les codes regroupés par famille : 13 000 caractères au lieu de 35 000.
Une clause, une fois. get_section envoie la section en Markdown, avec ses formules,
tableaux, figures et renvois à leur place, et plus le même texte une deuxième fois en brut et en
JSON. search_in_norm ne recopie plus la licence dans chaque résultat.
Les dossiers. load_dossier et list_questions coupent les textes longs (get_question
les rend entiers) ; get_dossier_activity rend 15 lignes par défaut.
L’assistant sur votre clé. L’assistant de l’application répond avec le modèle de votre choix, sur le compte de votre bureau : collez la clé d’API d’Infomaniak (traité en Suisse), de Mistral (Union européenne), d’OpenRouter, d’Anthropic, d’OpenAI ou de Google dans Réglages › Intégrations. Stratta reconnaît le fournisseur et ne propose que les modèles de la clé.
Vos membres. Renvoyez une invitation, même expirée, passez quelqu’un administrateur ou membre, transférez l’espace à un administrateur, et retrouvez l’historique des invitations du mois.
Les instructions du serveur, la description des outils, la méthode servie à l’agent et la
skill consult-stratta parlent désormais de normes, lois, règlements et référentiels, et plus
seulement de normes de construction. Aucun outil ne change.
Ouvert à tous. Créer un compte est libre et gratuit. Un formulaire ouvre votre espace : prénom, nom, entreprise, téléphone, et le site web de l’entreprise, dont l’icône devient le logo de l’espace. Le forfait gratuit lit la norme de démonstration ; Pro et Max se souscrivent de nouveau en ligne.
Toutes vos normes. Normes techniques, lois, règlements, référentiels : Stratta sert ce que votre organisation a le droit d’utiliser, avec la même citation exacte.
Ajouter une norme est inclus. Un dépôt prend une place de norme du forfait, sans requêtes débitées : Pro en compte 15, Max 60, autant de dépôts par mois, 600 pages au plus. Une norme en plus coûte 5 CHF, payée une fois. Chaque dépôt demande de déclarer vos droits sur le document. À la première norme de votre organisation, la norme de démonstration se met en sommeil ; elle se rallume depuis la page Normes.
Stratta est réservé aux entreprises. Un espace est ouvert avec Stratta, qui invite son premier administrateur ; celui-ci en devient propriétaire à son arrivée. Il n’y a plus de forfait gratuit, d’essai, de page tarifs ni de paiement en ligne, et plus de relances de mise en route par e-mail. Un compte sans espace voit un formulaire de contact, qui sert aussi à demander une norme (menu du compte › Écrire à Stratta, ou Normes › Demander une norme).
La licence avec chaque extrait. Le filigrane et le copyright de la copie sous licence sont
gardés une fois avec la norme, et accompagnent chaque extrait : get_section (champ licence et
ligne Licence: du Markdown), search_in_norm, search_corpus, get_figure,
show_citations, l’assistant, les livrables et les exports. ingest_create_document accepte
licence.
Modèles. Chaque appel à OpenRouter exige un fournisseur à zéro rétention et refuse la collecte des données.
Connecteur distant : 61 outils. Le paquet local ne change que de version.
Les cartes de citation. Une réponse peut se terminer par les clauses sur lesquelles elle repose, en cartes : la norme, la clause, les pages et la phrase citée, vérifiée mot pour mot contre la clause avant d’être affichée. Une carte ouvre la clause entière, et un lien l’ouvre dans le lecteur de Stratta. Quand une citation n’est pas dans la clause, la carte le dit et montre le texte de la norme.
Le lecteur de normes à côté de la conversation. Dans ChatGPT, il s’ouvre depuis le panneau latéral ou la barre latérale : vos normes, le sommaire d’une norme, une clause avec ses renvois. « Demander à l’agent » pose une question sur la clause que vous lisez.
Deux comptes, deux profils. Connecté à votre bureau et à l’espace d’un client, ChatGPT distingue désormais les deux.
Le plugin ChatGPT emporte ses méthodes. Les procédures de rédaction (note de vérification, base du projet, convention d’utilisation, chapitre terrain, revue des questions ouvertes) et une première prise en main accompagnent le plugin.
Paquet 1.17.0. Mêmes outils, annoncés à la carte.
Mode simple. npx -y @stratta/mcp --simple n’annonce que les 10 outils de lecture des normes
(environ 11 000 caractères de schémas au lieu de 67 000). --toolsets dossiers,sites, --full et
la variable STRATTA_TOOLSETS choisissent les familles. Sur la page Agents IA, le menu Outils
de chaque agent fait de même pour le connecteur distant. Par défaut, tous les outils.
Méthodologie plus courte. get_methodology est plus de deux fois plus courte pour un gros
corpus (une ligne par norme, la portée se lit par list_norms) et ne parle des dossiers que si les
outils de dossier sont donnés.
Assistant plus économe. Il commence avec les outils de normes et charge les autres familles selon la page et la question : environ trois fois moins de requêtes consommées par étape.
Côté application, sans nouvelle version du paquet.
La page Méthodes remplace la Bibliothèque : chaque méthode en
français, la phrase à dire à votre agent pour la lancer, et combien de fois il l’a suivie ces
30 derniers jours. Un rapport Word déposé sur la carte d’un document remplace le plan de Stratta,
sans nom technique à inventer. list_skills et get_skill ne changent pas.
Côté application, sans nouvelle version du paquet.
La fiche de site (le sous-sol d’une adresse en plan, en coupe et en 3D) sort
des forfaits : elle s’ouvre sur demande, bureau par bureau, pendant qu’elle
mûrit avec les bureaux pilotes. Écrivez à hello@stratta.ch pour l’essayer. Les
fiches déjà faites restent lisibles sur tous les forfaits, et l’outil
scan_site répond qu’elle n’est pas ouverte tant qu’elle ne l’est pas, sans
rien débiter.
Côté application, sans nouvelle version du paquet.
Sur la page Normes, le bouton Ajouter une norme prend un PDF (200 Mo au
maximum, un scan est accepté), préremplit la référence, l’année et le titre
d’après le nom du fichier, et demande de confirmer la licence. Le coût s’affiche
avant l’envoi : 500 requêtes par dépôt plus 40 par page (le double pour un scan), comme une estimation. Le prix réel se calcule sur ce que la norme a vraiment coûté une fois prête, deux fois l’estimation au plus, et tout est rendu si la
norme est refusée, illisible ou retirée. Le fichier est traité sur le serveur de
Stratta en Allemagne, ses formules et tableaux sont contrôlés contre l’image de
leur page, puis une personne de Stratta relit avant l’ajout. Une carte suit le
dépôt en direct, un e-mail annonce la fin, et le PDF est supprimé une fois la
norme livrée. L’ingestion par votre agent avec le skill ingest-norm reste
possible, PDF sur votre machine.
Même nombre d’outils. Une correction, côté serveur et côté paquet.
Recherche. search_in_norm et search_corpus ignorent les mots vides
(« de », « la », « und ») : « classe de sol » cherche « classe » et « sol ».
Les sections qui portent tous les termes passent devant, et kind: "title"
veut dire que tous les termes sont dans l’intitulé. Le code de norme se
retrouve à la casse et aux espaces près.
Texte des normes. Le filigrane de licence n’apparaît plus dans le texte servi, un tableau n’est plus servi deux fois, une clause n’emprunte plus le résumé de son parent. La prépasse d’ingestion livrée avec le paquet retire ce filigrane à la source.
Fiche de site. Les quatre cantons ont été repris fait par fait : Fribourg se lit de nouveau en entier, les degrés de danger sont servis tels quels, une source en panne est dite « non couverte » et jamais « aucun ». Le spectre de réponse suit le tableau 24 de SIA 261:2020.
Serveur local. Un appel en échec envoie son code d’erreur au journal de votre espace, comme le connecteur distant.
Quatre outils de plus, 59 sur le serveur local et 58 sur le connecteur distant.
Le dossier se remplit sans geste. Chaque section de norme que l’agent lit
pendant le travail sur un dossier apparaît dans l’onglet Lectures, avec la
clause, les pages, qui et quand. Il suffit d’avoir nommé le projet une fois
(load_dossier, open_dossier, ou tout outil qui touche le dossier, sa
question ou sa fiche de site) ; le dossier reste actif six heures et chaque
lecture prolonge. record_decision accepte dossierId et question (ce qui
est réglé) à la place de questionId : la question naît tranchée. La
méthodologie servie passe en v3 : nommer le projet, retenir ce qui est fixé,
n’ouvrir une question que quand quelque chose reste à régler.
La bibliothèque du bureau. list_skills et get_skill servent les
procédures que l’agent suit pour une tâche répétable : neuf livrées avec le
paquet (project-basis, use-agreement, site-chapter,
instruct-structure, review-open-questions, handoff-to-word,
verification-note, consult-stratta, ingest-norm) et celles que votre
bureau écrit sur la page Bibliothèque ; une procédure du bureau qui porte le
nom d’une procédure Stratta la remplace. Un rapport Word déposé sur cette page
devient un gabarit : son plan, ses mentions et ses tournures, relus et validés,
servis comme une procédure de plus.
Le document que le projet doit rendre. draft_deliverable ouvre le
document d’un dossier (base du projet, convention d’utilisation, rapport
géotechnique, note de vérification) sur le plan du gabarit du bureau, sinon sur
le plan Stratta ; write_section écrit une section avec ce sur quoi elle
repose, et refuse un texte sans source. L’onglet Livrables du dossier le
relit, le corrige, le passe en revue, le signe et l’exporte en Word, dans la
mise en page du rapport déposé par le bureau. Quand une source change
(décision reprise, entrée supprimée, nouveau relevé du site, nouvelle édition
d’une norme), la section passe « à revoir » avec la raison, et
draft_deliverable le dit à l’agent.
Le terrain. Le profil PDF d’un sondage genevois se lit sur demande par un modèle de vision : ses couches remplacent les grandes unités du cadastre dans la colonne, la coupe et le bloc ; un sondage d’archive du bureau se lit depuis une pièce du dossier et se pose sur le site. Une décision dont la valeur est une altitude se dessine sur la coupe et dans le bloc. Un invité qui lit le dossier par un lien peut y répondre.
Chacun des 54 outils servis par le connecteur distant déclare désormais le justificatif qu’il exige : le client peut proposer la connexion sur l’outil qui en a besoin, au lieu du premier appel qui échoue. Supprimer un document demande votre confirmation dans le client avant que quoi que ce soit parte, comme le faisaient déjà la suppression d’une question ou d’une option : c’est la suppression la plus large de Stratta, et c’était la seule qui partait au premier mot.
Dix-neuf outils, sur le serveur local comme sur le connecteur distant. Côté
questions, l’agent lit ce que load_dossier résumait : list_questions et
get_question (options avec leurs identifiants, décision, preuves champ par
champ, commentaires signés, une page à la fois), get_dossier_activity,
list_exports. Il fait ce que la page faisait seule : update_question
(responsable par adresse e-mail, échéance), add_option, update_option,
add_comment, update_entry, attach_entry pour vider la pile « à classer »
; delete_question et delete_option demandent votre confirmation dans le
client avant de toucher quoi que ce soit.
Côté site, l’onglet Site se lit en entier : list_sites, get_site (chaque
fait avec sa clé, son avertissement officiel et la source qui a répondu ou
non), get_site_section (axe, terrain, rocher modélisé, géologie, sondages du
corridor avec leurs couches), list_site_overlays, get_groundwater_contours,
list_site_photos, list_site_neighbours.
load_dossier rend désormais dossierId, siteId, les comptes et les dates ;
list_dossiers rend siteId ; get_boreholes rend l’auteur du sondage, le
piézomètre et l’état de lecture des couches.
Le rayon de scan_site monte à 1 000 m (50 auparavant à 500). Au-delà de
quelques centaines de mètres en tissu dense, le scan garde les quatre cents
sondages les plus proches et la fiche annonce la troncature plutôt qu’un
compte faux.
Dans l’application, chaque emprise de la carte (site pollué, danger naturel, secteur de protection des eaux) s’ouvre d’un clic et dit d’abord la seule chose qu’on vient lire : si elle couvre le point du site, ou à combien de mètres elle s’arrête. Les mêmes emprises apparaissent sous le fait qui leur correspond dans la fiche, avec leur distance : « Hors secteur de protection » au point et « Protection des eaux (1) » sur la carte étaient tous deux vrais, et se lisaient comme une contradiction. Les sections « Sites pollués » et « Mises à l’enquête » comptent désormais dans le rayon choisi, et non plus dans un carré fixe de trois cents mètres.
La coupe lit désormais toutes les fiches de sondage de son corridor chez le canton (Vaud et Valais ne les livrent qu’une par une, et le scan n’en lisait que douze), gagne une fenêtre de profondeur réglable pour lire les vingt premiers mètres sans qu’un forage de trois cents les écrase, et porte deux repères d’observation par sondage : la nappe relevée et le toit du rocher tel que la description le nomme. Relier ces toits d’un sondage à l’autre est un commutateur, éteint par défaut, marqué « interprétation ».
Le même jour, plus tard : les emprises de la carte sont désormais écrites par le scan, comme les sondages, au lieu d’être relues à chaque ouverture sous une limite de débit qui les faisait disparaître sans un mot après quelques rechargements. Les réglages de la coupe coiffent la figure dans une barre, la fenêtre de profondeur coupe les colonnes au bord du cadre et non à leur propre profondeur, et un second bouton, Relier les couches, aligne les couches de même famille (argile, limon, sable, gravier, moraine, remblai, rocher) entre sondages voisins à moins de cent cinquante mètres. Éteint par défaut, en aplat translucide à contour pointillé, marqué « interprétation » : ce qu’un ingénieur ferait de tête devant la coupe, dessiné avec son étiquette.
Trois outils nouveaux, scan_site, get_site_context et get_boreholes,
rassemblent autour d’une adresse suisse ce que les registres publics savent
du terrain : commune, parcelle EGRID, altitude, géologie, sondages du
cadastre cantonal avec leur stratigraphie, nappe relevée au piézomètre, sites
pollués, protection des eaux, dangers naturels, zone sismique et classe de
terrain de fondation SIA 261.
get_site_context rend deux listes séparées : ce que les registres ont
tranché, et ce qu’ils n’ont pas tranché, avec la raison de chaque point. La
seconde est celle qui fixe le prix d’une offre. get_boreholes descend au
détail : les sondages du plus proche au plus lointain, leurs couches, la classe
SIA 261 relevée dans le forage, la nappe mesurée, et les liens vers les
documents du canton.
Dans l’application, le dossier gagne un onglet Site : on choisit un rayon, un écran d’étapes montre les sources qui répondent, puis la fiche paraît entière. Elle se lit de haut en bas comme la base du projet que SIA 260 chiffre 2.5.2 demande. Une carte porte les emprises de pollution et de danger, et deux clics tracent une coupe où les sondages sont projetés sous le terrain, sans qu’aucune couche ne soit interpolée entre eux. Chaque valeur se copie avec sa provenance, et un relevé de situation s’emporte en Markdown, en HTML ou à l’impression. Les documents d’origine sont liés chez le canton, jamais copiés.
Les dix outils ingest_* sont désormais servis au connecteur distant : un
agent qui a une machine (Claude Code, Codex, Cursor, Gemini CLI) ingère une
norme par https://stratta.ch/mcp, sans paquet ni clé. Le skill ingest-norm
est servi en ressource stratta://skills/ingest-norm et le script de
pré-passe à https://stratta.ch/ingest-prepass.py, que le skill télécharge
s’il n’est pas sur le disque. Le connecteur expose 32 outils ; seul
add_attachment, qui lit un fichier sur votre disque, reste local. Sur le
site, le guide nomme votre agent (huit clients, un bouton ou une commande
chacun), le tableau de bord montre quels agents sont branchés, et les normes
de l’espace ont leur propre page.
Le serveur local et le connecteur distant décrivaient les mêmes outils avec
des textes différents. Un catalogue unique porte désormais les noms, les
descriptions et les annotations des deux, et le paquet en est généré. Le
paramètre norm des outils de lecture s’appelle code partout (votre agent
relit le schéma à chaque session, rien à changer de votre côté). whoami
arrive sur le serveur local, les résultats sont rendus en JSON compact, et le
serveur envoie les mêmes instructions d’initialisation que le connecteur.
ingest_publish mesure désormais ce qui est réellement entré de la norme
(texte par page, pages sous un chapitre, feuilles vides, formules et tableaux)
et refuse sous 30/100 avec les raisons ; force: true publie quand même,
après confirmation. ingest_status et list_norms rendent le score
(coverage : full, partial, sparse), et une norme creuse porte un avis
que l’agent doit relayer. Chaque appel d’outil porte aussi un identifiant de
session et l’adresse de ce qui a été demandé (code de norme, chemin, termes
cherchés), jamais le contenu des champs libres : le tableau de bord lit une
conversation comme un parcours dans le corpus.
Un dossier tient désormais des questions (« le pieu P38 peut-il être
conservé ? »), chacune avec ses preuves, ses options et sa décision. Deux
outils ajoutés : open_question (idempotent sur le titre, options[]
nommées) et record_decision (décision confirmée par l’ingénieur, option
retenue). save_finding ne prend plus que reference, hypothesis ou
observation, se rattache à une question via questionId, et porte l’édition
citée (normEdition). resolve_question clôt ou rouvre une question plutôt
qu’une entrée. 7 outils de dossier au lieu de 5 : 25 outils au total sur le
serveur local, 16 sur le connecteur distant.
npm install -g @stratta/mcp installe un binaire stratta : stratta doctor, stratta whoami. npx -y @stratta/mcp continue de fonctionner à
l’identique : c’est la forme que votre agent utilise.
Le serveur répond enfin aux questions qu’on lui pose. doctor vérifie Node,
votre clé, l’accès au serveur, le nombre de normes visibles et votre version,
et indique pour chaque échec la commande qui le corrige. whoami interroge le
serveur plutôt que votre disque : une clé révoquée depuis le tableau de bord y
paraît valide. logout retire la clé et signale une variable
STRATTA_API_KEY restée active. --help liste tout.
npx -y @stratta/mcp update compare votre version à la dernière publiée et
récupère la nouvelle. npx garde en cache ce qu’il a résolu, donc un serveur
pouvait relancer pendant des semaines une version remplacée sans que rien ne
le signale. Le serveur le mentionne aussi au démarrage quand il se sait en
retard.
login ouvrait le navigateur sur une adresse tronquée : & sépare les
commandes dans cmd.exe, et l’URL d’autorisation en contient deux. La page
s’affichait donc « lien invalide » alors que l’adresse imprimée dans le
terminal, elle, fonctionnait. L’URL est désormais transmise telle quelle.
npx -y @stratta/mcp login ouvre un port éphémère sur 127.0.0.1, vous
envoie sur Stratta, et récupère la clé par redirection locale. Vous voyez
quelle machine demande l’accès et pour quelle organisation, et vous n’avez
aucune clé à copier. --paste conserve l’ancien flux pour les machines sans
navigateur.
Les huit outils de lecture se déclarent sans effet de bord, et la suppression d’une norme se déclare destructive : votre client demande confirmation au bon moment, et seulement à ce moment. Les arguments des dix-huit outils sont validés à l’entrée du serveur.
- Quotas appliqués côté serveur, par organisation. Une erreur
QUOTA_EXCEEDEDindique désormais la dimension touchée, votre compteur et la limite du forfait, en langage clair. - L’agent est explicitement invité à ne pas réessayer : il cesse de buter en boucle sur une limite qui ne bougera pas d’elle-même. Les erreurs de quota mensuel précisent quand la fenêtre repart. - Le skillingest-normévalue le budget avant d’écrire une grosse norme, au lieu d’échouer à mi-parcours et de laisser un document incomplet. - Voir Forfaits et quotas.
- Le pré-pass bascule sur un balayage du corps du document par expressions régulières quand le PDF ne contient aucun signet. Les normes jusque-là inexploitables s’ingèrent correctement.
- L’ingestion se fait en deux temps : un pré-pass Python déterministe
(PyMuPDF) extrait l’arbre, le texte par page et les figures, puis l’agent
enrichit avec les résumés, les formules LaTeX et les tableaux. - Environ 10
fois moins de tokens et 5 fois plus rapide que le pipeline entièrement
agentique qu’il remplace. -
scripts/ingest-prepass.pyest livré dans le paquet.
get_figurerenvoie désormais aussi une URL publique pour l’image, afin que Claude puisse proposer un affichage en taille réelle en plus de l’image (base64) en ligne. - Le résultat de l’outil inclut une indication d’intégration Markdown afin que les clients prenant en charge les images en ligne puissent afficher la figure directement.
- Installation sans clé :
claude mcp add stratta -- npx -y @stratta/mcp. Votre clé API vous est demandée à la première utilisation. - Nouvelle commandenpx -y @stratta/mcp loginpour enregistrer votre clé à l’avance. - La clé est stockée dans~/.stratta/config.json(accès propriétaire uniquement, mode0600). Ordre de résolution : variable d’environnementSTRATTA_API_KEY, fichier de configuration, ou invite à la première utilisation.
- Publication initiale de
@stratta/mcpsur npm. - 18 outils : 8 pour la lecture des normes (méthodologie, liste, table des matières, sous-arbre, section, recherche, figure, références croisées) et 10 pour l’ingestion des normes (ingest_*). - Le skillingest-normest livré avec le package.
Ce journal suit les versions de @stratta/mcp. Les évolutions de la
plateforme (facturation, corpus, traduction) sont sur
stratta.ch/changelog ; les quotas et le
paiement sont détaillés dans Forfaits.