Swiss case law MCP server, free Swiss court decisions API no key
A free, independently run research service for Swiss law: one remote MCP server with 42 read-only tools and a matching REST API search over a million published Swiss court decisions, federal and cantonal statutes, legislative materials and commentary. No key and no sign-up; the decision data is CC0 and every result carries a ready-made citation and a link back to the court’s own page.
Verified factsChecked 2026-10-30
| Price | Free. The REST API page says the research endpoints are free, need no API key and support CORS. A separate Word add-in has a Pro tier (CHF 5 a month) for its AI tools; the MCP server and REST API need no plan.3 [Verified 2026-10-30] |
| API key / auth | None. The README says “No sign-up, no API key, read-only.” Our keyless MCP initialize, tools/list (42 tools) and search_decisions calls and our keyless GET /api/decisions all succeeded on 2026-10-30.5 [Verified 2026-10-30] |
| Rate limit | Not published as a number. The MCP page says the server uses nginx rate limiting, and the OpenAPI spec says the REST tool endpoints share the same rate limits, but no requests-per-minute or daily figure is given and our responses carried no rate-limit headers.4 [Verified 2026-10-30] |
| License / terms | Decision data is CC0 1.0 (public domain) and the code is MIT. Commentary excerpts are CC BY 4.0 (OnlineKommentar.ch), and one commentary text is CC BY-SA. Attribution is not required but appreciated: “Source: OpenCaseLaw.ch”. We found no separate terms of service for the API.1 [Verified 2026-10-30] |
| Coverage | 1,053,732 decisions on 2026-10-30 by GET /api/statistics, from 1875 to today, mostly in French and German with some Italian and English. The OpenAPI spec also lists 5,525 federal laws and 15,600 cantonal acts.6 [Verified 2026-10-30] |
| MCP tools | 42 tools in public mode (tools/list on 2026-10-30), over Streamable HTTP at /mcp and SSE at /sse; the server reported itself as swiss-caselaw 1.27.0.7 [Verified 2026-10-30] |
| Search limits | Relevance search ranks a bounded candidate pool, so total can be a lower bound (total_is_lower_bound) and running out of pages does not prove you found everything; use filters or the Parquet dataset for complete enumeration.3 [Verified 2026-10-30] |
FeaturesChecked 2026-10-30
| Capability | Value |
|---|---|
| StatusNo beta, GA or version label on the site or API docs and no SLA; the MCP server reports version 1.27.0. Run by one person. | Not published1 [Not published by vendor: checked 2026-10-30 on https://opencaselaw.ch/ueber/] |
| API key requiredNo key. Keyless MCP initialize, tools/list and search_decisions, and a keyless GET /api/decisions, all succeeded on 2026-10-30. | No2 [Verified 2026-10-30 by test request to https://mcp.opencaselaw.ch/api/decisions?q=Mietzins] |
| Free tierFree. The REST API page says the research endpoints are free and need no API key; only the separate Word add-in has a paid Pro tier. | Yes3 [Verified 2026-10-30 on https://opencaselaw.ch/api/] |
| Rate limitThe MCP page says nginx rate limiting is used and the OpenAPI spec says REST tools share the same limits, but no number is published and responses carry no rate-limit headers. | Not published4 [Not published by vendor: checked 2026-10-30 on https://opencaselaw.ch/mcp/] |
| Official MCP serverYes, mcp.opencaselaw.ch/mcp. 42 read-only tools in public mode (tools/list on 2026-10-30), Streamable HTTP and SSE, no auth. | Yes7 [Verified 2026-10-30 by test request to https://mcp.opencaselaw.ch/mcp] |
| Official SDKPython CLI (opencaselaw-cli). A small read-only research client on PyPI (v0.10.0 on 2026-10-30); no other language SDKs, OpenAPI 3.0.3 spec published. | Yes8 [Verified 2026-10-30 on https://pypi.org/project/opencaselaw-cli/] |
| Data license / termsDecisions are CC0 1.0; commentary excerpts are CC BY 4.0 or CC BY-SA. Attribution not required but appreciated. | CC0 data; MIT code1 [Verified 2026-10-30 on https://opencaselaw.ch/ueber/] |
| Commercial use allowedAllowed (CC0 data). CC0 decision data can be used commercially; commentary needs attribution. No separate API terms of service were found. | Yes1 [Verified 2026-10-30 on https://opencaselaw.ch/ueber/] |
| CORS / browser useAccess-Control-Allow-Origin: *. GET responses carried ACAO *; an OPTIONS preflight returned 204 with * and allowed GET, POST, DELETE, OPTIONS. | Yes2 [Verified 2026-10-30 by test request to https://mcp.opencaselaw.ch/api/decisions?q=Mietzins] |
| Freshness / coverageIndex rebuilt every day; 1,053,732 decisions from 1875 to today on 2026-10-30 by GET /api/statistics. | Rebuilt daily; 1,053,732 decisions6 [Verified 2026-10-30 by test request to https://mcp.opencaselaw.ch/api/statistics] |
What it does
OpenCaseLaw collects published decisions from Swiss federal, cantonal and regulatory bodies (plus European Court of Human Rights and some UN and EU material), rebuilds the index every day and exposes it two ways. The remote MCP server at https://mcp.opencaselaw.ch/mcp gives an agent tools such as search_decisions, get_decision, find_leading_cases, find_citations, get_law, search_laws and attest_response, which checks a draft answer’s citations against the corpus. The REST API at https://mcp.opencaselaw.ch/api offers the same capabilities as plain GET and POST endpoints with an OpenAPI 3.0.3 spec, for example GET /api/decisions?q=... for full-text search or GET /api/laws/OR?article=41 for a single statute article. Each decision result includes citation strings in German, French and Italian (such as “BGE 136 III 513”), a canonical URL and the source_url on the court’s site. The whole decision corpus is also a Parquet dataset on Hugging Face. It is a one-person project, built and run by Jonas Hertner, not an official court service.
Working exampleRun 2026-10-30
curl -sG "https://mcp.opencaselaw.ch/api/decisions" \
--data-urlencode "q=missbräuchliche Kündigung Rachekündigung" \
--data-urlencode "limit=2"Response (trimmed)
HTTP 200 (run 2026-10-30, no key; trimmed to the first result)
{"total":135,"total_is_lower_bound":true,"returned":2,
"limit":2,"offset":0,"has_more":true,"next_offset":2,
"results":[{
"decision_id":"bge_136 III 513",
"court":"bge","decision_date":"2010-10-07","language":"fr",
"regeste":"Art. 336 OR; missbräuchliche Kündigung. Der Arbeitnehmer ist vor einer Rachekündigung nur geschützt (Art. 336 Abs. 1 lit. d OR), sofern er nach Treu und Glauben annehmen kann ...",
"is_leading_case":true,"citation_count":882,
"citation_string_de":"BGE 136 III 513",
"canonical_url":"https://mcp.opencaselaw.ch/entscheid/bge_136%20III%20513", ...}, ...]}Agent setup
Prompt to give your agent
Use the OpenCaseLaw MCP server (no key) for Swiss law questions. For my question, call search_decisions with 3 to 8 precise German, French or Italian terms, then find_leading_cases for the main statute article, and get_law for the article text. Answer in English, cite each decision with the citation string the tool returns and link its canonical_url, and never write a citation or quote from memory. Before you reply, run attest_response on your draft and fix anything it flags. Remind me this is research, not legal advice.Agent / MCP-style tool snippet
// Claude Desktop, Cursor or any MCP client config
{
"mcpServers": {
"opencaselaw": {
"url": "https://mcp.opencaselaw.ch/mcp"
}
}
}
// Claude Code:
// claude mcp add --transport http opencaselaw https://mcp.opencaselaw.ch/mcp
// No MCP client? Call the REST API instead:
// GET https://mcp.opencaselaw.ch/api/decisions?q=...&limit=10
// GET https://mcp.opencaselaw.ch/api/laws/OR?article=41
// POST https://mcp.opencaselaw.ch/api/tool/{tool_name} (JSON arguments)Fit and safety
Good for
- Grounding a Swiss legal research agent in real decisions with checkable citations
- Pulling the current text of a federal or cantonal statute article
- Checking a draft memo’s Swiss case citations before sending it
Watch out
- Do not treat it as legal advice or an official court database. It is an independent one-person project; check the decision on the court’s own site (source_url) before relying on it in a filing.
- Do not assume a search was exhaustive. Relevance search uses a bounded candidate pool and total can be a lower bound, so use filters or the Parquet dataset when you need every matching decision.
- Do not build a heavy production crawler on the live server. Rate limiting is in place but the numbers are not published, and there is no SLA; download the Hugging Face dataset for bulk work.
- Do not reuse commentary excerpts as if they were CC0. Only the decision data is public domain; commentary is CC BY 4.0 or CC BY-SA and needs attribution.
- Do not use it for law outside Switzerland. Apart from ECtHR, some UN treaty-body, CJEU and ICJ material, coverage is Swiss courts and Swiss legislation only.
Alternatives
| BOE Open Data API | Free, keyless official API for Spanish laws and the state gazette. |
| TED Search API | Free, keyless official EU API, for public tenders rather than case law. |
| Wikipedia REST API | Free, keyless background on Swiss institutions and legal concepts in many languages. |
| Fedlex | The Swiss federal government’s official publication platform for federal law, the authoritative text. |
FAQ
Does the OpenCaseLaw MCP server need an API key?
No. Add https://mcp.opencaselaw.ch/mcp as a remote MCP server; there is no sign-up or key, and the tools are read-only.
What is the OpenCaseLaw rate limit?
Not published as a number. The server uses nginx rate limiting and the REST tool endpoints share the same limits; for bulk work, download the CC0 Parquet dataset instead.
Can I use OpenCaseLaw data commercially?
The decision data is CC0 1.0 public domain, so yes, without attribution (though “Source: OpenCaseLaw.ch” is appreciated). Commentary excerpts are CC BY 4.0 or CC BY-SA and need attribution.
Is there a REST API as well as MCP?
Yes. Every MCP capability is also exposed at https://mcp.opencaselaw.ch/api with an OpenAPI 3.0.3 spec, and a Python CLI is on PyPI as opencaselaw-cli.
Compare
Put OpenCaseLaw MCP & API (Swiss court decisions and laws) side by side with other free agent tools on keys, limits, MCP support, licensing and CORS. Open the comparison grid →
SourcesFootnotes
- 1opencaselaw.ch/ueberVerified 2026-10-30
- 2mcp.opencaselaw.ch/api/decisions?q=MietzinsTested 2026-10-30
- 3opencaselaw.ch/apiVerified 2026-10-30
- 4opencaselaw.ch/mcpVerified 2026-10-30
- 5github.com/jonashertner/caselaw-repo-1Verified 2026-10-30
- 6mcp.opencaselaw.ch/api/statisticsVerified 2026-10-30
- 7mcp.opencaselaw.ch/mcpVerified 2026-10-30
- 8pypi.org/project/opencaselaw-cliVerified 2026-10-30