← Back to search

io.github.malkreide/openlex-mcp

malkreide Scanned 22d ago

Canton Zurich legislation via ZH-Lex with full-text search and article extraction

C
70.1 / 100

Versions

0.2.3latest
first seen Jun 30, 2026
PermissionsTool SafetyAuthAnnotationsCode QualityStabilitySpecVuln HistoryAuthorTransparencyCommunity

Tools 8

zhlaw_search_laws
annotations: none low

Volltextsuche in allen Zürcher Gesetzen mit FTS5-Ranking. <use_case>Allgemeine Suche nach einem Rechtsbegriff über alle ~970 kantonalen Gesetze. Wähle dieses Tool wenn das Rechtsgebiet unbekannt ist. Für das Bildungsrecht (412.x) ist openlex__zhlaw_find_education_laws schneller und präziser. Um Artikel innerhalb eines bekannten Gesetzes zu finden, nutze openlex__zhlaw_search_articles.</use_case> <important_notes>FTS5-Syntax: AND, OR, NOT, Phrasensuche "...". Ergebnisse nach BM25-Relevanz sortiert. Max 50 Treffer pro Aufruf (limit-Parameter). sr_prefix filtert nach Rechtsgebiet (412=Bildung, 331=Steuern, 700=Bau). Sucht im lokalen Cache — Aktualität der Metadaten via openlex__zhlaw_get_law_metadata prüfen.</important_notes> <example>query='Elternrat OR Elternmitwirkung', sr_prefix='412', limit=10</example>

params SearchLawsInput
zhlaw_get_law
annotations: none low

Ruft ein Zürcher Gesetz anhand der Ordnungsnummer oder Abkürzung ab. <use_case>Wenn die Ordnungsnummer oder Abkürzung eines Gesetzes bereits bekannt ist und Metadaten oder Volltext abgerufen werden sollen. Um ein Gesetz erst zu finden, openlex__zhlaw_search_laws oder openlex__zhlaw_find_education_laws vorschalten.</use_case> <important_notes>Unterstützt LS-Nummern ('412.100') und Abkürzungen ('VSG'). include_content=True liefert den Volltext (bis 5000 Zeichen, dann truncated=True). Bei Truncation: openlex__zhlaw_get_article für einzelne Artikel verwenden. Wichtige Gesetze: VSG, LPG, PBG, StG, KV.</important_notes> <example>identifier='VSG', include_content=False</example>

params GetLawInput
zhlaw_get_article
annotations: none low

Extrahiert einen einzelnen Artikel aus einem Zürcher Gesetz. <use_case>Wenn der genaue Wortlaut eines bestimmten Artikels benötigt wird. Voraussetzung: Gesetz und Artikelnummer sind bekannt. Um zuerst relevante Artikel zu finden: openlex__zhlaw_search_articles nutzen.</use_case> <important_notes>Unterstützt Standard-Artikelnummern (28), Buchstaben-Artikel (28a) und Bis-Artikel (28bis). Liefert Titel, alle Absätze und Volltext des Artikels. Gibt count=0 zurück wenn der Artikel nicht existiert — Artikelnummer ohne 'Art.' angeben (nur die Zahl).</important_notes> <example>law_identifier='VSG', article_number='28'</example>

params GetArticleInput
zhlaw_list_laws
annotations: none low

Listet Zürcher Gesetze auf mit optionalem Filter nach Rechtsgebiet. <use_case>Wenn eine strukturierte Übersicht aller Gesetze eines Rechtsgebiets benötigt wird (z.B. alle aktiven Bildungsgesetze). Für gezielte Textsuche ist openlex__zhlaw_search_laws besser; für reines Bildungsrecht openlex__zhlaw_find_education_laws.</use_case> <important_notes>sr_prefix filtert nach Ordnungsnummer-Prefix (412=Bildung, 331=Steuern, 700=Bau, 131=Verfassung, 810=Gesundheit). active_only=True blendet aufgehobene Gesetze aus. Unterstützt Paginierung via offset. Gibt Titel, Abkürzung, SR-Nummer und Status zurück — keinen Volltext.</important_notes> <example>sr_prefix='412', active_only=True, limit=50</example>

params ListLawsInput
zhlaw_find_education_laws
annotations: none low

Sucht gezielt im Zürcher Bildungsrecht (Ordnungsnummern 412.x). <use_case>Bevorzuge dieses Tool gegenüber openlex__zhlaw_search_laws wenn die Anfrage klar im Bildungsbereich liegt (Schule, Lehrpersonen, Kindergarten, Sonderpädagogik, Tagesstrukturen). Schneller und präziser als die allgemeine Suche, da nur die 412.x-Serie (VSG, VSV, LPG, LPVO, VSM u.a.) durchsucht wird.</use_case> <important_notes>Sucht ausschliesslich in aktiven 412.x-Gesetzen. Bei keinen Treffern: automatischer Fallback auf alle Rechtsgebiete mit Hinweis im message- Feld. Für Artikel innerhalb eines gefundenen Gesetzes: openlex__zhlaw_search_articles. Synergie: Fundstelle + swiss-courts-mcp → Rechtsprechung finden.</important_notes> <example>query='Elternrat', limit=10</example>

params FindEducationLawsInput
zhlaw_search_articles
annotations: none low

Durchsucht alle Artikel eines bestimmten Gesetzes nach einem Begriff. <use_case>Wenn bekannt ist, in welchem Gesetz gesucht werden soll, aber nicht welcher Artikel relevant ist. Liefert alle Treffer-Artikel mit Inhalt. Für einen einzelnen Artikel mit bekannter Nummer: openlex__zhlaw_get_article.</use_case> <important_notes>Parst das Gesetz in einzelne Artikel und durchsucht Titel und Inhalt. Suche ist case-insensitive, kein FTS5 (einfaches Substring-Match). Gibt count=0 wenn kein Artikel den Begriff enthält. Benötigt Volltext im Cache — bei fehlendem Inhalt: Hinweis im message-Feld.</important_notes> <example>law_identifier='VSG', query='Elternrat'</example>

params SearchArticlesInput
zhlaw_get_law_metadata
annotations: none low

Ruft aktuelle Metadaten eines Gesetzes live von zh.ch ab. <use_case>Wenn der aktuelle Stand eines Gesetzes auf zh.ch geprüft werden soll — z.B. ob es kürzlich geändert wurde, welche PDF-Version aktuell gilt oder welche ZH-Lex URL direkt verlinkt werden kann. Einziges Tool mit Live-HTTP-Aufruf; alle anderen Tools lesen den lokalen Cache.</use_case> <important_notes>Macht einen echten HTTP-Request an www.zh.ch (ca. 1–3 s). Erfordert Netzwerkzugang. Liefert: Seitentitel, PDF-Links, Änderungsdatum, ZH-Lex URL. Bei 404 oder Timeout: found=False mit Fehlerdetail im error-Feld. Nur Ordnungsnummern akzeptiert (kein Abkürzungs-Lookup).</important_notes> <example>sr_number='412.100'</example>

params GetLawMetadataInput
zhlaw_update_cache
annotations: none low

Aktualisiert den lokalen Cache der Zürcher Gesetzesdaten. <use_case>Nur aufrufen wenn der Cache explizit neu geladen werden soll. Der Cache wird automatisch beim Start befüllt und ist 24 Stunden gültig — manuelles Update ist selten nötig.</use_case> <important_notes>Lädt ~970 Gesetze von HuggingFace (rcds/swiss_legislation) in die lokale SQLite-DB mit FTS5-Index (~25 s erster Lauf). force=False überspringt den Download wenn Cache <24h alt (gibt status='cache_fresh' zurück). force=True erzwingt Neudownload. Erfordert Internetzugang zu HuggingFace. ACHTUNG — dieses Werkzeug macht die GESETZE nicht aktueller. Es lädt denselben Datensatz erneut, und der ist eingefroren: Die jüngste Fassung darin stammt vom 2023-01-01 (gemessen am 2026-08-08; der Datensatz selbst wurde zuletzt am 2024-10-10 angefasst). Bei Zweifeln an der Aktualität eines Wortlauts hilft nur der ZH-Lex-Permalink, nicht dieses Werkzeug.</important_notes> <example>force=False</example>

ctx Context params UpdateCacheInput

Permissions 5

network medium
Server uses network capabilities via: httpx, socket, urllib
filesystem low
Server uses filesystem capabilities via: open(), os, pathlib, shutil, tempfile
shell high
Server uses shell capabilities via: subprocess
database medium
Server uses database capabilities via: sqlite3
env_vars low
Server uses env_vars capabilities via: os.environ

Scan Findings 31

info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
low
Tool 'zhlaw_search_laws' has no annotations annotation_checker · 100%
low
Tool 'zhlaw_get_law' has no annotations annotation_checker · 100%
low
Tool 'zhlaw_get_article' has no annotations annotation_checker · 100%
low
Tool 'zhlaw_list_laws' has no annotations annotation_checker · 100%
low
Tool 'zhlaw_find_education_laws' has no annotations annotation_checker · 100%
low
Tool 'zhlaw_search_articles' has no annotations annotation_checker · 100%
low
Tool 'zhlaw_get_law_metadata' has no annotations annotation_checker · 100%
low
Tool 'zhlaw_update_cache' has no annotations annotation_checker · 100%
high
Remote transport without authentication auth_checker · 70%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
medium
Vulnerable dependency: pydantic@2.0.0 (GHSA-mr82-8j83-vxmv) dependency_analyzer · 95%
medium
Vulnerable dependency: pydantic@2.0.0 (PYSEC-2026-1812) dependency_analyzer · 95%
info
pyproject.toml metadata manifest_parser · 100%
info
Tool: zhlaw_search_laws manifest_parser · 90%
info
Tool: zhlaw_get_law manifest_parser · 90%
info
Tool: zhlaw_get_article manifest_parser · 90%
info
Tool: zhlaw_list_laws manifest_parser · 90%
info
Tool: zhlaw_find_education_laws manifest_parser · 90%
info
Tool: zhlaw_search_articles manifest_parser · 90%
info
Tool: zhlaw_get_law_metadata manifest_parser · 90%
info
Tool: zhlaw_update_cache manifest_parser · 90%
info
Transport: streamable-http manifest_parser · 80%
info
Required env vars (4) manifest_parser · 80%
medium
Permission: network access detected permission_analyzer · 90%
low
Permission: filesystem access detected permission_analyzer · 90%
high
Permission: shell access detected permission_analyzer · 95%
medium
Permission: database access detected permission_analyzer · 90%
low
Permission: env_vars access detected permission_analyzer · 90%
info
No dependency files found for SBOM generation sbom_generator · 100%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%