Skip to content

Releases

1.1.0 - 2026-11-02

Choose a tag to compare

@github-actions github-actions released this 02 Nov 02:33
Immutable release. Only release title and notes can be modified.
c324124

Release Notes

Ajouts compatibles de la 1.1.0 (PR #63, vagues V1, V2a, V2b et V3) : champs de sortie optionnels, paramètre optionnel, textes de descriptions et d'instructions. Aucun champ requis retiré, aucun type changé, aucune valeur d'énumération retirée : lock-descriptors --compare v1.0.1 classe ses 35 changements en 18 additions et 17 correctifs de texte, sans rupture.

Added

  • fr_resolve et fr_verify_citations : les articles résolus portent la période de validité de la version lue, en champs optionnels etat, date_debut et date_fin (candidates[] et citations[].resolved ; date de fin sentinelle et valeurs absentes omises ; aucun champ pour les décisions et les textes). Complète la note de version de la 1.0.1. Un article cité par son identifiant LEGIARTI ou KALIARTI porte les mêmes champs qu'un article trouvé par son numéro. (journey_patrimoine-14, D-03)
  • fr_diff_article : champ de sortie optionnel note, présent quand moins de 40 % des mots de la version A se retrouvent dans la version B (article renuméroté ou remplacé par un texte sans rapport, par exemple Code civil art. 9 : nationalité puis vie privée, 4 % de mots conservés ; le seuil de 40 % est calibré sur six textes courts (Code civil 1382 et 1240, CGI 777) et sur 45 paires (deux sens) de dix articles réels sans rapport, de 130 à 3 928 mots, qui gardent au plus 25,8 % de leurs mots ; deux textes courts sans rapport peuvent garder 30 % de mots outils. Seuil provisoire de ce côté : aucun amendement réel gardant 40 à 70 % des mots n'a été relevé, un tel amendement recevrait la note ou non selon sa part conservée). Le diff reste rendu en entier ; la note invite à lire les deux versions avec fr_get_text. Absent pour des versions identiques, un amendement ou un texte sans mot. (related_diff-1, D-06)
  • summary_truncated : booléen optionnel (absent sauf si vrai) sur les sorties de fr_get_text, fr_get_decision et fr_get_deliberation, vrai quand le résumé lui-même est coupé ou n'est que le début du texte (source lead, y compris quand le début rendu est plus court que le texte sans que le plafond l'ait coupé) ; absent pour un sommaire officiel ou un dispositif donné entier, qui peut ne couvrir qu'une partie du texte. (decisions-4, D-01)
  • fr_get_related : paramètre facultatif relation (cites, cited_by, cites_case_law, applies_text, sans casse) pour ne demander que les liens d'un sens. Le filtre est appliqué avant le plafond de 100 liens : total compte la relation demandée, ce qui rend accessibles les liens « cités par » d'un article très cité (L. 1234-9 du Code du travail : 254 liens, 100 servis jusque-là). Valeur inconnue : invalid_arg qui liste les quatre valeurs. Une relation de l'autre famille que l'identifiant (cites_case_law ou applies_text pour un article, cites ou cited_by pour une décision) est refusée sans appel au port par un invalid_arg qui liste les relations valides de la famille, au lieu de rendre total: 0 et links: [], indiscernables d'un vrai « aucun lien » (relation est nouveau en 1.1.0 : ce n'est pas une rupture). Sans relation, la réponse est inchangée. Pour une décision, truncated et note décrivent la liste filtrée : ils n'annoncent plus des références coupées ni des codes qui ne concernent que d'autres relations (la note sur les codes n'accompagne que applies_text). (related_diff-6, D-05)
  • fr_get_text, fr_get_decision et fr_get_deliberation : en mode focus, chaque passage porte son score (score BM25 du segment, arrondi à 2 décimales, jamais sous 0,01 : un score brut inférieur à 0,005, qui donnerait 0,00 après l'arrondi, est relevé à 0,01), conformément au contrat 05 §5.0.3 qui l'annonçait. Les passages restent classés du mieux noté au moins bon ; le score permet d'écarter les passages marginaux, il ne se compare qu'entre passages d'une même réponse. (get_text-6, D-02)
  • fr_search : paramètre optionnel in_force_only (booléen, KALI seulement) qui ne garde que les textes en vigueur (états VIGUEUR, VIGUEUR_ETEN, VIGUEUR_NON_ETEN ; DENONCE, MODIFIE, PERIME, REMPLACE et ABROGE sont exclus ; la description du paramètre dit que DENONCE est exclu bien qu'une convention dénoncée puisse encore s'appliquer pendant le préavis et la survie, code du travail L. 2261-10), par la facette PISTE LEGAL_STATUS ; il se combine avec date_from/date_to. Pour un autre fond, la valeur true est refusée par un invalid_arg qui le dit. Le filtre porte sur les textes, pas sur le statut d'un article sous un texte en vigueur. VIGUEUR_DIFF (entrée en vigueur différée) n'est pas une valeur de la facette LEGAL_STATUS de KALI (les huit valeurs relevées, ABROGE, DENONCE, MODIFIE, PERIME, REMPLACE, VIGUEUR, VIGUEUR_ETEN et VIGUEUR_NON_ETEN, totalisent les 27 589 résultats du relevé sans filtre c110/D08-kali-cc-sans-filtre) : aucun texte KALI n'y est écarté à tort. Comportement de la facette (OU entre valeurs, états exclus) relevé en sandbox seulement : à recontrôler en production lors de la PR de version. Défense en profondeur, la production ne pouvant pas être testée : si in_force_only est vrai et qu'un résultat rendu a un etat hors des trois gardés, le champ note existant ajoute « in_force_only was set, but a hit is not VIGUEUR, VIGUEUR_ETEN or VIGUEUR_NON_ETEN: the source may not have applied the filter. Check each etat. » (aucun champ nouveau ; un résultat sans etat n'est pas signalé). (journey_general-1, complément de L2-11, D-08)
  • fr_search et fr_search_all : une recherche sans résultat porte maintenant une note (« No match: try other words, remove the date filters or call fr_coverage; an empty result does not mean the law is silent. » ; pour fr_search_all, quand tous les fonds sont vides, « No match in any fond: try other words or other fonds, or call fr_coverage; an empty result does not mean the law is silent. »). Aucun champ nouveau : c'est le champ note optionnel existant. Une page vide d'une recherche dont le total est positif, ou un fond en erreur, ne reçoit pas cette note. (search_all-9, D-10)
  • Descriptions et instructions enrichies : glossaire de etat sans joker (revue finale de la PR 2) : VIGUEUR, VIGUEUR_ETEN, VIGUEUR_NON_ETEN et ABROGE_DIFF en vigueur ; VIGUEUR_DIFF pas encore en vigueur (entrée différée, date_debut peut être absente) ; MODIFIE, ABROGE, PERIME, ANNULE, REMPLACE, TRANSFERE, SUBSTITUE, DISJOINT et MODIFIE_MORT_NE (jamais en vigueur : modifié avant d'avoir pris effet) plus en vigueur ; DENONCE dénoncé, qui peut encore s'appliquer pendant le préavis et la survie (code du travail L. 2261-10) ; INITIALE et SANS_ETAT sans signal. L'ancienne règle « VIGUEUR* en vigueur, tout autre code non » rangeait VIGUEUR_DIFF parmi les versions en vigueur, et INITIALE, SANS_ETAT et les codes inconnus parmi celles qui ne le sont plus. Le glossaire complet est dans la description du champ etat de fr_get_text ; fr_search, fr_resolve, fr_verify_citations et fr_get_act portent une version courte qui renvoie à lui, et les instructions une règle plus courte encore ; descriptions des champs date_debut, date_fin des candidats de fr_resolve et des enregistrements de fr_verify_citations (date_fin : jour où la version suivante ou l'abrogation prend effet ; absente : sans fin connue) ; description de quote (seul un extrait collé à la citation est contrôlé, l'absence de quote veut dire non contrôlé). (D-12)

Changed

  • fr_get_text : en mode résumé, un article (LEGIARTI ou KALIARTI) de 2 000 caractères au plus (min(max_chars, 2 000)) est rendu entier au lieu de 1 200 ; le résumé d'un article plus long, d'une décision ou d'une délibération reste plafonné à 1 200 caractères (par exemple l'article 757 B du CGI, 1 307 caractères, revient entier). (decisions-4, D-01)
  • summary / summary_source (fr_get_decision, fr_get_text, fr_get_deliberation) : une entrée du sommaire officiel de moins de 20 caractères alphanumériques (par exemple le « X » amont d'une ordonnance du TJ de Paris) n'est plus présentée comme sommaire officiel ; le résumé retombe sur le dispositif puis sur le début du texte et summary_source le dit. Aucun champ ni schéma ne change. (decisions-1, D-07)
  • fr_get_deliberation : le résumé d'une sanction ou d'une mise en demeure de la CNIL est son dispositif (summary_source = dispositif, avec l'amende, l'injonction, l'astreinte et la publicité prononcées) au lieu du début du texte ; un avis reste au début du texte (lead). Marqueurs lus sur quatre sanctions et une mise en demeure relevées (celle de la mise en demeure n'est établie que sur un texte) ; sans marqueur, comportement inchangé. La signature (« Le Président », « La Présidente », seuls ou suivis du nom) et la mention des voies de recours (« Cette décision peut faire… », « est susceptible… ») ferment le dispositif ; une phrase du dispositif qui commence par ces mots (« Le Président de la CNIL est chargé… », « Cette décision est rendue publique… ») ne le ferme pas. (D-09, gap4-14, gap4-1)
  • Instructions du serveur (3 278 → 3 499 caractères, plafond 3 500) : « A summary is never the whole text: pass detail="full" before quoting a threshold, amount or rate » remplace « For the text itself pass detail="full" » ; « Texts are verbatim » précise que les cellules d'un tableau sont jointes par « | » (L4-01). Les lignes ELI et [config_error] et la phrase d'ouverture (« Use them for any question on French law or case law. ») sont raccourcies sans changer de sens. (D-12)
  • fr_get_deliberation : la description donne le seuil réel (un texte d'environ 1 200 caractères ou moins revient entier), dit que le résumé d'une sanction ou d'une mise en demeure est son dispositif (sinon le début du texte) et que focus l'emporte sur detail et offset. (D-12, accompagne D-09)
  • fr_search : la description dit que le date d'un résultat est la date que Légifrance donne pour...
Read more

1.0.1 - 2026-11-01

Choose a tag to compare

@github-actions github-actions released this 01 Nov 22:07
Immutable release. Only release title and notes can be modified.
2e73f51

Release Notes

Correctifs des défauts relevés par le test de bout en bout de la 1.0.0 (2026-11-01, PR #61). Aucun outil, paramètre, champ ni valeur d'énumération nouveau : lock-descriptors --compare v1.0.0 classe ses 89 changements en correctifs. Les ajouts (champs structurés, nouvelles valeurs) viennent en 1.1.0.

Fixed

  • fr_verify_citations : un extrait entre guillemets fait de repères d'énumération tolérés sans fin trouvée (« 1. 1. 1. … 1. zzz », 665 repères contre une décision de 53 683 mots) n'explore plus 35,8 millions d'états (1,7 Gio de pic, appel synchrone) : la comparaison s'arrête à 1 000 000 d'états par extrait. Au-delà, l'extrait n'est pas contrôlé (quote absent, ni match ni quote_mismatch) et la note dit « The quoted passage was too long to compare and was not checked. ». Aucune valeur d'énumération nouvelle. (revue finale S1)
  • fr_verify_citations : un article dont le numéro ne peut pas être lu (« CGI, art. 885-0 V bis A », « art. 150-0 B ter I du CGI », refusés en entier par le filet de L1-01) ne disparaît plus sans trace quand d'autres citations sont lues : la note de la réponse dit « An article reference could not be read and was not checked. ». Détection unread_article_mentions (lf-domain) ; aucun des 185 textes du corpus positif ne la déclenche. (revue finale I3)
  • États « plus en vigueur » : fr_resolve, fr_verify_citations et fr_get_text partagent une seule règle (LegalStatus::is_superseded). ABROGE_DIFF (abrogation différée, encore en vigueur) n'est plus présenté comme une version remplacée par fr_resolve ; DISJOINT l'est désormais aussi par fr_get_text. (revue finale I2)
  • Notes de version et de plage : les textes de L2-07 et L2-12 sont raccourcis pour que la mention de plage, qui justifie la confiance medium, ne disparaisse plus derrière la note de version d'un article MODIFIE à date de fin (129 + 90 caractères dépassaient 200) ; au pire état, version (112) et plage (59) tiennent ensemble. (revue finale I1)
  • fr_resolve (et fr_verify_citations pour une citation datée) : une version d'article lue à une date passée et remplacée ou abrogée depuis le dit dans note (« Version in force on 2011-06-01 (etat=MODIFIE, ended 2011-06-12); omit the date to read the current text. »), au lieu de rester muette (journey_patrimoine-14, resolve-5). Aucun champ ajouté ; les champs structurés viennent en 1.1.0. (L2-12)
  • fr_verify_citations signale ce qui n'est pas contrôlé : un passage entre guillemets que ne jouxte aucune citation (« énonce : », « précise que ») donne une note de la réponse, et une citation avec alinéa, point ou phrase reçoit la note « The sub-division was not checked, only the article. » ; fr_resolve ajoute la même note de subdivision (verify_citations-8, gap3-8, journey_patrimoine-7 par la note de L2-08). Statuts inchangés. Limite connue : quand un écart d'extrait et une version remplacée (112 caractères au pire, MODIFIE_MORT_NE avec date de fin) remplissent déjà les 200 caractères de note, la note de subdivision (ou la lecture du sigle, qui forme une seule note avec la plage) est omise plutôt que coupée : au pire état, « CP » et « CC » tiennent avec la plage, les titres plus longs sautent ; les champs structurés de 1.1.0 lèvent cette limite. (L2-17)
  • Citations : les articles à suffixe composé sont lus en entier, « 150-0 B ter » (jusqu'ici lu « 150-0 B », avec une fausse validation sur l'article voisin quand un code précédait) et « 199 terdecies-0 A » (jusqu'ici ignoré sans trace). Un numéro dont un adverbe latin ou une lettre ne peut pas être lu (« 5 bis ter », « 885-0 V bis A ») n'est plus tronqué : il n'est pas reconnu comme citation. La propagation du sigle devant « (art. 777 ; … » (gap3-6, partie B) n'est pas corrigée. (L1-01)
  • fr_verify_citations : une décision de la CJUE ou du Tribunal de l'UE citée avec ses parties entre la date et le numéro d'affaire (« CJUE, 6 octobre 2015, Schrems, C-362/14 ») est maintenant détectée et rapportée hors périmètre (unresolvable) au lieu d'être omise silencieusement (checked 0, found 0). (L1-06, verify_citations-15)
  • Une convention collective citée avec son IDCC sans parenthèses (« convention collective IDCC 1486 », « CCN IDCC 1486 ») est maintenant reconnue et résolue comme « IDCC 1486 » (fr_resolve, fr_verify_citations) ; auparavant l'IDCC était avalé dans le titre et la réponse était une liste vide avec une note fausse. (L1-05, resolve-7)
  • fr_verify_citations : un extrait entre guillemets n'est plus tenu pour fidèle (quote: "match") quand un chiffre, une négation ou un mot du texte officiel a été changé (par exemple « 12 mois » pour « 8 mois » à l'article L. 1234-9 du code du travail, ou « un préjudice » pour « un dommage » à l'article 1240 du code civil). Chaque mot de l'extrait doit figurer à la suite et dans l'ordre dans le texte officiel ; la casse, les accents, la ponctuation, les espaces, les apostrophes, les repères d'énumération (« 1° », « a) », « I.- ») et la forme « L. 1234-9 » / « L1234-9 » restent tolérés, et « […] » coupe l'extrait en tronçons ordonnés. Le seuil de similarité de 90 % est supprimé. Conséquence : une citation approximative mais honnête, ou un ajout entre crochets, donne désormais quote_mismatch (ADR-0020). (L2-03, verify_citations-1)
  • fr_verify_citations renvoie une note quand aucune citation n'est reconnue (found: 0) : « No citation recognised. Only citations introduced by 'article' or 'art.' are read; an empty result does not prove the text cites nothing. » La même note, étendue, est celle de fr_resolve. (L2-08, errors-14, verify_citations-16)
  • fr_search : page_size=100 n'est plus refusé (« use page_size <= 96 ») pour des citations usuelles, et les extraits et détails ne sont plus retirés plus qu'il ne faut ; l'estimation de taille de fr_search compte exactement le JSON de la vue (clés, guillemets, séparateurs et échappements), et seulement les champs que la vue rend : le title contenu dans la citation (tous les hits JURI) et une date sentinelle n'y sont plus comptés. Sur les cent résultats JURI réels du rejeu, un premier état de ce correctif retirait les cent extraits et la nature du dernier pour une réponse de 24 394 caractères ; seuls les derniers extraits nécessaires partent désormais, jusqu'à la cible de 42 000, et la page CODE de 30 résultats garde tous ses extraits. La note dit « the last hit » au singulier (fr_search, fr_search_all). (L4-06, search-5)
  • fr_get_related : la liste n'est plus coupée à 79-86 liens par une estimation trop pessimiste ; elle va jusqu'à 100 liens (cites d'abord, puis cited_by) tant que la réponse tient sous 45 000 caractères. (L4-06, gap1-3)
  • fr_verify_citations et fr_resolve : « art. 9, al. 1er, C. pr. civ. ; art. 9 C. civ. » ne perd plus la seconde citation et ne rend plus de faux « verified » sur le mauvais code ; l'alinéa s'écrit « 1er », « premier », « 2e » ou « dernier ». (L1-02, verify_citations-6)
  • « et s. », « s. », « ss. », « suiv. » et « et suivants » après un numéro d'article ne font plus perdre le code de la citation ; la note « No code or text given » n'accuse plus l'utilisateur d'un oubli inexistant. (L1-02, gap3-2)
  • fr_search sur un code (CODE) : has_more est maintenant vrai quand des articles correspondants restent à lire (total_articles supérieur à page × page_size, dans la fenêtre de 10 000), et une note indique le nombre d'articles, ceux affichés et la page à demander pour la suite. Avant, une recherche à un texte et 16 articles annonçait has_more: false sans note alors que les pages 2 à 4 listaient les 11 autres. (L4-07, journey_patrimoine-11)
  • fr_verify_citations : les articles du TFUE, du TUE, de la CDFUE, du RGPD et de la Convention européenne des droits de l'homme (« Art. 267 TFUE », « article 8 de la Convention européenne des droits de l'homme », « article 6 § 1 de la CEDH », « article 17 du RGPD », « règlement (UE) 2016/679 du 27 avril 2016 (RGPD), art. 17 ») sont reconnus comme références hors périmètre (unresolvable, kind unsupported) au lieu de ressortir ambiguous avec un conseil renvoyant vers un code français. (L1-07, verify_citations-15, partie articles)
  • fr_resolve et fr_verify_citations ne trouvaient aucune loi, ordonnance ni décret d'avant 2000 (loi n° 89-462, loi n° 78-17, décret n° 93-1419) : le numéro était cherché sous la forme 1989-462 alors que l'index ne connaît que 89-462, et la note affirmait à tort « nothing was found in LODA ». Le numéro est maintenant cherché sous AA-N puis AAAA-N (un seul appel de plus, seulement si la première forme ne donne rien). (L2-01, ground_truth-1, resolve-10)
  • fr_resolve et fr_verify_citations donnaient invalid (ou une confiance medium avec une fausse note « Cited date … differs ») à toute loi, ordonnance ou décret correctement daté, et validaient une date fausse égale à la date d'entrée en vigueur : la date citée était comparée à hit.date (entrée en vigueur ou publication) au lieu de la date de signature. Elle est maintenant comparée à la date de signature lue dans le titre du texte ; titre illisible = confiance medium. (L2-02, resolve-2, gap3-5 partie B)
  • fr_search avec page_size = 1 rendait toujours le même hit quelle que soit la page (PISTE ignore pageNumber à pageSize 1). L'adaptateur demande désormais des pages de 2 et ne garde que le résultat de la page demandée (tous les fonds ; CODE en mode ARTICLE exclu). (L3-05, search-1)
  • Le titre (donc la citation) d'une décision JURI coupé à 256 caractères par l'amont ne finit plus en plein numéro de pourvoi : le dernier jeton partiel est retiré et … est ajouté, dans fr_search et fr_get_decision. Les titres CONSTIT, CETAT et CNIL ne changent pas. (L3-06, search-4)
  • Notes de fr_resolve et fr_verify_citations : la note d'un article sans code reconnu ne renvoie plus l'outil à lui-même et dit qu'un sigle inconnu ou non rattaché à l'article compte comme absent et de nommer l...
Read more

1.0.0 - 2026-10-31

Choose a tag to compare

@github-actions github-actions released this 31 Oct 22:16
Immutable release. Only release title and notes can be modified.
a40b431

Release Notes

Première version publiée. Elle reprend tout [0.3.0] ci-dessous, qui n'a jamais été publiée seule (seule la préversion 0.3.0-rc.1 l'a été), et y ajoute le mode hors ligne (M9). Les binaires pèsent environ 24 % de plus que ceux de 0.3.0-rc.1 (de +0,85 à +1,43 Mio par archive, selon la cible) à cause de l'index local DILA ; le bundle MCPB passe de 28,5 à 35,7 Mio.

Added

  • Sous-commande build-dila-index --archives <dossier> [--index <dossier>] (fonctionnalité dila) : construit ou met à jour l'index local DILA à partir d'archives LEGI déjà téléchargées, avec reprise, sans accès réseau (#51).
  • Script scripts/fetch-dila-dumps.sh : télécharge le dernier global LEGI et ses incréments depuis echanges.dila.gouv.fr, hors du binaire (#51).
  • La fonctionnalité dila est activée dans les binaires publiés, l'image Docker et le build de fumée (dist-workspace.toml, packaging/oci/Dockerfile, smoke-targets.yml).

Security

  • Ingestion DILA : les en-têtes tar de noms longs sont lus sur 513 octets au plus, les en-têtes PAX et de cibles de lien ne sont plus lus, chaque liste de suppression n'est lue qu'une fois par archive, et le registre est lu sur 1 Mio au plus (#52, P-01 de 09 §3.16.7).

Install mcp-legifrance 1.0.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/muchiny/mcp-legifrance/releases/download/v1.0.0/mcp-legifrance-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/muchiny/mcp-legifrance/releases/download/v1.0.0/mcp-legifrance-installer.ps1 | iex"

Download mcp-legifrance 1.0.0

File Platform Checksum
mcp-legifrance-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
mcp-legifrance-x86_64-apple-darwin.tar.xz Intel macOS checksum
mcp-legifrance-x86_64-pc-windows-msvc.zip x64 Windows checksum
mcp-legifrance-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
mcp-legifrance-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum
mcp-legifrance-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
mcp-legifrance-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo muchiny/mcp-legifrance

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation> --repo muchiny/mcp-legifrance

1.0.0-rc.3 - 2026-10-31

Pre-release

Choose a tag to compare

@github-actions github-actions released this 31 Oct 21:22
Immutable release. Only release title and notes can be modified.
7f9beca

Release Notes

Préversion de répétition de la 1.0.0 : mêmes sources que [1.0.0] ci-dessous, qui reste « non publiée » jusqu'à la version finale. Elle compile la fonctionnalité dila pour les sept cibles et permet de mesurer la taille des binaires ; elle ne figure pas au registre MCP (08 §6.5).

Fixed

  • Portes de publication : la comparaison avec l'étiquette précédente accepte une préversion (v0.3.0-rc.1), et la release GitHub n'est plus créée quand les portes échouent (#56).
  • Release : la compilation macOS Apple Silicon utilise macos-15 (et macos-15-intel pour Intel) au lieu de macos-14, que GitHub retire le 2026-11-02.

Install mcp-legifrance 1.0.0-rc.3

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/muchiny/mcp-legifrance/releases/download/v1.0.0-rc.3/mcp-legifrance-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/muchiny/mcp-legifrance/releases/download/v1.0.0-rc.3/mcp-legifrance-installer.ps1 | iex"

Download mcp-legifrance 1.0.0-rc.3

File Platform Checksum
mcp-legifrance-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
mcp-legifrance-x86_64-apple-darwin.tar.xz Intel macOS checksum
mcp-legifrance-x86_64-pc-windows-msvc.zip x64 Windows checksum
mcp-legifrance-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
mcp-legifrance-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum
mcp-legifrance-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
mcp-legifrance-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo muchiny/mcp-legifrance

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation> --repo muchiny/mcp-legifrance

1.0.0-rc.1 - 2026-10-31

Pre-release

Choose a tag to compare

@github-actions github-actions released this 31 Oct 19:05
Immutable release. Only release title and notes can be modified.
37c0680

Release Notes

Préversion de répétition de la 1.0.0 : mêmes sources que [1.0.0] ci-dessous, qui reste « non publiée » jusqu'à la version finale. Elle compile la fonctionnalité dila pour les sept cibles et permet de mesurer la taille des binaires ; elle ne figure pas au registre MCP (08 §6.5).

Install mcp-legifrance 1.0.0-rc.1

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/muchiny/mcp-legifrance/releases/download/v1.0.0-rc.1/mcp-legifrance-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/muchiny/mcp-legifrance/releases/download/v1.0.0-rc.1/mcp-legifrance-installer.ps1 | iex"

Download mcp-legifrance 1.0.0-rc.1

File Platform Checksum
mcp-legifrance-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
mcp-legifrance-x86_64-apple-darwin.tar.xz Intel macOS checksum
mcp-legifrance-x86_64-pc-windows-msvc.zip x64 Windows checksum
mcp-legifrance-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
mcp-legifrance-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum
mcp-legifrance-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
mcp-legifrance-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo muchiny/mcp-legifrance

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation> --repo muchiny/mcp-legifrance

0.3.0-rc.1 - 2026-10-31

Pre-release

Choose a tag to compare

@github-actions github-actions released this 31 Oct 14:08
Immutable release. Only release title and notes can be modified.
9ed5501

Release Notes

Préversion de répétition de la première release : mêmes sources que [0.3.0] ci-dessous, qui reste « non publiée » jusqu'à la version finale. Elle passe les portes de release-gates.yml et la chaîne de build (08 §7), et ne figure pas au registre MCP (08 §6.5).

Install mcp-legifrance 0.3.0-rc.1

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/muchiny/mcp-legifrance/releases/download/v0.3.0-rc.1/mcp-legifrance-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/muchiny/mcp-legifrance/releases/download/v0.3.0-rc.1/mcp-legifrance-installer.ps1 | iex"

Download mcp-legifrance 0.3.0-rc.1

File Platform Checksum
mcp-legifrance-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
mcp-legifrance-x86_64-apple-darwin.tar.xz Intel macOS checksum
mcp-legifrance-x86_64-pc-windows-msvc.zip x64 Windows checksum
mcp-legifrance-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
mcp-legifrance-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum
mcp-legifrance-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
mcp-legifrance-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo muchiny/mcp-legifrance

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation> --repo muchiny/mcp-legifrance