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.
dossierIdstringrequiredReturned by open_dossier or list_dossiers. One site per dossier: open
the project's dossier first.
addressstringrequiredThe address as the user writes it: "Av. de Rhodanie 58, Lausanne".
radiusnumberHow 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.
siteIdstringrequiredReturned by scan_site.
Returns two separate lists:
| Field | What it holds |
|---|---|
established | what the registers settled: municipality, parcel, elevation, unconsolidated cover, bedrock, boreholes, seismic zone |
unresolved | what they did not settle, with the reason for each point |
boreholes | how many, how many have strata read, the distance to the nearest |
notice | the 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.
siteIdstringrequiredReturned by scan_site.
limitnumberHow 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.
withStrataOnlybooleanKeep 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: 50How 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.
siteIdstringrequiredFrom 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.
siteIdstringrequiredThe sheet.
maxPointsnumberdefault: 60Points 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.
siteIdstringrequiredThe sheet.
includeGeometrybooleandefault: falseReturn 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.
siteIdstringrequiredThe sheet.
includeGeometrybooleandefault: falseReturn 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.
siteIdstringrequiredThe 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.
siteIdstringrequiredThe sheet.
radiusnumberdefault: 500How far to look, in metres (50 to 5000). Twelve neighbours at most.
What the survey looks up
| Topic | Sources |
|---|---|
| Situation | swisstopo: municipality, EGRID parcel, elevation from the terrain model |
| Ground | GeoCover at the point and over the neighbourhood, cantonal borehole register with strata, water table measured in a piezometer, modelled bedrock top |
| Constraints | polluted sites, groundwater protection, natural hazards, noise sensitivity, zoning, distance to forest |
| SIA 261 actions | seismic 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.