
OpenCaseLaw — Swiss Caselaw, Statutes & Doctrine
Connects Claude to 972,000 Swiss court decisions and 21,000 federal and cantonal laws spanning 1875 to today. Exposes 38 remote tools for full-text search across trilingual case law, citation graph traversal with 8 million resolved edges, leading case discovery by citation authority, statute article lookup, legislative history via 84,000 Botschaft references, and appeal chain resolution. Search uses BM25 with synonym expansion and reranking. Pulls federal laws directly from Fedlex SPARQL and scrapes all 26 cantonal portals. Reach for it when you need primary source grounding for Swiss legal research, want to trace jurisprudence evolution, or need to query the relationship between decisions and specific statute articles without hallucination.
- tools
- 42
- transport
- HTTP, SSE
- last updated
- Jul 30, 2026
Install
From registry metadata$ npx add-mcp https://mcp.opencaselaw.ch/mcp --name swiss-caselawRun in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.
Review the command, arguments and environment values before installing. MCP servers run with your local permissions.
Other ways
Claude Code
$ claude mcp add --transport http swiss-caselaw https://mcp.opencaselaw.ch/mcpRun in your terminal. Add --scope user to make it available in every project.
Tools
Verified live · 42 toolsVerified live against the running server on Nov 6, 2026.
searchMinimal search tool following the deep-research search/fetch convention. Returns a ranked list of Swiss court decisions matching a query, each as {id, title, url, snippet}. Pair with `fetch` to retrieve a decision's full text by id. General (non-deep-research) clients should p...2 params
Minimal search tool following the deep-research search/fetch convention. Returns a ranked list of Swiss court decisions matching a query, each as {id, title, url, snippet}. Pair with `fetch` to retrieve a decision's full text by id. General (non-deep-research) clients should p...
limitintegerquery*stringfetchMinimal fetch tool following the deep-research search/fetch convention. Fetches one Swiss decision's full text by id, returning {id, title, text, url, metadata}. The id comes from a `search` result (a decision_id like bger_6B_1234_2025; a docket number or BGE reference also re...1 params
Minimal fetch tool following the deep-research search/fetch convention. Fetches one Swiss decision's full text by id, returning {id, title, text, url, metadata}. The id comes from a `search` result (a decision_id like bger_6B_1234_2025; a docket number or BGE reference also re...
id*stringsearch_decisionsUse this tool to find COURT DECISIONS (Rechtsprechung): 1,050,000+ Swiss federal and cantonal decisions plus ~2,800 ECtHR decisions concerning Switzerland. Full-text search with keywords, phrases (in quotes), Boolean operators (AND, OR, NOT), prefix matching (word*), docket lo...15 params
Use this tool to find COURT DECISIONS (Rechtsprechung): 1,050,000+ Swiss federal and cantonal decisions plus ~2,800 ECtHR decisions concerning Switzerland. Full-text search with keywords, phrases (in quotes), Boolean operators (AND, OR, NOT), prefix matching (word*), docket lo...
cantonstringchamberstringcourtstringdate_fromstringdate_tostringfieldsstringfull · compactinclude_pinpointbooleanlanguagestringde · fr · it · rm · enlimitintegermarked_for_publicationbooleanoffsetintegerpublished_fromstringpublished_tostringquerystringsortstringrelevance · date_desc · date_asc · published_descget_decisionFetch a single court decision with full text. Look up by decision_id (e.g., bger_6B_1234_2025), docket number (e.g., 6B_1234/2025), or partial match. Full text is truncated at 200,000 characters for very long decisions. Set full_text=false to get only metadata and regeste.2 params
Fetch a single court decision with full text. Look up by decision_id (e.g., bger_6B_1234_2025), docket number (e.g., 6B_1234/2025), or partial match. Full text is truncated at 200,000 characters for very long decisions. Set full_text=false to get only metadata and regeste.
decision_id*stringfull_textbooleanget_decisionsUse this tool to fetch SEVERAL decisions at once (1-10 ids) instead of calling get_decision repeatedly. Same data per decision — canonical citation strings, Markdown link, Regeste, metadata — in ONE call. Prefer this whenever you are about to read more than one decision from a...3 params
Use this tool to fetch SEVERAL decisions at once (1-10 ids) instead of calling get_decision repeatedly. Same data per decision — canonical citation strings, Markdown link, Regeste, metadata — in ONE call. Prefer this whenever you are about to read more than one decision from a...
decision_ids*arrayfull_textbooleanmax_chars_per_decisionintegerlist_courtsList all available courts with decision counts, decision-date ranges, and language coverage. Use this to discover what data is available. A court's latest decision date is not its last update: courts publish weeks to months after deciding, and this corpus is updated daily.
List all available courts with decision counts, decision-date ranges, and language coverage. Use this to discover what data is available. A court's latest decision date is not its last update: courts publish weeks to months after deciding, and this corpus is updated daily.
No parameters. Call it with no arguments.
get_statisticsGet aggregate statistics about the dataset. Optionally filter by court, canton, or year. by_year counts decision years: the latest years keep rising for months as courts publish, so their lower counts are publication lag, not missing data.3 params
Get aggregate statistics about the dataset. Optionally filter by court, canton, or year. by_year counts decision years: the latest years keep rising for months as courts publish, so their lower counts are publication lag, not missing data.
cantonstringcourtstringyearintegerfind_citationsGiven a decision_id, show what it cites and what cites it. Uses the reference graph database with 9.65M citation edges. Returns resolved citations with confidence scores and unresolved references.5 params
Given a decision_id, show what it cites and what cites it. Uses the reference graph database with 9.65M citation edges. Returns resolved citations with confidence scores and unresolved references.
decision_id*stringdirectionstringboth · outgoing · incomingdefault: bothlimitintegermin_confidencenumberoffsetintegerfind_appeal_chainTrace the appeal chain (Instanzenzug) for a decision. Shows prior instances (lower courts) and subsequent instances (appeals to higher courts). Reconstructs the full procedural path, e.g. Bezirksgericht → Obergericht → Bundesgericht. Uses the is_prior_instance flag from decisi...2 params
Trace the appeal chain (Instanzenzug) for a decision. Shows prior instances (lower courts) and subsequent instances (appeals to higher courts). Reconstructs the full procedural path, e.g. Bezirksgericht → Obergericht → Bundesgericht. Uses the is_prior_instance flag from decisi...
decision_id*stringmin_confidencenumberfind_leading_casesFind the most-cited decisions for a topic or statute. Authority ranking based on citation graph, so recent decisions rank low (not yet cited); for the newest use search_decisions(sort='date_desc'). A free-text topic ranks decisions whose regeste carries the query terms first (...8 params
Find the most-cited decisions for a topic or statute. Authority ranking based on citation graph, so recent decisions rank low (not yet cited); for the newest use search_decisions(sort='date_desc'). A free-text topic ranks decisions whose regeste carries the query terms first (...
articlestringcourtstringdate_fromstringdate_tostringinclude_pinpointbooleanlaw_codestringlimitintegerquerystringanalyze_legal_trendYear-by-year decision counts showing jurisprudence evolution. Use with a statute reference (law_code + article), a text query, or both. Returns yearly counts with visual bar chart. Years are decision years: the latest one or two keep rising as courts publish weeks to months af...6 params
Year-by-year decision counts showing jurisprudence evolution. Use with a statute reference (law_code + article), a text query, or both. Returns yearly counts with visual bar chart. Years are decision years: the latest one or two keep rising as courts publish weeks to months af...
articlestringcourtstringdate_fromstringdate_tostringlaw_codestringquerystringdraft_mock_decisionBuild a research-only mock decision outline from user facts. Combines relevant Swiss case law retrieval with statute references. If possible, enriches statutes with Fedlex text excerpts. IMPORTANT: The tool may return clarification questions (high/medium priority). High-priori...8 params
Build a research-only mock decision outline from user facts. Combines relevant Swiss case law retrieval with statute references. If possible, enriches statutes with Fedlex text excerpts. IMPORTANT: The tool may return clarification questions (high/medium priority). High-priori...
clarificationsarraydeciding_courtstringfacts*stringfedlex_urlsarraylimitintegerpreferred_languagestringde · fr · it · rm · enquestionstringstatute_referencesarrayget_case_briefStructured case brief: regeste, Sachverhalt, key Erwägungen (first 12 only — for orientation, NOT a pinpoint ranking), Dispositiv, statutes, citation authority, related cases. Accepts BGE ref, decision_id, or docket. To pinpoint which Erwägung supports a specific claim, use fi...1 params
Structured case brief: regeste, Sachverhalt, key Erwägungen (first 12 only — for orientation, NOT a pinpoint ranking), Dispositiv, statutes, citation authority, related cases. Accepts BGE ref, decision_id, or docket. To pinpoint which Erwägung supports a specific claim, use fi...
case*stringget_decision_structureStructured decision fields: Sachverhalt (facts), Erwägungen as numbered paragraphs ('1', '1.1', '2.3'), Dispositiv (ruling), Regeste (BGE only). Federal decisions only; for cantonal use get_decision. Returns excerpts; for verbatim full text of one Erwägung, use get_erwaegung....1 params
Structured decision fields: Sachverhalt (facts), Erwägungen as numbered paragraphs ('1', '1.1', '2.3'), Dispositiv (ruling), Regeste (BGE only). Federal decisions only; for cantonal use get_decision. Returns excerpts; for verbatim full text of one Erwägung, use get_erwaegung....
decision_id*stringget_erwaegungVerbatim text of ONE numbered Erwägung — the citable unit in Swiss practice (e.g. 'BGE 136 III 513 E. 2.3'). Use when the user already gave an e_number. If only a claim was given (no e_number): use find_relevant_erwaegung — never guess. Returns text + sibling Erwägung numbers;...2 params
Verbatim text of ONE numbered Erwägung — the citable unit in Swiss practice (e.g. 'BGE 136 III 513 E. 2.3'). Use when the user already gave an e_number. If only a claim was given (no e_number): use find_relevant_erwaegung — never guess. Returns text + sibling Erwägung numbers;...
decision_id*stringe_number*stringfind_relevant_erwaegungFind which Erwägung paragraph(s) match a legal claim. Server-side FTS5+BM25 over per-paragraph text; returns top-k with confidence labels (high/medium/low) and a highlighted_snippet wrapping the matched sentence in <mark>…</mark> (quote it verbatim). When no_match=true or conf...3 params
Find which Erwägung paragraph(s) match a legal claim. Server-side FTS5+BM25 over per-paragraph text; returns top-k with confidence labels (high/medium/low) and a highlighted_snippet wrapping the matched sentence in <mark>…</mark> (quote it verbatim). When no_match=true or conf...
claim*stringdecision_id*stringtop_kintegerget_article_purposeReturn verbatim text from the Federal Council Botschaft (or Erläuterungsbericht) explaining the legislative purpose of a specific article. Joins the verbatim Botschaft corpus (post-2003 BBl publications, Akoma Ntoso XML where available, PDF fallback otherwise) with the article...4 params
Return verbatim text from the Federal Council Botschaft (or Erläuterungsbericht) explaining the legislative purpose of a specific article. Joins the verbatim Botschaft corpus (post-2003 BBl publications, Akoma Ntoso XML where available, PDF fallback otherwise) with the article...
article*stringlanguagestringde · fr · itdefault: demax_paragraphsintegersr_number*stringsearch_botschaftRetrieve and quote the VERBATIM text of federal Materialien: Federal Council Botschaften, Berichte and Stellungnahmen des Bundesrates, parliamentary committee reports, Erlassentwürfe — and the Vernehmlassung documents: Erläuternde Berichte, Vorlagen, Ergebnisberichte, Stellung...6 params
Retrieve and quote the VERBATIM text of federal Materialien: Federal Council Botschaften, Berichte and Stellungnahmen des Bundesrates, parliamentary committee reports, Erlassentwürfe — and the Vernehmlassung documents: Erläuternde Berichte, Vorlagen, Ergebnisberichte, Stellung...
doc_typestringbotschaft · bericht_bundesrat · stellungnahme_bundesrat · bericht_kommission · erlassentwurf · vorentwurf_erlasslanguagestringde · fr · itlimitintegerquery*stringyear_maxintegeryear_minintegerget_article_historyChronological story of a single statute article: current text + every linked Botschaft (enacted + amendments) + leading court interpretations + doctrinal commentary, all ordered by date. Combines statutes.db, materialien.db, reference_graph.db, and ok_commentaries.db into one...4 params
Chronological story of a single statute article: current text + every linked Botschaft (enacted + amendments) + leading court interpretations + doctrinal commentary, all ordered by date. Combines statutes.db, materialien.db, reference_graph.db, and ok_commentaries.db into one...
article*stringlanguagestringde · fr · itdefault: deleading_cases_limitintegersr_number*stringget_regesteGet the official Regeste (head-note) of a Swiss court decision. The Regeste is the court's own formulation of the legal rule established — for BGEs especially, this is the canonical citation target. Often references specific Erwägungen via '(E. 5.2.1)' which can then be retrie...1 params
Get the official Regeste (head-note) of a Swiss court decision. The Regeste is the court's own formulation of the legal rule established — for BGEs especially, this is the canonical citation target. Often references specific Erwägungen via '(E. 5.2.1)' which can then be retrie...
decision_id*stringcheck_claim_supportVerify whether a Swiss court decision actually supports a legal claim. Uses an independent Sonnet judge to compare the claim against verbatim text from the decision (Erwägung if pinpoint given, else Regeste, else first portion of full text). Returns {supports: yes|partial|no|c...3 params
Verify whether a Swiss court decision actually supports a legal claim. Uses an independent Sonnet judge to compare the claim against verbatim text from the decision (Erwägung if pinpoint given, else Regeste, else first portion of full text). Returns {supports: yes|partial|no|c...
claim*stringdecision_id*stringpinpointstringattest_responseMANDATORY FINAL-STEP AUDIT of your draft answer. Checks five hallucination classes: (1) every case citation (BGE/BGer/BVGer/BStGer/BPatGer/MKGE, FR/IT forms) exists and any pinpoint (E. X.Y) resolves to a real Erwägung; (2) every 'Art. X LAW' statute reference resolves; (3) qu...3 params
MANDATORY FINAL-STEP AUDIT of your draft answer. Checks five hallucination classes: (1) every case citation (BGE/BGer/BVGer/BStGer/BPatGer/MKGE, FR/IT forms) exists and any pinpoint (E. X.Y) resolves to a real Erwägung; (2) every 'Art. X LAW' statute reference resolves; (3) qu...
audit_groundingbooleanaudit_quotesbooleandraft_text*stringciteGet the canonical Swiss citation string for a decision reference. CALL THIS BEFORE writing any case citation in your response. Returns ready-to-embed citation_string (DE/FR/IT variants plus a canonical URL) and a verbatim rule_statement. If the reference doesn't exist, returns...3 params
Get the canonical Swiss citation string for a decision reference. CALL THIS BEFORE writing any case citation in your response. Returns ready-to-embed citation_string (DE/FR/IT variants plus a canonical URL) and a verbatim rule_statement. If the reference doesn't exist, returns...
languagestringde · fr · itpinpointstringreference*stringget_doctrineGet statute text + leading cases + doctrinal timeline + Federal Council Botschaft (legislative intent) + scholarly commentary for a Swiss law article or legal concept. ALWAYS USE THIS for questions about the purpose, intent, or ratio legis of a provision — it returns the Botsc...1 params
Get statute text + leading cases + doctrinal timeline + Federal Council Botschaft (legislative intent) + scholarly commentary for a Swiss law article or legal concept. ALWAYS USE THIS for questions about the purpose, intent, or ratio legis of a provision — it returns the Botsc...
query*stringgenerate_exam_questionGenerate a Swiss law exam practice question (Fallbearbeitung) based on a real BGE. Returns a fact pattern (Sachverhalt) from a real court decision and a hidden analysis (applicable statutes, leading case, legal test, correct outcome). Workflow: present the fact_pattern and hin...2 params
Generate a Swiss law exam practice question (Fallbearbeitung) based on a real BGE. Returns a fact pattern (Sachverhalt) from a real court decision and a hidden analysis (applicable statutes, leading case, legal test, correct outcome). Workflow: present the fact_pattern and hin...
exclude_idsarraytopic*stringget_lawAUTHORITATIVE LOOKUP for the text of any Swiss law article — federal OR cantonal. Federal (canton='CH', default): Fedlex mirror, all federal acts (OR, ZGB, StGB, ZPO, StPO, BV, SchKG, BGG, DBG, KVG …) in DE/FR/IT; names match in any language, case, dots or spaces (Cst, OPP2),...7 params
AUTHORITATIVE LOOKUP for the text of any Swiss law article — federal OR cantonal. Federal (canton='CH', default): Fedlex mirror, all federal acts (OR, ZGB, StGB, ZPO, StPO, BV, SchKG, BGG, DBG, KVG …) in DE/FR/IT; names match in any language, case, dots or spaces (Cst, OPP2),...
abbreviationstringarticlestringas_ofstringcantonstringlanguagestringde · fr · itdefault: desr_numberstringsystematic_numberstringsearch_lawsUse this tool to find STATUTE ARTICLES by topic — federal (Fedlex mirror) AND cantonal (all 26 cantons; LexFind with canton=, else a local copy), interleaved. Not for whole laws by name (search_legislation) or court decisions (search_decisions). BM25-ranked per corpus, merged...6 params
Use this tool to find STATUTE ARTICLES by topic — federal (Fedlex mirror) AND cantonal (all 26 cantons; LexFind with canton=, else a local copy), interleaved. Not for whole laws by name (search_legislation) or court decisions (search_decisions). BM25-ranked per corpus, merged...
cantonstringjurisdictionstringall · federal · cantonaldefault: alllanguagestringde · fr · itlimitintegerquery*stringsr_numberstringget_commentaryLook up a commentary on a Swiss federal law article: OnlineKommentar.ch (CC-BY-4.0; BV, OR, ZGB, StGB, StPO, ZPO, DSG, SchKG and more) and, for the BV, OpenLegalCommentary.ch (CC BY-SA 4.0; AI-generated, de/fr/it), which yields to OnlineKommentar where both exist. Without arti...5 params
Look up a commentary on a Swiss federal law article: OnlineKommentar.ch (CC-BY-4.0; BV, OR, ZGB, StGB, StPO, ZPO, DSG, SchKG and more) and, for the BV, OpenLegalCommentary.ch (CC BY-SA 4.0; AI-generated, de/fr/it), which yields to OnlineKommentar where both exist. Without arti...
abbreviationstringarticlestringcantonstringlanguagestringsr_numberstringsearch_commentariesUse this tool ONLY for article-anchored commentary — doctrinal discussion tied to a specific statute article: OnlineKommentar.ch / OpenLegalCommentary.ch (federal law) and the Kommentar zur Schaffhauser Verwaltungsrechtspflege (Schaffhausen VRG and JG; abbreviation 'VRG SH' /...4 params
Use this tool ONLY for article-anchored commentary — doctrinal discussion tied to a specific statute article: OnlineKommentar.ch / OpenLegalCommentary.ch (federal law) and the Kommentar zur Schaffhauser Verwaltungsrechtspflege (Schaffhausen VRG and JG; abbreviation 'VRG SH' /...
abbreviationstringlanguagestringlimitintegerquery*stringsearch_scholarshipUse this tool for open-access SCHOLARSHIP (Lehre): OA journal articles (sui generis et al.), OA legal commentaries (OnlineKommentar, OpenLegalCommentary — this tool SUBSUMES search_commentaries), dissertations and theses from Swiss university repositories, and federal legal-po...9 params
Use this tool for open-access SCHOLARSHIP (Lehre): OA journal articles (sui generis et al.), OA legal commentaries (OnlineKommentar, OpenLegalCommentary — this tool SUBSUMES search_commentaries), dissertations and theses from Swiss university repositories, and federal legal-po...
authorstringlanguagestringlimitintegerpub_typestringquerystringsortstringrelevance · year · year_ascsourcestringyear_maxintegeryear_minintegerget_scholarshipFetch a single OA legal publication (article, dissertation, commentary, etc.) by its pub_id. Returns full metadata + abstract + full text if available + cross-citations to statutes and decisions.1 params
Fetch a single OA legal publication (article, dissertation, commentary, etc.) by its pub_id. Returns full metadata + abstract + full text if available + cross-citations to statutes and decisions.
pub_id*stringfind_scholarship_citing_statuteFind OA legal scholarship that cites a given Swiss statute article. Sourced from article-anchored commentaries (OnlineKommentar / OpenLegalCommentary) PLUS full-text citation extraction across the open-access journal corpus (~90k statute references resolved from 9k full-text r...3 params
Find OA legal scholarship that cites a given Swiss statute article. Sourced from article-anchored commentaries (OnlineKommentar / OpenLegalCommentary) PLUS full-text citation extraction across the open-access journal corpus (~90k statute references resolved from 9k full-text r...
articlestringlimitintegersr_number*stringfind_scholarship_citing_decisionFind OA legal scholarship that cites a specific Swiss court decision. Reverse direction of the scholarship↔caselaw bridge: given a decision_id (e.g. 'bge_BGE_140_III_86' or 'bger_4A_571_2008'), return open-access publications that cite it in their full text. Citations are extr...2 params
Find OA legal scholarship that cites a specific Swiss court decision. Reverse direction of the scholarship↔caselaw bridge: given a decision_id (e.g. 'bge_BGE_140_III_86' or 'bger_4A_571_2008'), return open-access publications that cite it in their full text. Citations are extr...
decision_id*stringlimitintegerlist_scholarship_sourcesList the open-access legal scholarship sources currently indexed, with publication counts by source, type, and language. Use this to discover what corpora are available before searching.
List the open-access legal scholarship sources currently indexed, with publication counts by source, type, and language. Use this to discover what corpora are available before searching.
No parameters. Call it with no arguments.
get_scholarship_full_textFetch the full text of an OA legal publication by pub_id, on demand. Cached after first fetch so subsequent calls are instant. License-gated: only records under CC-BY-* (except CC-BY-ND), OA-Swiss-federal, or OA-author-permitted-reuse are extracted. ND/all-rights-reserved reco...1 params
Fetch the full text of an OA legal publication by pub_id, on demand. Cached after first fetch so subsequent calls are instant. License-gated: only records under CC-BY-* (except CC-BY-ND), OA-Swiss-federal, or OA-author-permitted-reuse are extracted. ND/all-rights-reserved reco...
pub_id*stringget_materialienLook up Materialien for a Swiss federal law article. Returns: `sources` = per-article digests of legislative intent (BV and BGFA only); `botschaft_documents` = the Bundesblatt documents that concern the article (Botschaften, Berichte, Stellungnahmen, committee reports, Erlasse...3 params
Look up Materialien for a Swiss federal law article. Returns: `sources` = per-article digests of legislative intent (BV and BGFA only); `botschaft_documents` = the Bundesblatt documents that concern the article (Botschaften, Berichte, Stellungnahmen, committee reports, Erlasse...
articlestringdoc_typestringbotschaft · bericht_bundesrat · stellungnahme_bundesrat · bericht_kommission · erlassentwurf · vorentwurf_erlasslaw_code*stringsearch_materialienUse this tool for DIGESTED legislative history — per-article intent summaries and key arguments, not verbatim text. COVERAGE IS NARROW: BV and BGFA digests (167 articles) plus BV debate transcripts, and nothing else. For any other law this returns 0 hits, which means 'outside...4 params
Use this tool for DIGESTED legislative history — per-article intent summaries and key arguments, not verbatim text. COVERAGE IS NARROW: BV and BGFA digests (167 articles) plus BV debate transcripts, and nothing else. For any other law this returns 0 hits, which means 'outside...
doc_typestringbotschaft · bericht_bundesrat · stellungnahme_bundesrat · bericht_kommission · erlassentwurf · vorentwurf_erlasslaw_codestringlimitintegerquery*stringsearch_legislationUse this tool to find WHOLE LAWS by name or subject — 33,000+ federal and cantonal enactments from LexFind.ch; the entry point for cantonal questions ('Hundegesetz Bern', 'loi sur l'énergie Vaud'). Not for article-level topic search (search_laws) or the core federal codes (get...7 params
Use this tool to find WHOLE LAWS by name or subject — 33,000+ federal and cantonal enactments from LexFind.ch; the entry point for cantonal questions ('Hundegesetz Bern', 'loi sur l'énergie Vaud'). Not for article-level topic search (search_laws) or the core federal codes (get...
active_onlybooleancantonstringfetch_top_n_textsintegerlanguagestringde · fr · itlimitintegerquery*stringsearch_in_contentbooleanget_legislationRetrieve the FULL TEXT and article list of a specific Swiss law, federal or cantonal, by LexFind ID or SR/systematic number. For federal laws in the Fedlex mirror this is instant (local SQLite). For cantonal laws, the law is downloaded from LexFind as PDF, parsed with PyMuPDF,...5 params
Retrieve the FULL TEXT and article list of a specific Swiss law, federal or cantonal, by LexFind ID or SR/systematic number. For federal laws in the Fedlex mirror this is instant (local SQLite). For cantonal laws, the law is downloaded from LexFind as PDF, parsed with PyMuPDF,...
cantonstringinclude_versionsbooleanlanguagestringde · fr · itdefault: delexfind_idintegersystematic_numberstringbrowse_legislation_changesBrowse recent legislation changes for a canton or federal level. Shows new laws, amendments, and abrogations with dates.2 params
Browse recent legislation changes for a canton or federal level. Shows new laws, amendments, and abrogations with dates.
cantonstringlanguagestringde · fr · itsearch_practiceUse this tool for federal ADMINISTRATIVE PRACTICE (Verwaltungspraxis): Wegleitungen, Kreisschreiben, Weisungen, Rundschreiben — agency guidance, not court decisions. 10,500+ documents: BSV (AHV/IV/EL/EO/FamZ/BVG Wegleitungen, Kreisschreiben, Mitteilungen, every version), OAK B...8 params
Use this tool for federal ADMINISTRATIVE PRACTICE (Verwaltungspraxis): Wegleitungen, Kreisschreiben, Weisungen, Rundschreiben — agency guidance, not court decisions. 10,500+ documents: BSV (AHV/IV/EL/EO/FamZ/BVG Wegleitungen, Kreisschreiben, Mitteilungen, every version), OAK B...
cantonstringZH · BE · LU · UR · SZ · OWdoc_typestringwegleitung · rundschreiben · vollzugshilfe · kreisschreiben · rundschreiben_anhang · mwst_branchen_infoinclude_supersededbooleanissuing_authoritystringFINMA · SECO · ESTV · BAFU · SEM · BSVlanguagestringlimitintegerquery*stringsourcestringfinma_rs · seco_arg · bafu_vollzug · estv_ks · estv_mwst · sem_weisungenget_practiceRetrieve a single federal administrative-practice document by its doc_id (e.g. 'estv_ks_ks_nr_28', 'sem_weisungen_weisungen-aug-d', 'bsv_weisungen_6930_v20_de', 'seco_alv_avig_ale_de', 'un_uhri_3f3a9db7-5e9a-416f-ad28-8c8f97a8322c_en'). Returns the body text, title, date, issu...3 params
Retrieve a single federal administrative-practice document by its doc_id (e.g. 'estv_ks_ks_nr_28', 'sem_weisungen_weisungen-aug-d', 'bsv_weisungen_6930_v20_de', 'seco_alv_avig_ale_de', 'un_uhri_3f3a9db7-5e9a-416f-ad28-8c8f97a8322c_en'). Returns the body text, title, date, issu...
doc_id*stringmax_charsintegeroffsetintegerSponsors
Readme
OpenCaseLaw
Open Swiss case law and legislation for legal research and AI.
1M+ decisions · all 26 cantons · 1875–today · citation graph · MCP + REST + CLI + Parquet · CC0 data · MIT code
Try the search · Chat with your AI · Automate research · Download the dataset · API documentation
What you can do
- Find Swiss decisions across federal and cantonal courts, in German, French and Italian.
- Trace citations between cases and identify the leading decisions on a question.
- Query case law and legislation from Claude, ChatGPT-compatible clients, or any MCP client.
- Save repeatable research scripts, inspect citation resolution, and preserve selected evidence with the research CLI.
- Download the corpus for legal NLP, retrieval and graph research.
Connect in 30 seconds
{
"mcpServers": {
"opencaselaw": {
"url": "https://mcp.opencaselaw.ch/mcp"
}
}
}
Details
- Repository
- github.com/jonashertner/caselaw-repo-1
- Website
- opencaselaw.ch
- Transport
- HTTP, SSE
- Registry
- MCP registry, active
- Tools verified
- Nov 6, 2026