fedlex-mcp
The fedlex-mcp server provides read-only MCP tools to query Swiss federal law, consultations, and official terminology via public SPARQL endpoints, with no API key required and support for German, French, Italian, Romansh, and English.
Federal Law (Systematic Compilation / SR)
Search laws by keyword, filter by language and in-force status (
fedlex_search_laws)Retrieve detailed metadata for a law by SR number (e.g.
235.1) (fedlex_get_law_by_sr)Access version history of a law (
fedlex_get_law_history)Monitor recent publications from the Official Compilation (AS) and upcoming law changes (
fedlex_get_recent_publications,fedlex_get_upcoming_changes)Search the Federal Gazette (BBl) for official publications (
fedlex_search_gazette)Search international treaties (SR numbers starting with
0.) (fedlex_search_treaties)
Consultations (Vernehmlassungen)
List open consultations with deadlines, remaining days, and status; filter by topic or keyword (
fedlex_get_open_consultations)Full-text search consultations (including closed) with filters for status, date range, and institution (
fedlex_search_consultations)Get full details of a specific consultation by event ID, including documents and linked resources (
fedlex_get_consultation)
Terminology (TERMDAT)
Look up official terms and their translations across de/fr/it/rm/en, with definitions (
termdat_lookup_term)Retrieve complete TERMDAT concept entries by ID or URI (
termdat_get_concept)
Key Features
12 tools, all read-only
No authentication required — open data under free reuse licenses
Multilingual: de, fr, it, rm, en (terminology only)
Two isolated SPARQL endpoints (Fedlex and LINDAS) for resilience
Available via stdio (Claude Desktop) or Streamable HTTP (cloud/browser)
Click on "Install 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., "@fedlex-mcpShow me all valid federal laws on vocational training"
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.
:switzerland: Part of the Swiss Public Data MCP Portfolio
:balance_scale: fedlex-mcp
MCP Server for Swiss federal law, consultations & official terminology — search the SR, monitor consultation deadlines, and translate terms across the national languages via Claude Desktop or Claude.ai
Overview
fedlex-mcp connects AI assistants (Claude) with three official Swiss SPARQL data sources:
Federal law via the Fedlex SPARQL endpoint — the Systematic Compilation (SR), Official Compilation (AS), Federal Gazette (BBl) and treaties.
Consultations (Vernehmlassungen) via the same Fedlex endpoint (
jolux:Consultation) — the pre-parliamentary phase in which anyone can comment on a draft.TERMDAT, the Federal Chancellery's terminology database, via the LINDAS SPARQL endpoint — official term equivalents across de/fr/it/rm/en.
All three are SPARQL-based, which is exactly why they live in one server rather than three: no new technology stack, only new queries against known patterns.
Metaphor: USB-C for federal law. Fedlex tells you what you have to respond to. TERMDAT tells you what it is called in the other national languages.
Related MCP server: swiss-courts-mcp
Features
:balance_scale: 12 tools, 2 resources across federal law, consultations and terminology
:mag: SPARQL-powered — two isolated endpoints (Fedlex + LINDAS), no shared failure mode
:globe_with_meridians: 5 languages — German, French, Italian, Romansh, plus English for terminology
:unlock: No API key required — all data under open reuse licences
:cloud: Dual transport — stdio (Claude Desktop) + Streamable HTTP (cloud)
Anchor demo query
"Which education-related consultations are currently open, until when does the deadline run, which office is in charge — and what are the key technical terms in French and Italian for the response?"
A single conversation chains three tools across two endpoints:
fedlex_get_open_consultations(topic="education")
→ fedlex_get_consultation(event_id="proj/2026/71/cons_1")
→ termdat_lookup_term(term="Volksschule", target_languages=["fr","it"])Every open consultation carries deadline, days_remaining (computed at
request time in Europe/Zurich, 0 = deadline is today) and a derived
status — an expired consultation never shows up as running. Fedlex says
what you must respond to and by when; TERMDAT says how to name it in the
other national languages.
Use
topic="education", notkeyword="Volksschule". Fedlex consultations have no subject taxonomy — filtering is free-text over the title, and the word "Volksschule" appears in zero consultation titles. Thetopicfilter expands to a disclosed keyword union (Bildung, Schule, Berufsbildung, Hochschule, …) and reports exactly which terms it searched.
Prerequisites
Python 3.11+
uv (recommended) or pip
Installation
Run via uv's uvx — no clone or manual install needed. Add to your MCP client config (mcpServers for Claude Desktop, Cursor and Windsurf; use a top-level servers key for VS Code in .vscode/mcp.json):
{
"mcpServers": {
"fedlex-mcp": {
"command": "uvx",
"args": [
"fedlex-mcp"
]
}
}
}Installation from source
# Clone the repository
git clone https://github.com/malkreide/fedlex-mcp.git
cd fedlex-mcp
# Install
pip install -e .
# or with uv:
uv pip install -e .Or with uvx (no permanent installation):
uvx fedlex-mcpQuickstart
# stdio (for Claude Desktop)
python -m fedlex_mcp.server
# Streamable HTTP (port 8000)
python -m fedlex_mcp.server --http --port 8000Try it immediately in Claude Desktop:
"Show me all valid federal laws on vocational training" "What does the Data Protection Act say? Is it still in force?" "Which consultations on education are open right now, and until when?" "What is 'Volksschule' called in French and Italian in official terminology?"
Configuration
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"fedlex": {
"command": "python",
"args": ["-m", "fedlex_mcp.server"]
}
}
}Or with uvx:
{
"mcpServers": {
"fedlex": {
"command": "uvx",
"args": ["fedlex-mcp"]
}
}
}Config file locations:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Cloud Deployment (SSE for browser access)
For use via claude.ai in the browser (e.g. on managed workstations without local software):
Render.com (recommended):
Push/fork the repository to GitHub
On render.com: New Web Service -> connect GitHub repo
Set start command:
python -m fedlex_mcp.server --http --port 8000In claude.ai under Settings -> MCP Servers, add:
https://your-app.onrender.com/sse
"stdio for the developer laptop, SSE for the browser."
Demo
Available Tools
# | Tool | Source | Description |
1 |
| Fedlex | Search the Systematic Compilation (SR) by keyword in title |
2 |
| Fedlex | Get a law by its SR number (e.g. |
3 |
| Fedlex | Latest publications from the Official Compilation (AS) |
4 |
| Fedlex | Laws entering into force soon (legal monitoring) |
5 |
| Fedlex | Search the Federal Gazette (BBl) |
6 |
| Fedlex | All versions of a law (version history) |
7 |
| Fedlex | International treaties (SR numbers starting with |
8 |
| Fedlex | Deadline monitoring — open consultations ( |
9 |
| Fedlex | Full-text search over consultation title/description, with filters (topic, status, deadline range, office) |
10 |
| Fedlex | Detail for one |
11 |
| LINDAS | Term → equivalents in de/fr/it/rm/en incl. definition |
12 |
| LINDAS | Full TERMDAT entry for a URI or ID |
Example Use Cases
Query | Tool |
"Show me all valid federal laws on vocational training" |
|
"What does the Data Protection Act say?" |
|
"Which laws enter into force in the next 3 months?" |
|
"Show me the version history of the DSG" |
|
"Which consultations on education are open, and until when?" |
|
"Find closed consultations about the language act" |
|
"Give me the full detail and documents for consultation proj/2026/71/cons_1" |
|
"What is 'Volksschule' called in French and Italian?" |
|
"Show the full TERMDAT entry 40109" |
|
→ More use cases by audience →
Architecture
Two isolated SPARQL endpoints behind one server. Separate httpx clients and
timeouts mean a LINDAS outage never breaks the fedlex_* tools, and vice versa.
+-------------------+ +------------------------------+ +--------------------------+
| Claude / AI |---->| Fedlex MCP |---->| Fedlex SPARQL Endpoint |
| (MCP Host) |<----| (MCP Server) |<----| fedlex.data.admin.ch |
+-------------------+ | | | (law + consultations) |
| 12 Tools . 2 Resources | +--------------------------+
| Stdio | SSE |
| | +--------------------------+
| Isolated clients: |---->| LINDAS SPARQL Endpoint |
| - Fedlex (law + cons.) |<----| lindas.admin.ch/query |
| - LINDAS (TERMDAT) | | (fch/termdat, TERMDAT) |
| | +--------------------------+
| No authentication required |
+------------------------------+Data Model
JOLux Ontology — federal law (Fedlex)
jolux:ConsolidationAbstract <- SR entry
+-- jolux:isRealizedBy -> jolux:Expression (URI ends in /de, /fr, /it, /rm)
+-- jolux:title "Federal Act of 19 June 1992 on Data Protection"
+-- jolux:titleShort "DSG"
+-- jolux:historicalLegalId "235.1"
jolux:inForceStatus: .../0 In force · .../1 No longer published in SR · .../3 No longer in forceJOLux Ontology — consultations (Fedlex, same endpoint)
jolux:Consultation
+-- jolux:eventId "proj/2026/71/cons_1"
+-- jolux:eventTitle multilingual (de/fr/it)
+-- jolux:eventDescription multilingual
+-- jolux:consultationStatus -> vocabulary URI (0..6, /2 = "Laufend"/running)
+-- jolux:foreseenImpactToLegalResource -> the legal resource it will amend (link to SR)
+-- jolux:hasSubTask -> ?t
+-- jolux:eventStartDate <- opened_on
+-- jolux:eventEndDate <- the deadline (xsd:date, calendar day)
+-- jolux:institutionInChargeOfTheEvent <- lead department
+-- jolux:institutionInChargeOfTheEventLevel2 <- lead office
+-- jolux:opinionHasDraftRelatedDocument <- consultation documentsThere is no subject taxonomy on jolux:Consultation — thematic filtering is
free-text over eventTitle only, and status is derived from the deadline
(not the source status field).
Legislative lifecycle — where consultations sit (all in this one server):
Vernehmlassung Bundesblatt (BBl) Systematische Sammlung (SR)
(consultation) ─────► (dispatch / act text) ───► (consolidated law in force)
──────────────── ───────────────────── ───────────────────────────
fedlex_get_open_ fedlex_search_gazette fedlex_search_laws
consultations (eli/fga/…) fedlex_get_law_by_sr
fedlex_search_ fedlex_get_law_history
consultations (eli/cc/…)
fedlex_get_consultation
│ jolux:foreseenImpactToLegalResource
└───────────────────────────────────────────► links a consultation forward
to the SR resource it amendsThe consultation stage is the earliest public point of influence — the tools above answer what is open and until when, before a draft reaches the Bundesblatt.
schema.org — terminology (TERMDAT via LINDAS, graph fch/termdat)
<concept> = https://register.ld.admin.ch/termdat/40109 (a schema.ld.admin.ch/Term, ValidatedEntry)
+-- schema:name preferred name per language (de/fr/it/en; rm effectively absent)
+-- schema:description multilingual definition
+-- schema:hasPart -> <term> = .../termdat/40109/3/de (synonym/variant, language + position suffix)SPARQL endpoints: https://fedlex.data.admin.ch/sparqlendpoint · https://lindas.admin.ch/query
Licence: Free reuse per fedlex.admin.ch; TERMDAT via LINDAS under open reuse.
Architecture decision
ARCH A — live SPARQL only, for all three data areas, consistent with the existing Fedlex integration (decided 2026-07-18).
Both sources are unauthenticated SPARQL endpoints with acceptable latency, so no
dump/offline fallback is needed: if the Fedlex endpoint is down the server cannot
function anyway, and adding a cache would only mask that. LINDAS is a separate
endpoint, and its outage must not degrade the fedlex_* tools.
Isolation requirement: Fedlex and LINDAS use separate httpx clients, separate
timeouts and separate error/status reporting. A LINDAS timeout cannot fail a
fedlex_* call and vice versa (covered by an isolation test).
Languages
Code | Language |
| German (default, most complete coverage) |
| French |
| Italian |
| Romansh |
Project Structure
fedlex-mcp/
+-- src/fedlex_mcp/
| +-- __init__.py # Package
| +-- server.py # 12 tools, 2 resources (Fedlex + LINDAS)
+-- tests/
| +-- test_server.py # Unit tests (mocked)
+-- .github/workflows/ci.yml # GitHub Actions (Python 3.11/3.12/3.13)
+-- pyproject.toml
+-- CHANGELOG.md
+-- CONTRIBUTING.md # Contributing guide (English)
+-- CONTRIBUTING.de.md # Contributing guide (German)
+-- SECURITY.md # Security policy (English)
+-- SECURITY.de.md # Security policy (German)
+-- LICENSE
+-- README.md # This file (English)
+-- README.de.md # German versionKnown Limitations
SPARQL complexity: Very broad keyword searches may time out (45s timeout)
Language coverage: German has the most complete data; other languages may have gaps
Historical data: Not all historical versions of laws have machine-readable metadata
Rate limiting: The endpoints may throttle high-frequency requests
Consultations — scope and reliability (read this before relying on it)
Federal only. No cantonal consultations. Fedlex holds federal (Bund) consultations. Cantonal consultations — often the more relevant ones for a school authority (Schulamt) — are not in Fedlex and not covered here. This is a hard scope boundary, not a gap to be worked around.
This is not a push service. MCP is pull-based: the server answers on request which consultations are open and which expire soon. It cannot notify, schedule, or alert. Recurrence comes from you or an external scheduler — never from the server. "No open consultations" means nothing is open right now, not nothing is coming.
Thematic filtering is free-text, and imperfect.
jolux:Consultationhas no subject/classification taxonomy (verified live 2026-07-20) — filtering is substring search over the title only.topic="education"expands to a disclosed keyword union and deliberately over-matches (a too-narrow filter would falsely reassure); expect some false positives (e.g. "Ausbildung" inside an unrelated title) and, for niche wording, possible false negatives. The response always states which terms were searched.Coverage / latency: ~2,553 consultations; the historical corpus 1960–1991 sits with the Federal Archives, out of scope. Newly opened consultations appear with the upstream Fedlex publication latency (not real-time).
Deadlines end on the calendar day in Europe/Zurich;
days_remainingis computed at request time, never cached.0= the deadline is today.
Live findings (verified 2026-07-20):
Query | Status | Records | Note |
| OK | 2,553 | full inventory |
| OK | 2,505 of 2,553 | 48 without any deadline |
Open consultations ( | OK | 42 | deadlines into autumn 2026 |
| OK | 7 values |
|
Title contains "volksschule" / "lehrplan" | OK | 0 / 0 | anchor term itself finds nothing → use |
Title contains "bildung" (single) vs | OK | 44 vs 66 | keyword union is broader |
| BROKEN | 0 | silently empty on this endpoint → OR-chained |
Quirk 1 — the deadline wins over the status field. Status
/2("Laufend"/running) andeventEndDateare two independent signals. The server derivesstatusfrom the date: past deadline ⇒Abgeschlossen, regardless of what the source status claims — so an expired consultation is never listed as running. When the two disagree the record is markedstatus_conflict: trueand keeps the raw label instatus_source.
TERMDAT (LINDAS) — findings (verified 2026-07-18)
Query | Status | Records | Note |
| OK | 77,692 | |
Language tags on | OK | de/fr/it/en |
|
Search | OK | 1 | returns term URI |
Concept URI | OK | – | 4 language variants + definition |
Quirk 2 — reality-check discrepancy (stated plainly). The Federal Chancellery communicates roughly 400,000 TERMDAT entries. LINDAS contains 77,692. The difference is unexplained — presumably only the validated, released subset is published as Linked Data. A negative terminology hit does not mean the term is missing from TERMDAT; it only means it is not in the LINDAS subset. Every TERMDAT response carries this note so the model draws no false conclusion.
Quirk 3 — two URI levels. Concept URIs (
…/termdat/40109) carry the preferred names and the definition; term URIs with a language/position suffix (…/termdat/40109/3/de) are synonyms/variants linked viaschema:hasPart. The tools accept both forms and normalise internally to the concept ID.
What this tool is not
Not a subscription or alerting service. It does not watch, notify, e-mail, or remind. It answers when asked. Any recurring check is driven by you or an external scheduler, outside the server.
Not a cantonal source. Federal (Bund) consultations only — see Known Limitations.
Not legal advice. It returns public metadata and links to official documents. Deadlines and status are derived mechanically from the published data; verify anything decision-critical against the linked Fedlex page.
Related processes across the portfolio
Swiss federal legislation runs a chain, and this server covers one part of it — the pre-parliamentary consultation. The full chain is representable across three MCP servers:
Vernehmlassung → Botschaft → Parlament → Referendum
(consultation) (dispatch) (debate) (popular vote)
fedlex-mcp fedlex-mcp parlament-mcp swiss-democracy-mcpConsultation (pre-parliamentary): this server —
fedlex_*consultation*tools.Parliamentary phase:
parlament-mcp— debates, motions, votes in the Federal Assembly.Popular vote / referendum:
swiss-democracy-mcp— federal popular votes. Consultations are a distinct, earlier stage — no overlap, but the same legislative lifecycle.
Project Phase
This server is in Phase 1 (read-only). All tools are annotated
readOnlyHint: true / destructiveHint: false and only ever query the public
Fedlex SPARQL endpoint — there are no write, send, or filesystem capabilities.
Phase | Scope | Status |
1 — Read-only | Query SR/AS/BBl/treaties | ✅ current |
2 — Write-capable | (none planned) | — |
3 — Multi-agent | (none planned) | — |
A transition to a later phase would require an audit re-run and the human-in-the-loop controls described in the audit catalog before any write-capable tool is added.
MCP Protocol Version
This server speaks two protocol eras over the same endpoint. The client's first request on a connection decides which one applies; a later claim from the other era is refused.
Era | Revision | Who reaches it |
|
| What today's clients speak. The server answers with the revision asked for, or with the |
Per-request envelope |
| A request carrying the |
Both revisions are pinned in
tests/test_protocol_version.py and asserted
against the installed SDK, so a Dependabot bump of mcp cannot move either one
silently. The handshake ceiling is measured against a live initialize through
the assembled ASGI stack, not read off a constant name.
Note that the SDK's LATEST_PROTOCOL_VERSION is an alias for the modern
era, not for the handshake era — pinning against it alone would leave the era
that current clients actually negotiate free to drift.
Update policy. When the gate fails, do not edit the constant blindly: read
the spec changelog between the two revisions, verify the server still behaves,
then move the constant, this section, README.de.md and
CHANGELOG.md together.
Two consequences of the modern revision are visible in this server:
CORS names the routing headers.
Mcp-Method,Mcp-NameandMcp-Protocol-Versionride on every streamable-HTTP request, and a browser may only send a header the server allow-lists. SeeCORS_ROUTING_HEADERSinserver.py.The listing methods carry a freshness hint.
tools/list,resources/list,resources/templates/listandserver/discoveranswer withttlMs300000 andcacheScopepublic(CACHE_HINTS).resources/readdeliberately does not: it returns federal law, and a client must not treat a repealed enactment as fresh for five minutes.
Testing
# Unit tests (no API key required)
PYTHONPATH=src pytest tests/ -m "not live"
# Integration tests (live API calls)
pytest tests/ -m "live"Safety & Limits
Read-only: All tools perform SPARQL SELECT queries only — no data is written, modified, or deleted on either endpoint. All 12 tools are annotated
readOnlyHint: true/destructiveHint: false/idempotentHint: true.No personal data: Fedlex holds public law, gazettes and consultation metadata; TERMDAT holds official terminology. No personally identifiable information (PII) is processed or stored by this server.
Rate limits: The Fedlex and LINDAS SPARQL endpoints are public services without a documented rate limit; use
limitparameters conservatively (default 20, max 100). The server enforces a 45s timeout per request per endpoint and retries only transient failures.Endpoint isolation: Fedlex and LINDAS use separate clients and timeouts — a LINDAS outage does not affect the
fedlex_*tools.Data freshness: Results reflect the endpoints at query time. No caching is performed by this server.
Terms of service: Data is subject to the reuse conditions of fedlex.admin.ch — free reuse for commercial and other purposes.
No guarantees: This server is a community project, not affiliated with the Swiss Federal Chancellery. Availability depends on the upstream SPARQL endpoint.
Changelog
See CHANGELOG.md
Contributing
See CONTRIBUTING.md
Security
See SECURITY.md for the security posture, hardening controls, and how to report a vulnerability.
License
MIT License — see LICENSE
Author
Hayal Oezkan . malkreide
Credits & Related Projects
Fedlex: fedlex.admin.ch — Swiss Federal Chancellery
TERMDAT / LINDAS: lindas.admin.ch — Linked Data service of the Swiss administration
Protocol: Model Context Protocol — Anthropic / Linux Foundation
Related: parlament-mcp — Swiss Federal Assembly (parliamentary phase)
Related: swiss-democracy-mcp — Swiss federal popular votes (referendum phase)
Related: swiss-cultural-heritage-mcp — Swiss cultural heritage data
Related: zurich-opendata-mcp — City of Zurich open data
Related: swiss-transport-mcp — Swiss public transport
Portfolio: Swiss Public Data MCP Portfolio
Available Tools
12 toolsfedlex_get_consultationARead-onlyIdempotent
Detail zu einer Vernehmlassung anhand ihrer eventId. Vollbild zu einem Verfahren: Fristen, federführendes Amt, Status, Vernehmlassungsunterlagen und verknüpfte Rechtsressource — Grundlage für eine Stellungnahme. Führt deadline, days_remaining (zur Laufzeit, Europe/Zurich) und einen abgeleiteten status (Frist gewinnt). Ohne hasSubTask: deadline=null mit Hinweis (wirft nicht). status_conflict markiert einen Widerspruch zwischen Quell-Status und Frist. eventId z.B. aus fedlex_get_open_consultations. event_id='proj/2026/71/cons_1'
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| count | Yes | |
| source | No | |
| license | No | |
| message | No | |
| results | Yes | |
| markdown | Yes | |
| match_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, destructiveHint=false. The description adds valuable behavioral context: deadline and days_remaining with timezone, derived status, status_conflict, and handling of missing hasSubTask (deadline=null, no throw). This goes beyond annotations without contradiction.
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?
Description is short and front-loaded with purpose. Structured tags (use_case, important_notes, example) add value without unnecessary text. Every sentence earns its place.
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 (not shown), the description need not explain return values. It covers use case, behavioral details, and example. Could be more explicit about the object returned, but it is sufficient for a detail retrieval tool.
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?
Context indicates schema description coverage is 0%, so description must compensate. The description provides an example event_id and mentions its source, but does not elaborate on the language parameter. Although the schema includes descriptions, the tool description adds only marginal meaning. Baseline for low coverage is higher, but the description does not fully compensate.
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 it retrieves consultation details by event ID. The use_case tag elaborates that it shows full procedure with deadlines, lead office, status, documents, linking to legal resources. This distinguishes it from sibling tools like fedlex_get_open_consultations (list) and fedlex_search_consultations (search).
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 usage after obtaining an eventId from fedlex_get_open_consultations (mentioned in important_notes). However, it does not explicitly state when to use this tool vs alternatives (e.g., search_consultations), nor provides when-not or exclusions. Usage guidance is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fedlex_get_law_by_srARead-onlyIdempotent
Ruft einen Bundeserlass anhand seiner SR-Nummer ab (Detailansicht mit Titel, Abkürzung, Status, Inkrafttreten, Link). Wenn die SR-Nummer bekannt ist (z.B. aus fedlex_search_laws) und vollständige Metadaten zu einem Erlass gebraucht werden. Bei aufgehobenen Erlassen wird — sofern auffindbar — der Nachfolge-Erlass mitgeliefert. SR-Nummer mit Punkt trennen (235.1). sr_number='235.1'
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| count | Yes | |
| source | No | |
| license | No | |
| message | No | |
| results | Yes | |
| markdown | Yes | |
| match_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. Description adds extra behavioral context: it mentions that for repealed decrees, the successor law is provided if available. 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?
Description is well-structured with HTML-like tags but remains concise. Front-loaded with purpose and use case. Every sentence adds value, though could be slightly more streamlined.
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 a simple tool with one required parameter and an output schema, description covers what the tool does, when to use it, important usage notes, and expected output fields. Sufficient for correct selection and 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?
Schema has a description for sr_number parameter with examples. Description adds usage guidance: 'SR-Nummer mit Punkt trennen (235.1)' and an example. Despite 0% schema coverage metric, description compensates well.
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 clearly states it retrieves a federal decree by SR number and lists the details (title, abbreviation, status, etc.). Distinguishes from sibling tools like fedlex_search_laws (which searches) and fedlex_get_law_history (which retrieves history).
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?
Includes explicit <use_case> tag specifying when to use (when SR number is known, e.g., from fedlex_search_laws) and <important_notes> tag with details about repealed decrees and correct format of SR number.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fedlex_get_law_historyARead-onlyIdempotent
Ruft die Versionsgeschichte (alle konsolidierten Fassungen) eines Erlasses ab. Nachvollziehen, wann welche Fassung galt — z.B. alte vs. revidierte Gesetzesfassung (DSG 235.1: 1992 vs. nDSG 2020). Sortiert nach Inkrafttreten absteigend, max. 50 Fassungen. SR-Nummer mit Punkt trennen. sr_number='235.1'
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| count | Yes | |
| source | No | |
| license | No | |
| message | No | |
| results | Yes | |
| markdown | Yes | |
| match_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint. The description adds behavioral details: sorted descending by effective date, max 50 versions, and SR number format requirement, which goes beyond 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 concise with a main sentence, followed by structured sections for use case, important notes, and example. Every sentence provides meaningful information with no waste.
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 output schema exists, the description covers the tool's purpose, usage context, and key constraints. With only one required parameter and clear notes, it is largely complete. Minor omission: no mention of the language parameter default or behavior.
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?
With 0% schema description coverage, the description provides some parameter guidance: example 'sr_number='235.1'' and note to separate SR number with dot. However, the 'language' parameter is not explained. The example adds value but is not comprehensive.
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 retrieves version history (all consolidated versions) of a law, with a specific use case and example. It distinguishes itself from sibling tools that search laws or get current law by SR number.
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 use case explains when to use it (comparing old vs revised law versions). Important notes provide context on sorting and limits. However, it does not explicitly state when not to use it or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fedlex_get_open_consultationsARead-onlyIdempotent
Listet aktuell OFFENE Vernehmlassungen des Bundes (Fristen-Monitoring). «Auf welche Vorlagen kann man jetzt noch Stellung nehmen, und bis wann?» — vorparlamentarisches Verfahren, Frist-Überwachung. Filtert über die Frist (eventEndDate >= heute in Europe/Zurich, Fristtag inklusive), NICHT über den Status — die Frist ist massgebend. Jeder Treffer führt deadline, days_remaining (zur Laufzeit berechnet, 0 = Frist heute) und einen abgeleiteten status; bei Widerspruch zum Quell-Status status_conflict=true. Sortiert nach kürzester Restfrist. Thema via topic='education' (ausgewiesene Stichwort-Union) oder exaktem keyword. Leeres Resultat = «nichts offen», NICHT «nichts kommt». topic='education'
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| count | Yes | |
| source | No | |
| license | No | |
| message | No | |
| results | Yes | |
| markdown | Yes | |
| match_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, idempotentHint, destructiveHint) are consistent. The description adds key behavioral details: filtering by eventEndDate >= today in Europe/Zurich, computation of days_remaining and status_conflict, and sorting by shortest remaining deadline. No contradictions.
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 uses XML-like tags and is somewhat verbose. Each section adds value, but the overall structure could be more concise (e.g., merging use_case and important_notes). It is not minimal, but not overly bloated.
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 presence of output schema, the description does not need to detail return values. It covers purpose, behavioral logic, and parameter hints adequately. However, it lacks information on rate limits or authentication, though annotations cover safety. Overall, it is fairly complete for the complexity.
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 0%, so the description must compensate. It only briefly mentions topic and keyword in important_notes, but does not describe limit, language, or the date-based filtering criteria. The explanation for keyword is helpful but insufficient for full parameter understanding.
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 'Listet aktuell OFFENE Vernehmlassungen des Bundes (Fristen-Monitoring)', specifying verb, resource, and context. The use_case reinforces the purpose of deadline monitoring. This distinguishes it from siblings like fedlex_search_consultations, which likely covers all consultations.
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 important_notes explain filtering logic (by deadline, not status), sorting, and interpretation of empty results. It provides an example and guidance on topic vs keyword. However, it does not explicitly compare with siblings or state when to use this tool versus fedlex_get_consultation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fedlex_get_recent_publicationsARead-onlyIdempotent
Ruft die neuesten Publikationen der Amtlichen Sammlung (AS) ab.
Regelmässiges Monitoring von Rechtsänderungen — was wurde in den letzten N Tagen neu publiziert oder geändert?
Liefert Erstpublikationen (AS), nicht den konsolidierten Stand. Zeitfenster über days (1–365).
days=30, language='de'
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| count | Yes | |
| source | No | |
| license | No | |
| message | No | |
| results | Yes | |
| markdown | Yes | |
| match_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, idempotentHint, and destructiveHint are false. The description adds value by explaining it returns 'Erstpublikationen (AS)' and not the consolidated version, which is crucial behavioral information beyond the 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 very concise with two sentences and three XML tags. It front-loads the purpose and uses structured tags for use_case, important_notes, and example, making it efficient for an AI agent 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?
For a straightforward retrieval tool, the description covers the essential behavioral aspects: what is retrieved (AS publications), the time window, and a usage example. The output schema exists, so return values are not needed. The limit parameter is missing, so it's not fully complete.
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 description mentions days range in important_notes and provides an example with days and language. However, it does not explain the limit parameter. The schema already describes days and language, so the description adds marginal extra meaning. The parameter coverage in the description is incomplete.
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 it retrieves the latest publications of the Amtliche Sammlung (AS). The use_case tag provides concrete context for monitoring legal changes. This distinguishes it from sibling tools like fedlex_search_laws or fedlex_get_law_by_sr.
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 includes a use_case (regular monitoring) and important_notes that clarify it returns first publications, not consolidated law. This gives clear guidance on when to use the tool. However, it does not explicitly mention when to avoid it or name alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fedlex_get_upcoming_changesARead-onlyIdempotent
Ruft Erlasse ab, die in den nächsten N Tagen in Kraft treten.
Proaktives Rechtsmonitoring für Verwaltung und Schulen: welche Gesetze werden bald wirksam (Datenschutz, Bildung, Regulierung)?
Berücksichtigt nur künftige Inkraftsetzungen (dateEntryInForce > heute). Fenster über days_ahead (1–365).
days_ahead=90
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| count | Yes | |
| source | No | |
| license | No | |
| message | No | |
| results | Yes | |
| markdown | Yes | |
| match_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds that it only considers future dates (dateEntryInForce > heute) and the configurable time window via days_ahead. This goes beyond annotations with no contradictions.
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 short and front-loaded with the primary action. XML tags structure the additional context effectively. A minor deduction for redundancy (the core sentence repeats the title), but overall concise.
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, which reduces the need to describe return values. However, the description lacks coverage of two parameters (limit, language) and does not explain behavior at limits. Adequate for a simple retrieval tool but not fully comprehensive.
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 0%, yet the description only explains days_ahead (via example and note). The limit and language parameters are not described at all, leaving the agent uncertain about their purpose. The description partially compensates for one parameter out of three.
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 it retrieves upcoming changes to laws ('Ruft Erlasse ab, die in den nächsten N Tagen in Kraft treten'), with a specific verb, resource, and scope (future effective dates). This distinguishes it from sibling tools like fedlex_search_laws or fedlex_get_law_by_sr.
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 <use_case> tag provides explicit guidance for proactive legal monitoring. The <important_notes> ensures only future dates are considered and the window size is constrained. However, it does not mention when not to use this tool or suggest alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fedlex_search_consultationsARead-onlyIdempotent
Volltextsuche über Vernehmlassungen (Titel und Beschreibung), mit Filtern.
Recherche im vorparlamentarischen Verfahren — auch abgeschlossene Vernehmlassungen, nach Status, Zeitraum oder federführendem Amt.
Filter: topic (Stichwort-Union, ausgewiesen), keyword (Titel+Beschreibung), status (Kurzcode), from_date/to_date auf die Frist, institution (Teilstring im Amt). status ist abgeleitet (Frist gewinnt), days_remaining zur Laufzeit. Für reines Fristen-Monitoring offener Verfahren fedlex_get_open_consultations nutzen.
topic='education', status='closed'
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| count | Yes | |
| source | No | |
| license | No | |
| message | No | |
| results | Yes | |
| markdown | Yes | |
| match_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false; description adds behavioral details like status derivation, runtime days_remaining, and filter semantics (e.g., topic is a keyword union). No contradictions.
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?
Description is front-loaded with main purpose, then uses structured tags (<use_case>, <important_notes>, <example>) to concisely convey usage, filters, and example, with 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?
Given the tool's complexity (multiple filters, derived fields) and the presence of an output schema, the description covers use case, filters, behavior, and alternatives, making it complete for an agent to use 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?
Despite schema description coverage reported as 0%, the description explains each filter (topic, keyword, status, dates, institution) and their semantics (e.g., status derived, days_remaining). Adds value beyond the schema's type constraints.
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 clearly states 'Volltextsuche über Vernehmlassungen' (full-text search over consultations) with filters, distinguishing it from sibling tools like fedlex_search_laws and explicitly calling out the alternative fedlex_get_open_consultations.
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?
Description provides explicit use case (pre-parliamentary research), when to use (with filters), and when not to (pure deadline monitoring, refer to fedlex_get_open_consultations). Also explains derived status and days_remaining.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fedlex_search_gazetteARead-onlyIdempotent
Durchsucht das Bundesblatt (BBl) nach amtlichen Publikationen.
Politisches Frühwarnsystem: Botschaften des Bundesrates, Parlaments- und Volksinitiativen, Vernehmlassungen.
BBl ≠ konsolidiertes Recht — für geltende Gesetze fedlex_search_laws nutzen. Optional auf ein Jahr einschränken.
keywords='Berufsbildung', year=2024
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| count | Yes | |
| source | No | |
| license | No | |
| message | No | |
| results | Yes | |
| markdown | Yes | |
| match_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds context about the specific publication (BBl) and its nature as official publications, but no new behavioral traits beyond 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?
Very concise: one sentence for purpose, then structured use_case, important_notes, and example. Every part adds value without 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 the output schema exists and annotations cover safety, the description fully covers purpose, usage, differentiation, and key constraints. It is complete for a search tool.
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 already includes descriptions for `keywords` and `year`. The tool description adds an example but no additional semantic detail beyond what the schema provides. Baseline 3 applies.
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 it searches the Federal Gazette for official publications, and distinguishes from `fedlex_search_laws` for consolidated law. The use case tag further specifies political early warning, messages, initiatives, and consultations.
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?
Explicit guidance on when to use (political early warning) and when not to use (for current laws, use `fedlex_search_laws`). Also hints at optional year restriction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fedlex_search_lawsARead-onlyIdempotent
Durchsucht die Systematische Rechtssammlung (SR) des Bundes nach Erlasstiteln und liefert SR-Nummer, Abkürzung, Status und Link. Juristische/verwaltungsbezogene Recherche: konsolidiertes Bundesrecht (Gesetze, Verordnungen, Vereinbarungen) per Stichwort finden. Sucht nur im Titel, nicht im Volltext. Standardmässig nur in Kraft stehende Erlasse (in_force_only=true). Liefert einen strukturierten Envelope (results + markdown). keywords='Datenschutz', language='de'
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| count | Yes | |
| source | No | |
| license | No | |
| message | No | |
| results | Yes | |
| markdown | Yes | |
| match_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds valuable behavioral context: searches only titles (not full text), defaults to in_force_only=true, and returns a structured envelope. No contradictions 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 concise, front-loading the purpose, and uses structured XML tags for use_case and important_notes. Every sentence provides value, with no wasted words.
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 search tool with 4 parameters and an output schema, the description covers the main use case, important behavioral notes, and return envelope structure. It is complete enough given the existence of an output schema and annotations.
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 0%, but the input schema itself provides detailed descriptions for each parameter (keywords, limit, language, in_force_only). The description adds an example but does not significantly enhance parameter understanding beyond the schema. 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 verb 'Durchsucht' (searches) the resource 'Systematische Rechtssammlung (SR)' by title and lists the returned fields (SR-Nummer, Abkürzung, Status, Link). This clearly distinguishes it from sibling tools like fedlex_search_gazette or fedlex_search_treaties.
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 includes a <use_case> tag specifying legal/administrative research and an <important_notes> section clarifying title-only search and default in_force_only=true. It does not explicitly state when not to use, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fedlex_search_treatiesARead-onlyIdempotent
Sucht internationale Staatsverträge der Schweiz (SR-Nummern beginnen mit '0.'). Recherche zu bi-/multilateralen Abkommen: EU-Bilaterale, Doppelbesteuerung, Europarats-Konventionen (Datenschutz, Menschenrechte). Ohne Suchbegriff werden die neuesten Verträge gelistet. Sucht nur im Titel. keywords='Datenschutz'
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| count | Yes | |
| source | No | |
| license | No | |
| message | No | |
| results | Yes | |
| markdown | Yes | |
| match_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint false. Description adds essential behavioral context: search scope limited to titles, and empty keyword returns latest treaties. 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?
Very concise, structured with use_case and important_notes tags, front-loaded with the main action. Every sentence adds value, no superfluous text.
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 rich annotations and presence of output schema, the description covers purpose, use cases, and key behavioral constraints. Could also mention result format or pagination, but for a search tool it is sufficiently complete.
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 0% per context, but schema actually documents keywords and language. Description adds value by explaining that omitting keywords lists latest treaties, but does not detail limit or language parameters further. Adequate but not complete compensation for low coverage.
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?
Clearly states it searches international state treaties (SR numbers starting with '0.'). Provides specific use cases (EU bilateral, double taxation, Council of Europe conventions) and distinguishes it from sibling tools like fedlex_search_laws by focusing on treaties.
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?
Explicitly describes when to use (search treaties) and includes important notes: search is title-only, without keywords returns latest treaties. Provides concrete examples and alternatives are implied by sibling context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
termdat_get_conceptARead-onlyIdempotent
Ruft den vollständigen TERMDAT-Eintrag zu einer ID oder URI ab. Vollbild eines Terminologie-Konzepts: alle Sprachbenennungen, Definitionen, Synonyme und Quellenangaben. Akzeptiert ID ('40109'), Konzept-URI oder Term-URI mit Sprachsuffix ('…/40109/3/de') und normalisiert intern (Quirk 3). Quelle ist der LINDAS-Teilbestand (77'692 von ~400'000 Einträgen). concept='40109'
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| count | Yes | |
| source | No | |
| license | No | |
| message | No | |
| results | Yes | |
| markdown | Yes | |
| match_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, destructiveHint. Description adds value by noting the internal normalization quirk (Quirk 3) and the subset of data source (77,692 of ~400,000 entries), which is useful beyond 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 well-structured with XML tags separating purpose, use case, important notes, and example. Every element serves a purpose without redundancy, and it 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 complexity of retrieving a full concept with multiple languages and sources, the description covers purpose, accepted input formats, data source limitations, and internal quirks. With an output schema present, the description is fully adequate for an agent to use 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 single parameter 'concept' has 0% schema description coverage per context, but the tool description explains accepted formats (ID, concept URI, term URI with language suffix) and gives an example, adding meaning beyond the schema's limited description.
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 clearly states it retrieves a full TERMDAT entry by ID or URI, including all language designations, definitions, synonyms, and sources. It distinguishes from siblings like termdat_lookup_term and FedLex tools by specifying the 'full entry' use case.
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 <use_case> tag specifies when to use ('full view of a terminology concept'), and <important_notes> provides format details. It does not explicitly mention alternatives or when not to use, but the context is clear and aids decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
termdat_lookup_termARead-onlyIdempotent
Schlägt einen Fachbegriff in TERMDAT nach und liefert die Entsprechungen in den anderen Landessprachen (de/fr/it/rm/en) samt Definition. «Wie heisst dieser Begriff auf Französisch/Italienisch?» — amtliche Terminologie der Bundeskanzlei, z.B. für mehrsprachige Stellungnahmen. Datenquelle ist der LINDAS-Teilbestand von TERMDAT: 77'692 von ~400'000 Einträgen. Ein Negativtreffer heisst NICHT, dass der Begriff in TERMDAT fehlt, sondern nur, dass er nicht im publizierten Linked-Data-Teil liegt. 'rm' ist im Teilbestand praktisch leer. term='Volksschule', target_languages=['fr','it']
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| count | Yes | |
| source | No | |
| license | No | |
| message | No | |
| results | Yes | |
| markdown | Yes | |
| match_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnly, idempotent, non-destructive. The description adds transparency about data source subset (77,692 of ~400,000 entries) and that 'rm' is practically empty. This goes beyond annotations by disclosing data limitations that affect results. 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 concise and structured with clear tags: use_case, important_notes, example. Each section adds essential information without redundancy. Front-loaded with main action. No wasted words.
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 output schema exists, the description need not detail return values. It covers data source limitations, language coverage, and provides an example. It could mention pagination or result format but is sufficiently complete for typical use.
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 detailed descriptions for all parameters (term, limit, target_languages). The tool description adds value with an example usage and context but doesn't significantly enhance clarity beyond what schema already provides. Schema coverage is effectively high, 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?
The description clearly states the verb ('nachschlagen'), resource (TERMDAT), and what it returns (equivalents in other languages with definition). It distinguishes from sibling tools like termdat_get_concept by focusing on term lookup for translations.
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 use_case tag explicitly provides a typical query ('Wie heisst dieser Begriff auf Französisch/Italienisch?') and context (amtliche Terminologie, mehrsprachige Stellungnahmen). Important_notes clarify the data source limitations and that a negative result doesn't mean absence. This gives clear when-to-use guidance and expectations.
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. Dates show when Glama detected each change.
12 tool updates
v1.2.0- First observed
fedlex_get_consultation - First observed
fedlex_get_law_by_sr - First observed
fedlex_get_law_history - First observed
fedlex_get_open_consultations - First observed
fedlex_get_recent_publications - First observed
fedlex_get_upcoming_changes - First observed
fedlex_search_consultations - First observed
fedlex_search_gazette - First observed
fedlex_search_laws - First observed
fedlex_search_treaties - First observed
termdat_get_concept - First observed
termdat_lookup_term
TDQS
Each tool targets a distinct operation: law search, law detail, history, recent publications, upcoming changes, gazette search, treaty search, open consultations, consultation search, consultation detail, term lookup, and concept detail. No overlap in functionality.
All tools follow a consistent prefix (fedlex_ or termdat_) followed by verb_noun pattern (e.g., fedlex_search_laws, fedlex_get_law_by_sr, termdat_lookup_term). Naming is uniform and predictable.
12 tools cover a broad domain (laws, treaties, gazette, consultations, terminology) without being excessive. Each tool serves a clear purpose, and the count is well-scoped for the server's function.
Core workflows are covered: search, detail, history, monitoring for laws and consultations, plus terminology lookup. Minor gaps: no full text retrieval for laws (only link provided) and no treaty detail tool, but agents can work around with links.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Swiss federal law (Fedlex) and political data (LINDAS) for agents, every answer with sources
Search German and EU law from official sources with your AI assistant. PRIMAMCP provides citable legal texts via MCP, with daily updates and hosting in Germany.
US federal and state cybersecurity/privacy law MCP server with cross-state comparison
Japan Law MCP — Japanese national laws & ordinances via the e-Gov Law API.
Related MCP Servers
- FlicenseBqualityFmaintenanceAn MCP server providing standardized access to Swiss court decisions through the entscheidsuche.ch API, allowing LLMs to search, retrieve, and analyze legal documents from Swiss jurisdictions.35-
- AlicenseAqualityAmaintenanceMCP server for searching Swiss court decisions from federal and cantonal courts via entscheidsuche.ch. Enables full-text search, law reference lookup, and filtering by canton, court level, and date without API keys.81MIT
- AlicenseAqualityFmaintenanceEnables querying Swiss data protection regulations, FDPIC/EDOB decisions, and guidelines directly from MCP-compatible clients like Claude.6Apache 2.0
- AlicenseAqualityAmaintenanceMCP server for Swiss federal legislation metadata via Fedlex, enabling search and retrieval of act details with ELI URIs, SR numbers, and multilingual support.3Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/malkreide/fedlex-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server