Outils de lecture
Les 10 outils pour naviguer et lire les normes dans votre espace de travail.
Ces outils permettent à votre agent d’interroger les normes de votre espace de travail. Vous ne
les appelez pas à la main (l’agent le fait en réponse à vos questions), mais les connaître
vous aide à comprendre et vérifier les réponses. Chacun renvoie du JSON (sauf get_figure, qui
renvoie aussi une image inline).
Depuis la version 0.7.0, ces dix outils se déclarent sans effet de bord (readOnlyHint) :
un client qui respecte l’annotation peut donc les appeler sans vous demander à chaque fois.
get_methodology est le premier appel obligatoire. Les autres suivent le flux de
navigation : list_norms → get_toc → get_subtree → get_section, avec search_corpus, search_in_norm,
get_cross_refs et get_figure utilisés au besoin.
Quand votre espace détient plusieurs éditions d’un même code (SIA 261:2014 et
SIA 261:2020, par exemple), chaque outil de lecture accepte un paramètre
edition facultatif et sert par défaut la plus récente publiée ; list_norms
énumère les éditions de chaque code, et get_section imprime l’édition lue
dans son en-tête pour que l’agent la reporte en normEdition sur l’entrée.
get_methodology
Premier appel obligatoire pour répondre à toute question technique. Renvoie la méthode de travail sous la forme d’un seul document Markdown, construit pour votre espace : le rôle, le tableau des normes lisibles (code, édition, titre, portée, couverture) avec les dépendances qui existent entre elles, la méthode de navigation, le contrat de réponse (citations, calculs, ce qu’il faut vérifier avant de répondre), les règles de budget, la règle du document de démonstration quand elle s’applique, et la politique de dossier. Votre agent l’adopte pour le reste de la conversation. Aucun paramètre.
versionnumberLa version du contrat (2). Inscrite sur chaque entrée de dossier écrite sous
ce contrat.
textstringLe document, qui se termine par methodology: v2.
list_norms
Liste les normes disponibles dans votre espace de travail. Sur un gros corpus,
la liste est partielle : passez query pour trouver une norme précise.
querystringUn code ou des mots du titre ou de la portée, accents facultatifs, p. ex.
"SIA 267" ou "géotechnique". Chaque mot doit figurer. La norme dont le
code correspond vient en tête, avant celles qui la citent. Avec une query,
chaque norme porte sa portée (scope).
limitnumberdefault: 60Nombre de normes listées, 1 à 500.
totalnumberNombre de normes que l’espace peut lire.
matchednumberNombre de normes qui répondent à la query (égal à total sans query).
normsarrayChaque entrée porte code, year, title, edition, language et
coverage, plus editions quand plusieurs sont lisibles.
truncatedbooleanPrésent quand toutes les normes trouvées ne sont pas listées ; hint dit
comment affiner.
Quelles normes sont disponibles dans Stratta ?get_toc
Renvoie la table des matières d’une norme. Par défaut, seuls les chapitres de premier niveau
(depth = 1) sont renvoyés afin de garder la réponse légère ; utilisez get_subtree pour
explorer un chapitre.
codestringrequiredCode de norme, p. ex. "SIA 261", "SIA 263", "EN 1992-1-1".
maxDepthnumberdefault: 1Profondeur d’imbrication maximale. 1 = chapitres uniquement, 2 = sections
X.Y, 3 = sous-sous-sections X.Y.Z. Des profondeurs plus élevées font
rapidement grossir la réponse sur les grandes normes.
treearrayNœuds hiérarchiques, chacun avec path, title, summary, pageStart,
pageEnd, depth et children (vide à la limite de profondeur). path est
l’adresse que prennent tous les autres outils de lecture. summary est le
résumé propre du nœud : il est rédigé pour les chapitres et les sections
X.Y, et reste vide plus bas plutôt que de répéter celui du parent.
get_subtree
Explore un chapitre ou une section spécifique. Renvoie le sous-arbre enraciné à path, afin que
votre agent puisse explorer un chapitre en détail sans récupérer toute la table des matières.
codestringrequiredCode de norme, p. ex. "SIA 261-1".
pathstringrequiredChemin de section à utiliser comme racine du sous-arbre, p. ex. "14" ou
"14.2".
maxDepthnumberdefault: illimitéProfondeur d’imbrication maximale relative à la racine. 1 renvoie la racine
et ses enfants directs uniquement.
maxNodesnumberdefault: 400Plafond de nœuds renvoyés (20 à 2000). Un sous-arbre plus grand perd d’abord
ses niveaux les plus profonds et porte truncated: true sur sa racine.
treearrayLe sous-arbre enraciné à path, avec la même forme de nœud que get_toc. Un
numéro de clause sous le dernier titre (9.5.2.1) se résout sur ce titre.
get_section
Renvoie une section sous la forme d’un document Markdown : son texte avec les formules LaTeX et les tableaux à l’endroit où la norme les imprime, ses figures, les renvois qu’elle porte et les sections en dessous, avec le chemin exact et la plage de pages. Les champs de navigation voyagent à côté, en contenu structuré.
codestringrequiredCode de norme, p. ex. "SIA 261".
pathstringrequiredChemin de section tel qu’il apparaît dans le document, p. ex. "4.2.1" ou
"Annexe A". Un numéro de clause qui n’est pas un nœud de l’arbre se résout
sur le titre le plus proche, et la réponse le dit dans requestedPath.
maxCharsnumberdefault: 12000Caractères de texte par appel (500 à 40000). Une section plus longue arrive par fenêtres coupées à une frontière de paragraphe.
offsetnumberdefault: 0Où reprendre dans le texte, depuis le nextOffset d’un appel tronqué.
sectionobjectmarkdown (le document : texte, formules et tableaux à leur place, figures
avec leur id, renvois, sections en dessous, et la licence de la copie sous
le titre), puis les champs qu’un client lit sans analyser le Markdown :
path, title, edition, pageStart/pageEnd, parentPath,
requestedPath, figures (id et numéro, pour get_figure), truncated
avec nextOffset et totalChars. Depuis la 1.20.0, la clause n’est envoyée
qu’une fois : plus de texte brut ni de tableaux et formules en JSON à côté.
Chaque affirmation technique de votre agent doit citer une section qu’il a
récupérée via get_section (p. ex. [SIA 261, 4.2.1, p. 22]), jamais de
mémoire.
search_in_norm
Recherche des sections au sein d’une norme par mot-clé, en faisant correspondre à la fois les
titres et le contenu. Utilisez-le lorsque le chemin de section n’est pas encore connu. Casse et
accents sont ignorés, les mots vides aussi (« de », « la », « und »…) : « classe de sol » cherche
« classe » et « sol ». Les sections qui portent tous les termes passent devant celles qui n’en
portent qu’une partie, et kind: "title" signifie que tous les termes sont dans l’intitulé.
codestringrequiredCode de norme, p. ex. "SIA 261".
keywordstringrequiredTerme de recherche, p. ex. "charges variables" ou "béton armé".
limitnumberdefault: 20Nombre maximal de résultats à renvoyer.
hitsarrayJusqu’à limit correspondances, chacune avec path, title, un extrait du
contenu correspondant, kind (title, text ou path) et licence quand
la norme porte ses marques de licence.
search_corpus
Lance la même recherche sur toutes les normes que votre espace peut lire, classée d’un bloc sur tout le corpus puis groupée par norme, dans l’ordre de leur meilleure correspondance. À utiliser en premier quand une question ne nomme pas sa norme : elle dit quelles normes parlent du sujet avant d’ouvrir la moindre table des matières. Accents et casse sont ignorés, et un numéro de clause en mot-clé se résout sur cette clause dans chaque norme.
keywordstringrequiredTermes de recherche dans la langue des normes, p. ex. "charge de neige".
limitnumberdefault: 20Nombre maximal de correspondances toutes normes confondues (1 à 40).
normsarrayUne entrée par norme ayant des correspondances : code, title, licence
(une fois pour ses extraits) et hits[] de la même forme que
search_in_norm, chacune avec kind (title, text ou path).
get_figure
Récupère une figure (image) référencée dans une section. Renvoie l’image inline (base64) pour que votre agent puisse raisonner sur le schéma, avec sa légende et la licence de la norme. Aucune URL de stockage n’est renvoyée : les octets sont récupérés côté serveur, et l’image ne sort jamais de la conversation sous forme de lien.
codestringrequiredCode de norme, p. ex. "SIA 261".
figureIdstringrequiredIdentifiant de figure issu d’une réponse get_section (figures[].id).
imageImageContentL’image inline (base64 + mimeType).
captionstringLa légende de la figure.
figureNumberstringLe numéro/label de la figure.
Certains clients (p. ex. Claude Desktop) n’affichent pas les images distantes inline. Voir Dépannage.
get_cross_refs
Liste les renvois d’une section : vers d’autres clauses, annexes, figures et tableaux de la
même norme, et vers d’autres normes (p. ex. SIA 261 §4.2 vers SIA 263). Pour les questions
composées, votre agent doit les suivre et lire chaque cible avec get_section.
codestringrequiredCode de norme, p. ex. "SIA 261".
pathstringrequiredChemin de section, p. ex. "4.2.1".
crossRefsarrayRenvois sortants, les résolubles en premier. Chacun porte la norme cible, le
chemin de section quand il est connu, targetKind (clause, annex,
figure, table ou norm), internal, resolvable (la cible existe dans
votre espace) et targetTitle quand c’est le cas.
Affichés pour vous, pas lus par l’agent
Trois outils n’existent que sur le connecteur distant, pour les agents qui dessinent une interface (ChatGPT, et tout client qui affiche les apps MCP) ou qui distinguent plusieurs comptes connectés. Le serveur local ne les annonce pas.
show_citations
Appelé une fois, après une réponse, avec les clauses sur lesquelles elle repose. Chaque clause devient une carte : 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. Ouvrir une carte lit la clause entière ; un lien l’ouvre dans le lecteur de Stratta. L’agent, lui, ne relit que ce qu’il doit corriger : une clause absente de votre espace, ou une citation qui n’est pas dans la clause nommée.
citationsarrayrequiredUne à huit clauses : code et path tels que get_section les a pris,
edition quand la norme en a plusieurs, et en option quote, la phrase
exacte citée.
citationsarrayUne carte par clause : found, title, pageStart, pageEnd, edition,
excerpt (la citation telle que la norme l’imprime, ou le début de la
clause), quoteFound (null sans citation), href et licence, imprimée
sous l’extrait.
open_norm_reader
Le lecteur de normes, ouvert par vous depuis le panneau latéral d’une conversation ou la barre latérale, jamais par l’agent. Il liste vos normes, puis le sommaire d’une norme, puis une clause avec ses renvois et ses sous-sections. Chaque lecture passe par les mêmes outils que celles de l’agent et compte de la même façon. « Demander à l’agent » envoie une question sur la clause que vous lisez.
get_profile
Rend un identifiant opaque et stable et l’organisation que lit la connexion, rien de personnel.
ChatGPT s’en sert pour distinguer deux comptes connectés, par exemple votre organisation et l’espace
d’un client. Gratuit, comme whoami.