Search documentation

Search documentation

Site tools

The 10 tools that gather what Swiss public registers know about a plot, and read the site sheet.

Before opening a norm, an engineer opens four browser tabs: the cantonal geological register, the polluted-sites cadastre, the natural-hazard maps, the federal geoportal. The first three tools make that round for them and return the result dated, attributed, and split between what is settled and what is not. The next seven read the site sheet as the Site tab of the dossier shows it: the sheet, the section, the map areas, the piezometric contours, the photos, the neighbouring projects.

This is not a geotechnical study. It is a survey of public registers. No design value (friction angle, bearing capacity, modulus) follows from a geological description served here. An agent that produced one would have produced a plausible and wrong number; the methodology forbids it explicitly.


scan_site

Starts the survey around a Swiss address and returns the site id.

dossierIdstringrequired

Returned by open_dossier or list_dossiers. One site per dossier: open the project's dossier first.

addressstringrequired

The address as the user writes it: "Av. de Rhodanie 58, Lausanne".

radiusnumber

How far to look for boreholes and constraints, in metres. From 50 to 1000 (only the 400 nearest boreholes are kept, and the sheet says so when it happens), 300 by default.

The address is geocoded server-side against swisstopo, and any coordinates you supply are ignored. A model that has seen a lot of Swiss maps will happily produce plausible LV95 numbers; a site placed two hundred metres off returns the neighbouring parcel's boreholes without a single call failing.

The scan runs in the background and takes a few seconds. Returns { siteId, dossierId, label, east, north, radius, next }.


get_site_context

Reads what the scan found, grouped by topic, each value with its source and the date the data was current, not the date it was read.

siteIdstringrequired

Returned by scan_site.

Returns two separate lists:

FieldWhat it holds
establishedwhat the registers settled: municipality, parcel, elevation, unconsolidated cover, bedrock, boreholes, seismic zone
unresolvedwhat they did not settle, with the reason for each point
boreholeshow many, how many have strata read, the distance to the nearest
noticethe reminder that these facts are not a study

Report unresolved to the user in full. "No borehole within three hundred metres, molasse likely but unconfirmed, budget for three drillings" is the sentence that sets the price of a bid. An agent that reads only the first list presents the fiche as complete, which it almost never is.

Each unresolved point carries its kind:

  • indicative: a value exists, but its own source warns it is not precise enough. That is the case of the ground-class maps, "to be considered as indicative maps, not precise at parcel level".
  • uncovered: no automatic source covers this point and a step has to be taken. Snow load, wind and underground networks are in this case. It is also what a source that did not answer during the scan gives (« n'a pas répondu, relancez le scan »), and a site outside the natural hazard maps (« non évalué »): never « no hazard » nor « no borehole ».

get_boreholes

Reads the boreholes the scan found, nearest first, with their logged strata. This is the call that answers "what is the ground actually made of here". get_site_context only says how many boreholes there are.

siteIdstringrequired

Returned by scan_site.

limitnumber

How many to return, nearest first. 1 to 40, 8 by default. total always says how many the radius holds, so a short list never reads as an empty neighbourhood.

withStrataOnlyboolean

Keep only the boreholes whose strata were read. A cantonal register publishes the log of roughly two boreholes out of three.

Each sounding carries its distance from the site, its type, its depth, its year, its layers (depth interval, description, period), the SIA 261 ground class logged in that sounding when the canton publishes it, the water table when it was measured, and the links to the cantonal documents: the drilling log, the site plan.

soundingType is not method, and the difference changes a conclusion. A Swiss cantonal register does not hold boreholes only: it also holds trenches, wells, augers and penetrometers. Across forty-nine Vaud records read, ten were trenches.

soundingType says what the sounding is; method says the drilling mode (cored, destructive, driven) and it is empty on anything that was not drilled. A two-metre trench does not carry the weight of a thirty-metre cored borehole: quoting them as equals presents a surface investigation as a deep one.

When the field is absent, the register did not publish it. Do not infer it from the depth.

One sounding is one observation, at one point, on one day. Quote it with its distance. Never interpolate a layer between two boreholes: that is an interpretation, and it belongs to a person, not to a machine. Never derive a design value (friction angle, bearing capacity, modulus) from a layer description.

The documents are links, never files. The canton of Vaud forbids redistributing its structured data to third parties; hosting its PDFs would go further than calling its API. Give the link.


The sheet as the app shows it

get_site_context is the summary shaped for an answer. The seven tools below are the record: what the Site tab draws, read by an agent. Reading an existing sheet is open on every plan; opening one or rescanning needs the site sheet to be enabled for the organization, on request.

list_sites

The site sheets of the organisation, most recently touched first, each with its dossier, municipality, canton, radius and the status of its scan. A list_dossiers row also carries the siteId of its dossier.

limitnumberdefault: 50

How many to return (1 to 200). truncated says when more exist.

get_site

The whole sheet: every fact with its stable key (geology.unit, seismic.zone), its status (established, indicative, absent, uncovered), its source with the date the data was current, the official notice and the provider attribution when the source carries one, and the scan with each of its sources and whether it answered. Call it to quote a source line, or to tell the user which source failed.

siteIdstringrequired

From scan_site, list_sites or a dossier row.

get_site_section

The geological section drawn on the sheet: the axis from A to B, the corridor width, the measured terrain line, the modelled bedrock top, the geology bands sampled along the axis, and the boreholes of the corridor with their logs, projected on the axis (alongMetres, offsetMetres). Without an axis drawn in the app, the tool says so and returns no lines.

siteIdstringrequired

The sheet.

maxPointsnumberdefault: 60

Points of the terrain and bedrock lines, evenly spaced (2 to 200).

The terrain is measured, the bedrock is a national model at ten metres, the geology bands are the map sampled along the axis. Nothing is interpolated between two boreholes: each column is one observation at its point.

list_site_overlays

The areas the map draws around the point: polluted sites, natural hazards, water protection sectors, each with whether it covers the site point or how many metres away it stops, its area and its layer. The sheet answers at the point; this tool answers in the radius.

siteIdstringrequired

The sheet.

includeGeometrybooleandefault: false

Return the rings in LV95 as well. A sector runs to hundreds of vertices.

get_groundwater_contours

The cantonal piezometric contours the scan stored around the site: for each contour the aquifer name, the water table elevation in metres above sea level and the source layer. A canton that publishes none returns an empty list and says whether the reading happened. A contour is the canton's interpretation of a whole aquifer, not a measurement at the site: prefer a water table logged in a nearby borehole (get_boreholes) when one exists.

siteIdstringrequired

The sheet.

includeGeometrybooleandefault: false

Return the contour vertices in LV95 as well.

list_site_photos

The photos uploaded on the sheet: name, position in LV95 when the photo carries one (EXIF or placed by hand), shooting direction, the instant the camera recorded, the note. No image and no link: the photo is looked at in the app.

siteIdstringrequired

The sheet.

list_site_neighbours

The organisation's other sheets within a radius of this one, nearest first, with the distance, the unconsolidated cover their own scan established and whether it is the same as here, and the dossier that carries them with its counts of open and decided questions. This is what the public registers cannot say: the office already worked three hundred metres away. Nothing is interpolated: these are dossiers to reload, not values.

siteIdstringrequired

The sheet.

radiusnumberdefault: 500

How far to look, in metres (50 to 5000). Twelve neighbours at most.


What the survey looks up

TopicSources
Situationswisstopo: municipality, EGRID parcel, elevation from the terrain model
GroundGeoCover at the point and over the neighbourhood, cantonal borehole register with strata, water table measured in a piezometer, modelled bedrock top
Constraintspolluted sites, groundwater protection, natural hazards, noise sensitivity, zoning, distance to forest
SIA 261 actionsseismic zone, ground class

The ground class has four sources and the tool picks the best available: the class observed in a nearby borehole first (the canton of Vaud publishes one on roughly two boreholes out of three), then the cantonal polygon, then the local spectral microzonation, and last the federal map, which still refers to the 2003 edition of the norm and says so.


Cantons covered

Cantonal sources are read for Vaud, Geneva, Valais and Fribourg. Elsewhere the survey writes "cantonal sources not integrated" on each affected topic rather than leaving the section empty: in Switzerland the subsurface, water, polluted sites and hazard maps are cantonal competences, and there is no federal layer to fall back on.

"No sounding on record" does not mean the same thing everywhere.

In Vaud and Geneva, the law compels every sounding to be filed: the absence is information, and it is a line in a bid: drilling will be needed.

In Valais there is no legal framework at all: the register's own operator says so, contribution is voluntary. In Fribourg, only geothermal probes carry a documented obligation. In those two cantons the same sentence may simply mean nobody filed anything, and the survey says so. Reading the first where the second applies makes you underestimate what you do not know.

Soundings stay with their canton. Vaud forbids redistributing its structured data to third parties; in Valais and Fribourg no licence could be identified, and an unknown licence is treated as a restrictive one. The data is read for your project, attached to it, and never shared between organisations. The original documents, borehole log or site plan, are linked, never copied to us.


PDF profiles read by a vision model

For every borehole, the Geneva register publishes a scanned profile that carries what its table does not: the layers described word for word, the USCS classes, the dated water levels, the tests. Since 19 September 2026 the detail of a Geneva borehole offers Read the PDF profile: the page is rendered to an image and read by a vision model; its layers replace the register's broad units in the column, the section and the block, the stabilised level becomes the borehole's water table, and the rest (tests, remarks, the reader's doubts) reads under the column. A reading made by one office serves every next one; it weighs ten requests the first time, nothing afterwards.

The same reader reads a page of a project attachment (the office's 2008 report): from the dossier's documents, "Read a borehole in this document" asks for the page and the position, and puts a borehole of origin "Office archive" on the site, with its layers. get_boreholes returns it like any other. ⚠️ None of this is evidence: every value read carries its provenance and is re-read on the document.