> ## 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.

# Read tools

> The 8 tools Claude uses to navigate and read norms in your workspace.

These tools let Claude query the norms in your workspace. You don't call them by hand — Claude
does, in response to your questions — but knowing them helps you understand and verify answers.
Each returns JSON (except `get_figure`, which also returns an inline image).

<Note>
  `get_methodology` is the **mandatory first call**. The others follow the navigation flow:
  `list_norms` → `get_toc` → `get_subtree` → `get_section`, with `search_in_norm`,
  `get_cross_refs`, and `get_figure` used as needed.
</Note>

***

## get\_methodology

Mandatory first call when answering any technical question about Swiss norms. Returns the
canonical persona, navigation workflow, meta-routing hints (which SIA norms cover which topics),
tree-navigation rules, citation format, and answer rules. Claude adopts these rules for the rest
of the consultation.

<ParamField path="norm" type="string">
  Optional. The norm code the user is asking about, if already known. Used to scope methodology
  hints (currently informational).
</ParamField>

<ResponseField name="result" type="object">
  Persona, workflow, routing hints, and citation rules for the session.
</ResponseField>

***

## list\_norms

Lists all norms currently available in your workspace.

<ResponseField name="norms" type="array">
  Each entry has `code`, `year`, `title`, and `language`.
</ResponseField>

```text Example question theme={null}
What norms are available in Stratta?
```

***

## get\_toc

Returns the table of contents for a norm. By default only top-level chapters (`depth = 1`) are
returned to keep the response light; use `get_subtree` to drill into a chapter.

<ParamField path="norm" type="string" required>
  Norm code, e.g. `"SIA 261"`, `"SIA 263"`, `"EN 1992-1-1"`.
</ParamField>

<ParamField path="maxDepth" type="number" default="1">
  Maximum nesting depth. `1` = chapters only, `2` = sections `X.Y`, `3` = sub-subsections
  `X.Y.Z`. Higher depths grow the response quickly on large norms.
</ParamField>

<ResponseField name="tree" type="array">
  Hierarchical nodes, each with `nodeId`, `path`, `title`, `summary`, `pageStart`, `pageEnd`,
  `depth`, and `children` (empty at the depth boundary).
</ResponseField>

***

## get\_subtree

Drills into a specific chapter or section. Returns the subtree rooted at `path`, so Claude can
explore one chapter in detail without fetching the whole table of contents.

<ParamField path="norm" type="string" required>
  Norm code, e.g. `"SIA 261-1"`.
</ParamField>

<ParamField path="path" type="string" required>
  Section path to root the subtree at, e.g. `"14"` or `"14.2"`.
</ParamField>

<ParamField path="maxDepth" type="number" default="unlimited">
  Max nesting depth relative to the root. `1` returns the root plus its direct children only.
</ParamField>

<ResponseField name="tree" type="array">
  The subtree rooted at `path`, with the same node shape as `get_toc`.
</ResponseField>

***

## get\_section

Fetches the full enriched content of a section: markdown text with formulas in LaTeX and tables
inline, the page range, figures, attached tables and formulas, and cross-references to other
norms.

<ParamField path="norm" type="string" required>
  Norm code, e.g. `"SIA 261"`.
</ParamField>

<ParamField path="path" type="string" required>
  Section path as it appears in the document, e.g. `"4.2.1"` or `"Annexe A"`.
</ParamField>

<ResponseField name="section" type="object">
  Includes the section content (markdown), `pageStart`/`pageEnd`, a `figures` array (use the
  `id` with `get_figure`), attached tables and formulas, and `crossRefs`.
</ResponseField>

<Tip>
  Every technical claim Claude makes must cite a section it fetched via `get_section` — e.g.
  `[SIA 261, 4.2.1, p. 22]` — never from memory.
</Tip>

***

## search\_in\_norm

Searches sections within a norm by keyword (case-insensitive), matching both titles and content.
Use it when the section path isn't known yet.

<ParamField path="norm" type="string" required>
  Norm code, e.g. `"SIA 261"`.
</ParamField>

<ParamField path="keyword" type="string" required>
  Search term, e.g. `"charges variables"` or `"béton armé"`.
</ParamField>

<ParamField path="limit" type="number" default="20">
  Maximum number of results to return.
</ParamField>

<ResponseField name="hits" type="array">
  Up to `limit` matches, each with `path`, `title`, and a snippet of the matching content.
</ResponseField>

***

## get\_figure

Retrieves a figure (image) referenced in a section. Returns the image **inline** (base64) so
Claude can reason about the diagram, plus a public `url` for full-size viewing.

<ParamField path="norm" type="string" required>
  Norm code, e.g. `"SIA 261"`.
</ParamField>

<ParamField path="figureId" type="string" required>
  Figure id from a `get_section` response (`figures[].id`).
</ParamField>

<ResponseField name="image" type="ImageContent">
  The inline image (base64 + mimeType).
</ResponseField>

<ResponseField name="caption" type="string">
  The figure caption.
</ResponseField>

<ResponseField name="figureNumber" type="string">
  The figure's number/label.
</ResponseField>

<ResponseField name="url" type="string">
  A public URL to view the figure full-size.
</ResponseField>

<Note>
  Some clients (e.g. Claude Desktop) don't render remote images inline — see
  [Troubleshooting](/en/resources/troubleshooting#figures-do-not-display-inline).
</Note>

***

## get\_cross\_refs

Lists outgoing cross-references from a section to other norms (e.g. SIA 261 §4.2 → SIA 263). For
compound questions Claude must follow these and read each target with `get_section`.

<ParamField path="norm" type="string" required>
  Norm code, e.g. `"SIA 261"`.
</ParamField>

<ParamField path="path" type="string" required>
  Section path, e.g. `"4.2.1"`.
</ParamField>

<ResponseField name="crossRefs" type="array">
  Outgoing references, each pointing to a target norm (and optionally a section path) with the
  reference text and type (`explicit` or `implicit`).
</ResponseField>

***

## Related

<CardGroup cols={2}>
  <Card title="Ingestion tools" icon="file-arrow-up" href="/en/mcp/ingestion-tools">
    The 10 `ingest_*` tools that write norms.
  </Card>

  <Card title="TreeRAG" icon="tree" href="/en/concepts/treerag">
    The navigation model these tools implement.
  </Card>
</CardGroup>
