Search documentation

Search documentation

Changelog

Notable changes to the Stratta MCP server.

Notable releases of the @stratta/mcp package. The package follows Semantic Versioning.

2026-10-07
Your office's AI key, and your members in hand

The assistant on your key. The in-app assistant answers with the model of your choice, on your office's account: paste an API key from Infomaniak (processed in Switzerland), Mistral (European Union), OpenRouter, Anthropic, OpenAI or Google in Settings › Integrations. Stratta recognises the provider and offers only the key's models.

Your members. Resend an invitation, even an expired one, make someone an admin or a member, transfer the space to an admin, and find the history of the month's invitations.

1.18.1
Descriptions for all your norms

The server instructions, tool descriptions, the methodology served to the agent and the consult-stratta skill now speak of norms, laws, regulations and references, not only construction norms. No tool changes.

2026-10-06
Open to everyone, for all your norms

Open to everyone. Creating an account is free. A short form opens your space: first name, last name, company, phone, and the company website, whose icon becomes the space's logo. The free plan reads the demo norm; Pro and Max can be bought online again.

All your norms. Technical standards, laws, regulations, references: Stratta serves what your organization has the right to use, with the same exact citation.

Adding a norm is included. A deposit takes one norm seat of the plan, with no requests charged: Pro has 15, Max 60, as many deposits per month, 600 pages at most. An extra norm costs 5 CHF, paid once. Each deposit asks you to declare your rights to the document. With your organization's first norm, the demo norm goes to sleep; it can be turned back on from the Norms page.

2026-10-05
For enterprises, licence with every excerpt

Stratta is for enterprises. A space is opened with Stratta, which invites its first administrator; that person becomes its owner on arrival. There is no free plan, trial, pricing page or online payment any more, and no setup reminder emails. An account without a space sees a contact form, also used to request a norm (account menu › Écrire à Stratta, or Norms › Demander une norme).

The licence with every excerpt. The licensed copy's watermark and copyright are kept once with the norm and accompany every excerpt: get_section (licence field and Licence: line of the Markdown), search_in_norm, search_corpus, get_figure, show_citations, the assistant, deliverables and exports. ingest_create_document accepts licence.

Models. Every call to OpenRouter requires a zero-retention provider and refuses data collection.

1.18.0
Citation cards and the norm reader, in ChatGPT

Remote connector: 61 tools. The local package changes only its version.

Citation cards. An answer can end with the clauses it rests on, as cards: the norm, the clause, the pages and the sentence quoted, checked word for word against the clause before it is shown. A card opens the full clause, and a link opens it in the Stratta reader. When a quote is not in the clause, the card says so and shows the norm's own text.

The norm reader beside the conversation. In ChatGPT, open it from the side panel or the sidebar: your norms, a norm's table of contents, a clause with its references. "Ask the agent" asks about the clause you are reading.

Two accounts, two profiles. Connected to your office and to a client's workspace, ChatGPT now tells the two apart.

The ChatGPT plugin carries its skills. The drafting procedures (verification note, project basis, use agreement, terrain chapter, review of open questions) and a first-run walkthrough come with the plugin.

1.17.0
Simple mode, shorter methodology, a leaner assistant

Package 1.17.0. Same tools, announced on demand.

Simple mode. npx -y @stratta/mcp --simple announces only the 10 norm-reading tools (about 11,000 characters of schemas instead of 67,000). --toolsets dossiers,sites, --full and the STRATTA_TOOLSETS variable pick the families. On the AI Agents page, each agent's Tools menu does the same for the remote connector. By default, every tool.

Shorter methodology. get_methodology is more than twice as short for a large corpus (one line per norm, scope is read through list_norms) and only mentions dossiers when the dossier tools are provided.

A leaner assistant. It starts with the norm tools and loads the other families according to the page and the question: about three times fewer requests consumed per step.

2026-10-02
The Library becomes Methods

In the application, no new package version.

The Méthodes page replaces the Library: each method in plain French, the sentence to say to your agent to run it, and how many times it followed it in the last 30 days. A Word report dropped on a document's card replaces Stratta's plan, with no technical name to invent. list_skills and get_skill do not change.

2026-10-01
The site sheet, on request

In the application, no new package version.

The site sheet (the ground under an address, in plan, cross-section and 3D) leaves the plans: it is opened on request, office by office, while it matures with the pilot offices. Write to hello@stratta.ch to try it. Sheets already made stay readable on every plan, and the scan_site tool answers that it is not enabled until it is, without charging anything.

2026-10-01
Add a norm from the app

In the application, no new package version.

On the Norms page, the Ajouter une norme (Add a norm) button takes a PDF (200 MB at most, a scan is accepted), prefills the reference, year and title from the file name, and asks you to confirm the licence. The cost is shown before you send as an estimate: 500 requests per deposit plus 40 per page (twice for a scan). The actual price is settled on what the norm really cost once it is ready, twice the estimate at most, and everything is refunded if the norm is refused, unreadable or withdrawn. The file is processed on Stratta's server in Germany, its formulas and tables are checked against the image of their page, then a person at Stratta reviews before it is added. A card follows the deposit live, an email announces the end, and the PDF is deleted once the norm is delivered. Ingestion by your agent with the ingest-norm skill remains possible, PDF on your machine.

1.16.1
What is served says what the source says, and says when it does not know

Same number of tools. A correction, on the server and in the package.

Search. search_in_norm and search_corpus ignore stop words (« de », « la », « und »): "classe de sol" looks for « classe » and « sol ». Sections carrying every term rank first, and kind: "title" means every term is in the heading. The norm code is matched regardless of case and spacing.

Norm text. The licence watermark no longer appears in the served text, a table is no longer served twice, and a clause no longer borrows its parent's summary. The ingestion pre-pass shipped with the package removes the watermark at the source.

Site sheet. The four cantons were reviewed fact by fact: Fribourg is read in full again, hazard degrees are served as published, a source that did not answer is stated as not covered and never as « none ». The response spectrum follows table 24 of SIA 261:2020.

Local server. A failed call reports its error code to your workspace log, like the remote connector.

1.16.0
The dossier fills itself, the office has a library, and the project produces its document

Four more tools: 59 on the local server, 58 on the remote connector.

The dossier fills itself. Every norm section the agent reads while working on a dossier shows up in the Readings tab, with the clause, the pages, who and when. Naming the project once is enough (load_dossier, open_dossier, or any tool that touches the dossier, one of its questions or its site sheet); the dossier stays active for six hours and every reading extends it. record_decision takes dossierId and question (what is settled) instead of questionId: the question is born decided. The served methodology moves to v3: name the project, record what is fixed, open a question only when something is left to settle.

The office library. list_skills and get_skill serve the procedures the agent follows for a repeatable task: nine shipped with the package (project-basis, use-agreement, site-chapter, instruct-structure, review-open-questions, handoff-to-word, verification-note, consult-stratta, ingest-norm) and the ones your office writes on the Library page; an office procedure with the name of a Stratta one replaces it. A Word report deposited on that page becomes a template: its plan, its standing mentions and its wording, reviewed and validated, served as one more procedure.

The document the project must produce. draft_deliverable opens the document of a dossier (project basis, use agreement, geotechnical report, verification note) on the office template's plan, otherwise on Stratta's; write_section writes one section with what it rests on, and refuses a text without a source. The dossier's Deliverables tab reads it, corrects it, puts it in review, signs it and exports it to Word, in the layout of the report the office deposited. When a source moves (a decision retaken, an entry deleted, a new site survey, a new edition of a norm), the section goes stale with the reason, and draft_deliverable tells the agent.

The terrain. The PDF profile of a Geneva borehole is read on request by a vision model: its layers replace the coarse cadastral units in the column, the cross-section and the block; an office archive borehole is read from a dossier attachment and placed on the site. A decision whose value is an elevation is drawn on the cross-section and in the block. A guest reading the dossier through a link can reply.

1.15.0
Every tool states the credential it needs, and a deletion asks first

Each of the 54 tools the remote connector serves now declares the credential it requires, so a client can show its sign-in step on the tool that needs it rather than on the first call that fails. Deleting a document asks for your confirmation through the client before anything goes, as removing a question or an option already did: it is the widest deletion Stratta offers, and it was the only one that ran on the first word.

0.14.0
Everything the dossier page can read and do, for the agent

Nineteen tools, on the local server and the remote connector alike. On questions, the agent reads what load_dossier summarised: list_questions and get_question (options with their ids, decision, evidence field by field, signed comments, one page at a time), get_dossier_activity, list_exports. It does what only the page could: update_question (assignee by e-mail address, due date), add_option, update_option, add_comment, update_entry, attach_entry to empty the unclassified pile; delete_question and delete_option ask for your confirmation through the client before touching anything.

On the site side, the Site tab is read in full: list_sites, get_site (every fact with its key, its official notice and which source answered), get_site_section (axis, terrain, modelled bedrock, geology, corridor boreholes with their logs), list_site_overlays, get_groundwater_contours, list_site_photos, list_site_neighbours.

load_dossier now returns dossierId, siteId, the counts and the dates; list_dossiers returns siteId; get_boreholes returns the borehole's author, piezometer and strata reading state.

0.13.1
A one-kilometre radius, and map areas that open

The scan_site radius now goes up to 1,000 m (previously 50 to 500). Past a few hundred metres in a dense neighbourhood, the scan keeps the 400 nearest boreholes and the sheet says the list was cut rather than showing a wrong count.

In the app, every area drawn on the map (polluted site, natural hazard, water protection sector) opens with a click and leads with the one thing you came to read: whether it covers the site point, or how many metres away it stops. The same areas now appear under the matching fact in the sheet, with their distance: "Outside protection sector" at the point and "Water protection (1)" on the map were both true, and read as a contradiction. The "Polluted sites" and "Building permits" sections now count within the chosen radius rather than a fixed 300 m square.

The cross-section now reads every borehole record of its corridor from the canton (Vaud and Valais only serve them one by one, and the scan read twelve), gains an adjustable depth window so the first twenty metres can be read without a three-hundred-metre well crushing them, and carries two observation marks per borehole: the measured water table and the rock top as the layer description names it. Joining those rock tops across boreholes is a switch, off by default, labelled as interpretation.

Later the same day: the map areas are now written by the scan, like the boreholes, instead of being re-read on every open under a rate limit that made them vanish silently after a few page reloads. The cross-section's controls now sit in a toolbar on top of the figure, the depth window clips columns at the frame edge rather than at their own depth, and a second button, Join layers, aligns layers of the same family (clay, silt, sand, gravel, moraine, fill, rock) between neighbouring boreholes less than 150 m apart. Off by default, drawn as a translucent fill with a dotted outline and labelled "interpretation": what an engineer would do in their head in front of the section, drawn with its label.

0.13.0
The site fiche: what public registers know about a plot

Three new tools, scan_site, get_site_context and get_boreholes, gather around a Swiss address what the public registers know about the ground: municipality, EGRID parcel, elevation, geology, cantonal borehole register with strata, water table measured in a piezometer, polluted sites, groundwater protection, natural hazards, seismic zone and SIA 261 ground class.

get_site_context returns two separate lists: what the registers settled, and what they did not, with the reason for each point. The second is the one that prices a bid. get_boreholes goes down to the detail: the boreholes nearest first, their layers, the SIA 261 class logged in the hole, the measured water table, and links to the cantonal documents.

In the app, a dossier gains a Site tab: you pick a radius, a step screen shows the sources answering, then the fiche appears whole. It reads top to bottom like the project basis SIA 260 clause 2.5.2 asks for. A map carries the polluted-site and hazard footprints, and two clicks draw a section where boreholes are projected under the ground, with no layer interpolated between them. Every value copies with its provenance, and a situation report leaves in Markdown, HTML or print. The original documents are linked at the canton, never copied.

0.12.1
Ingestion over the remote connector

The ten ingest_* tools are now served to the remote connector as well: an agent with a machine (Claude Code, Codex, Cursor, Gemini CLI) ingests a norm through https://stratta.ch/mcp, with no package and no key. The ingest-norm skill is served as the resource stratta://skills/ingest-norm and the pre-pass script at https://stratta.ch/ingest-prepass.py, which the skill downloads when it is not on disk. The connector exposes 32 tools; only add_attachment, which reads a file from your disk, stays local. On the site, the guide names your agent (eight clients, a button or a command each), the dashboard shows which agents are connected, and the norms of the workspace get their own page.

0.12.0
One catalogue for both transports

The local server and the remote connector described the same tools with different texts. A single catalogue now carries the names, descriptions and annotations of both, and the package is generated from it. The norm parameter of the read tools is code everywhere (your agent reads the schema on every session, nothing to change on your side). whoami arrives on the local server, results are returned as compact JSON, and the server sends the same initialisation instructions as the connector.

0.11.0
Coverage score and session paths

ingest_publish now measures how much of the norm actually made it in (text per page, pages under a chapter, empty leaves, formulas and tables) and refuses below 30/100 with the reasons; force: true publishes anyway, once confirmed. ingest_status and list_norms report the score (coverage: full, partial, sparse), and a hollow norm carries a notice the agent has to relay. Every tool call also carries a session id and the address of what was asked for (norm code, path, search terms), never the content of free-form fields: the dashboard reads a conversation as a path through the corpus.

0.10.0
Dossiers: questions, not a flat journal

A dossier now holds questions ("can pile P38 be kept?"), each with its evidence, its options and its decision. Two tools added: open_question (idempotent on the title, named options[]) and record_decision (a decision the engineer confirmed, the retained option). save_finding now only takes reference, hypothesis or observation, files under a question via questionId, and carries the cited edition (normEdition). resolve_question closes or reopens a question rather than an entry. 7 dossier tools instead of 5: 25 tools total on the local server, 16 on the remote connector.

0.9.7
stratta command

npm install -g @stratta/mcp installs a stratta binary: stratta doctor, stratta whoami. npx -y @stratta/mcp keeps working unchanged: it is the form your agent uses.

0.9.6
whoami, doctor, logout

The server can finally answer questions about itself. doctor checks Node, your key, backend reachability, how many norms are visible and your version, and every failure carries the command that fixes it. whoami asks the backend rather than your disk: a key revoked from the dashboard still looks valid there. logout removes the key and flags a lingering STRATTA_API_KEY. --help lists everything.

0.9.5
Update command

npx -y @stratta/mcp update compares your version against the published one and fetches the new one. npx caches what it resolved, so a server could keep launching a replaced version for weeks with nothing to say so. The server also mentions it at startup when it notices it is behind.

0.9.3
Login fixed on Windows

login opened the browser on a truncated address: & separates commands in cmd.exe, and the authorisation URL contains two of them. The page reported an invalid link, while the address printed in the terminal worked fine. The URL is now passed through untouched.

0.9.0
Browser login

npx -y @stratta/mcp login opens an ephemeral port on 127.0.0.1, sends you to Stratta, and collects the key over a local redirect. You see which machine is asking and for which organisation, and there is no key to copy. --paste keeps the old flow for machines without a browser.

0.7.0
Annotated tools

The eight read tools declare themselves side-effect free, and deleting a norm declares itself destructive, so a client asks for confirmation at the right moment and only then. Arguments for all eighteen tools are validated at the server boundary.

0.6.0
Quota-aware errors
  • Server-enforced quotas per organization. A QUOTA_EXCEEDED error now names the dimension, your current count and the plan limit, in plain language. - The agent is told not to retry a quota rejection, so it stops looping against a limit that will not move on its own. Monthly quota errors say when the window resets. - The ingest-norm skill checks the budget before writing a large norm, rather than failing halfway and leaving a partial document behind. - See Plans and quotas.
0.5.0
PDFs without bookmarks
  • The pre-pass falls back to a regex scan of the document body when a PDF ships no embedded bookmarks, so norms that were previously unusable now ingest correctly.
0.4.0
Hybrid ingestion
  • Ingestion runs in two phases: a deterministic Python pre-pass (PyMuPDF) extracts the tree, the page text and the figures, then the agent enriches it with summaries, LaTeX formulas and tables. - Roughly 10× fewer tokens and 5× faster than the fully agentic pipeline it replaces. - scripts/ingest-prepass.py ships inside the package.
0.3.0
Figure URLs
  • get_figure now also returns a public URL for the image, so Claude can offer a full-size view in addition to the inline (base64) image. - The tool result includes a Markdown embed hint so clients that support inline images can show the figure directly.
0.2.0
Zero-config onboarding
  • Install without a key: claude mcp add stratta -- npx -y @stratta/mcp. You're prompted for your API key on first use. - New npx -y @stratta/mcp login command to save your key ahead of time. - The key is stored in ~/.stratta/config.json (owner-only, mode 0600). Resolution order: STRATTA_API_KEY env var → config file → first-use prompt.
0.1.0
First public release
  • Initial publish of @stratta/mcp to npm. - 18 tools: 8 for reading norms (methodology, list, table of contents, subtree, section, search, figure, cross-references) and 10 for ingesting norms (ingest_*). - The ingest-norm skill ships with the package.

This log tracks @stratta/mcp releases. Platform changes (billing, corpus, translation) live on stratta.ch/changelog; quotas and payment are covered in Plans.