llms.txt@packages/lj-web/public · git:20260904.de7cff4 · 2026-09-04 · sha256 c00bf4a13111f8ea
llms.txt@packages/lj-web/public git:20260904.de7cff4A
Immutable. This exact content never changes and is served at /api/v1/blob/c00bf4a13111f8ea.
# LibreJustice
> Free, open-source search engine for French and European law: decisions from France's administrative and judicial courts and legal texts (French codes at any past date, EU law, treaties, collective agreements, administrative doctrine). Rebuilt daily from public and licensed sources.
## Searching: connect the MCP server, do not crawl
The corpus contains millions of decisions and more than a million texts. Fetching pages one by one will not find the relevant one; the search engine will. It is exposed as a Model Context Protocol server, free and open to any client:
- Endpoint: https://librejustice.fr/mcp
- Transport: streamable-http. Auth: OAuth, auto-discovered (RFC 9728 metadata at /.well-known/oauth-protected-resource).
- Setup per client (Claude, ChatGPT, Codex, Cursor, Mistral…): https://librejustice.fr/mcp-guide
Tools:
- `search_decisions`: case law, hybrid meaning + keyword matching, with structured filters (jurisdiction, dates, cited articles, codes) and facet counts to refine. Quoted phrases and the `ET` / `OU` / `SAUF` / `PROCHE<n>` operators switch to exact-wording matching, the only way to target which way a court ruled since semantic matching ignores negations.
- `get_decision`: full text of one decision, with inline links to the articles and decisions it cites. Also reports whether the decision still stands (`appellateFate`: reversed or upheld on review) and the linked prior and subsequent decisions of the same case. Read that before citing it as authority.
- `search_legal_texts`: finds legal articles from their subject or wording when the article number is unknown; ranked snippets, facets by code.
- `get_legal_text`: one article as it stood on a given date (or today), with its status, validity dates and the timeline of every version. Say which version you quote.
Queries are written in French: it is a French-language corpus.
## Calling from code: the REST API
The same corpus for a program rather than an assistant. The key is free, created from an account.
- Spec: https://librejustice.fr/openapi.json (OpenAPI 3.1). Guide and key: https://librejustice.fr/api-guide
- Auth: `Authorization: Bearer <key>`, or the `x-lj-api-key` header.
- Five routes: `/api/search`, `/api/search-textes`, `/api/decision/{id}`, `/api/texte/{code}/{article}`, `/api/texte/{code}/{article}/{date}`.
- One identity, one budget: API calls, MCP calls and site searches share a counter. Over it, a `429` with a `Retry-After`.
It answers a question, it does not export a corpus: paging stops at offset 99 on both search routes. Narrow the filters instead.
## Browsing (crawlable trees, for humans and indexers)
Two symmetric trees, one per corpus, plus a directory of parties:
- https://librejustice.fr/juridictions: courts, then year, then decisions. A decision: /decision/{id}
- https://librejustice.fr/normes: collections (codes, lois, décrets, arrêtés, collective agreements, EU texts, treaties, circulaires, BOFiP), then year, then texts. An article: /texte/{code}/{article}, or /texte/{code}/{article}/{date} for the version in force at that date.
- https://librejustice.fr/annuaire: companies, public bodies, associations and counsel appearing in the decisions.
Search pages: /decisions (case law), /textes (legal texts).
## Provenance and reuse
- Sources and update schedule: https://librejustice.fr/sources
- Code: https://github.com/librejustice/librejustice (Apache-2.0)
- Crawler policy, including AI training: https://librejustice.fr/robots.txt