Consulter · fédéral + cantonal
Législation fédérale et cantonale suisse
~5 000 lois fédérales suisses (125 000+ articles en trois langues officielles, historique complet des amendements) depuis l'endpoint SPARQL Fedlex, mises en miroir localement chaque mois. Plus de 15 722 actes cantonaux et intercantonaux via l'agrégateur LexFind. Appels MCP stateless pour la consultation d'article, la recherche plein texte, l'historique et les modifications.
§01 Fédéral
Lois fédérales — miroir SPARQL Fedlex
L'endpoint SPARQL de Fedlex (fedlex.data.admin.ch/sparqlendpoint) est interrogé chaque mois et les ~5’000 lois fédérales sont mises en miroir localement dans un index SQLite FTS5. Les lookups d'articles s'exécutent en moins de 1 ms, la recherche plein texte utilise le ranking BM25.
Abréviations couvertes (extrait) :
Liste complète disponible via search_laws.
Consultation d'article
get_law(abbreviation="OR", article="41", language="de")Renvoie l'art. 41 CO (responsabilité extracontractuelle) avec alinéas, renvois et métadonnées depuis l'index FTS5 local. Le paramètre language accepte de, fr, it.
§02 Cantonal
Actes cantonaux — miroir direct des portails + repli LexFind
La législation cantonale vient de deux sources. Primaire : 22 cantons sont scrapés directement depuis leurs recueils officiels — via les plateformes LexWork et SIL que les cantons utilisent eux-mêmes pour publier. Le contenu est parsé en HTML natif (aucune extraction PDF, aucun OCR) et donne des données article-par-article propres. Repli : pour les 4 cantons restants (JU, SZ, UR, VD) (ainsi que pour les actes absents du miroir direct), OpenCaseLaw extrait les PDF de lexfind.ch avec PyMuPDF. L'ensemble est stocké dans cantonal_laws.db (15’722 actes / 353’464 articles) et fédéré via SQLite-FTS5 avec la table du droit fédéral.
Pour les requêtes visant des actes pas encore présents dans le miroir local — par exemple des versions toutes récentes entre deux cycles de rafraîchissement — les outils MCP basculent de manière transparente sur l'API live de LexFind et mettent la réponse en cache persistant (SQLite, TTL étagés : recherche 24 h, résolution SR 30 j, texte intégral 7 j). La recherche search_legislation utilise également le catalogue LexFind (33’000+ textes incluant ordonnances et accords intercantonaux).
Recherche plein texte (fédérée)
search_laws(query="Mietrecht", canton="ZH")search_laws interroge le miroir local tant au niveau fédéral que cantonal et entrelace les résultats. Sans filtre canton, les hits fédéraux et cantonaux sont renvoyés en alternance ; avec filtre, la recherche est limitée au périmètre choisi.
Consultation d'article cantonal
get_law(canton="ZH", sr_number="554.5", article="1")Renvoie l'art. 1 de la loi zurichoise sur les chiens depuis cantonal_laws.db. Le paramètre canton accepte les 26 codes cantonaux (ZH, BE, LU, …, GE, JU).
Requête en langage naturel en un seul appel
search_legislation(query="Hundegesetz", canton="BE", fetch_top_n_texts=2)Avec fetch_top_n_texts=N, les N premiers résultats sont directement enrichis avec le texte intégral et les articles segmentés — les LLM peuvent répondre à des questions comme « que dit la loi bernoise sur les chiens concernant l'interdiction de détention ?» en un seul appel d'outil.
§03 Modifications
Modifications récentes
Pour chaque juridiction, on peut obtenir les modifications législatives les plus récentes — nouveaux actes, révisions et abrogations, avec date, type et lien vers la publication officielle.
browse_legislation_changes
browse_legislation_changes(canton="CH")§04 Contexte
Contexte technique
Fedlex expose deux interfaces lisibles par machine : un endpoint SPARQL (RDF, ELI-URIs) et des téléchargements XML d'actes individuels. Les deux demandent un travail préparatoire considérable avant qu'une requête comme « Art. 41 CO en allemand » soit possible. Le miroir local matérialise cette requête dans une table FTS5 sur (loi, article, langue), amenant les lookups d'articles en sous-milliseconde.
LexFind fournit une API JSON pour la découverte en direct sur les 26 collections cantonales plus la fédérale (33’000+ textes incluant ordonnances et accords intercantonaux). OpenCaseLaw utilise LexFind dans deux rôles : (1) comme source PDF de repli pour les 4 cantons (JU, SZ, UR, VD) dont nous ne scrapons pas encore directement les portails — les PDF sont extraits avec PyMuPDF et segmentés en articles ; (2) comme catalogue de découverte pour la famille d'outils search_legislation. Pour les 22 autres cantons, nous allons directement aux portails officiels (LexWork + SIL).
Le graphe de citations contient 11,3 millions de références à des articles de loi ; chaque référence peut être résolue contre le texte consolidé actuel. Une décision qui cite l'art. 12 LLCA conduit via get_law("BGFA", article="12") directement à l'article dans les trois langues officielles.