A side-by-side look at the Caselaw and Swiss Case Law MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Caselaw for legal work; choose Swiss Case Law for legal over a hosted endpoint. You can also run both side by side in one mcpServers block.
caselaw_search, caselaw_search_questions, caselaw_lookup_citation.search, fetch, search_decisions.Rows where the two servers differ are marked.
| Spec | C Caselaw | |
|---|---|---|
| Category | Legal | Legal |
| Quality signal | 50/100 · Good | 61/100 · Good |
| Install command | Not confirmed yet | Confirmed |
| Transport | — | Remote HTTP/SSE |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Not declared |
| Required env vars | None listed | None listed |
| Verified owner | Community listing |
caselaw_searchFull-text search of Pakistani judgments (Supreme Court, High Courts, Federal Shariat Court
and tribunals, 1970 onward), with optional filters by court, judge, law report and year.
Ranking follows how lawyers research: nearness to the legal point decides which cases are
returned; among comparably-near cases, more senior court > larger bench > more recent >
more cited. For the current state of the law, add year_from (e.g. 2025); use sort='court'
for the most authoritative first.
With no query, the filters list judgments newest first - e.g. court='Supreme Court' gives the
latest Supreme Court judgments, journal='PLD' with year_from=year_to=2024 gives that volume,
and sort='recently_added' alone shows what was added to the site most recently.
Returns cases with id, title, citation, court, year, outcome and the public URL. For an exact
report citation use caselaw_lookup_citation. To read a case, pass its id to caselaw_get_case.
caselaw_search_questionsFind judgments by the QUESTION they settle, rather than by words they contain.
Every judgment summary on this corpus records the questions that judgment actually decides — e.g.
"Does delay in lodging the FIR by itself entitle the accused to bail?" This searches those
questions, so it matches the shape a legal problem arrives in rather than the vocabulary a
1987 bench happened to use.
COVERAGE IS PARTIAL: only some judgments have a summary with questions yet (the response's
`coverage_note` gives the current live ratio, which keeps growing). An empty result means no
*summarised* judgment matched — it does NOT mean no such judgment exists. Fall back to
caselaw_search, which covers the whole corpus.
The questions are prepared from the judgment text. They are a finding aid, not a
holding: cite the judgment, never the question. Pass an id to caselaw_get_case to read it.
caselaw_lookup_citationFind the judgment(s) at an exact law-report citation.
Example: journal='PLD', year=1995, page=34 → PLD 1995 Supreme Court 34.
Omit page to list everything reported in that journal+year. Returns the same case shape
as caselaw_search.
caselaw_get_caseFetch one judgment by id.
section='summary' (default) returns metadata + the headnote (plain-language summary, the
laws/provisions referred, and keyword tags) — read this first to judge relevance cheaply.
section='full' additionally returns the judgment body text (capped at ~40,000 chars; the
response flags body_truncated/body_chars_total when longer).
Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
No confirmed install command for Caselaw yet — follow the setup steps linked from its listing page rather than a guessed package name.
{
"mcpServers": {
"swiss-case-law": {
"url": "https://mcp.opencaselaw.ch"
}
}
}
| GitHub stars | — | 72 |
|---|
| Directory activity | 0 views 0 installs 0 upvotes | 1 views 0 installs 0 upvotes |
|---|
| Tools | 7 | 42 |
|---|
| Full listing | View Caselaw | View Swiss Case Law |
|---|
caselaw_get_citationsWalk the citation graph FORWARD: list the in-corpus cases that THIS judgment cites
(the precedents it relied on). Combine with caselaw_get_cited_by to traverse precedent
backward and forward until a research question is resolved.
Most useful on RECENT judgments: a 2024-25 case usually has nobody citing it yet, but its
own citation list is a curated map of the established authority on the point.
caselaw_get_cited_byWalk the citation graph BACKWARD: list later cases that cite THIS judgment
(how it was subsequently treated — followed, distinguished, relied upon). Returns newest first.
Most useful on OLDER or landmark judgments: it shows whether the case is still followed and
where the principle has been applied since. A leading case can have hundreds of citing cases.
caselaw_most_citedList the most-cited (landmark) judgments in the corpus, ranked by how many other cases
cite them. A good entry point for the leading authorities on Pakistani law.
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 prefer `search_decisions`, which exposes filters (court, canton, date, language) and richer metadata.fetchMinimal 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 resolves). General clients should prefer `get_decision`.search_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 lookup (6B_1234/2025) and column-scoped search (regeste:keyword). Filter by court, canton, language, date range, chamber. Results are relevance-ranked and enriched with citation counts, statute references and is_leading_case. Use offset to page. Most recent decisions: empty query + sort='date_desc' + court filter. Not for statutes (search_laws), commentary (search_scholarship), or administrative guidance (search_practice).get_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.get_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 search result: it is the difference between one tool call and ten, which matters because clients cap tool calls per turn. full_text defaults to FALSE here (unlike get_decision) because ten full judgments exceed connector response limits; set it true only for a short id list, and each text is excerpted with the cut disclosed. Ids not found are reported individually — the rest of the batch still returns.list_courtsList all available courts with decision counts, date ranges, and language coverage. Use this to discover what data is available.get_statisticsGet aggregate statistics about the dataset. Optionally filter by court, canton, or year.find_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.find_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 decision headers.find_leading_casesFind the most-cited decisions for a topic or statute. Authority ranking based on citation graph; a free-text topic ranks decisions whose regeste carries the query terms first (`regeste_match`: share of terms found, null without a regeste). 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 (surface it as 'E. <e_number>' when confidence is high or medium). Each result also carries citation_string_{de,fr,it} + canonical_url + is_leading_case + citation_count for ready-to-quote Swiss-format citations. A statute reference inside `query` ("Art. 29 BV") is used as the statute filter. When the query excludes every candidate, the page is relaxed to ranked OR and flagged `filters_relaxed: true` with a `note` — nearest neighbours, not on-point authority.analyze_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.draft_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-priority clarifications must be answered (via the clarifications parameter) before the tool will provide a conclusion. Call again with clarifications to get the full analysis.