> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stratta.ch/llms.txt
> Use this file to discover all available pages before exploring further.

# Outils d'ingestion

> Les 10 outils ingest_* qui écrivent les normes dans votre espace de travail — utilisés par le skill ingest-norm.

Ces outils permettent à Claude d'ajouter à votre espace de travail une norme pour laquelle vous
disposez d'une licence. Ils sont pilotés par le [skill `ingest-norm`](/fr/guides/ingest-a-norm) —
vous ne les appelez pas à la main. Chaque appel est authentifié par votre clé API et restreint
côté serveur à votre organisation. Tous les identifiants sont renvoyés sous forme de chaînes.

<Warning>
  N'ingérez que des normes pour lesquelles votre organisation détient une licence valide. Voir les
  [Conditions](https://stratta.ch/legal/terms).
</Warning>

L'ordre typique : `ingest_status` → `ingest_create_document` → `ingest_create_sections` →
enrichissement (`ingest_attach_*`, `ingest_upload_figure`) → `ingest_normalize_cross_refs` →
`ingest_publish`.

***

## ingest\_status

Vérifie si une norme (par code) existe déjà dans votre espace de travail et combien de sections
elle comporte. Appelez-le avant la création pour éviter les doublons.

<ParamField path="code" type="string" required>
  Code de norme, p. ex. `"SIA 261"`.
</ParamField>

<ResponseField name="result" type="object">
  Statut d'existence et nombre de sections pour le code dans votre espace de travail.
</ResponseField>

***

## ingest\_create\_document

Crée un document de norme en brouillon dans votre espace de travail. Renvoie le `documentId`
utilisé par chaque appel `ingest_*` ultérieur.

<ParamField path="code" type="string" required>Code de norme, p. ex. `"SIA 261"`.</ParamField>
<ParamField path="year" type="number" required>Année de publication.</ParamField>
<ParamField path="title" type="string" required>Titre complet de la norme.</ParamField>

<ParamField path="language" type="string" required>
  L'une de `"fr"`, `"de"`, `"it"`, `"en"`.
</ParamField>

<ParamField path="totalPages" type="number" required>Nombre total de pages du PDF source.</ParamField>

<ResponseField name="documentId" type="string">
  L'identifiant du nouveau document.
</ResponseField>

***

## ingest\_create\_sections

Insère en masse des sections dans un document brouillon. Les liens parents se résolvent via
`parentNodeId` au sein du lot et des sections déjà insérées. Renvoie une correspondance de
`nodeId` vers le `sectionId` stocké — utilisez ces identifiants pour attacher des formules, des
tableaux, des figures et des références croisées.

<ParamField path="documentId" type="string" required>
  L'identifiant issu de `ingest_create_document`.
</ParamField>

<ParamField path="sections" type="array" required>
  Tableau d'objets section. Chaque section possède :

  <Expandable title="objet section">
    <ParamField path="nodeId" type="string" required>
      Identifiant unique stable au sein du document (p. ex. `"s-4-2-1"`).
    </ParamField>

    <ParamField path="parentNodeId" type="string">
      `nodeId` de la section parente ; à omettre pour les racines.
    </ParamField>

    <ParamField path="path" type="string" required>
      Chemin lisible, p. ex. `"4.2.1"` ou `"Annexe B.1"`.
    </ParamField>

    <ParamField path="title" type="string" required>Titre de la section.</ParamField>

    <ParamField path="summary" type="string" required>
      Résumé de 1 à 3 phrases utilisé pour la navigation dans l'arbre.
    </ParamField>

    <ParamField path="depth" type="number" required>
      `0` = chapitre, `1` = section, etc.
    </ParamField>

    <ParamField path="content" type="string" required>
      Texte enrichi complet (formules LaTeX inline acceptées).
    </ParamField>

    <ParamField path="rawContent" type="string" required>Texte brut extrait.</ParamField>
    <ParamField path="pageStart" type="number" required>Première page de la section.</ParamField>
    <ParamField path="pageEnd" type="number" required>Dernière page de la section.</ParamField>

    <ParamField path="orderIndex" type="number" required>
      Ordre au sein du parent.
    </ParamField>
  </Expandable>
</ParamField>

<ResponseField name="sections" type="object">
  Une correspondance `nodeId` → `sectionId`.
</ResponseField>

***

## ingest\_attach\_formula

Attache une formule LaTeX à une section.

<ParamField path="sectionId" type="string" required>Identifiant de la section cible.</ParamField>
<ParamField path="latex" type="string" required>La formule en LaTeX.</ParamField>
<ParamField path="description" type="string" required>Ce que calcule la formule.</ParamField>

<ParamField path="formulaNumber" type="string" required>
  Le numéro/label de la formule tel qu'imprimé.
</ParamField>

<ResponseField name="formulaId" type="string">L'identifiant de la nouvelle formule.</ResponseField>

***

## ingest\_attach\_table

Attache un tableau structuré à une section.

<ParamField path="sectionId" type="string" required>Identifiant de la section cible.</ParamField>

<ParamField path="data" type="object" required>
  `{ headers: string[], rows: string[][] }`.
</ParamField>

<ParamField path="caption" type="string" required>Légende du tableau.</ParamField>
<ParamField path="tableNumber" type="string" required>Le numéro/label du tableau.</ParamField>

<ResponseField name="tableId" type="string">L'identifiant du nouveau tableau.</ResponseField>

***

## ingest\_attach\_cross\_ref

Attache une référence croisée d'une section vers une autre norme ou section.

<ParamField path="sourceSectionId" type="string" required>La section dont provient la référence.</ParamField>

<ParamField path="targetDocumentCode" type="string" required>
  Code de la norme cible, p. ex. `"SIA 263"`.
</ParamField>

<ParamField path="targetSectionPath" type="string">
  Chemin de section cible optionnel dans l'autre norme.
</ParamField>

<ParamField path="refText" type="string" required>Le texte de la référence tel qu'écrit.</ParamField>

<ParamField path="refType" type="string" required>
  Soit `"explicit"`, soit `"implicit"`.
</ParamField>

<ResponseField name="crossRefId" type="string">L'identifiant de la nouvelle référence croisée.</ResponseField>

***

## ingest\_upload\_figure

Téléverse une image de figure (base64) et l'attache à une section, en un seul appel.

<ParamField path="sectionId" type="string" required>Identifiant de la section cible.</ParamField>

<ParamField path="base64" type="string" required>
  Octets de l'image encodés en base64 (un préfixe `data:` est toléré).
</ParamField>

<ParamField path="mimeType" type="string" required>
  L'une de `"image/png"`, `"image/jpeg"`, `"image/webp"`. Max 8 Mo.
</ParamField>

<ParamField path="caption" type="string" required>Légende de la figure.</ParamField>
<ParamField path="figureNumber" type="string" required>Le numéro/label de la figure.</ParamField>

<ResponseField name="figureId" type="string">L'identifiant de la nouvelle figure.</ResponseField>

***

## ingest\_normalize\_cross\_refs

Analyse chaque section d'un document et (re)construit les références croisées vers d'autres normes
détectées dans le texte (SIA, SN EN, EN, ISO, DIN…). Idempotent — peut être exécuté plusieurs fois
sans risque.

<ParamField path="documentId" type="string" required>Le document à analyser.</ParamField>

<ResponseField name="result" type="object">
  Un résumé des références croisées trouvées et reconstruites.
</ResponseField>

***

## ingest\_publish

Publie un document brouillon afin qu'il devienne interrogeable via les
[outils de lecture](/fr/mcp/read-tools) dans votre espace de travail.

<ParamField path="documentId" type="string" required>Le document à publier.</ParamField>

<ResponseField name="published" type="boolean">`true` en cas de succès.</ResponseField>

***

## ingest\_delete

Supprime un document et toutes ses sections, figures, tableaux, formules et références croisées.
À utiliser avant une ré-ingestion.

<ParamField path="documentId" type="string" required>Le document à supprimer.</ParamField>

<ResponseField name="deleted" type="boolean">`true` en cas de succès.</ResponseField>

<Warning>
  La suppression est permanente et retire tout le contenu enfant. Assurez-vous de cibler le bon
  `documentId`.
</Warning>

***

## Liens connexes

<CardGroup cols={2}>
  <Card title="Ingérer une norme (guide)" icon="file-arrow-up" href="/fr/guides/ingest-a-norm">
    Le workflow de bout en bout que ces outils servent.
  </Card>

  <Card title="Outils de lecture" icon="book-open" href="/fr/mcp/read-tools">
    Interroger les normes une fois publiées.
  </Card>
</CardGroup>
