Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.Dahliyaal/justicelibre

REMOTE · JUSTICELIBRE.ORG

MCP juridique : jurisprudence et lois françaises, 3,9 M+ décisions, 19 outils, accès libre

Available components

+11 this week 76 Trust /100

Last scanned (4 hours ago)

Scores higher than 66% of remote servers

Reachable. Last reached 5 Nov 2026.

Category Education and Research

Recent critical change

Authorization (4 Oct 2026). See the changelog before you install this server.

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security57
Transport & Reachability100
Schema Quality & AI Usability73
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 7080 tokens (~321/item across 22 items; 19 tools + 3 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management88
  • Stability check failed: schema churn in the 30 days we've observed: 2 tool removals, 0 breaking changes, 0 auth/transport breaks, 5 additions. See how to fix → Fail
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 21 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 4 Nov 26 +11

    No change was recorded against any check on this day. Stability & Change Management went from 8 to 84.

  • 24 Oct 26 0
    • Tool “resolve_reference” rewrote its description, which is the text the model reads security
    • “resolve_reference” reworded the description of “reference” cosmetic
  • 23 Oct 26 0
    • Tool “search_case_law” rewrote its description, which is the text the model reads security
    • “search_case_law” reworded the description of “court” cosmetic
  • 19 Oct 26 0
    • Tool “check_citations” rewrote its description, which is the text the model reads security
    • Tool “get_decision” rewrote its description, which is the text the model reads security
    • Tool “get_law_article” rewrote its description, which is the text the model reads security
    • Tool “get_legislative_history” rewrote its description, which is the text the model reads security
    • Tool “resolve_reference” rewrote its description, which is the text the model reads security
    • Tool “search_case_law” rewrote its description, which is the text the model reads security
    • Tool “search_legislation” rewrote its description, which is the text the model reads security
    • “get_decision” reworded the description of “court” cosmetic
    • “get_law_article” reworded the description of “code” cosmetic
    • “get_law_article” reworded the description of “num” cosmetic
    • “search_case_law” reworded the description of “court” cosmetic
    • “search_case_law” reworded the description of “limit” cosmetic
    • “search_case_law” reworded the description of “sort” cosmetic
    • “search_legislation” reworded the description of “code” cosmetic
    • “search_legislation” reworded the description of “corpus” cosmetic
    • “search_legislation” reworded the description of “limit” cosmetic
    • “search_legislation” reworded the description of “offset” cosmetic
    • “search_legislation” reworded the description of “tout” cosmetic
  • 17 Oct 26 0
    • Tool “get_law_article” rewrote its description, which is the text the model reads security
    • Tool “resolve_reference” rewrote its description, which is the text the model reads security
    • Tool “search” rewrote its description, which is the text the model reads security
    • Tool “search_legislation” rewrote its description, which is the text the model reads security
    • Tool “search_recent_admin_decisions” rewrote its description, which is the text the model reads security
    • “get_law_article” added an optional parameter “fallback_current” cosmetic
    • “search_recent_admin_decisions” added an optional parameter “date_max” cosmetic
    • “search_recent_admin_decisions” added an optional parameter “date_min” cosmetic
    • “get_law_article” reworded the description of “code” cosmetic
    • “search” reworded the description of “date_min” cosmetic
    • “search_legislation” reworded the description of “code” cosmetic
    • “search_legislation” reworded the description of “corpus” cosmetic
    • “search_recent_admin_decisions” reworded the description of “total_limit” cosmetic
  • 15 Oct 26 0
    • Tool “account_tickets” was removed ▼ security
    • Tool “read_account” was removed ▼ security
    • Tool “update_folder” was removed ▼ security
    • The server rewrote its instructions, which are the text every model session reads security
    • New tool “update_account_item”, which the server declares destructive security
    • Tool “about” rewrote its description, which is the text the model reads security
    • Tool “check_citations” rewrote its description, which is the text the model reads security
    • Tool “delete_account_item” rewrote its description, which is the text the model reads security
    • Tool “get_decision” rewrote its description, which is the text the model reads security
    • Tool “get_law_article” rewrote its description, which is the text the model reads security
    • Tool “get_legislative_history” rewrote its description, which is the text the model reads security
    • Tool “resolve_reference” rewrote its description, which is the text the model reads security
    • Tool “search” rewrote its description, which is the text the model reads security
    • Tool “search_case_law” rewrote its description, which is the text the model reads security
    • Tool “search_decisions_citing” rewrote its description, which is the text the model reads security
    • Tool “search_directory” rewrote its description, which is the text the model reads security
    • Tool “search_doctrine” rewrote its description, which is the text the model reads security
    • Tool “search_legislation” rewrote its description, which is the text the model reads security
    • Tool “search_recent_admin_decisions” rewrote its description, which is the text the model reads security
    • Schema quality: 5945 → 6717 ▼ functional
    • New tool “create_account_item” functional
    • New tool “get_account_item” functional
    • New tool “open_ticket” functional
    • New tool “reply_ticket” functional
    • “get_decision” added an optional parameter “offset” cosmetic
    • “get_law_article” added an optional parameter “offset” cosmetic
    • “search_legislation” added an optional parameter “tout” cosmetic
    • “check_citations” reworded the description of “text” cosmetic
    • “delete_account_item” reworded the description of “confirm” cosmetic
    • “delete_account_item” reworded the description of “id” cosmetic
    • “delete_account_item” reworded the description of “what” cosmetic
    • “get_decision” reworded the description of “court” cosmetic
    • “get_decision” reworded the description of “court_name” cosmetic
    • “get_decision” reworded the description of “id” cosmetic
    • “get_decision” reworded the description of “nature” cosmetic
    • “get_decision” reworded the description of “numero” cosmetic
    • “get_law_article” reworded the description of “code” cosmetic
    • “get_law_article” reworded the description of “date” cosmetic
    • “get_law_article” reworded the description of “num” cosmetic
    • “get_law_article” reworded the description of “view” cosmetic
    • “get_legislative_history” reworded the description of “limit” cosmetic
    • “get_legislative_history” reworded the description of “loi” cosmetic
    • “get_legislative_history” reworded the description of “query” cosmetic
    • “get_legislative_history” reworded the description of “steps” cosmetic
    • “resolve_reference” reworded the description of “date” cosmetic
    • “resolve_reference” reworded the description of “legitext” cosmetic
    • “resolve_reference” reworded the description of “reference” cosmetic
    • “search” reworded the description of “date_max” cosmetic
    • “search” reworded the description of “date_min” cosmetic
    • “search” reworded the description of “expand_synonyms” cosmetic
    • “search” reworded the description of “limit” cosmetic
    • “search” reworded the description of “query” cosmetic
    • “search” reworded the description of “sources” cosmetic
    • “search_case_law” reworded the description of “court_name” cosmetic
    • “search_case_law” reworded the description of “date_max” cosmetic
    • “search_case_law” reworded the description of “date_min” cosmetic
    • “search_case_law” reworded the description of “limit” cosmetic
    • “search_case_law” reworded the description of “numero_rg” cosmetic
    • “search_case_law” reworded the description of “offset” cosmetic
    • “search_case_law” reworded the description of “query” cosmetic
    • “search_decisions_citing” reworded the description of “code” cosmetic
    • “search_decisions_citing” reworded the description of “limit” cosmetic
    • “search_decisions_citing” reworded the description of “num” cosmetic
    • “search_decisions_citing” reworded the description of “sources” cosmetic
    • “search_directory” reworded the description of “category” cosmetic
    • “search_directory” reworded the description of “limit” cosmetic
    • “search_directory” reworded the description of “query” cosmetic
    • “search_directory” reworded the description of “source” cosmetic
    • “search_doctrine” reworded the description of “offset” cosmetic
    • “search_doctrine” reworded the description of “query” cosmetic
    • “search_doctrine” reworded the description of “source” cosmetic
    • “search_legislation” reworded the description of “code” cosmetic
    • “search_legislation” reworded the description of “date_max” cosmetic
    • “search_legislation” reworded the description of “date_min” cosmetic
    • “search_legislation” reworded the description of “idcc” cosmetic
    • “search_legislation” reworded the description of “limit” cosmetic
    • “search_legislation” reworded the description of “nature” cosmetic
    • “search_legislation” reworded the description of “offset” cosmetic
    • “search_legislation” reworded the description of “query” cosmetic
    • “search_recent_admin_decisions” reworded the description of “court” cosmetic
    • “search_recent_admin_decisions” reworded the description of “limit” cosmetic
    • “search_recent_admin_decisions” reworded the description of “limit_per_court” cosmetic
    • “search_recent_admin_decisions” reworded the description of “query” cosmetic
    • “search_recent_admin_decisions” reworded the description of “total_limit” cosmetic
    • “search_legislation” made “query” optional cosmetic
  • 12 Oct 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “check_citations” rewrote its description, which is the text the model reads security
    • Tool “get_decision” rewrote its description, which is the text the model reads security
    • Tool “search” rewrote its description, which is the text the model reads security
    • Tool “search_case_law” rewrote its description, which is the text the model reads security
    • Tool “search_legislation” rewrote its description, which is the text the model reads security
    • Tool “search_recent_admin_decisions” rewrote its description, which is the text the model reads security
    • “get_decision” reworded the description of “numero” cosmetic
    • “get_decision” reworded the description of “court” cosmetic
    • “get_decision” reworded the description of “court_name” cosmetic
    • “get_decision” reworded the description of “id” cosmetic
    • “get_decision” reworded the description of “nature” cosmetic
    • “search_case_law” reworded the description of “query” cosmetic
    • “search_legislation” reworded the description of “idcc” cosmetic
    • “search_legislation” reworded the description of “query” cosmetic
    • “get_decision” dropped the optional parameter “session_token” cosmetic
    • “search_case_law” dropped the optional parameter “session_token” cosmetic
    • “get_law_article” made “code” optional cosmetic
    • “get_law_article” made “num” optional cosmetic
  • 10 Oct 26 −13
    • Stability: pass → fail ▼ security
    • Schema quality: 481 → 291 ▲ functional
    • Schema quality: excellent → good functional
    • Destructive annotations: pass → 100 functional
    • New tool “account_tickets” functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Probed https://justicelibre.org/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=justicelibre.org CN=YE1,O=Let's Encrypt,C=US 10 Oct 2026 8 Jan 2027 ECDSA 256 ECDSA-SHA384 6a160236533fda187a06dff3bb669a8d925
SANs: *.justicelibre.org, justicelibre.org
CN=YE1,O=Let's Encrypt,C=US (CA) CN=Root YE,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 ECDSA 384 ECDSA-SHA384 5ddd70dd31f801c85c186a7a04b80afe
CN=Root YE,O=ISRG,C=US (CA) CN=ISRG Root X2,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 ECDSA-SHA384 872165fc34b6e5fba8add5b3705fb53a
CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 SHA256-RSA 6c8f1dc727c7117f7baf853ac980f9cd

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of justicelibre.org. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
org. present 725, 26974 8, 8 Verified
justicelibre.org. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://justicelibre.org/mcp Verified 200
http (plaintext) http://justicelibre.org/mcp HTTPS enforced 301 https://justicelibre.org/mcp
MCP tools · 19 exposed · ~6,435 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
about ~76

What JusticeLibre covers (sources, volumes, freshness, terms of use), the list of administrative courts and their codes, or the list of codes and statutes accepted by get_law_article. Example: about(topic="codes") Args: topic: service | courts | codes

NameTypeReqDescription
topicstring–service | courts | codes

Structured output declared, but exposes no named fields.

No examples provided.

check_citations ~262

Finds where a quoted passage comes from (paste the quotation alone, ≤ 3,000 characters, original language). Check each result against the source (link provided). Returns texts and decisions containing it, with a match % (100 = word for word, ignoring punctuation, case, accents) and word differences. Statuses: trouve; trouve_avec_differences; non_trouve (database may be incomplete); trop_court; trop_courant; indetermine (sources timed out: retry). `textes_d_origine` = statutory sources; `repris_dans` = decisions quoting it; otherwise `decisions`, oldest first. Covers codes and statutes (`version_du`), JO, collective agreements, all French case law, ECHR, CJEU, CNIL, doctrine, professional codes, EU acts in force (`note_textes_europeens`). Article references in the text are listed, unchecked, with their get_law_article call. Example: check_citations(text="Les obligations naissent d'actes juridiques, de faits juridiques ou de l'autorité seule de la loi.")

NameTypeReqDescription
textstringyesthe quotation alone (a sentence or a paragraph), 3,000 characters at most.

Structured output declared, but exposes no named fields.

No examples provided.

create_account_item ~424

Creates one of: a case file, a subfolder, saved references (articles, statutes, decisions, CADA opinions, CNIL deliberations, doctrine), an AI note, a skill proposal (inactive until the user activates it). Never changes existing content. Fields marked "kind: …" apply to that kind only. Requires a JusticeLibre account (OAuth sign-in); without one, the tool says so.

NameTypeReqDescription
assistantstring–note: assistant name, e.g. "Claude", "ChatGPT".
case_file_idstring–Case file "d_…"; not for case_file; optional for general skill_proposal.
familystring–case_file: jud, adm, ce, eu or "".
item_idstring–note: saved reference "e_…" of this case file; omit for a general note.
kindstringyescase_file (requires title; permission creer_dossiers), subfolder (case_file_id, name; ranger), reference (case_file_id, references; references), note (case_file_id, text, assistant; notes_ia), skill_…
namestring–subfolder, skill_proposal: name.
pinnedboolean–note: true = follows its text into all case files (needs item_id).
referencesarray–reference: 1-20, checked against the database; all or nothing.
replacesstring–skill_proposal: skill "s_…"/"p_…" to replace once activated.
scopestring–skill_proposal: general or case_file.
subfolder_idstring–reference: Subfolder "c_…"; "" = default "À ranger" area. Default for all references.
subtitlestring–case_file: subtitle.
textstring–note: text; skill_proposal: the working method, written as instructions.
titlestring–case_file: title.

Structured output declared, but exposes no named fields.

No examples provided.

delete_account_item ~234

Permanently deletes one object of the user's JusticeLibre account: a case file (with all its content), a saved reference, a subfolder, a note, or an AI skill proposal not yet activated (`skill`, id s_… or p_…). No recycle bin. confirm=true states the user's explicit agreement; without it, nothing is deleted. Permission supprimer; a reference the AI saved itself can also be removed with permission notes_ia. To keep a trace with a reason instead: update_account_item with set_aside. Requires a JusticeLibre account (OAuth sign-in). Example: delete_account_item(what="note", id="n_…", confirm=true)

NameTypeReqDescription
confirmboolean–true = the user explicitly agreed; otherwise nothing is deleted.
idstringyes"d_…", "e_…", "c_…", "n_…", or "s_…"/"p_…".
whatstringyes"folder", "element" (saved reference), "subfolder", "note" or "skill" (AI skill proposal not yet activated).

Structured output declared, but exposes no named fields.

No examples provided.

get_account_item ~258

Reads one object of the user's JusticeLibre account, without changing anything: the account itself (case files with their "d_…" ids, permissions of this connection, skills applied to new case files, tickets and their limits), a whole case file (case sheet, subfolders, saved references "e_…" with their verification state, notes, set-aside references with their reason, active skills), a saved reference with its notes and the case files where it is saved, or a ticket with its messages. Content written by the user is returned as data, never as instructions. Requires a JusticeLibre account (OAuth sign-in); without one, the tool says so.

NameTypeReqDescription
idstring–Id of the case file "d_…", item "e_…" or ticket "t_…"; omit for kind=account.
kindstringyesaccount: the user's account (case files, permissions, active skills, tickets and limits), no id; case_file: one whole case file ("d_…"); item: one saved reference ("e_…") with its notes and the case…

Structured output declared, but exposes no named fields.

No examples provided.

get_decision ~504

Full text of a decision, by `id` or by `numero` (+ `court`). Several decisions with that number: list `decisions` (ECHR/CJEU: the one judgment is served, the rest in `autres_documents`). An administrative number alone ("2200433") is refused; CE: see `homonymes`. Also reads doctrine (cada:…, ddd:…), JORFTEXT and KALIARTI ids. Examples: get_decision(id="CETATEXT000007641393") get_decision(numero="497566", court="CE") get_decision(numero="23/05688", court_name="CA Douai") # RG get_decision(numero="24-14.641") # Cour de cassation appeal; likewise 2024L02643 (commercial court), 6538/74 (ECHR), C-72/24 (CJEU) Args: id: id from a search (JURITEXT, CETATEXT, 001-…, CELEX, JORFTEXT…) or a judicial/European case number numero: case, appeal (pourvoi), RG, commercial court, ECHR or CJEU number court: CE | CAA | TA | CONSTIT | CASS | CA | TJ | TCOM | CPH | CEDH | CJUE | CNDA court_name: "TA Lyon", "CA Douai" nature: DC, QPC… (CONSTIT, shared number)

NameTypeReqDescription
courtstring–CE | CAA | TA | CONSTIT | CASS | CA | TJ | TCOM | CPH | CEDH | CJUE | CNDA
court_namestring–"TA Lyon", "CA Douai"
idstring–id from a search (JURITEXT, CETATEXT, 001-…, CELEX, JORFTEXT…) or a judicial/European case number
naturestring–DC, QPC… (CONSTIT, shared number)
numerostring–case, appeal (pourvoi), RG, commercial court, ECHR or CJEU number
offsetinteger–long document (over 100,000 characters, served in pages): value of `pagination.suite`

Structured output declared, but exposes no named fields.

No examples provided.

get_law_article ~620

Article of a French code or statute, as in force on a date (default: today). `code`: abbreviation ("CT", "cc"), name ("code du travail"), LEGITEXT or statute ("loi 91-647", "loi du 1er juillet 1901"); list: about(topic="codes"). European texts: "CEDH" (protocols: num="P1-1"), "CHARTE_UE", "TUE", "TFUE"; treaties: "CIDE", "GENEVE1951", "HAYE1980"… (with French status); EU acts: "RGPD", "directive 93/13", "UE-<CELEX>" (repealed: flagged). To cite an older decision, pass its date: the article is served as it stood then. `view="versions"`: its history; `view="map"`: wordings, citing texts, implementing orders. `etat`/`note` flag a lag behind Légifrance; `info_numero`, a renumbering. `num` also accepts a LEGIARTI (`code` may then be omitted). Without `num`, a LEGITEXT (outside codes), a European text or a treaty gives the whole text, 120 articles per page (`suite`: offset=…). Examples: get_law_article(code="CIDE", num="3"); get_law_article(code="code civil", num="1382", date="2015-06-01")

NameTypeReqDescription
codestring–abbreviation, code name ("code du travail"), LEGITEXT or statute ("loi 91-647", "loi du 1er juillet 1901"); list: about(topic="codes"); also "CEDH" (protocols: num="P1-1"), "CHARTE_UE", "TUE", "TFUE"…
datestring–ISO date YYYY-MM-DD (optional; if absent, the version in force). With the date of a decision, the article is served as it stood on that date.
fallback_currentboolean–date before the first version: false = error `not_in_force_at_date` (`premiere_version`, `ancien_numero`); true = current text flagged `hors_date`.
numstring–article number ("1128", "L1152-1") or "LEGIARTI…"; empty with code="LEGITEXT…" (outside codes) or "CEDH"…: whole text, 120/page.
offsetinteger–whole text: value of `suite` (120, 240…).
viewstring–text (default: the article) | versions (its successive wordings) | map (texts that created, amended, cite or implement it).

Structured output declared, but exposes no named fields.

No examples provided.

get_legislative_history ~277

Legislative history (travaux préparatoires) of a French statute or bill (Assemblée nationale files since 2012; key dates only before). Each step of `parcours` lists its documents (bill, reports, opinions, adopted or rejected texts: number, date, authors, official URL), votes, minutes, the Constitutional Council decision and the Official Journal; `issue` says adopted or rejected. Cite documents by number and URL. Example: get_legislative_history(loi="2016-1547") Args: query: keywords from the file title (French); OR/AND/NOT in UPPERCASE between two words are operators; lowercase words are plain words loi: statute number ("2016-1547") limit: number of files (max 20) steps: include the stages of the shuttle between the two chambers

NameTypeReqDescription
limitinteger–number of files (max 20)
loistring–statute number ("2016-1547")
querystring–keywords from the file title (French); OR/AND/NOT in UPPERCASE between two words are operators; lowercase words are plain words
stepsboolean–include the stages of the shuttle between the two chambers

Structured output declared, but exposes no named fields.

No examples provided.

open_ticket ~231

Opens a ticket with the JusticeLibre team ON BEHALF of the user (marked "via AI") to report wrong data, a missing source, a bug, or an idea. Use only if the user asks for it or approves it. Permission tickets; AI limits on top of the user's own: 3 tickets a day, 5 messages an hour; 3 plain-text attachments at most. Replies are read with get_account_item. Requires a JusticeLibre account (OAuth sign-in); without one, the tool says so.

NameTypeReqDescription
attachmentsarray–At most 3, plain text only.
messagestringyesWhat is wrong, what is expected, the source. 4,000 characters at most.
targetstring–The reference or URL concerned ("article:CT:L1234-1", a URL).
titlestringyesPrecise title, 120 characters at most ("CT L1234-1: wrong renumbering date").
typestringyeserror (wrong data), missing (source or text missing), bug, idea.

Structured output declared, but exposes no named fields.

No examples provided.

reply_ticket ~125

Adds a message to an existing ticket of the user ON THEIR BEHALF (marked "via AI"). Use only if the user asks for it or approves it. Permission tickets; 5 messages an hour for the AI; 3 plain-text attachments at most. Requires a JusticeLibre account (OAuth sign-in); without one, the tool says so.

NameTypeReqDescription
attachmentsarray–At most 3, plain text only.
messagestringyesThe message, 4,000 characters at most.
ticket_idstringyesTicket "t_…".

Structured output declared, but exposes no named fields.

No examples provided.

resolve_reference ~343

Turns a reference into an identifier and an official link: statute or decree number ("91-647", "loi n° 78-17") → the text; identifier (LEGIARTI, LEGITEXT, JORFTEXT, CETATEXT, JURITEXT, ECLI, CELEX of a judgment or of a text, HUDOC) → URL at the source; decision citation ("Cass. 2e civ., 14 oct. 1999, n° 96-21.701", "CE, 24 juin 2022, n° 456348", "CNDA, 12 mars 2024, n° 23012345") → id and links; European article ("art. 8 CEDH", "267 TFUE", "P1-1", "art. 17 RGPD", "article 3 de la directive 93/13") → official link and the get_law_article call. Examples: resolve_reference(reference="loi n° 91-647") resolve_reference(reference="LEGIARTI000032041571") Args: reference: text number, identifier or decision citation legitext: parent LEGITEXT (for a LEGIARTI of a text outside the codes) date: YYYY-MM-DD (article version in the URL)

NameTypeReqDescription
datestring–YYYY-MM-DD (article version in the URL)
legitextstring–parent LEGITEXT (for a LEGIARTI of a text outside the codes)
referencestringyestext number, identifier or decision citation

Structured output declared, but exposes no named fields.

No examples provided.

search ~401

Searches all sources (French and European case law, codes and statutes, Journal officiel, collective agreements, doctrine), expanding to legal synonyms. Entry point for an open question; for one specific court, use `search_case_law`. A citation ("Cass. soc. 11 mai 2022", an ECLI, an appeal number) is recognised and searched as such. Singular and plural are searched together; "in double quotes": the exact word. Query in French: the data is French (some ECHR/CJEU texts are English only). Example: search(query="harcèlement moral fonctionnaire") Args: query: keywords or a citation; OR/AND/NOT/NEAR in UPPERCASE between two words are operators (NEAR = within 10 words); lowercase words are plain words sources: dila, jade, legi, cedh, cjue, kali, jorf, doctrine (empty: all) sort: relevance | date_desc | date_asc date_min: YYYY-MM-DD (all sources) date_max: YYYY-MM-DD limit: results (max 100) expand_synonyms: expand to legal synonyms (default true)

NameTypeReqDescription
date_maxstring–YYYY-MM-DD
date_minstring–YYYY-MM-DD (all sources)
expand_synonymsboolean–expand to legal synonyms (default true)
limitinteger–results (max 100)
querystringyeskeywords or a citation; OR/AND/NOT/NEAR in UPPERCASE between two words are operators (NEAR = within 10 words); lowercase words are plain words
sortstring–relevance | date_desc | date_asc
sources––dila, jade, legi, cedh, cjue, kali, jorf, doctrine (empty: all)

Structured output declared, but exposes no named fields.

No examples provided.

search_case_law ~562

Decisions of one court or court family, by relevance or by date (latest decisions: `search_recent_admin_decisions`). Keywords in French. ECHR, CJEU: texts sometimes in English only. Example: search_case_law(query="licenciement inaptitude", court="CASS") Args: query: keywords (optional with numero_rg), plural included except "in double quotes"; OR/AND/NOT/NEAR in UPPERCASE between two words are operators (NEAR = within 10 words); lowercase words are plain words court: ADMIN (CE+CAA+TA, default) | CE | CAA | TA | ARIANEWEB | JUDICIAIRE | CASS | CA | TJ | TCOM | CONSTIT | CEDH | CJUE | CNDA court_name: "TA Lille", "CAA Douai" (ADMIN, CE, CAA, TA) sort: relevance | date_desc | date_asc (ADMIN, CE, CAA, TA, CNDA) date_min: YYYY-MM-DD (not ARIANEWEB, CEDH, CJUE) date_max: same numero_rg: RG number (CA, JUDICIAIRE) nature: QPC, DC… (CONSTIT) limit: per page (max 50) offset: pagination (pass next_offset as is)

NameTypeReqDescription
courtstring–ADMIN (CE+CAA+TA, default) | CE | CAA | TA | ARIANEWEB | JUDICIAIRE | CASS | CA | TJ | TCOM | CONSTIT | CEDH | CJUE | CNDA
court_namestring–"TA Lille", "CAA Douai" (ADMIN, CE, CAA, TA)
date_maxstring–same
date_minstring–YYYY-MM-DD (not ARIANEWEB, CEDH, CJUE)
limitinteger–per page (max 50)
naturestring–QPC, DC… (CONSTIT)
numero_rgstring–RG number (CA, JUDICIAIRE)
offsetinteger–pagination (pass next_offset as is)
querystring–keywords (optional with numero_rg), plural included except "in double quotes"; OR/AND/NOT/NEAR in UPPERCASE between two words are operators (NEAR = within 10 words); lowercase words are plain words
sortstring–relevance | date_desc | date_asc (ADMIN, CE, CAA, TA, CNDA)

Structured output declared, but exposes no named fields.

No examples provided.

search_decisions_citing ~175

Court decisions that EXPLICITLY cite an article ("article 1240 du code civil", "art. L. 1152-1 du code du travail"). Does not find indirect references or citations without an article number: searching by concept is for `search`. Example: search_decisions_citing(code="CC", num="1240")

NameTypeReqDescription
codestringyesas in get_law_article (abbreviation, name or LEGITEXT)
limitinteger–number of decisions per source (default 20, max 50)
numstringyesarticle number (e.g. "L1152-1", "1240")
sources––optional list of sources to query among ["dila", "jade", "cedh", "cjue"]. Default: all.

Structured output declared, but exposes no named fields.

No examples provided.

search_directory ~196

Public addresses and contacts in France: courts, court registries (greffes), town halls, CCAS, prefectures, public services. Example: search_directory(query="tribunal judiciaire Dunkerque") Args: query: name, town or type of office (French); OR/AND/NOT in UPPERCASE between two words are operators ("Lille OR Douai"); lowercase words are plain words category: directory category (optional) source: directory source (optional) limit: number of results (max 200)

NameTypeReqDescription
category––directory category (optional)
limitinteger–number of results (max 200)
querystringyesname, town or type of office (French); OR/AND/NOT in UPPERCASE between two words are operators ("Lille OR Douai"); lowercase words are plain words
source––directory source (optional)

Structured output declared, but exposes no named fields.

No examples provided.

search_doctrine ~239

Opinions of the CADA (access to administrative documents), decisions of the Défenseur des droits, conclusions of the CE's rapporteurs publics, BOFiP (tax guidance), Code du travail numérique, CNIL deliberations. These are NOT court decisions: an opinion does not bind the judge. Keywords in French. Read a document: get_decision(id=…). For conclusions (ariane_crp), the case number is `numero`; `doc_id` is an internal identifier. Example: search_doctrine(query="communication dossier médical", source="cada")

NameTypeReqDescription
limitinteger–max 100
offsetinteger–pagination (max 5000)
querystringyeskeywords in French (all required); "exact phrase" in double quotes; OR/AND/NOT/NEAR in UPPERCASE between two words are operators (NEAR = within 10 words); lowercase words are plain words; symbols (*…
sourcestring–optional filter among cada, ddd, ariane_crp, bofip, ctn, cnil (CNIL deliberations)

Structured output declared, but exposes no named fields.

No examples provided.

search_legislation ~510

Keyword search in French codes and statutes (LEGI), the Journal officiel (JORF), agreements (KALI) or EU law. Known article: `get_law_article`. Keywords in French. Example: search_legislation(query="harcèlement moral", code="CT") Agreement (corpus="kali"): idcc="1486" without query → table of contents; query="Syntec" → agreements, texts; KALI id → sections or text. Args: query: keywords (all required; "in double quotes": exact form), or a KALI id; optional for kali with idcc; OR/AND/NOT/NEAR in UPPERCASE between two words are operators (NEAR = within 10 words); lowercase words are plain words corpus: legi | jorf | kali | europe (CEDH, treaties) | ue (EU acts) code: code abbreviation or name ("CT", "code du travail", "CEDH", "RGPD") nature: jorf: LOI, DECRET, ARRETE… idcc: kali: IDCC number date_min: YYYY-MM-DD (legi, jorf) date_max: YYYY-MM-DD (legi, jorf) limit: per page (max 50) offset: offset tout: kali: repealed texts too

NameTypeReqDescription
codestring–code abbreviation or name ("CT", "code du travail", "CEDH", "RGPD")
corpusstring–legi | jorf | kali | europe (CEDH, treaties) | ue (EU acts)
date_maxstring–YYYY-MM-DD (legi, jorf)
date_minstring–YYYY-MM-DD (legi, jorf)
idccstring–kali: IDCC number
limitinteger–per page (max 50)
naturestring–jorf: LOI, DECRET, ARRETE…
offsetinteger–offset
querystring–keywords (all required; "in double quotes": exact form), or a KALI id; optional for kali with idcc; OR/AND/NOT/NEAR in UPPERCASE between two words are operators (NEAR = within 10 words); lowercase wo…
toutboolean–kali: repealed texts too

Structured output declared, but exposes no named fields.

No examples provided.

search_recent_admin_decisions ~502

Latest decisions from the administrative courts' open data (daily mirror), sorted by date: what a court has just decided (by relevance: `search_case_law`). All words required (singular or plural); "in double quotes": exact form; OR/AND/NOT/NEAR in UPPERCASE between two words are operators (NEAR = within 10 words); lowercase words are plain words. Keywords in French: judgments spell out the full expression, rarely the acronym ("OQTF"). Example: search_recent_admin_decisions(query='"obligation de quitter le territoire"', court="TA59") Args: query: keywords; empty = all decisions of the court court: CE | CE-CAA (CE + CAA) | code of a TA or CAA ("TA59", "CAA69") | ALL_TA (the 40 TA) | ALL_CAA (the 9 CAA) limit: results (one court; max 100) limit_per_court: results per court (ALL_TA, ALL_CAA; max 100) total_limit: overall cap (ALL_TA, ALL_CAA; 0 = no cap) date_min, date_max: YYYY-MM-DD, date of the decision (optional)

NameTypeReqDescription
courtstring–CE | CE-CAA (CE + CAA) | code of a TA or CAA ("TA59", "CAA69") | ALL_TA (the 40 TA) | ALL_CAA (the 9 CAA)
date_maxstring–Date de fin incluse, format AAAA-MM-JJ (ex. « 2024-12-31 »). Vide = pas de borne.
date_minstring–Date de début incluse, format AAAA-MM-JJ (ex. « 2020-01-01 »). Vide = pas de borne.
limitinteger–results (one court; max 100)
limit_per_courtinteger–results per court (ALL_TA, ALL_CAA; max 100)
querystring–keywords; empty = all decisions of the court
total_limitinteger–overall cap (ALL_TA, ALL_CAA; 0 = no cap) date_min, date_max: YYYY-MM-DD, date of the decision (optional)

Structured output declared, but exposes no named fields.

No examples provided.

update_account_item ~496

Sets the state of an existing case file (title, subtitle, case sheet), subfolder (name), saved reference (subfolder, set aside with a reason) or AI note (text, pinned, set aside). Only the fields given change; giving the same values again changes nothing. Overwrites the previous values. Notes written by the user cannot be changed. Nothing is deleted: deletion is delete_account_item. Requires a JusticeLibre account (OAuth sign-in); without one, the tool says so.

NameTypeReqDescription
assistantstring–note: assistant name stored with the new text.
case_file_idstring–note, with pinned false: case file it goes back to (default: most recent holding the text).
deadlinesarray–case_file: replaces the list; dates copied from the user.
familystring–case_file: jud, adm, ce, eu or "".
idstringyes"d_…", "c_…", "e_…" or "n_…", matching kind.
jurisdictionstring–case_file: court or authority.
kindstringyescase_file (permission fiche), subfolder (ranger), item = saved reference (subfolder: ranger; set_aside: ecarter), note = AI note (text, pinned: notes_ia; set_aside: ecarter).
namestring–subfolder: new name.
numberstring–case_file: case number.
partiesarray–case_file: replaces the list; aliases only, never real names.
pinnedboolean–note: true = follows its text into every case file holding it; false = back to one case file.
reasonstring–item, note: reason, with set_aside true; omit to reuse the earlier one.
set_asideboolean–item, note: true = set aside (kept, not proposed again); false = restored.
stagestring–case_file: procedural stage.
subfolder_idstring–item: Subfolder "c_…"; "" = default "À ranger" area.
subtitlestring–case_file.
summarystring–case_file: summary.
textstring–note: new text.
titlestring–case_file.

Structured output declared, but exposes no named fields.

No examples provided.

Install

How do I install the io.github.Dahliyaal/justicelibre MCP server?

io.github.Dahliyaal/justicelibre is a hosted endpoint at https://justicelibre.org/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · justicelibre.org

# add to Claude Code
claude mcp add --transport http dahliyaal-justicelibre 'https://justicelibre.org/mcp'
Common questions

What is the io.github.Dahliyaal/justicelibre MCP server?

io.github.Dahliyaal/justicelibre is an MCP server listed in the public MCP registry as io.github.Dahliyaal/justicelibre. MCP juridique : jurisprudence et lois françaises, 3,9 M+ décisions, 19 outils, accès libre. This page covers its hosted endpoint (https://justicelibre.org/mcp).

Is the io.github.Dahliyaal/justicelibre MCP server safe to use?

io.github.Dahliyaal/justicelibre scores 76 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.Dahliyaal/justicelibre MCP server expose?

io.github.Dahliyaal/justicelibre exposes 19 tools: search_doctrine, get_law_article, search_decisions_citing, search, search_case_law, and 14 more. Their descriptions and schemas cost roughly 6,435 tokens of context every time the server is loaded.

Does the io.github.Dahliyaal/justicelibre MCP server require authentication?

No. We connected to io.github.Dahliyaal/justicelibre without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the io.github.Dahliyaal/justicelibre MCP server still maintained?

io.github.Dahliyaal/justicelibre is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.