Node.js/TypeScript MCP server for Atlassian Confluence. Provides tools enabling AI systems (LLMs) to list/get spaces & pages (content
Swiss Case Law is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
956k Swiss court decisions: full-text search, citation graph, statute lookup (DE/FR/IT)
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http swiss-case-law-mcp https://mcp.opencaselaw.ch/
# 2 — ask your agent for something these tools do
# search, fetch, search_decisions and 39 more
Swiss Case Law costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, read from the address; if the publisher says otherwise, swap that one word.
claude mcp add --scope user --transport http swiss-case-law-mcp https://mcp.opencaselaw.ch/Reconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
42 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
ChatGPT Deep Research compatibility tool. 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 prefer search_decisions, which exposes filters (court, canton, date, language) and richer metadata.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Natural-language or keyword query. |
| limit | integer | no | Max results (default 10, max 50). |
ChatGPT Deep Research compatibility tool. 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 resolves). General clients should prefer get_decision.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| id | string | yes | Decision id from a search result (decision_id, docket, or BGE reference). |
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 lookup (6B_1234/2025) and column-scoped search (regeste:keyword). Filter by court, canton, language, date range, chamber. Res
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | no | Search query. Best results: 3-8 precise terms, one search per legal issue — never paste document text. Max 4,000 chars; input over 500 chars is auto-condensed to its citations + key terms. Examples: - |
| court | string | no | Filter by court code. Federal: bger, bge, bvger, bstger, bpatger, mkg. European Court of Human Rights: bge_egmr (BGE-published DE translations, Swiss cases), hudoc_ch (HUDOC Switzerland-tagged), ecthr |
| canton | string | no | Filter by canton (CH for federal, ZH, BE, GE, etc.) |
| language | string | no | OPTIONAL filter. Restricts results to ONE language. Omit (recommended default) to search across all languages — Swiss federal decisions are issued in DE, FR, or IT depending on the case, so a language |
| date_from | string | no | Start date (YYYY-MM-DD) |
| date_to | string | no | End date (YYYY-MM-DD) |
| chamber | string | no | Filter by chamber/division (substring match). Examples: 'Abteilung V' (BVGer asylum), 'Zivilrechtliche', 'CASSO', 'Strafrechtliche' |
| marked_for_publication | boolean | no | If true, return only Federal Supreme Court rulings flagged for the official BGE collection (the Neuheiten '*' marker, 'für die Publikation vorgesehen') — future leading cases, flagged before the BGE n |
| limit | integer | no | Max results to return (max 2000). Omit to use default of 50. Do not set low values like 5 or 10 unless the user explicitly asked for fewer results. |
| offset | integer | no | Skip this many results (for pagination). Default 0. |
| sort | string | no | Sort order: 'relevance' (default for FTS), 'date_desc', 'date_asc'. |
| fields | string | no | Response detail level: 'full' (default) includes snippet/regeste/URL, 'compact' returns only docket, date, court, language, decision_id. |
| include_pinpoint | boolean | no | Attach a pinpoint Erwägung citation to the top results when a confident match exists (BM25 over the per-decision Erwägungen FTS5 index, gap-confidence ≥ medium). Defaults true; set false to skip the p |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| decision_id | string | yes | Decision ID, docket number, or partial docket |
| full_text | boolean | no | Include full text in response (default true). Set false to get only metadata and regeste. |
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 search result: it is the difference between one tool call and ten, which matters because clients cap tool calls per turn.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| decision_ids | array | yes | Decision ids, docket numbers or BGE references (e.g. ['bge_BGE_140_III_86', '6B_1234/2025']). |
| full_text | boolean | no | Include an excerpt of each decision's full text (default false — Regeste + metadata only). |
| max_chars_per_decision | integer | no | Per-decision text cap when full_text is true (default 20,000; total response stays under connector limits). |
List all available courts with decision counts, date ranges, and language coverage. Use this to discover what data is available.
No parameter schema on file.
Get aggregate statistics about the dataset. Optionally filter by court, canton, or year.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| court | string | no | Filter by court code |
| canton | string | no | Filter by canton code |
| year | integer | no | Filter by year |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| decision_id | string | yes | Decision ID (e.g., bger_6B_1_2025) |
| direction | string | no | Citation direction: 'both' (default), 'outgoing', or 'incoming' |
| min_confidence | number | no | Minimum confidence score for resolved citations (0-1, default 0.3) |
| limit | integer | no | Max citations per direction per page (default 50, max 200) |
| offset | integer | no | Pagination offset per direction (default 0). The response reports *_total and *_has_more; when has_more is true, re-query with offset=next_offset to retrieve the rest (heavily-cited leading decisions |
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 decision headers.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| decision_id | string | yes | Decision ID (e.g., bger_6B_1_2025) |
| min_confidence | number | no | Minimum confidence score (0-1, default 0.3) |
Find the most-cited decisions for a topic or statute. Authority ranking based on citation graph. Filter by statute (law_code + article), topic query, court, and date range. Top-3 results auto-attach a pinpoint field {e_number, matched_sentence, confidence, url, score, source} anchoring the most-relevant Erwägung — see system instructions U3 for how to surface it. Each result also carries citatio
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | no | Optional text query to filter by topic (FTS search) |
| law_code | string | no | Optional law code (e.g., BV, OR, ZGB, EMRK, StGB) |
| article | string | no | Optional article number (requires law_code) |
| court | string | no | Optional court filter (e.g., bger, bge, bvger) |
| date_from | string | no | Optional start date (YYYY-MM-DD) |
| date_to | string | no | Optional end date (YYYY-MM-DD) |
| limit | integer | no | Max results (default 20, max 100) |
| include_pinpoint | boolean | no | Attach a pinpoint Erwägung citation to the top 3 leading cases when a confident match exists. Defaults true. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | no | Optional text query (FTS search) |
| law_code | string | no | Optional law code (e.g., BV, OR, EMRK). Requires article. |
| article | string | no | Article number (requires law_code) |
| court | string | no | Optional court filter |
| date_from | string | no | Optional start date (YYYY-MM-DD) |
| date_to | string | no | Optional end date (YYYY-MM-DD) |
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-priority clarifications must be answered (via the clarifications parameter) before the tool will provide a conclusion. Call again
| Parameter | Type | Required | Notes |
|---|---|---|---|
| facts | string | yes | Detailed facts of the hypothetical or real case. |
| question | string | no | Optional legal question to decide. |
| preferred_language | string | no | Output/analysis language preference. |
| deciding_court | string | no | Hypothetical deciding court (e.g., bger, bvger). |
| statute_references | array | no | Optional explicit statute list. Each item: {law_code, article, paragraph?}. |
| fedlex_urls | array | no | Optional Fedlex URLs used to fetch statute text. Useful when no built-in URL mapping is available. |
| clarifications | array | no | Optional answers to prior clarification questions. Each item: {id, answer}. The tool withholds conclusion until high-priority clarifications are answered. |
| limit | integer | no | Number of case-law exemplars (default 8, max 20). |
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 find_relevant_erwaegung — never guess from key_erwaegungen alone.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| case | string | yes | Any case reference: BGE ref ('BGE 133 III 121', '133 III 121'), decision_id ('bge_BGE_133_III_121'), or docket number. |
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. PINPOINT POLICY: never guess. If user gave an e_number → verify with get_erwaegung. If user gave only a claim → use find_re
| Parameter | Type | Required | Notes |
|---|---|---|---|
| decision_id | string | yes | decision_id ('bger_5A_42_2026', 'bge_140 III 86'), BGE reference, or docket number. |
Verbatim text of ONE numbered Erwägung — the citable unit in Swiss practice (e.g. 'BGE 140 III 86 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. e_number: '1', '2.3', '5.2.1', …
| Parameter | Type | Required | Notes |
|---|---|---|---|
| decision_id | string | yes | decision_id, BGE reference, or docket number. |
| e_number | string | yes | Erwägung number to retrieve (e.g. '2', '2.3', '5.2.1'). Leading 'E.' is stripped if present. |
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 confidence=low, do NOT cite any Erwägung — report no_match. Federal decisions only. Replaces the 'always-E.-3.1' guessing patte
| Parameter | Type | Required | Notes |
|---|---|---|---|
| decision_id | string | yes | decision_id, BGE reference, or docket number. Must be a federal decision (structured Erwägungen). |
| claim | string | yes | Free-text legal claim or proposition the user wants to verify against the decision. The more specific, the higher the confidence. |
| top_k | integer | no | Number of top matches to return (default 3, max 10). |
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-Botschaft link table. Returns one entry per source — original Botschaft + any amendment Botschaften. All paragraphs are ve
| Parameter | Type | Required | Notes |
|---|---|---|---|
| sr_number | string | yes | SR (Systematische Rechtssammlung) number of the law, e.g. '220' for OR (Obligationenrecht), '101' for BV, '311.0' for StGB. |
| article | string | yes | Article number, e.g. '41' for Art. 41 OR. Letter-suffixed forms like '41a' supported. |
| language | string | no | Botschaft language (defaults to German). |
| max_paragraphs | integer | no | Maximum paragraphs per Botschaft (default 8, max 20). |
Use this tool to retrieve and quote the VERBATIM text of Federal Council Botschaften (legislative messages). Where get_article_purpose answers 'why does Art. X exist?', this tool answers 'show me every Botschaft passage about TOPIC X'. Useful when the caller doesn't know which SR/article to ask for — e.g. starting from a concept like 'Vaterschaftsurlaub' or 'Klimaschutz'. Returns ranked passages (
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Search terms. FTS5 syntax supported — use quoted phrases for exact matches ('"Vaterschaftsurlaub"'), Boolean operators ('Klimaschutz AND Kanton'), and prefix queries ('Versicherungs*'). Stopwords are |
| language | string | no | OPTIONAL — only set when the user explicitly limits the search to one language. Leave unset to search the corpus the caller has (currently de only). Setting this without the user asking will hide all |
| year_min | integer | no | Earliest publication year of the source Botschaft (inclusive) — scope legislative history to an era. |
| year_max | integer | no | Latest publication year of the source Botschaft (inclusive). |
| limit | integer | no | Max passages to return (default 20, max 50). |
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 timeline. USE THIS when the user asks 'how did Art. X evolve' or 'what's the full picture on Art. X' — a single call return
| Parameter | Type | Required | Notes |
|---|---|---|---|
| sr_number | string | yes | SR number of the federal law, e.g. '220' for OR. |
| article | string | yes | Article number, e.g. '41' for Art. 41 OR. |
| language | string | no | — |
| leading_cases_limit | integer | no | Max leading cases (default 5, max 15). |
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 retrieved verbatim with get_erwaegung. USE THIS when the user asks 'what does this case stand for' or 'what is the rule from this
| Parameter | Type | Required | Notes |
|---|---|---|---|
| decision_id | string | yes | decision_id, BGE reference, or docket number. |
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|contradicts|unrelated, confidence, supporting_excerpt, qualifying_excerpt, reasoning}. CALL THIS for any claim where citing
| Parameter | Type | Required | Notes |
|---|---|---|---|
| claim | string | yes | The legal proposition you want to verify (e.g., 'A landlord is liable for fire-police violations under Art. 256 OR.'). |
| decision_id | string | yes | Decision you intend to cite as authority. |
| pinpoint | string | no | Optional Erwägung number ('2.3'). If given, only that paragraph is judged; more precise verdict. |
MANDATORY FINAL-STEP AUDIT of your draft answer. Checks five hallucination classes: (1) every case citation (BGE/BGer/BVGer/BStGer/BPatGer/MKGE and FR/IT forms) exists in the corpus and any pinpoint (E. X.Y / consid. X.Y) resolves to a real Erwägung; (2) every 'Art. X LAW' statute reference resolves (known abbreviation, existing article); (3) every quoted passage of 30+ chars appears verbatim in a
| Parameter | Type | Required | Notes |
|---|---|---|---|
| draft_text | string | yes | Your draft response text. |
| audit_grounding | boolean | no | When true, additionally runs the LLM-judge grounding rail: for each verified case citation in the draft, the preceding claim sentence is checked against the cited Erwägung / Regeste / text by an indep |
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 exists=false plus close_matches for typo-correction — DO NOT guess or construct citations yourself; if you get exists=fals
| Parameter | Type | Required | Notes |
|---|---|---|---|
| reference | string | yes | Any form of Swiss case reference: decision_id, BGE ref, or docket number. E.g. 'BGE 140 III 86', '4A_747/2012', 'bger_4A_747_2012', 'MKGE 16 Nr. 1'. |
| pinpoint | string | no | Optional Erwägung/consid. number ('2.3', '5.2.1'). Included in the citation and as a #e-2-3 URL anchor. |
| language | string | no | Primary language for the citation_string field (all three variants always returned). Default: de. |
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 Botschaft (Materialien) alongside the case law. Input: statute reference ('Art. 41 OR', 'Art. 8 BV') or legal concept. Returns:
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Statute article ('Art. 41 OR', 'Art. 8 BV') or legal concept ('Tierhalterhaftung', 'culpa in contrahendo'). German preferred. |
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 hint to the student, wait for their analysis, then reveal the analysis field and compare. The student can then call get_case_b
| Parameter | Type | Required | Notes |
|---|---|---|---|
| topic | string | yes | Legal area, statute, or concept. Examples: 'Haftpflichtrecht', 'Art. 41 OR', 'Mietrecht', 'Strafrecht', 'Vertragsrecht'. |
| exclude_ids | array | no | decision_ids already used in this session — avoids repetition. |
AUTHORITATIVE LOOKUP for the current text of any Swiss law article — federal OR cantonal. Served from two local mirrors: • Federal (canton='CH', default): Fedlex mirror — core codes (OR, ZGB, StGB, StPO, ZPO, BV, SchKG, BGG/LTF, DBG, IPRG, AIG, BVG, KVG, AsylG, BGFA and dozens more), all three official languages (DE/FR/IT). • Cantonal: LexFind mirror — every cantonal statute and ordinance from
| Parameter | Type | Required | Notes |
|---|---|---|---|
| sr_number | string | no | Statute number. Federal: SR number ('210'=ZGB, '220'=OR, '101'=BV). Cantonal: the canton's systematic number — e.g. ZH 'LS' number '554.5' (Hundegesetz), '550.1' (Polizeigesetz). The `systematic_numbe |
| systematic_number | string | no | Alias for sr_number — the cantonal-friendly name (LS / systematic number), matching get_legislation. Either field works. |
| abbreviation | string | no | Law abbreviation (federal only for now: 'BV', 'OR', 'ZGB', 'StGB', 'BGG', etc.). Cantonal laws rarely have canonical abbreviations — use sr_number or discover via search_laws first. |
| article | string | no | Article number to retrieve (e.g., '8', '41a', '1bis'). For cantonal § laws (ZH, SH, AI, AR, BS, BL, AG), pass the § number without the § sign. If omitted, returns the full article list. |
| language | string | no | Language for article text: de, fr, it. For cantonal laws, must match the canton's publication language (fr for FR/GE/JU/NE/VD, it for TI, de otherwise). |
| canton | string | no | Two-letter canton code (ZH, BE, LU, …) or 'CH' for federal. Default 'CH' preserves backward compat. |
| as_of | string | no | ISO date (e.g. '2020-01-01') to retrieve a HISTORICAL version of the law from Fedlex. Use this to see what a provision said before it was amended. XML versions available from ~2021; older versions may |
Use this tool to find STATUTE ARTICLES by topic — full-text over every locally indexed article, federal (Fedlex mirror) AND cantonal (LexFind mirror, all 26 cantons), interleaved. Not for whole laws by name (search_legislation) or court decisions (search_decisions). BM25-ranked per corpus, merged by interleaving so each response surfaces both jurisdictions. Returns ranked snippets with article num
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Search query. Explicit syntax is supported and operators must be UPPERCASE: 'Miete OR Pacht', 'Kündigung AND Frist' (AND with an absent term returns 0), '"exakte Wortfolge"' for phrases, 'Verfahr*' fo |
| sr_number | string | no | Restrict search to a specific federal law by SR number. Implies jurisdiction='federal'. |
| canton | string | no | Two-letter canton code (ZH, BE, …) to restrict to one canton's statute corpus. 'CH' → federal only. Omit to search every jurisdiction. |
| jurisdiction | string | no | Explicit scope override: 'all' (default), 'federal', or 'cantonal'. Most callers should omit this and let sr_number/canton drive the scope. |
| language | string | no | OPTIONAL filter. Restricts results to ONE language. Omit (recommended default) to search across all three official languages — most laws exist in DE/FR/IT and a filter silently hides valid hits in the |
| limit | integer | no | Maximum merged results (1-50). |
Look up a scholarly legal commentary from OnlineKommentar.ch (CC-BY-4.0) for a Swiss federal law article. Without article: lists available commentaries for that law. With article: returns the full commentary text, authors, and citation. Covers 19 Swiss laws including BV, OR, ZGB, StGB, StPO, ZPO, DSG, SchKG, and more.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| abbreviation | string | no | Law abbreviation (e.g., 'OR', 'BV', 'ZGB', 'StGB'). Preferred over sr_number. |
| sr_number | string | no | SR number of the law (e.g., '220' for OR). Use if abbreviation unknown. |
| article | string | no | Article number (e.g., '41', '8'). Omit to list available articles. |
| language | string | no | Preferred language (de, en, fr, it). Falls back to de if unavailable. |
Use this tool ONLY for article-anchored commentary from OnlineKommentar.ch — doctrinal discussion tied to a specific statute article. For the full OA scholarship corpus (which includes OnlineKommentar) use search_scholarship. Searches commentary text, titles, and article numbers. Returns ranked results with snippets, authors, and links. Useful for finding doctrinal discussion of a legal concept ac
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Search query (supports FTS5 syntax: quotes for phrases, OR for alternatives). |
| abbreviation | string | no | Filter by law abbreviation (e.g., 'OR', 'StGB'). |
| language | string | no | OPTIONAL filter (de/fr/it/en). Omit (recommended default) to search across all languages. Set ONLY when the user explicitly asks for one-language results; do NOT auto-apply based on conversation langu |
| limit | integer | no | Maximum results (1-50, default 10). |
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-policy reports. Returns ranked results with snippets, authors, DOI, and direct links. Filters by source, publication type, la
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | no | Topic query (FTS5 syntax: quotes for phrases, OR for alternatives). Optional — may be omitted when an author (or other) filter is given, which returns a bibliographic browse instead of a topical sea |
| source | string | no | Filter by source slug (e.g. 'sui_generis', 'onlinekommentar', 'openlegalcommentary', 'zora_law'). |
| pub_type | string | no | Filter by type: 'article', 'commentary', 'dissertation', 'book', 'chapter', 'master_thesis', 'working_paper', 'report'. |
| language | string | no | OPTIONAL filter by language (de/fr/it/en). Omit to search across all languages (recommended — the corpus is trilingual). |
| year_min | integer | no | Earliest publication year. |
| year_max | integer | no | Latest publication year. |
| author | string | no | Filter by author (substring match on the authors field). May be used WITHOUT a query for a pure bibliographic browse (all works by an author). |
| sort | string | no | Order: 'relevance' (BM25, default for a topic query), 'year' (newest first), 'year_asc' (oldest first). With no query the default is newest-first. |
| limit | integer | no | Maximum results (1-50, default 10). |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| pub_id | string | yes | Canonical pub_id, e.g. 'sui_generis:article-1382' or 'onlinekommentar:<uuid>'. |
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 records).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| sr_number | string | yes | Swiss SR number (e.g. '220' for OR, '210' for ZGB). |
| article | string | no | Article number (e.g. '41'). Omit for all articles of the law. |
| limit | integer | no | Maximum results (1-100, default 20). |
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 extracted deterministically by regex + lookup against the canonical decision corpus, so resolved citations are always to decisi
| Parameter | Type | Required | Notes |
|---|---|---|---|
| decision_id | string | yes | Canonical decision_id (e.g. 'bge_BGE_140_III_86', 'bger_4A_571_2008'). |
| limit | integer | no | Maximum results (1-100, default 20). |
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 parameter schema on file.
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 records return the upstream URL only. Use this when search_scholarship or get_scholarship returns only abstract/title and you n
| Parameter | Type | Required | Notes |
|---|---|---|---|
| pub_id | string | yes | Canonical pub_id (from search_scholarship results). |
Look up Materialien for a Swiss federal law article. Returns up to three things: sources = per-article digests of legislative intent (BV and BGFA only — 167 articles); botschaft_documents = the Federal Council messages that concern this article, with BBl citation, title and Fedlex link (620 SR numbers, 19,809 article links); amendment_refs = the AS/BBl publication locators from the statute's
| Parameter | Type | Required | Notes |
|---|---|---|---|
| law_code | string | yes | Law abbreviation (e.g., 'BV', 'BGFA', 'OR', 'StGB'). |
| article | string | no | Article number (e.g., '1', '8', '10a'). Omit to get all articles. |
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 this index', not 'no materials exist'. Prefer search_botschaft, which covers all 6,154 Federal Council messages verbatim, o
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Search query (natural language or FTS5 syntax). |
| law_code | string | no | Filter by law abbreviation (e.g., 'BGFA'). |
| limit | integer | no | Maximum results (1-50, default 10). |
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_law is instant there). All 26 cantons + federal, DE/FR/IT. Also the entry point for municipal regulations and federal ordi
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Search query in natural language or keywords. Examples: 'Hundegesetz', 'loi sur l'énergie', 'Mietrecht Kanton Zürich', 'Baugesetz'. |
| canton | string | no | Two-letter canton code (ZH, BE, LU, UR, SZ, OW, NW, GL, ZG, FR, SO, BS, BL, SH, AR, AI, SG, GR, AG, TG, TI, VD, VS, NE, GE, JU) or 'CH' for federal. Omit to search all 26 cantons + federal at once. |
| active_only | boolean | no | Only show laws currently in force (default true). |
| search_in_content | boolean | no | Also search inside the law text, not just titles and keywords (slower). |
| language | string | no | OPTIONAL filter. Restricts results to ONE language version. Omit (recommended default) to fan out across DE/FR/IT and merge results — LexFind's API is single-language per request, so omission triggers |
| limit | integer | no | Max results (1-60, default 20). |
| fetch_top_n_texts | integer | no | If > 0, download + parse the full text of the top N results (max 10) and return each with full_text_preview, article_count, and sample_articles. Use 1-3 for natural-language questions so you can answe |
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, and segmented into articles (cached 30 days). Returns: title, entity, articles (article_num, heading, text), full_text, ar
| Parameter | Type | Required | Notes |
|---|---|---|---|
| lexfind_id | integer | no | LexFind ID of the law (from search_legislation results). |
| systematic_number | string | no | SR/systematic number (e.g., '220' for OR, '210' for ZGB). Used when lexfind_id not available. |
| canton | string | no | Canton for systematic number lookup (default CH). Required for cantonal laws. |
| include_versions | boolean | no | Include full version history (default false). |
| language | string | no | Result language: de, fr, it. |
Browse recent legislation changes for a canton or federal level. Shows new laws, amendments, and abrogations with dates.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| canton | string | no | Canton code (CH for federal, ZH, BE, etc.). Default: CH. |
| language | string | no | OPTIONAL filter. Restricts results to ONE language version. Omit (recommended default) to fan out across DE/FR/IT and merge results — LexFind's API is single-language per request, so omission triggers |
Use this tool when the question involves federal ADMINISTRATIVE PRACTICE (Verwaltungspraxis): Wegleitungen, Kreisschreiben, MWST-Infos, Weisungen, Rundschreiben, Vollzugshilfen — interpretive agency guidance, not court decisions. 3,062 documents: FINMA circulars, in force and superseded, every published version (1,133, DE/FR/IT/EN); SECO commentary on the Arbeitsgesetz and ArGV 1-5, article by art
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Search query (FTS5 syntax: quotes for phrases, OR for alternatives, NEAR(term1 term2, N) for proximity). |
| source | string | no | Filter by source key. finma_rs (1,133), seco_arg (1,102), bafu_vollzug (297), estv_ks (285), estv_mwst (153), sem_weisungen (92). |
| issuing_authority | string | no | Filter by authority. FINMA (1,133), SECO (1,102), ESTV (438), BAFU (297), SEM (92). |
| doc_type | string | no | Filter by document type. wegleitung (1,102), rundschreiben (1,017), vollzugshilfe (297), kreisschreiben (285), rundschreiben_anhang (132 — FINMA circular annexes: audit strategies, reporting forms), m |
| language | string | no | OPTIONAL filter (de/fr/it). Omit (recommended default) to search across all languages. Set ONLY when the user explicitly asks for one-language results. |
| limit | integer | no | Maximum results (1-50, default 10). |
Retrieve a single federal administrative-practice document by its doc_id (e.g. 'estv_ks_ks_nr_28', 'sem_weisungen_weisungen-aug-d'). Returns full body text, title, date, issuing authority, and PDF URL. Use search_practice first to discover the doc_id.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| doc_id | string | yes | Document identifier returned by search_practice. |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Swiss Case Law or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
This listing is an address its publisher runs, and you connect to it directly — this marketplace is not in the path. The scanner reads packages and public source, and an address is neither. So there is no grade — not a withheld one, an unmeasured one.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 1.27.0.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Swiss Case Law can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.