Swiss Grounding MCP
A read-only MCP server that grounds AI assistants in official Swiss sources, returning one cited answer per query with a status the assistant can act on.
Search & read official pages – full-text search over 10,630 official federal/cantonal/municipal pages (procedures, permits, taxes, schools, etc.) and live reading of any official Swiss page.
Federal law – quote current consolidated federal law (Fedlex) by act/article.
Health insurance premiums – cheapest basic insurance premiums per municipality, age, deductible, model.
Holidays – school and public holidays by canton/municipality for 2025–2027.
Waste collection – next collection dates in cities with open data (Zürich, Basel, St. Gallen, Winterthur, …).
Public transport – official timetable connections and departure boards.
Federal votes – upcoming subjects and official results (national + cantonal).
Rates – mortgage reference interest rate (BWO) and SNB exchange rates.
Company register – UID, legal seat, commercial register and VAT status.
Place info – resolve places to municipality, BFS number, population, website.
Weather – current measured values from nearest MeteoSwiss station.
Coverage tool – tells the assistant what is and isn’t in scope.
Polite and resilient: respects robots.txt/terms, paces requests, caches, serves dated copies when sources are down; works in de/fr/it/rm/en with multilingual place handling.
Provides Swiss place facts such as municipality, canton, BFS number, postcodes, population, and official website, using Wikidata as one of the sources for place metadata.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Swiss Grounding MCPWhat are the 2026 health insurance premiums in Geneva?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Swiss Grounding MCP
Answers about Switzerland, with the source.
An MCP server that grounds AI assistants in official federal, cantonal and municipal information, in German, French, Italian, Romansh and English, and cites the responsible authority in every answer.
Try it live
Running on Google Cloud Run in Zürich (europe-west6), deployed from main.
Public and read-only: no sign-up, no API key.
Live server: swiss-grounding-mcp-542630986415.europe-west6.run.app
MCP endpoint (Streamable HTTP):
https://swiss-grounding-mcp-542630986415.europe-west6.run.app/mcp
Health: /health
Add it to an assistant in one line, e.g. Claude Code (other clients):
claude mcp add --transport http swiss https://swiss-grounding-mcp-542630986415.europe-west6.run.app/mcpIt scales to zero when idle, so the first request after a pause starts an instance (about 2 s; hybrid search follows about 10 s later, keyword search answers meanwhile). It is rate-limited per client, refuses browser origins and is checked every 6 hours. The hosted instance runs the code in this repository, which also runs locally.
Related MCP server: mcp-i14y
How it works
Ask a general-purpose assistant about Switzerland and it may answer for the wrong canton, from an outdated page or from a neighbouring country. Swiss Grounding MCP gives it the responsible authority's own data instead:
One tool call. The assistant picks one of 13 read-only tools. Places work as people write them: Genf, Ginevra, Genève, Schuls → Scuol, 8003, Bahnhofstrasse 1, Zürich.
The right authority. Answers come from the level that is responsible (federal office, canton or municipality), through a prebuilt index of 10,630 official pages (keyword + multilingual semantic search), live federal APIs and municipal open data.
Polite and resilient. robots.txt and terms of use are respected by default, requests are paced and cached, and when a source is down a dated copy is served or the source is named.
One cited answer. Every tool returns the same contract, with verbatim excerpts and one of five statuses that tell the assistant what to do:
|
|
|
|
|
answers, with the source | asks one precise question back | says it is outside Switzerland or the scope | says nothing was found, never guesses | names the source that is down |
Coverage
The declared scope: what the server answers, for which area, from which authority. Assistants can read
it too, with the swiss_coverage tool.
Topic and tool | Geography | Source (authority) | Freshness |
Procedures, rules, fees, deadlines — permits & migration, moving & registration, taxes, social insurance (AHV/IV), unemployment, driving licences & vehicles, customs & parcels, schools, housing, voting, civil status… | Federal (ch.ch in de/fr/it/rm/en, federal offices, AHV/IV, arbeit.swiss), cantonal portals of 23 cantons (see limits below), city pages of Lucerne, Lugano, Winterthur, Biel/Bienne, St. Gallen, Bern, Geneva, Lausanne and Thun | Full-text index of 10,630 official pages / 46,952 passages, plus live reading of any official page | Index built 2026-09-25, refreshed weekly; |
Federal law — any act and article, current consolidated version | Federal | Fedlex (Federal Chancellery) | Live; version in force today |
Mandatory health insurance premiums — cheapest offers per municipality, age, deductible, model | All 2,110 municipalities (premium regions) | FOPH premium open data (same data as priminfo.admin.ch) | 2026 premiums; 2027 added when FOPH publishes them (end of September) |
School and public holidays | All 26 cantons; municipality level where published (e.g. Scuol, Zürich) | OpenHolidays (aggregated official lists), EDK list, municipality website | 2025–2027 |
Waste collection dates | City of Zürich (by postcode), Basel/Riehen/Bettingen (by address), St. Gallen (by street); by collection zone: Winterthur, Uster, Wetzikon, Dübendorf, Horgen, Wädenswil, Adliswil, Thalwil and 12 more | Municipal open data (ERZ Zürich via OpenERZ, data.bs.ch, daten.stadt.sg.ch) | Live, next 120 days |
Public transport — connections and departure boards | All of Switzerland | Official timetable (opentransportdata.swiss via transport.opendata.ch) | Live |
Federal popular votes — upcoming subjects, results (national + canton) | Federal | FSO vote-day open data, Federal Chancellery | Live |
Mortgage reference interest rate (rents) and SNB exchange rates | Federal | BWO; Swiss National Bank | Live (cached 6 h) |
Company registration — UID, legal seat, commercial register and VAT status | All of Switzerland | Federal UID register (FSO) | Live |
Place facts — municipality, canton, BFS number, postcodes, population, official website | All 2,110 municipalities, 26 cantons | BFS register & STATPOP, swisstopo, Wikidata (websites) | Population 2025; register 2026-09-25 |
Current weather measurements | Nearest MeteoSwiss automatic station | MeteoSwiss open data | Live (10-minute values) |
Not covered, and known limits
Anything outside Switzerland, e.g. the German Rundfunkbeitrag in Konstanz: the server says so.
Cantons GR, BL and SH block or do not serve text to automated clients, so their cantonal pages are not in the index (ch.ch and federal pages still apply;
read_official_pagereports the block honestly). VS (7 pages), TI (45) and TG (52) are only partly indexed.Municipal web pages are indexed for the nine cities above (120–250 pages each; Lausanne 66, Thun 32). Zürich has only a few pages, Bellinzona and Fribourg none yet (the next refresh crawls Fribourg's own domain, ville-fribourg.ch). For other municipalities the server returns the official website and can read a given page live.
Waste calendars exist only where municipalities publish open data; elsewhere the server says so and links the municipality. Holidays, premiums and place facts cover every municipality.
Cantonal law texts, individual tax calculations and weather forecasts are not provided.
School holidays come from OpenHolidays, which aggregates official lists. Where the index holds the responsible authority's own calendar (e.g. ge.ch, bern.ch, the school of Scuol), that page is cited first, with the EDK list and the municipality site alongside. Periods are labelled by school type where a canton publishes several (canton Bern: German- and French-speaking schools).
Registering on arrival in Lausanne is weak: the city's residents' office page is not in the index.
Cross-language questions: a question in another language than the place's pages first returns a language hint, not the page, and the assistant has to search again. In end-to-end runs of such a question (French, about Bern), Sonnet followed the hint and answered from Bern's page; Haiku did so in 1 of 4 runs.
Search is keyword-based by default. With the optional
semanticextra it is hybrid and also finds pages worded differently or written in another language, but still misses some (measured); Romansh is not covered by the embedding model.
Results
With and without this server. The same 28 questions (the 5 published samples, 12 of our own and the organisers' 11 practice cases), asked to Claude Code with Sonnet three ways that differ only in their tools:
Mode | 17 questions | Practice cases | Links to official Swiss authorities |
With this server | 16/17 | 11/11 | 94% of 34 links |
Web search, no server | 11/17 | 7/11 | 72% of 67 links |
Model knowledge only | 6/17 | 3/11 | 1 link in 28 answers |
With the server, answers also take half the calls and half the time of web search (1.2 vs 2.4 calls, 14 vs 28 s per question). Web search often reaches the right figure, but mixes in comparison sites, news and tourism pages and rounds official figures; without any tools the model mostly declines or answers from dated knowledge.
Across the evaluation setup: 2 MCP clients × 2 LLMs, on the 5 published sample questions plus 11 of our own (de/fr/it/rm/en, including ask-back, out-of-scope and not-covered cases), run of 2026-09-25:
Client + LLM | Published samples | All 16 questions | Avg tool calls |
Claude Code + Sonnet | 5/5 | 15/16 | 1.0 |
Claude Code + Haiku | 5/5 | 13/16 | 0.9 |
OpenCode + gpt-5.4-mini | 5/5 | 15/16 | 1.4 |
OpenCode + gpt-4.1-mini | 5/5 | 14/16 | 1.0 |
On the organisers' practice pack: Sonnet 11/11, Haiku 10/11. Hybrid search finds an official page on the topic for 25 of 38 labelled questions (keyword only: 19), and passes off no wrong page for the 5 questions that have none. Every miss is listed in docs/evaluation.md.
Run it yourself
Requires uv (it installs Python 3.13). No API keys or credentials are needed for any source.
git clone https://github.com/Gastaan/swiss-grounding-mcp && cd swiss-grounding-mcp
uv sync --extra semantic # dependencies, with hybrid search
uv run --extra semantic swiss-grounding-mcp # stdio (for local MCP clients)
uv run --extra semantic swiss-grounding-mcp --transport http --port 8000 # HTTP: http://localhost:8000/mcp
curl localhost:8000/health # "search": "hybrid (…)"The prebuilt data (municipality register, health premiums, search index, passage vectors) ships in the
repository, built by the scripts in scripts/ and refreshed weekly
(how). The first start unpacks the index (~1 s) and downloads
the small embedding model once (~240 MB, in the background: searches use keywords until it is ready).
For a lighter install without hybrid search, drop --extra semantic from the commands and client configurations
(what changes).
Docker: the published image (~1.4 GB, hybrid search and its model included) runs as an unprivileged user and never downloads anything at runtime.
docker run -p 8000:8000 ghcr.io/gastaan/swiss-grounding-mcp # HTTP: http://localhost:8000/mcp
docker run -i --rm ghcr.io/gastaan/swiss-grounding-mcp --transport stdio # for a client that starts the serverOr build it with docker build -t swiss-grounding-mcp .. When the port is reachable from outside a
trusted network, add -e SGM_AUTH_TOKEN=<secret> (HTTP security).
Without cloning (keyword search): uvx --from git+https://github.com/Gastaan/swiss-grounding-mcp swiss-grounding-mcp.
Connect an MCP client
Any client that speaks MCP over stdio or Streamable HTTP works. Tested with Claude Code, OpenCode, the
MCP Inspector CLI and the FastMCP client, including the legacy initialize handshake (protocol
2025-06-18) and the stateless 2026-07-28 protocol. For the hosted server, add its /mcp URL as a
remote (HTTP) server. For a clone, use absolute paths and replace /path/to/swiss-grounding-mcp.
The server sends usage instructions to the client.
claude mcp add swiss -- uv run --extra semantic --directory /path/to/swiss-grounding-mcp swiss-grounding-mcp
claude mcp add --transport http swiss-http http://localhost:8000/mcp{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"swiss": {"type": "local", "command": ["uv", "run", "--extra", "semantic", "--directory", "/path/to/swiss-grounding-mcp", "swiss-grounding-mcp"], "enabled": true, "timeout": 30000},
"swiss-http": {"type": "remote", "url": "http://localhost:8000/mcp", "enabled": false, "timeout": 30000}
}
}Give the full path to uv (e.g. from which uv):
{"mcpServers": {"swiss": {"command": "/full/path/to/uv", "args": ["run", "--extra", "semantic", "--directory", "/path/to/swiss-grounding-mcp", "swiss-grounding-mcp"]}}}{"servers": {"swiss": {"type": "stdio", "command": "uv", "args": ["run", "--extra", "semantic", "--directory", "/path/to/swiss-grounding-mcp", "swiss-grounding-mcp"]}}}{"mcpServers": {"swiss": {"command": "uv", "args": ["run", "--extra", "semantic", "--directory", "/path/to/swiss-grounding-mcp", "swiss-grounding-mcp"]}}}Give the client a request timeout of 30 s or more. OpenCode waits only 5 s by default, while a slow
official source can take longer; the server ends every tool call withinSGM_TOOL_TIMEOUT (30 s)
with a clean source_error, so a client timeout of 30 s lets that answer arrive.
Configuration
Nothing needs configuring. Respecting robots.txt and terms of use is on by default and can be switched off:
Variable | Default | Meaning |
|
| Respect robots.txt of every website fetched (RFC 9309), on every redirect hop. Set |
|
| Respect the terms of use recorded in |
Cache, timeouts, offline mode, bearer token, rate limit, allowed origins and logging are described in docs/configuration.md.
Documentation
Response contract and tools: the JSON every tool returns, the five statuses, place handling, all 13 tools
Configuration and operations: every setting, HTTP security, caching and source etiquette, monitoring, the hosted instance
Search: keyword and semantic ranking, and its measured quality
Evaluation: the challenge self-check, end-to-end runs and every known miss
Development: architecture, data and its weekly refresh, adding a source, tests
Available Tools
13 toolscompany_registerCompany register (UID)ARead-onlyIdempotentInspect
Check whether a company is registered: UID, legal seat, commercial register and VAT status, from the federal UID register.
| Name | Required | Description | Default |
|---|---|---|---|
| name_or_uid | Yes | Company name or UID (CHE-123.456.789). |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| status | Yes | |
| summary | Yes | |
| guidance | No | |
| citations | No | |
| missing_context | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful context about the data source and returned fields, but does not disclose additional behavioral details such as error cases or whether the result is a simple boolean or full record. This is adequate but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence communicates the action, the resource, the specific data fields, and the authoritative source. There is no filler or redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only, idempotent lookup tool with a high-coverage schema and an output schema present, the description conveys all needed selection and invocation information. The source is named, and annotations cover safety and behavior, leaving no critical gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the parameter description already explains that name_or_uid accepts a company name or UID format. The tool description adds little beyond echoing 'UID' and the general purpose, so it does not significantly enhance what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('check'), a resource ('whether a company is registered'), and the exact data points returned (UID, legal seat, commercial register, VAT status). It clearly singles out the federal UID register, making it easy to distinguish from sibling tools like search_official_info or swiss_place_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scope is clear: this tool is specifically for checking Swiss company registration via the federal UID register. Although it does not explicitly name excluded alternatives, the domain is narrow and distinct from the other Swiss information tools, so an agent can infer when it should be selected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
current_weatherCurrent weather (MeteoSwiss)ARead-onlyIdempotentInspect
Latest measured weather (temperature, humidity, precipitation, wind) at the MeteoSwiss station nearest to a Swiss municipality. Measurements only, no forecasts.
| Name | Required | Description | Default |
|---|---|---|---|
| place | No | Municipality, postcode, address or canton as the user said it, in any language (e.g. 'Lugano', '8003', 'Genf', 'Bahnhofstrasse 1, Zürich'). | |
| language | No | Language of the user's question. | de |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| status | Yes | |
| summary | Yes | |
| guidance | No | |
| citations | No | |
| missing_context | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds that it returns measured data only (no forecasts) and clarifies the source (MeteoSwiss station) and the selection criterion (nearest to a Swiss municipality). This adds context beyond annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, information-dense sentence that front-loads the core purpose and immediately clarifies the scope and limitation. No wasted words, and the structure is easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return format is covered. The description explains what data it returns, where it comes from, and what it doesn't do. With annotations handling safety and the schema handling parameters, nothing essential is missing for an agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for both parameters, including examples for 'place' and an enum with default for 'language'. The description adds no additional parameter-specific meaning, which is acceptable since the schema already fully documents them. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the latest measured weather (temperature, humidity, precipitation, wind) at the MeteoSwiss station nearest to a Swiss municipality. It also explicitly notes 'Measurements only, no forecasts,' which sharply distinguishes it from any forecast tool. No sibling covers weather, so this is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear context: for current measured weather at a Swiss location. It explicitly excludes forecasts ('Measurements only, no forecasts'), which tells the agent when not to use this tool. While it doesn't name an alternative, none exists among siblings, so the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
federal_votesFederal votesARead-onlyIdempotentInspect
Subjects of the next federal popular vote, or official results of a past vote.
| Name | Required | Description | Default |
|---|---|---|---|
| place | No | Canton to add its result, optional. | |
| language | No | Language of the user's question. | de |
| vote_date | No | ISO date of a vote; omit for the next vote (or the latest if none is scheduled). |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| status | Yes | |
| summary | Yes | |
| guidance | No | |
| citations | No | |
| missing_context | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds the dual-mode behavior (subjects for next vote vs. results for past vote), which is not in annotations. It does not disclose any other behavioral traits like data freshness or error handling, but given the strong annotation coverage, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the two primary outcomes. There is no filler or repetition; every word contributes to the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a complete schema (100% param descriptions), an output schema, and strong annotations, the description adequately covers the tool's purpose. It mentions the key distinction between future subjects and past results, which is the main contextual nuance. It does not need to detail return structure since an output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides full descriptions for all three parameters (place, language, vote_date) with 100% coverage. The description does not add any additional parameter semantics beyond what the schema already conveys, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool's core function: returning subjects of the next federal popular vote or official results of a past vote. It clearly identifies the resource (federal votes) and the two operational modes. It does not explicitly distinguish from siblings, but the sibling list (transport, weather, law) makes the purpose distinct enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when a user asks about federal vote subjects or results. However, it does not explicitly mention alternatives or exclusions, such as 'use search_official_info for other federal topics'. The usage context is clear from the description but not formally stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
public_transportPublic transport timetableARead-onlyIdempotentInspect
Swiss public transport connections or next departures (official timetable data).
| Name | Required | Description | Default |
|---|---|---|---|
| when | No | ISO date-time (Europe/Zurich), e.g. 2026-10-01T08:30; default now. | |
| limit | No | ||
| origin | No | Departure station or place, e.g. 'Zürich HB'. | |
| arrival | No | Interpret `when` as arrival time. | |
| destination | No | Destination; omit for a departure board. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| status | Yes | |
| summary | Yes | |
| guidance | No | |
| citations | No | |
| missing_context | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, idempotent behavior, so the description only needs to add value beyond those hints. It adds that the data is 'official timetable data' and that the tool supports two modes, which is useful context about the result nature. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with no filler; the geographic scope, data source, and dual modes are front-loaded. It is as concise as possible while giving the essential purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only query tool with an output schema and well-documented optional parameters, the description is nearly complete: it names the domain, scope, and modes. A small gap is not explicitly instructing when to use 'connections' vs 'next departures', but the schema's destination parameter covers this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so the schema carries most parameter documentation; the description does not repeat or add parameter-level detail. The one undocumented parameter (limit) is adequately constrained by min/max/default in the schema, so this is acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource ('Swiss public transport') and the two main operations ('connections or next departures'), making the tool's purpose immediately recognizable. It lacks an explicit verb such as 'search' or 'get' and does not explicitly contrast with sibling tools, but no other sibling covers public transport.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: whenever a user needs Swiss public transport connections or a departure board. It does not state exclusions or compare with alternatives such as swiss_place_info or swiss_coverage, so usage guidance is inferred rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_official_pageRead an official pageARead-onlyIdempotentInspect
Fetch the current text of an official Swiss page (live, respecting robots.txt) and return the
passages around focus. Only official Swiss domains are allowed.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL on an official Swiss domain (admin.ch, ch.ch, a cantonal or municipal site), typically from search_official_info. | |
| focus | No | Words to focus on, e.g. 'délai 12 mois'. | |
| max_chars | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| status | Yes | |
| summary | Yes | |
| guidance | No | |
| citations | No | |
| missing_context | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the annotations: it mentions the tool is 'live, respecting robots.txt', which is not covered by readOnlyHint or idempotentHint. It also clarifies the output behavior (passages around focus). While it doesn't discuss rate limits or error handling, the annotations already cover safety, and the added details are useful. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, with the primary action and restriction front-loaded. Every phrase serves a purpose: it states the action, the live/robots.txt behavior, the focus-passage output, and the domain restriction. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description does not need to detail return values. It covers the tool's purpose, the key behavioral nuance (robots.txt), and the focus mechanism. The only minor gap is the lack of explicit guidance on error cases or what happens when the URL is not on an official domain, but these are not critical for an agent to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% (url and focus have descriptions, max_chars does not). The description adds value for the 'focus' parameter by explaining it is used to return surrounding passages, which complements the schema's example. However, it does not explain 'max_chars' or its constraints, and the description does not fully compensate for the missing schema description on that parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Fetch', the resource 'official Swiss page', and the specific behavior of returning passages around a focus word. It also imposes a domain restriction, which distinguishes it from generic web-fetch tools and sibling tools like search_official_info. The purpose is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives, nor does it name any sibling tool. It implies usage for reading a specific official page (since it says 'typically from search_official_info' in the parameter schema, but not in the main description). The guidance is implicit, relying on the agent to infer that this is for fetching a known URL rather than searching.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_official_infoSearch official Swiss informationARead-onlyIdempotentInspect
Full-text search over official Swiss web pages: ch.ch (all languages), federal offices, the 26
cantons and large cities. Use for procedures, rules, deadlines, fees and "how do I…" questions
(permits, moving, taxes, social insurance, driving licences, customs, schools, housing, voting).
Give place to restrict results to federal + that canton/municipality. Returns verbatim excerpts
with URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| place | No | Municipality, postcode, address or canton as the user said it, in any language (e.g. 'Lugano', '8003', 'Genf', 'Bahnhofstrasse 1, Zürich'). | |
| query | Yes | Key words of the question, ideally in the language of the source (e.g. 'permis de conduire étranger échanger'). | |
| language | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| status | Yes | |
| summary | Yes | |
| guidance | No | |
| citations | No | |
| missing_context | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/destructive safety, and the description adds substantive behavioral context: it scopes place-based filtering ('federal + that canton/municipality') and reveals the output shape ('Returns verbatim excerpts with URLs'). This goes beyond what annotations and schema alone convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the core purpose, and each sentence adds useful detail (scope, use cases, place behavior, output format). No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and rich annotations, the description covers the main operational points: scope, use cases, place filtering, and output format. It omits details like pagination and rate limits, but for a read-only search tool with output schema, this is near-complete. It could still benefit from an explicit pointer to sibling tools (e.g., swiss_federal_law) for law-specific queries.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%, so the description should help clarify parameters. It adds meaning for `place` by explaining its filtering effect. It does not mention `limit` or `language` behavior, and the schema already documents `query`, `place`, and `language`. The description's extra value is moderate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Full-text search') and a precise resource ('official Swiss web pages: ch.ch, federal offices, the 26 cantons and large cities'), making the tool's purpose immediately clear. It does not explicitly name sibling tools to distinguish from, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use for procedures, rules, deadlines, fees and "how do I…" questions' and lists concrete example topics. This gives clear context for when the tool is appropriate, though it does not state when not to use it or name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
swiss_coverageWhat this server coversARead-onlyIdempotentInspect
List the topics, geography, sources and freshness this server covers, and what it does not. Call this only when unsure whether a question is in scope.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| status | Yes | |
| summary | Yes | |
| guidance | No | |
| citations | No | |
| missing_context | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already convey read-only, idempotent, and open-world behavior, so the description's burden is low. It adds value by specifying which coverage dimensions the tool reports and explicitly mentioning that it also states what is not covered, which helps set expectations about the response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences carry the full meaning: the first states what the tool lists, the second states precisely when to call it. There is no filler, and the key scoping guidance is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless coverage tool with rich annotations and an output schema, the description is complete. It tells the agent what to expect from the tool and when to use it, leaving no meaningful gap for selection or invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description cannot add parameter-level meaning. The baseline for parameterless tools is 4, and the description correctly focuses on what information the tool returns instead of inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('List') and a concrete resource: the server's coverage across topics, geography, sources, and freshness. It also explicitly states what the tool does not cover, which clearly differentiates it from the domain-specific sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit condition for use: 'Call this only when unsure whether a question is in scope.' This tells the agent exactly when to invoke this meta-coverage tool and implies that confident, in-scope questions should go to the relevant sibling tools instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
swiss_federal_lawSwiss federal law (Fedlex)ARead-onlyIdempotentInspect
Quote federal law from the official consolidated text on Fedlex (version currently in force), with article links. Federal law only; cantonal law is not included.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Title words to find an act, or (with sr_number) a topic to find the relevant articles, e.g. 'Kündigungsfrist'. | |
| article | No | Article number, e.g. '335c', '42'. | |
| language | No | Language of the user's question. | de |
| sr_number | No | SR number or abbreviation: '220' or 'OR'/'CO', 'ZGB'/'CC', 'SVG', 'VZV', 'AIG', 'KVG', 'AHVG', 'MWSTG'… |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| status | Yes | |
| summary | Yes | |
| guidance | No | |
| citations | No | |
| missing_context | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the tool's safety profile is clear. The description adds valuable behavioral context beyond annotations by specifying the source is the official consolidated text, that it is the version currently in force, and that article links will be included.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences carry substantial, non-redundant information: source, version, output feature, and scope limitation. Nothing is wasted, and the key purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the full input schema, the presence of an output schema, and the annotation set, the description covers the essential context: what source is used, which version, and what the output includes. It is not exhaustive about edge cases or parameter combinations, but the structured fields already handle those, so the description is complete enough for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 even though the tool description adds no detailed parameter semantics. The description's mention of 'article links' and 'federal law' loosely maps to the article and sr_number/query parameters, but it does not materially enrich the schema's parameter explanations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation ('Quote federal law'), the specific source ('official consolidated text on Fedlex'), the version ('currently in force'), and a distinctive output feature ('with article links'). It also distinguishes itself from broader legal or informational tools by explicitly limiting scope to federal law and excluding cantonal law.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: quoting federal law from Fedlex. The 'Federal law only; cantonal law is not included' statement gives an explicit when-not-to-use boundary. It does not name alternative sibling tools, so it falls short of a 5, but the usage scope is more than merely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
swiss_holidaysSchool and public holidaysBRead-onlyIdempotentInspect
School holidays by canton or municipality, or public holidays, for a year.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | School holidays or public holidays. | school |
| year | No | Calendar year; default current year. | |
| place | No | Municipality, postcode, address or canton as the user said it, in any language (e.g. 'Lugano', '8003', 'Genf', 'Bahnhofstrasse 1, Zürich'). | |
| language | No | Language of the user's question. | de |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| status | Yes | |
| summary | Yes | |
| guidance | No | |
| citations | No | |
| missing_context | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds no behavioral details beyond the schema, such as data coverage limitations or how conflicts between place and year are resolved. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the core resource and its main scoping dimensions. Every word earns its place, and there is no redundant restating of the title or parameter names.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only query tool with a rich output schema and complete parameter documentation, the description is sufficient for selection and invocation. A minor gap is that it does not clarify whether 'place' only applies to school holidays or also to public holidays, but this is not critical given the schema context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters with detailed descriptions, so the baseline is 3. The description adds only a slight mapping by saying 'canton or municipality' for place and 'public holidays' for kind, which is already reflected in the schema text. No new semantic meaning is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the resource (school/public holidays) and the key scoping dimensions (place, year), which clearly distinguishes it from all sibling tools. It lacks an explicit verb like 'get' or 'list', but the intent is unmistakable and the title reinforces the subject.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives, or any exclusions. The use case is implied by the name and description, but the description does not state 'use this when the user asks for holidays' or mention any sibling it replaces or complements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
swiss_place_infoSwiss place factsARead-onlyIdempotentInspect
Resolve a Swiss place to its official municipality: BFS number, canton, district, postcodes, permanent resident population (latest BFS figure) and official website. Use for "how many people live in X", "which canton is X in", or to find a municipality's website.
| Name | Required | Description | Default |
|---|---|---|---|
| place | No | Municipality, postcode, address or canton as the user said it, in any language (e.g. 'Lugano', '8003', 'Genf', 'Bahnhofstrasse 1, Zürich'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| status | Yes | |
| summary | Yes | |
| guidance | No | |
| citations | No | |
| missing_context | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safe read-only nature is covered. The description adds useful behavioral context: it returns the 'latest BFS figure' and resolves to 'official municipality' data, clarifying that results are standardized and current. It does not discuss edge cases like ambiguous place names, but the annotation coverage lowers the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and every part earns its place: a clear capability statement, an explicit list of returned fields, and concrete example use cases. It is front-loaded with the core action and output list before the usage examples.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-optional-parameter lookup tool with a rich parameter schema, an output schema, and safety annotations, the description covers what the tool does, what it returns, and when to invoke it. Nothing essential is missing for an agent to select and call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the parameter's schema already explains accepted forms ('Lugano', '8003', 'Genf', 'Bahnhofstrasse 1, Zürich') and languages. The tool description adds no new parameter-level meaning beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific action ('Resolve a Swiss place to its official municipality') and a concrete resource, then enumerates the exact outputs: BFS number, canton, district, postcodes, population, and website. It also gives representative queries, making the tool's purpose unmistakable and distinguishing it from sibling tools like search_official_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists trigger questions: 'how many people live in X', 'which canton is X in', and finding a municipality's website, which tells an agent when to use it. It does not explicitly state when not to use it or name alternatives, but the provided use cases are sufficient for a single-purpose lookup tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
swiss_ratesReference interest rate and exchange ratesARead-onlyIdempotentInspect
Current mortgage reference interest rate for rents (BWO) or SNB CHF exchange rates.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | Mortgage reference rate for rents (BWO), or SNB exchange rate. | |
| currency | No | For exchange_rate: EUR, USD, GBP… | |
| language | No | Language of the user's question. | de |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| status | Yes | |
| summary | Yes | |
| guidance | No | |
| citations | No | |
| missing_context | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds modest value by stating the data is current and sourced via BWO/SNB, but it does not describe pagination, units, or any time-dependence beyond the word 'Current'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that covers both data modes with no filler. Every word contributes to the agent's ability to choose the right kind.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup with a full output schema and complete parameter schema, this description is sufficient. The only minor gap is that 'BWO' is not expanded in the description itself, though the schema's kind description also uses the acronym.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema documents all three parameters. The description adds the BWO/SNB context but essentially restates what the kind parameter's description already contains, so it provides no significant extra parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the tool as providing two specific data products: the current BWO mortgage reference rate and SNB CHF exchange rates. It lacks an explicit retrieval verb, but 'Current ... or ...' makes the query intent clear and the two modes are distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly separates the two use cases (reference interest rate vs exchange rate), which tells an agent when to select this tool. It does not mention when not to use it, but none of the sibling tools covers this data domain, so exclusion guidance is less critical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
waste_collectionWaste collection datesARead-onlyIdempotentInspect
Next waste collection dates (cardboard, paper, household waste, green waste…) from municipal open data. Needs the municipality; some cities also need postcode or street (the tool will say).
| Name | Required | Description | Default |
|---|---|---|---|
| place | No | Municipality, postcode, address or canton as the user said it, in any language (e.g. 'Lugano', '8003', 'Genf', 'Bahnhofstrasse 1, Zürich'). | |
| street | No | Street (and number) if the user gave one. | |
| from_date | No | ISO date to start from; default today. | |
| waste_type | No | e.g. Karton/carton/cartone, Papier, Kehricht, Grüngut, Metall. Omit for all types. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| status | Yes | |
| summary | Yes | |
| guidance | No | |
| citations | No | |
| missing_context | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering safety. The description adds behavioral context beyond that: it mentions the tool may request additional input ('the tool will say') and specifies the data source ('municipal open data'), which is not in annotations. This is useful supplementary information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the core function and then gives a concise usage note. Every word serves a purpose, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (4 optional, well-documented parameters, output schema present, safety annotations), the description is complete. It covers what the tool returns, what input is needed, and how it handles missing information. No critical operational detail is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by clarifying that a municipality is effectively required ('Needs the municipality') and that additional parameters may be needed conditionally, which is not captured in the schema's optional flags. This supplements the parameter documentation meaningfully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Next waste collection dates') and resource (municipal waste data), and lists example waste types. It clearly differentiates from sibling tools like public_transport or current_weather, which address entirely different domains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'Needs the municipality' and notes that some cities need postcode or street, giving practical input requirements. It does not explicitly name alternatives or state when not to use it, but the tool name and sibling context make the intended use obvious. Slight gap in explicit exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
13 tool updates
v0.1.0- First observed
company_register - First observed
current_weather - First observed
federal_votes - First observed
health_insurance_premiums - First observed
public_transport - First observed
read_official_page - First observed
search_official_info - First observed
swiss_coverage - First observed
swiss_federal_law - First observed
swiss_holidays - First observed
swiss_place_info - First observed
swiss_rates - First observed
waste_collection
TDQS
Scored across 13 tools
Each tool addresses a clearly distinct domain (e.g., transport, legal texts, health premiums, weather, company registry). The only related pair is search_official_info and read_official_page, but one is for finding pages and the other for reading specific content, so no ambiguity.
All tools use lowercase with underscores, but they mix prefixes ('swiss_' vs none) and verb/alNoun patterns (e.g., 'public_transport' vs 'search_official_info'). Still, the naming is readable and follows a consistent snake_case convention, so minor deviations do not cause confusion.
With 13 tools, the server covers a broad range of Swiss official information without being excessive. Each tool serves a distinct purpose and fits the stated goal of Swiss grounding, making the count appropriate.
The server covers major Swiss information domains: transport, official search, laws, health insurance, holidays, waste, votes, rates, companies, and weather. It also includes a coverage tool to handle out-of-scope queries, mitigating potential gaps. The lifecycle is appropriate for a read-only grounding server.
Maintenance
Related MCP Connectors
Swiss federal law (Fedlex) and political data (LINDAS) for agents, every answer with sources
Swiss weather data for AI assistants — forecasts, measurements, stations, pollen.
Search and verify Swiss companies, UID status and register changes with dated official sources.
Official Swiss living-cost & relocation data for all 26 cantons — taxes, rent, premiums, jobs.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceVerified knowledge base for AI agents. Stop hallucinations with certified, source-backed facts. Covers Swiss law, health, finance, climate, AI/ML, and more. 8 tools, no API key needed, public and free.MIT
- AlicenseNot gradedqualityDmaintenanceConnects AI assistants to the Swiss I14Y Interoperability Platform, enabling natural language exploration of government datasets, APIs, codelists, and public services.MIT
- FlicenseNot gradedqualityBmaintenanceA production-minded Agentic RAG backend for informational guidance about Swiss immigration and administrative procedures, using only official Swiss government sources with evidence metadata.1-
- AlicenseNot gradedqualityBmaintenanceProvides AI assistants with citable access to Bernese laws (BSG) and administrative court rulings (Verwaltungsgericht Bern) via search, retrieval by number, and article extraction.MIT