OpenHelvetia Gateway
REMOTE · MCP.OPENHELVETIA.SWISS · SCANNED SEP 28
Swiss federal law (Fedlex) and political data (LINDAS) for agents, every answer with sources
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security46
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation not fully verified: no authorisation is required to call this server, and 1 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
- HTTPS enforcement could not be verified: the plaintext port answered with HTTP 406, which proves neither a plaintext path nor enforcement. View diagnostics → Unverified
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability76
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 6723 tokens (~103/item across 65 items; 65 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management77
- Stability observed for 23 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage90
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 70% of tool parameters carry a description.Partial
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "publish.info" implies "publish" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Fail
- An AI judge read all 66 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
How do I install the OpenHelvetia Gateway MCP server?
OpenHelvetia Gateway is a hosted endpoint at https://mcp.openhelvetia.swiss/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mcp.openhelvetia.swiss
claude mcp add --transport http swiss-openhelvetia-gateway 'https://mcp.openhelvetia.swiss/mcp'
{
"mcpServers": {
"swiss-openhelvetia-gateway": {
"url": "https://mcp.openhelvetia.swiss/mcp"
}
}
} {
"servers": {
"swiss-openhelvetia-gateway": {
"type": "http",
"url": "https://mcp.openhelvetia.swiss/mcp"
}
}
} [mcp_servers.swiss-openhelvetia-gateway] url = "https://mcp.openhelvetia.swiss/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"swiss-openhelvetia-gateway": {
"type": "remote",
"url": "https://mcp.openhelvetia.swiss/mcp",
"enabled": true
}
}
} openclaw mcp add swiss-openhelvetia-gateway --url 'https://mcp.openhelvetia.swiss/mcp' --transport streamable-http
mcp_servers:
swiss-openhelvetia-gateway:
url: "https://mcp.openhelvetia.swiss/mcp" {
"McpServers": {
"swiss-openhelvetia-gateway": {
"Transport": "http",
"Url": "https://mcp.openhelvetia.swiss/mcp"
}
}
} assistant mcp add swiss-openhelvetia-gateway -t streamable-http -u 'https://mcp.openhelvetia.swiss/mcp'
{
"mcpServers": {
"swiss-openhelvetia-gateway": {
"type": "http",
"url": "https://mcp.openhelvetia.swiss/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 28 Sept 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 27 Sept 26 0
- Tool “lindas.describe_cube” rewrote its description, which is the text the model reads security
- Tool “manifest.get” rewrote its description, which is the text the model reads security
- Schema quality: excellent → good functional
- “lindas.observations” reworded the description of “filters” cosmetic
- 26 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 24 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.
- 22 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.
- 19 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.
- 17 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 37 to 40. That category is still filling its 30-day observation window: 11 days of observed history at the previous scan, 12 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 28 Sept 2026 · Probed https://mcp.openhelvetia.swiss/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=openhelvetia.swiss | CN=WE1,O=Google Trust Services,C=US | 4 Sept 2026 | 3 Dec 2026 | ECDSA 256 | ECDSA-SHA256 | c9e5c873258d3c0f0ee2ae0dbcd224b8 |
| SANs: openhelvetia.swiss, *.openhelvetia.swiss | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of mcp.openhelvetia.swiss. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| swiss. | present | 16056 | 10 | Verified |
| openhelvetia.swiss. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.openhelvetia.swiss/mcp | Verified | 200 | |
| http (plaintext) | http://mcp.openhelvetia.swiss/mcp | Inconclusive | 406 |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
directory.get ~50
The directory envelope (v0.2, authority: manifest). Real entries only — a data source enters on one of three admission routes (E21); an empty list is the honest state, never padded.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
facts.badge ~63
shields.io endpoint JSON for one subject, derived from the fact table — «no facts» in grey when nothing is recorded, never rounded up.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | – |
| subject | string | yes | Subject key (e.g. «slug#0»). |
No output schema declared.
No examples provided.
facts.latest ~76
Latest effective facts per subject+metric from the versioned fact table — the bitemporal as_of cutoff is exposed; an absent store is the honest empty view.
| Name | Type | Req | Description |
|---|---|---|---|
| as_of | string|null | – | Optional bitemporal cutoff (RFC 3339). |
| domain | string | yes | Measured domain («checker», «benchmark»). |
No output schema declared.
No examples provided.
fedlex.check_in_force ~64
Check whether an act was in force on a date; false is a valid answer, never an error: use for «gilt das noch?» questions. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| as_of | string | yes | ISO date YYYY-MM-DD. |
| eli | string | yes | – |
No output schema declared.
No examples provided.
fedlex.check_quote ~208
Check a quote (Zitat) against the norm text of one element: use before citing, to prove the wording is in what was read (Belegkette). norm.
| Name | Type | Req | Description |
|---|---|---|---|
| eid | string | yes | The element that was read: an eId such as «art_6» or a path eId such as «art_6/para_1» or «annex_3/lvl_u1/lvl_2». |
| eli_version | string | yes | Dated consolidation: `<abstract-eli>/<YYYYMMDD>` — the version that was read. |
| lang | string|null | – | Manifestation language (de|fr|it|en|rm); default de. Which languages a version carries as XML is the graph's answer — fedlex.list_expressions shows it before a read. |
| quote | string | yes | The wording to check, verbatim; «…» or «[...]» marks an omission (each part must occur, in order). |
No output schema declared.
No examples provided.
fedlex.cite ~156
Cite an element as its canonical Fundstelle («Art. 7 Abs. 1 Bst. b LSV») from eli_version and eId: use to label a read place in the Belegkette. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| eid | string | yes | The place to label: an eId such as «art_7/para_1/lbl_b», «art_23_a» or «annex_3/lvl_u1». |
| eli_version | string | yes | Dated consolidation: `<abstract-eli>/<YYYYMMDD>`. |
| lang | string|null | – | Label language (de|fr|it|en|rm) — the manifestation read and the abbreviation used; default de. |
No output schema declared.
No examples provided.
fedlex.compare_versions ~181
Compare an element or every article between two Fassungen of an act — added, removed, changed paragraphs with wording: use for «was hat sich geändert?». norm.
| Name | Type | Req | Description |
|---|---|---|---|
| eid | string|null | – | Optional scope: one element (article or path eId); default every article. |
| eli | string | yes | Fedlex ELI of the act (consolidation abstract). |
| from_version | string | yes | The older consolidation: a version IRI or a date (YYYY-MM-DD / YYYYMMDD). |
| lang | string|null | – | Manifestation language (de|fr|it|en|rm); default de. Which languages a version carries as XML is the graph's answer — fedlex.list_expressions shows it before a read. |
| to_version | string | yes | The newer consolidation: a version IRI or a date. |
No output schema declared.
No examples provided.
fedlex.detect_foreign_content ~119
Detect what the text tools hide in a Fassung: sections in another language (xml:lang) and <foreign> islands (formulas, graphics): use before quoting. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| eli_version | string | yes | Dated consolidation: `<abstract-eli>/<YYYYMMDD>`. |
| lang | string|null | – | Manifestation language (de|fr|it|en|rm); default de. Which languages a version carries as XML is the graph's answer — fedlex.list_expressions shows it before a read. |
No output schema declared.
No examples provided.
fedlex.explore_node ~91
Explore a JOLux node's edges (predicates and neighbours, both directions, capped): use to debug what the graph holds about an IRI; never as proof. hint.
| Name | Type | Req | Description |
|---|---|---|---|
| iri | string | yes | Any Fedlex IRI (https://fedlex.data.admin.ch/…). |
| limit | integer|null | – | Edges per direction (default 20, at most 50). |
No output schema declared.
No examples provided.
fedlex.extract_tables ~152
Extract the tables of a consolidation or of one element (annex limit values, tariffs) as header and rows: use when a norm is a table, not prose. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| eid | string|null | – | Optional scope: an eId (an annex level such as «annex_3/lvl_u1/lvl_2», an article). |
| eli_version | string | yes | Dated consolidation: `<abstract-eli>/<YYYYMMDD>`. |
| lang | string|null | – | Manifestation language (de|fr|it|en|rm); default de. Which languages a version carries as XML is the graph's answer — fedlex.list_expressions shows it before a read. |
No output schema declared.
No examples provided.
fedlex.find_related_topic ~103
Find acts in the same field of law via the legal taxonomy, by ELI or SR: use to discover neighbouring Erlasse; candidates only. hint.
| Name | Type | Req | Description |
|---|---|---|---|
| eli | string|null | – | Fedlex ELI of the act — or give `sr`. |
| limit | integer|null | – | Max candidates (default 20, at most 50). |
| sr | string|null | – | SR number as an alternative entry, e.g. «832.10». |
No output schema declared.
No examples provided.
fedlex.find_treaties ~122
Find treaty processes (Staatsverträge) by a title word, partner country IRI or bilaterality: use to locate a treaty before get_treaty_info. hint.
| Name | Type | Req | Description |
|---|---|---|---|
| bilateral | boolean|null | – | true = bilateral only, false = multilateral only. |
| country | string|null | – | Partner country as a Fedlex country vocabulary IRI. |
| limit | integer|null | – | Max hits (default 20, at most 50). |
| query | string|null | – | A word of the treaty title (case-insensitive). |
No output schema declared.
No examples provided.
fedlex.get_article_history ~96
Trace which amendments and consolidations changed one Artikel (eId) of an act, with dates: use for «seit wann gilt Art. X so?». norm.
| Name | Type | Req | Description |
|---|---|---|---|
| eid | string | yes | Akoma-Ntoso eId of the element, e.g. «art_14a» or «art_2/para_1». |
| eli | string | yes | Fedlex ELI of the consolidation abstract. |
No output schema declared.
No examples provided.
fedlex.get_citations ~97
List an act's relations: cites|cited_by (formal citations, act level) or in|out (foreseen impacts, mostly consultation drafts): use to see who cites X. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| direction | string | yes | «in» | «out» (the foreseen-impact graph) or «cites» | «cited_by» (the formal citation graph, act level). |
| eli | string | yes | – |
No output schema declared.
No examples provided.
fedlex.get_consultation_documents ~57
List the position statements and result reports of one consultation IRI: use after get_consultations to read the genesis record. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| consultation | string | yes | The consultation IRI (from get_consultations). |
No output schema declared.
No examples provided.
fedlex.get_consultations ~133
List the consultations (Vernehmlassungen) of an act's drafts or of one draft, with status and dates: use for the genesis, never for law in force. hint.
| Name | Type | Req | Description |
|---|---|---|---|
| draft | string|null | – | Or a draft IRI (from get_drafts). |
| eli | string|null | – | Fedlex ELI of the act — its drafts are resolved first (at most five). |
| limit | integer|null | – | Max consultations (default 20, at most 50). |
| status | string|null | – | Optional status filter: the consultation-status IRI or its last segment. |
No output schema declared.
No examples provided.
fedlex.get_drafts ~62
List the legislative drafts (Entwürfe, eli/proj) an act came from, with the Curia Vista number: use as the entry to consultations and materials. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| eli | string | yes | Fedlex ELI of the consolidation abstract. |
No output schema declared.
No examples provided.
fedlex.get_fga_documents ~64
List the Federal Gazette (BBl) documents of an act's genesis — Botschaft, reports — with genre and date: use for materials, never for law in force. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| eli | string | yes | Fedlex ELI of the consolidation abstract. |
No output schema declared.
No examples provided.
fedlex.get_law_metadata ~78
Read the JOLux profile of an act (titles de/fr/it, status, dates, identifier) for an ELI: use to confirm a search hit before you cite. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| as_of | string|null | – | Optional ISO date; absent = today, echoed back resolved. |
| eli | string | yes | – |
No output schema declared.
No examples provided.
fedlex.get_memorial ~97
List the AS/BBl issue (memorial) an oc publication appeared in and the acts of that issue: use after get_oc_act to locate the volume. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| eli | string | yes | The AS publication ELI (https://fedlex.data.admin.ch/eli/oc/…), from get_oc_act. |
| limit | integer|null | – | Max acts of the issue (default 20, at most 50). |
No output schema declared.
No examples provided.
fedlex.get_modifications ~136
List the amendment notes («Fassung gemäss …», AS refs) per element of a consolidation: use for «wann und wodurch wurde Art. X geändert?». norm.
| Name | Type | Req | Description |
|---|---|---|---|
| eid | string|null | – | Optional scope: only notes anchored at this eId or below. |
| eli_version | string | yes | Dated consolidation: `<abstract-eli>/<YYYYMMDD>`. |
| lang | string|null | – | Manifestation language (de|fr|it|en|rm); default de. Which languages a version carries as XML is the graph's answer — fedlex.list_expressions shows it before a read. |
No output schema declared.
No examples provided.
fedlex.get_oc_act ~64
Resolve an act's binding AS/RO publication (oc ELI, date, genre, office, memorial) from its consolidation ELI: use to cite the Amtliche Sammlung. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| eli | string | yes | Fedlex ELI of the consolidation abstract. |
No output schema declared.
No examples provided.
fedlex.get_references ~175
List the references (Verweise) an act's text makes, with ELI where linked, optionally within one eId: use to follow cross-references. hint.
| Name | Type | Req | Description |
|---|---|---|---|
| eid | string|null | – | Optional scope: only references made from this eId or below. |
| eli_version | string | yes | Dated consolidation: `<abstract-eli>/<YYYYMMDD>`. |
| lang | string|null | – | Manifestation language (de|fr|it|en|rm); default de. Which languages a version carries as XML is the graph's answer — fedlex.list_expressions shows it before a read. |
| limit | integer|null | – | Page size (default 200, at most 1000). |
| offset | integer|null | – | Continuation: the `next_offset` of the previous answer. |
No output schema declared.
No examples provided.
fedlex.get_structure ~141
Outline one consolidation (sections, articles with eId, num and heading): use when you know the act but not the article number. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| depth | string|null | – | «article» (default: the skeleton down to articles) or «full» (the whole tree down to paragraphs and items). |
| eli_version | string | yes | Dated consolidation: `<abstract-eli>/<YYYYMMDD>`. |
| lang | string|null | – | Manifestation language (de|fr|it|en|rm); default de. Which languages a version carries as XML is the graph's answer — fedlex.list_expressions shows it before a read. |
No output schema declared.
No examples provided.
fedlex.get_subdivisions ~62
List the subdivisions JOLux knows for an act (amended elements only, a gap catalogue): use to see which Artikel carry amendments; outline: get_structure. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| eli | string | yes | Fedlex ELI of the consolidation abstract. |
No output schema declared.
No examples provided.
fedlex.get_taxonomy ~60
Classify an act in the systematic collection (SR branch chain, notation, labels de/fr/it): use for «zu welchem Rechtsgebiet gehört X?». norm.
| Name | Type | Req | Description |
|---|---|---|---|
| eli | string | yes | Fedlex ELI of the consolidation abstract. |
No output schema declared.
No examples provided.
fedlex.get_treaty_info ~105
Read a treaty process profile (title, signature, bilateral, partner countries, approving decree) for an eli/treaty IRI: use after find_treaties. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| eli | string | yes | The treaty process IRI (https://fedlex.data.admin.ch/eli/treaty/…), from find_treaties. |
| lang | string|null | – | Preferred title language (de|fr|it|en|rm); default de. |
No output schema declared.
No examples provided.
fedlex.list_annexes ~119
List the annexes (Anhänge) of a consolidation with titles and path eIds (annex_u1/…): use before reading an Anhang with read_article. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| eli_version | string | yes | Dated consolidation: `<abstract-eli>/<YYYYMMDD>`. |
| lang | string|null | – | Manifestation language (de|fr|it|en|rm); default de. Which languages a version carries as XML is the graph's answer — fedlex.list_expressions shows it before a read. |
No output schema declared.
No examples provided.
fedlex.list_expressions ~62
List the language versions and manifestations (XML, PDF) of one consolidation: use before reading to see whether a Fassung is PDF-only. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| eli_version | string | yes | Dated consolidation: `<abstract-eli>/<YYYYMMDD>`. |
No output schema declared.
No examples provided.
fedlex.list_versions ~54
List every dated consolidation (Fassung) of an act, future ones included: use to pick the eli_version the reading tools need. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| eli | string | yes | Fedlex ELI of the consolidation abstract. |
No output schema declared.
No examples provided.
fedlex.parse_reference ~122
Parse a citation («Art. 7 Abs. 1 lit. b LSV») into act, article eId and path proposal: use to turn a quoted Fundstelle into what read_article can open. hint.
| Name | Type | Req | Description |
|---|---|---|---|
| text | string | yes | A citation in plain text, e.g. «Art. 7 Abs. 1 lit. b LSV», «Anhang 3 Ziff. 2 LSV», «Art. 8 EMRK i.V.m. Art. 36 BV», «SR 832.10». |
No output schema declared.
No examples provided.
fedlex.read_article ~173
Read one element (Artikel, Absatz, Anhang) of a dated consolidation by eId, e.g. art_6 or annex_u1/lvl_u1: use to quote a norm. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| eid | string | yes | Akoma-Ntoso eId, e.g. «art_10a», or a path eId such as «art_2/para_1» or «annex_u1/lvl_u1». |
| eli_version | string | yes | Dated consolidation: `<abstract-eli>/<YYYYMMDD>`. |
| lang | string|null | – | Manifestation language (de|fr|it|en|rm); default de. Which languages a version carries as XML is the graph's answer — fedlex.list_expressions shows it before a read. |
No output schema declared.
No examples provided.
fedlex.read_document ~155
Read a whole small act or Verordnung as capped Markdown (truncated flag, continuation offset): use for short acts; quote via read_article. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| eli_version | string | yes | Dated consolidation: `<abstract-eli>/<YYYYMMDD>`. |
| lang | string|null | – | Manifestation language (de|fr|it|en|rm); default de. Which languages a version carries as XML is the graph's answer — fedlex.list_expressions shows it before a read. |
| max_chars | integer|null | – | Character budget (default 120 000, at most 400 000). |
| offset | integer|null | – | Continuation: the `next_offset` of the previous answer. |
No output schema declared.
No examples provided.
fedlex.resolve_consolidation_at ~64
Resolve which consolidation (Fassung) of an act governed on an ISO date: use before reading text for a past or future Stichtag. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| as_of | string | yes | ISO date YYYY-MM-DD. |
| eli | string | yes | – |
No output schema declared.
No examples provided.
fedlex.resolve_sr ~71
Resolve an SR number (e.g. 832.10) to the act's ELI, titles and in-force status: use when a question names an SR; predecessors stay visible. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| sr | string | yes | Systematic (SR) number, e.g. «832.10». |
No output schema declared.
No examples provided.
fedlex.resolve_vocabulary_label ~133
Look up a Fedlex vocabulary term (enforcement-status, language, …) by label or IRI: use to decode a coded value from another answer. hint.
| Name | Type | Req | Description |
|---|---|---|---|
| lang | string|null | – | Label language (de|fr|it|en|rm); default de. |
| query | string | yes | A label fragment (case-insensitive, any language) or a vocabulary IRI to decode. |
| vocabulary | string | yes | Scheme id: «enforcement-status», «subdivision-type», «legal-taxonomy», «impact-type», «resource-type», «language», … |
No output schema declared.
No examples provided.
fedlex.search_law ~65
Search acts by title keyword or official abbreviation (KVG, StPO, OR): use when you know the name but not the SR or ELI; in-force acts rank first. hint.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer|null | – | – |
| query | string | yes | – |
No output schema declared.
No examples provided.
fedlex.search_text ~149
Find where a word occurs inside ONE consolidation (hits with eId and Artikel): use before read_article when the article is unknown. hint.
| Name | Type | Req | Description |
|---|---|---|---|
| eli_version | string | yes | Dated consolidation: `<abstract-eli>/<YYYYMMDD>`. |
| lang | string|null | – | Manifestation language (de|fr|it|en|rm); default de. Which languages a version carries as XML is the graph's answer — fedlex.list_expressions shows it before a read. |
| limit | integer|null | – | Max hits (default 20, at most 100); `total` counts beyond it. |
| query | string | yes | Word or phrase; case-insensitive substring. |
No output schema declared.
No examples provided.
i14y.api_status ~47
Check whether the I14Y catalogue answers, register by register, so «no data» and «source down» stay apart: use before retrying a failed call. norm.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
i14y.get_concept ~75
Show one concept's record — type, value type, version, validity (Konzept, Codeliste): use before reading a code list's entries. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| concept_id | string | yes | The concept's `id` from `i14y.list_concepts`. |
| lang | string|null | – | – |
No output schema declared.
No examples provided.
i14y.get_data_service ~74
Show one registered interface's record — endpoints, OpenAPI links, licence, served datasets (API, Endpunkt): use to reach the service. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| data_service_id | string | yes | The service's `id` from `i14y.list_data_services`. |
| lang | string|null | – | – |
No output schema declared.
No examples provided.
i14y.get_dataset ~83
Show one dataset's full record — contact, coverage, every distribution with its licence and download address (Lizenz, Download): use before reuse. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| dataset_id | string | yes | The record's `id` as a hit or a list row carries it — a GUID, never the publisher's `identifier`. |
| lang | string|null | – | – |
No output schema declared.
No examples provided.
i14y.get_dataset_distributions ~88
List a dataset's distributions — format, licence, download and access address (Datei, Lizenz, Format): use for «where do I get the data». norm.
| Name | Type | Req | Description |
|---|---|---|---|
| dataset_id | string | yes | The record's `id` as a hit or a list row carries it — a GUID, never the publisher's `identifier`. |
| lang | string|null | – | – |
No output schema declared.
No examples provided.
i14y.list_catalogs ~84
List the catalogues that feed I14Y, each one body's collection (Katalog, opendata.swiss, Bundesamt): use to see who contributes. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| lang | string|null | – | – |
| limit | integer|null | – | Catalogues per page, 1–100, default 50. |
| page | integer|null | – | – |
No output schema declared.
No examples provided.
i14y.list_concepts ~91
List the harmonised concepts and code lists of the administration (Konzept, Codeliste, Nomenklatur, Merkmal): use to find a code list by publisher. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| lang | string|null | – | – |
| limit | integer|null | – | – |
| page | integer|null | – | – |
| publisher | string|null | – | – |
| registration_status | string|null | – | – |
No output schema declared.
No examples provided.
i14y.list_data_services ~92
List the registered machine interfaces of Swiss public bodies with their endpoints (API, Schnittstelle, Datendienst): use before building a scraper. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| access_rights | string|null | – | – |
| lang | string|null | – | – |
| limit | integer|null | – | – |
| page | integer|null | – | – |
| publisher | string|null | – | – |
| registration_status | string|null | – | – |
No output schema declared.
No examples provided.
i14y.list_datasets ~203
List the registered datasets, paged, with publisher, themes and access right (Datensätze, Metadaten, Open Data): use for a census or a publisher's list. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| access_rights | string|null | – | PUBLIC | RESTRICTED | NON_PUBLIC | CONFIDENTIAL. A listing is metadata, never a grant of access. |
| lang | string|null | – | Label language (de|fr|it|en|rm); default de. |
| limit | integer|null | – | Records per page, 1–100, default 25. |
| page | integer|null | – | 1-based page, default 1. |
| publisher | string|null | – | Publisher code («CH_BAZG»), from `i14y.list_publishers`. |
| registration_status | string|null | – | One of the eight: Incomplete, Candidate, Recorded, Qualified, Standard, PreferredStandard, Superseded, Retired. |
No output schema declared.
No examples provided.
i14y.list_public_services ~81
List the registered public services with their channels (Behördenleistung, Dienstleistung, Verwaltung): use for what an authority offers citizens. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| lang | string|null | – | – |
| limit | integer|null | – | – |
| page | integer|null | – | – |
| publisher | string|null | – | – |
| registration_status | string|null | – | – |
No output schema declared.
No examples provided.
i14y.list_publishers ~128
List the bodies that publish into I14Y with identifier and Swiss UID (Herausgeber, Bundesamt, Kanton, UID): use to find a publisher's code for a filter. norm.
| Name | Type | Req | Description |
|---|---|---|---|
| identifier | string|null | – | Exact publisher code («CH_BAZG»). |
| lang | string|null | – | – |
| limit | integer|null | – | Publishers per page, 1–100, default 50. |
| page | integer|null | – | – |
| uid | string|null | – | Exact Swiss UID as the register writes it («CHE116244755»). |
No output schema declared.
No examples provided.
i14y.search_catalog ~259
Search the national data catalogue I14Y by words (Datensatz, Schnittstelle, API, Behördenleistung, Codeliste): use first, to find who publishes what. hint.
| Name | Type | Req | Description |
|---|---|---|---|
| lang | string|null | – | The language searched AND served (de|fr|it|en|rm); default de. |
| limit | integer|null | – | Hits per page, 1–100, default 25. |
| page | integer|null | – | 1-based page, default 1. |
| publishers | array|null | – | Publisher CODES — the `identifier` `i14y.list_publishers` serves («CH1» is the Federal Statistical Office) — never a name. |
| query | string | yes | Free text, e.g. «Sonderpädagogik», «Zoll», «API»; empty lists the whole index one page at a time. Matched in `lang`. |
| themes | array|null | – | Theme CODES as a hit carries them under `themes[].code` («103» is Bildung) — never a word. |
| types | array|null | – | Restrict to resource types: Dataset | DataService | PublicService | Concept | MappingTable. Each of them answers. |
No output schema declared.
No examples provided.
What is the OpenHelvetia Gateway MCP server?
OpenHelvetia Gateway is an MCP server listed in the public MCP registry as swiss.openhelvetia/gateway. Swiss federal law (Fedlex) and political data (LINDAS) for agents, every answer with sources. This page covers its hosted endpoint (https://mcp.openhelvetia.swiss/mcp).
Is the OpenHelvetia Gateway MCP server safe to use?
OpenHelvetia Gateway scores 69 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the OpenHelvetia Gateway MCP server expose?
OpenHelvetia Gateway exposes 65 tools: directory.get, facts.badge, facts.latest, fedlex.check_in_force, fedlex.check_quote, and 60 more. Their descriptions and schemas cost roughly 6,678 tokens of context every time the server is loaded.
Does the OpenHelvetia Gateway MCP server require authentication?
No. We connected to OpenHelvetia Gateway without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the OpenHelvetia Gateway MCP server still maintained?
OpenHelvetia Gateway is still listed as active in the MCP registry. We last reached this channel on 28 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.