# justicelibre MCP server

Free access to ~1M French administrative court decisions via MCP

## Links
- Registry page: https://www.getdrio.com/mcp/io-github-dahliyaal-justicelibre
- Repository: https://github.com/Dahliyaal/justicelibre

## Install
- Endpoint: https://justicelibre.org/mcp
- Auth: Not captured

## Setup notes
- Remote endpoint: https://justicelibre.org/mcp

## Tools
- about_justicelibre - Vue d'ensemble du protocole JusticeLibre : cartographie des sources
    et règles d'acheminement.

    Appeler cet outil en priorité pour appréhender la matrice de
    compatibilité des identifiants, les périmètres de recherche de chaque
    juridiction, et les spécificités des bases de données exploitées.
     Endpoint: https://justicelibre.org/mcp
- list_juridictions - Référentiel exhaustif des codes juridictionnels.

    Restitue les 51 instances couvertes (Conseil d'État, 9 CAA, 40 TA,
    incluant les juridictions d'outre-mer) accompagnées de leur nomenclature
    canonique.

    Consulter impérativement cette liste pour déterminer le code exact à
    fournir à l'outil `search_admin`.
     Endpoint: https://justicelibre.org/mcp
- search_conseil_etat - Recherche sémantique ciblée sur la jurisprudence du Conseil d'État
    (base ArianeWeb, ~270 000 décisions).

    Moteur exclusif disposant d'un véritable algorithme de pertinence
    (Sinequa) avec extraction de contexte. À privilégier systématiquement
    pour le droit public.

    ATTENTION : les identifiants retournés (format
    `/Ariane_Web/AW_DCE/|XXXXXX`) sont inopérants pour l'extraction de
    texte. Pour récupérer l'intégralité d'un arrêt, ré-indexer la recherche
    via `search_admin` (paramètre `juridiction="CE"` et un extrait de
    la requête) afin d'obtenir un identifiant compatible
    (`DCE_XXX_YYYYMMDD`).

    Consigne de recherche : limiter les requêtes à 2-5 mots-clés
    distinctifs ; les requêtes en phrase complète retournent généralement
    zéro résultat.

    Args:
        query: mots-clés de recherche (ex : "référé liberté", "QPC 145")
        limit: nombre maximum de résultats (défaut 20)
        offset: décalage pour paginer (défaut 0). Réitérer avec offset=20,
            offset=40, etc. pour obtenir les pages suivantes.
     Endpoint: https://justicelibre.org/mcp
- search_admin_recent - Décisions admin **récentes** triées chronologiquement (API live).

    Priorité au récent : tri par date de lecture décroissante, pas par
    pertinence. Utile pour "actualité d'une juridiction" mais PAS pour
    trouver la jurisprudence pertinente sur un sujet — pour cela, utiliser
    `search_admin` (bulk JADE avec BM25 ranking).

    Périmètre : CE + 9 CAA + 40 TA (incluant l'outre-mer), depuis ~2022.

    Les identifiants générés (formats `DCE_*`, `DTA_*`, `DCAA_*`) sont
    nativement compatibles avec l'outil `get_decision_text`.

    Args:
        query: mots-clés de recherche
        juridiction: code de la juridiction. Exemples :
            - "CE" — Conseil d'État
            - "CE-CAA" — Conseil d'État + cours administratives d'appel
            - "TA69" — Tribunal administratif de Lyon
            - "TA75" — Tribunal administratif de Paris
            - "CAA69" — Cour administrative d'appel de Lyon
            Les codes "TA" ou "CAA" isolés retournent un résultat vide —
            un code spécifique est requis. Consulter `list_juridictions`
            pour la nomenclature complète.
        limit: nombre maximum de résultats (défaut 20)
     Endpoint: https://justicelibre.org/mcp
- search_admin_recent_all_ta - Requête simultanée de l'ensemble des 40 Tribunaux Administratifs.

    Fusionne et trie chronologiquement (date de lecture décroissante) les
    résultats issus du territoire national. Pertinent pour cartographier
    rapidement les éventuelles divergences d'appréciation territoriale sur
    une même question de droit.

    Args:
        query: mots-clés de recherche
        limit_per_court: nombre de résultats par tribunal (défaut 5, soit
            jusqu'à 200 résultats totaux en l'absence de `total_limit`)
        total_limit: plafond global après fusion (0 = aucun plafond). Si
            positif, tronque la liste fusionnée aux N entrées les plus
            récentes.

    Returns:
        Dict comportant `per_court_totals` (nombre de hits par TA),
        `decisions` (liste fusionnée triée chronologiquement) et les
        éventuelles `errors`.
     Endpoint: https://justicelibre.org/mcp
- search_admin_recent_all_caa - Requête simultanée de l'ensemble des 9 Cours Administratives d'Appel.

    Fusion et tri chronologique des résultats par date de lecture.

    Args:
        query: mots-clés de recherche
        limit_per_court: résultats par cour (défaut 5, soit jusqu'à 45
            résultats au total)
        total_limit: plafond global après fusion (0 = aucun plafond).
     Endpoint: https://justicelibre.org/mcp
- get_decision_text - Extraction du texte intégral d'une décision relevant de l'ordre
    administratif (Conseil d'État, TA, CAA).

    Usage strictement réservé aux identifiants normés issus des recherches
    administratives : `DCE_XXX_YYYYMMDD` (Conseil d'État),
    `DTA_XXX_YYYYMMDD` (TA), `DCAA_XXX_YYYYMMDD` (CAA).

    INCOMPATIBILITÉS MAJEURES :
    - Identifiants ArianeWeb `/Ariane_Web/AW_DCE/|XXXXXX` — procéder à une
      ré-indexation via `search_admin` pour obtenir un identifiant
      compatible.
    - Identifiants JURITEXT — rediriger vers `get_decision_judiciaire_libre`
      ou `get_decision_judiciaire`.
    - Identifiants CELEX `6XXXXCJXXXX` — rediriger vers `get_decision_cjue`.
    - Identifiants HUDOC `001-XXXXXX` — rediriger vers `get_decision_cedh`.

    Args:
        decision_id: identifiant de la décision (avec ou sans suffixe .xml)

    Returns:
        Dict comportant les métadonnées complètes, `text_segments` (liste
        des paragraphes) et `full_text` (texte intégral joint), ou None si
        la décision est introuvable.
     Endpoint: https://justicelibre.org/mcp
- search_judiciaire_libre - Recherche plein texte dans la jurisprudence judiciaire, exécutée
    localement et affranchie de toute obligation d'authentification
    gouvernementale.

    Exploite l'index FTS5 des archives publiques DILA (~620 000 décisions :
    Cour de cassation, 36 cours d'appel, Conseil constitutionnel). Scoring
    BM25 disponible mais tri appliqué par ordre chronologique décroissant.

    **Couverture connue** : la base contient un sous-ensemble des arrêts
    publiés par les CA en open data DILA (~73 000 arrêts CA, principalement
    depuis 2007). Tous les arrêts ne sont PAS dans la base ; un faux négatif
    n'implique donc pas que l'arrêt n'existe pas. En cas de bredouille,
    suggérer à l'utilisateur de chercher sur Légifrance ou via PISTE
    (`search_judiciaire`).

    **Recherche par numéro de RG** : pour les arrêts CA, utiliser le param
    `numero_rg` (lookup direct, normalise les variantes 21/05835, 21-05835,
    2105835). Pour les pourvois Cass, utiliser `query` avec le numéro
    (ex: query="21-12.345").

    Les identifiants retournés (format `JURITEXT*` pour Cass / cours
    d'appel, `CONSTEXT*` pour Conseil constitutionnel) sont compatibles
    avec `get_decision_judiciaire_libre`.

    Args:
        query: mots-clés (ex : "licenciement abusif"). FTS5 supporte
            `"phrase exacte"`, `mot1 AND mot2`, `mot*` (préfixe). Optionnel
            si `numero_rg` est fourni.
        juridiction: filtre optionnel : "cassation" / "appel" / "constit".
        numero_rg: numéro RG d'un arrêt CA (ex: "21/05835"). Lookup direct
            qui matche toutes les variantes typographiques.
        date_min: date min ISO (YYYY-MM-DD), optionnel
        date_max: date max ISO (YYYY-MM-DD), optionnel
        limit: nombre maximum de résultats (défaut 20)
     Endpoint: https://justicelibre.org/mcp
- get_decision_judiciaire_libre - Extraction du texte intégral d'une décision judiciaire depuis l'index
    indépendant (sans authentification).

    Accepte exclusivement les identifiants judiciaires libres (formats
    `JURITEXT*`, `CONSTEXT*`, `JURI*`), tels que retournés par
    `search_judiciaire_libre` (exemples : `"JURITEXT000042579700"`,
    `"CONSTEXT000049574021"`).

    Outil formellement inopérant pour les décisions relevant de l'ordre
    administratif (formats `DCE_*`, `DTA_*`, `DCAA_*`, `/Ariane_Web/...`).

    Args:
        decision_id: identifiant JURITEXT/JURI/CONSTEXT de la décision
     Endpoint: https://justicelibre.org/mcp
- search_judiciaire - Recherche dans la jurisprudence judiciaire via l'API officielle PISTE
    (authentification OAuth2 requise).

    Périmètre : Cour de cassation, cours d'appel, tribunaux judiciaires,
    tribunaux de commerce. À n'utiliser qu'en dernier recours ou pour des
    décisions récentes absentes de la base libre DILA, compte tenu de
    l'entrave technique imposée par la Cour de cassation.

    Deux méthodes d'authentification disponibles :
    1. `session_token` : jeton temporaire obtenu sur
       justicelibre.org/tutoriel-piste.html (procédé recommandé, préserve
       la confidentialité des identifiants).
    2. `client_id` + `client_secret` : identifiants PISTE directs
       (transmission en chat déconseillée).

    Args:
        query: mots-clés de recherche
        session_token: jeton justicelibre temporaire (obtenu via le
            formulaire du site)
        client_id: Client ID PISTE (alternative au session_token)
        client_secret: Client Secret PISTE (alternative au session_token)
        juridiction: filtre optionnel — "cc" (Cour de cassation), "ca"
            (cours d'appel), "tj" (tribunaux judiciaires), "tcom"
            (tribunaux de commerce). Vide = toutes juridictions.
        limit: nombre maximum de résultats (défaut 20, maximum 50)
     Endpoint: https://justicelibre.org/mcp
- get_decision_judiciaire - Extraction du texte intégral d'une décision judiciaire via l'API
    restreinte PISTE (authentification OAuth2 requise).

    À substituer systématiquement par `get_decision_judiciaire_libre`
    lorsque la décision figure dans les archives ouvertes de la DILA.

    Outil formellement inopérant pour les décisions relevant de l'ordre
    administratif (formats `DCE_*`, `DTA_*`, `DCAA_*`, `/Ariane_Web/...`).

    Args:
        decision_id: identifiant Judilibre de la décision
        session_token: jeton justicelibre temporaire (recommandé)
        client_id: Client ID PISTE (alternative)
        client_secret: Client Secret PISTE (alternative)
     Endpoint: https://justicelibre.org/mcp
- resolve_law_number - Résout un numéro de loi/ordonnance/décret vers son identifiant LEGITEXT
    ou JORFTEXT Légifrance.

    Utile pour les textes non codifiés (lois, ordonnances, décrets) qui ne
    sont pas dans la whitelist des 25 codes courts (CC, CP, LIL, LO58, etc.).
    Une fois le LEGITEXT/JORFTEXT résolu, on peut l'utiliser avec
    `get_law_article(code=<LEGITEXT>, num=<N>)` pour récupérer un article
    spécifique.

    Exemples :
    - `resolve_law_number("68-1250")` → loi prescription quadriennale des
      créances publiques (JORFTEXT000000878035)
    - `resolve_law_number("79-587")` → loi motivation des actes admin
    - `resolve_law_number("2000-321")` → loi droits citoyens face à l'admin

    Args:
        numero: format "YY-NNNN" ou "YYYY-NNNN" (ex: "68-1250", "2000-321")

    Returns:
        `{numero, legitext, titre_section, date_debut, articles_count, source_url}`
        ou `{error}` si introuvable.
     Endpoint: https://justicelibre.org/mcp
- build_source_url - Construit l'URL canonique d'un document à partir de son identifiant.

    Utile pour vérifier les sources à la main sur le site officiel (Légifrance,
    Conseil constitutionnel, EUR-Lex, HUDOC, etc.) ou pour inclure un lien
    cliquable dans un courrier.

    Identifiants reconnus :
    - `LEGIARTI*` → Légifrance article (passer `legitext` du texte parent
      pour distinguer code (/codes/) vs loi non codifiée (/loda/)
    - `LEGITEXT*` / `JORFTEXT*` → texte entier Légifrance
    - `JURITEXT*` / `CONSTEXT*` / `CETATEXT*` → décisions Légifrance
    - CELEX (`6XXXXCJXXXX`) → EUR-Lex (CJUE)
    - `ECLI:*` → EUR-Lex deeplink
    - itemid HUDOC (`001-XXXXXX`) → Cour EDH
    - ArianeWeb (`/Ariane_Web/AW_DCE/|XXXXXX`) → conseil-etat.fr

    Args:
        identifier: l'ID à convertir
        legitext: (optionnel) LEGITEXT du texte parent si `identifier` est un
            LEGIARTI — améliore la précision de l'URL (codes/ vs loda/)
        date: (optionnel, YYYY-MM-DD) — appendé à l'URL Légifrance pour pointer
            vers la version de l'article en vigueur à cette date
            (ex: `/loda/article_lc/LEGIARTI.../2023-01-01`). Indispensable pour
            vérifier l'état du droit à une date historique, sinon Légifrance
            affiche la version courante même si l'article a été abrogé depuis.

    Returns:
        `{"id", "source_url"}` ou `{"error"}` si format non reconnu.
     Endpoint: https://justicelibre.org/mcp
- get_cc_decision - Récupère une décision du Conseil constitutionnel par son numéro.

    Format attendu : "AA-NNN NATURE" ou juste "AA-NNN" (ex : "79-105 DC",
    "2020-800 DC", "2023-1048 QPC"). Recherche full-text sur le numéro
    + filtre juridiction="Conseil constitutionnel" dans judiciaire.db.

    Args:
        numero: numéro de décision CC (ex : "79-105 DC")
        nature: filtre optionnel (QPC, DC, L, etc.) — cf search_cc

    Returns:
        `{id, titre, date, juridiction, nature, ecli, text}` ou None.
     Endpoint: https://justicelibre.org/mcp
- get_ce_decision - Récupère une décision du Conseil d'État par son numéro de pourvoi.

    Essaie d'abord le bulk JADE DILA (lookup SQL exact), puis si introuvable
    tente ArianeWeb Sinequa — les deux bases ont des couvertures complémentaires.

    Pour retrouver une décision via identifiant DCE_*, utiliser
    `get_decision_text` à la place.

    Args:
        numero: numéro de pourvoi (ex : "497566", "358109")

    Returns:
        Décision avec métadonnées, ou None si introuvable dans les deux bases.
     Endpoint: https://justicelibre.org/mcp
- get_admin_decision - Récupère une décision administrative par son **numéro de requête exact**.

    Couvre toutes les juridictions : Conseil d'État, cours administratives
    d'appel (CAA), tribunaux administratifs (TA). Utilise un lookup SQL exact
    sur le champ `numero` — pas de FTS5, pas de faux positifs.

    ⚠️ **Désambiguïsation indispensable** : un même numéro à 7 chiffres
    (ex: 2200433) est partagé par 24+ tribunaux administratifs différents
    (chaque TA a sa propre série annuelle qui repart à 1). Sans `juridiction`,
    tu obtiens un homonyme au hasard parmi 24 — souvent pas le bon. **Si tu
    sais quelle juridiction a rendu la décision, passe-la TOUJOURS.**

    Args:
        numero: numéro de requête (ex : "2200433", "2116343", "497566")
        juridiction: identifiant de la juridiction. **Recommandé pour tout
            numéro à 7 chiffres** (TA/CAA codifié). Deux formats acceptés
            (mapping bidirectionnel automatique) :
            - **Code court** (recommandé pour les LLMs) : "TA69" (Lyon),
              "TA75" (Paris), "CAA69", "CE", "CE-CAA"
            - **Nom long** : "Tribunal Administratif de Lyon", "Conseil d'Etat"
              (avec ou sans accent), match insensible à la casse
            Note : "Lyon" seul est ambigu (TA Lyon ou CAA Lyon) — préférer
            le code court ou le nom complet pour éviter la collision.

    Returns:
        Décision avec métadonnées (id, juridiction, numero, date, titre),
        ou `{"error": "introuvable"}` si aucun résultat dans JADE.

    Exemples :
        get_admin_decision("2200433", juridiction="Tribunal Administratif de Lyon")
            → DTA_2200433_20230214 (TA Lyon, 14 fév 2023, RSA dérogatoire)
        get_admin_decision("473286")  # CE n'a pas de doublon, juridiction inutile
            → DCE_473286_20231123 (CE, non-admission du pourvoi sur la précédente)
     Endpoint: https://justicelibre.org/mcp
- search_cc - Recherche dédiée au **Conseil constitutionnel** (7 112 décisions).

    Quatrième pouvoir juridictionnel français aux côtés de la Cour de cassation,
    du Conseil d'État et de la Cour de justice de la République. Contrôle la
    constitutionnalité des lois (contrôle *a priori* via DC, *a posteriori* via
    QPC) et les élections nationales.

    Args:
        query: mots-clés (opérateurs FTS5)
        nature: filtre optionnel par type de décision :
            - "QPC" : Question Prioritaire de Constitutionnalité
              (contrôle a posteriori, saisine par justiciable via CE/Cass)
            - "DC"  : Décision sur conformité de loi ordinaire ou organique
              (contrôle a priori avant promulgation)
            - "L"   : Lois diverses, délégalisation
            - "AN"  : Élections législatives, inéligibilités
            - "SEN" : Élections sénatoriales
            - "PDR" : Élection présidentielle
            - "ORGA": Organisation (règlement intérieur, composition)
            - "REF" : Référendum
            - "ELEC": Autres élections
            - "I"   : Incompétence
            (si vide, toutes natures confondues)
        date_min, date_max: ISO YYYY-MM-DD
        limit: max 50 (défaut 20)
        offset: pagination

    Returns:
        `{"total", "returned", "nature_filter", "decisions": [...]}`
     Endpoint: https://justicelibre.org/mcp
- search_cedh - Recherche textuelle dans la jurisprudence de la Cour européenne des
    droits de l'homme.

    Exploitation de l'index localisé regroupant les ~76 000 documents
    HUDOC francophones (arrêts, décisions, rapports de Chambre, Grande
    Chambre, Comité). Libre d'accès.

    Args:
        query: mots-clés (ex : "article 8 vie familiale", "garde à vue")
        limit: nombre maximum de résultats (défaut 20)
     Endpoint: https://justicelibre.org/mcp
- get_decision_cedh - Extraction du texte intégral d'une décision de la Cour européenne des
    droits de l'homme sur la base de son identifiant système (itemid HUDOC).

    Args:
        decision_id: itemid HUDOC (ex : "001-249914")
     Endpoint: https://justicelibre.org/mcp
- search_cjue - Recherche textuelle dans la jurisprudence de la Cour de justice de
    l'Union européenne.

    Exploitation de l'index localisé des décisions de la CJUE, du Tribunal
    de l'UE, des ordonnances et des conclusions des avocats généraux
    (données EUR-Lex). Libre d'accès.

    Args:
        query: mots-clés (ex : "libre circulation capitaux", "CJUE C-72/24")
        limit: nombre maximum de résultats (défaut 20)
     Endpoint: https://justicelibre.org/mcp
- get_decision_cjue - Extraction du texte intégral d'une décision de la Cour de justice de
    l'Union européenne sur la base de son identifiant normalisé (CELEX).

    Args:
        decision_id: identifiant CELEX (ex : "62024CJ0072") ou ECLI
     Endpoint: https://justicelibre.org/mcp
- search_admin - Recherche pondérée par pertinence BM25 sur la jurisprudence
    administrative complète (Conseil d'État + 9 CAA + 40 TA).

    Source : bulk JADE DILA (~4M décisions full text). Contrairement aux
    outils `search_admin_recent*` qui trient par date, celui-ci classe par
    pertinence sémantique des mots-clés. Indispensable pour trouver LES
    bonnes décisions sur un sujet sans dépendre de l'ancienneté.

    ⚠️ **Si tu cherches par numéro de requête (7 chiffres ex: 2200433)**,
    utilise plutôt `get_admin_decision(numero, juridiction=...)` qui fait
    un lookup SQL exact. La recherche FTS5 d'un numéro court ne le trouve
    que dans les décisions qui le **citent** dans leur texte (ex: décision
    de cassation), pas la décision identifiée par ce numéro.

    Args:
        query: mots-clés (opérateurs FTS5 : AND/OR/NOT, "phrase exacte", mot*)
        juridiction: filtre par fragment de nom de juridiction. Ex :
            "Lyon" → toutes les décisions Lyon (TA + CAA), "Tribunal
            Administratif de Lyon" → uniquement TA Lyon. Combiné en
            FTS5 AND avec la query principale.
        sort: "relevance" (défaut, BM25) ou "date_desc" / "date_asc"
        date_min: limite inférieure ISO YYYY-MM-DD (optionnel)
        date_max: limite supérieure ISO YYYY-MM-DD (optionnel)
        limit: nombre de résultats (défaut 20, max 50)
        offset: pagination

    Returns:
        {"total", "returned", "decisions": [...]} avec extracts BM25.
     Endpoint: https://justicelibre.org/mcp
- search_legi - Recherche pondérée dans les codes et lois consolidés français.

    Source : bulk LEGI DILA (3,6 Go avec versions historiques). Trouve
    les articles dont le texte ou le titre contient les mots-clés.

    Args:
        query: mots-clés FTS5
        code: filtre optionnel sur un code spécifique (CC, CT, CSP...)
        date_min/date_max: filtre par date_debut de version (ISO)
        limit: max 50
        offset: pagination

    Returns:
        {"total", "returned", "articles": [...]}
     Endpoint: https://justicelibre.org/mcp
- search_jorf - Recherche dans le Journal officiel (JORF post-1990).

    Source : bulk JORF DILA (1,1 Go). Contient les textes publiés au JO
    non codifiés : lois, décrets, arrêtés, circulaires, ordonnances.

    Args:
        query: mots-clés FTS5
        nature: filtre optionnel ("LOI", "DECRET", "ARRETE", "CIRCULAIRE"...)
        date_min/date_max: fourchette de publication (ISO)
        limit: max 50

    Returns:
        {"total", "returned", "textes": [...]}
     Endpoint: https://justicelibre.org/mcp
- search_kali - Recherche dans les conventions collectives et accords de branche (KALI).

    Source : bulk KALI DILA (745 Mo). Couvre les conventions collectives
    nationales, accords de branche, avenants, identifiés par leur IDCC.

    Args:
        query: mots-clés
        idcc: filtre optionnel par IDCC (4 chiffres, ex "1486" pour bureaux
              d'études techniques)
        limit: max 50
     Endpoint: https://justicelibre.org/mcp
- search_cnil - Recherche dans les délibérations de la CNIL.

    Source : bulk CNIL (109 Mo, ~26k délibérations). Utile pour le droit
    des données personnelles, RGPD, traitements algorithmiques.
     Endpoint: https://justicelibre.org/mcp
- get_law_article - Renvoie le texte d'un article de loi à une date donnée (ou version
    actuelle si `date` vide).

    Particularité justicelibre : quand une décision de 1992 cite
    l'article 1128 du Code civil, l'article a été totalement réécrit en
    2016. Avec ce tool on récupère le texte **tel qu'il existait en 1992**
    (l'ancienne version napoléonienne), pas le texte actuel.

    Codes supportés (~77 codes en vigueur) :
    - Codes courants : CC, CP, CPC, CPP, CT, CSP, CGI (principal), CCH, CMF
    - Procédure : CJA, CPCEx, COJ, CJM, CJPM, CDPMM, LPF, CGFP, CRPA
    - Travail / Social : CASF, CSS, CMut, CPRM, CTravM
    - Justice / Penal : CExpr, CPenit, CElec
    - Patrimoine / Urbanisme : CU, CG3P, CPatr, CDE, CDEMay, CDPFNav
    - Economie / Finance : C.com, C.cons, CAss, CIBS, CDouanes, CDouMay
    - Communication / Numerique : CPCE, CRech, CCine, CCom2
    - Specialises : CDef, CSI, CTransp, CEner, CRoute, CAvCiv, CPortM, CSport, CTou
    - Environnement / Rural : C.env, CR, CRurA, CMin, CForet, CMinA, CArt, CFAS
    - Outre-mer : CCNC, CDouMay, CDEMay
    - Constitution + lois non codifiees : CONST, LIL, LO58, L2005-102

    Si un code n'est pas reconnu, vous pouvez aussi passer son LEGITEXT
    Legifrance directement comme code (ex: LEGITEXT000025024948).

    Args:
        code: code court (ex : "CC" pour Code civil, "CT" pour Code du travail)
        num: numéro de l'article (ex : "1128", "L1152-1", "132-1")
        date: date ISO YYYY-MM-DD (optionnel — si absent, version en vigueur).
              Utiliser la date de la décision citante pour obtenir la
              version contemporaine de la citation.

    Returns:
        dict avec `legiarti`, `num`, `code`, `texte`, `etat`
        (VIGUEUR/MODIFIE/ABROGE), `date_debut`, `date_fin`, `nota`. Plus
        un champ `note` si la version retournée n'est pas celle demandée.
     Endpoint: https://justicelibre.org/mcp
- get_law_versions - Renvoie toutes les versions historiques d'un article de loi, du plus
    ancien au plus récent.

    Utile pour construire une "timeline" de l'article et comprendre son
    évolution (ex : un article modifié en 1964, 1994, 2016 aura 3-4 lignes
    avec `date_debut`, `date_fin`, `etat`, `texte` distincts).

    Args:
        code: code court (voir get_law_article pour la liste des 77 codes)
        num: numéro de l'article

    Returns:
        dict avec `code`, `code_long`, `num`, `count`, `versions`
        (liste ordonnée par `date_debut` ascendante).
     Endpoint: https://justicelibre.org/mcp
- search_decisions_citing - Cherche les décisions qui citent EXPLICITEMENT un article de loi donné.

    Exploite l'index FTS5 sur les sources jurisprudence disponibles pour
    matcher les formulations courantes de citation (`"article 1382 du code
    civil"`, `"art. L. 1152-1 du Code du travail"`, etc.). Cross-référencement
    inverse : partant d'un article, on trouve la jurisprudence pertinente.

    **LIMITATION CONNUE** : ce tool trouve UNIQUEMENT les citations explicites
    du numéro d'article. Il ne capte PAS :
    - les références indirectes ("conformément aux dispositions du Code civil
      relatives à la responsabilité délictuelle…")
    - les renvois à une section entière sans numéro précis
    - les citations du code par abréviation seule sans article ("en vertu du CT")
    Pour une recherche conceptuelle plus large, préférer `search_all` avec
    l'expansion thésaurus (ex: "harcèlement" → inclut "intimidation" etc.).

    Args:
        code: code court de l'article (ex : "CT", "CC")
        num: numéro de l'article (ex : "L1152-1", "1240")
        sources: liste optionnelle de sources à interroger parmi
                 ["dila", "jade", "cedh", "cjue"]. Par défaut : toutes.
        limit: nombre de décisions par source (défaut 20, max 50)

    Returns:
        dict `{"code", "num", "total", "per_source": {source: count},
        "decisions": [{source, id, juridiction, date, title, extract}]}`
     Endpoint: https://justicelibre.org/mcp
- search_all - Recherche fédérée pondérée par pertinence sur toutes les sources.

    Tool ONE-STOP quand on ne sait pas où chercher : interroge en parallèle
    les sources locales (DILA judic, JADE admin, LEGI, CEDH, CJUE) et
    retourne une liste fusionnée triée par score BM25 avec un bonus
    d'autorité (CE/Cass/CEDH > CAA > TA/CA).

    Args:
        query: mots-clés (ou phrase). Si `expand_synonyms=True` (défaut),
            les termes du thésaurus juridique FR sont automatiquement
            étendus à leurs équivalents (ex: "harcèlement" → aussi
            "intimidation", "vexation morale", etc.)
        sources: liste optionnelle parmi ["dila", "jade", "legi", "cedh",
            "cjue"]. None = toutes.
        sort: "relevance" (défaut) ou "date_desc"
        date_min, date_max: ISO YYYY-MM-DD
        limit: nombre de résultats fusionnés (défaut 30, max 100)
        expand_synonyms: active le thésaurus (défaut True)

    Returns:
        dict {"query_expanded", "per_source_counts", "results": [...]}
     Endpoint: https://justicelibre.org/mcp

## Resources
Not captured

## Prompts
Not captured

## Metadata
- Owner: io.github.Dahliyaal
- Version: 1.0.0
- Runtime: Streamable Http
- Transports: HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: Apr 16, 2026
- Source: https://registry.modelcontextprotocol.io
