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.

Code civil (France)

NPM · @ARXO/MCP-CODE-CIVIL · 2 COMPONENTS

French Civil Code (LEGI) as executable rules: facts and a legal date in, answers with grounds out

64 Trust /100

Last scanned (9 hours ago)

Scores higher than 37% of npm servers

Category Health and Science

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security97
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 2 of 2 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability48
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 9093 tokens (~433/item across 21 items; 21 tools + 0 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 Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage93
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 76% of tool parameters carry a description.Partial
  • Structured output schemas are declared (38% 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 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 22 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

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.

  • 15 Oct 26 +26
    • Injection markers: unverified → pass ▲ security
    • First check of Judged manipulation: pass security
    • Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
    • Tool coverage: unverified → 100 ▲ functional
    • MCP protocol: unverified → pass ▲ functional
    • First check of Schema quality: fail functional
    • First check of Schema quality: fail functional
    • First check of Tool coverage: 76 functional
    • First check of Destructive annotations: 100 functional
    • First check of Schema quality: good functional
    • First check of Tool coverage: 38 functional
  • 14 Oct 26 38

    First indexed and scored.

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 18 Oct 2026 · Analysed npm/@arxo/mcp-code-civil@0.1.10

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 2 packages
Packages resolved 2
No linked repository 2
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 21 exposed · ~7,318 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
law_answer_capabilities ~61

Une matrice lisible par machine des producteurs Lens réellement installés, des contrôles replay/projection, des profils, des limites et des tests de contrat qui les confirment. declared_only désigne un schéma sans témoin exécutable.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

law_argue ~344

Quelle est la solidité d'une conclusion : la carte du litige selon le profil d'argumentation La réponse tombe en quatre classes : SKEPTICALLY_ACCEPTED — la conclusion est invulnérable (elle survit dans l'extension grounded) ; CREDULOUSLY_ACCEPTED — seulement défendable (il existe une position pour et une contre) ; REJECTED — elle ne survit nulle part ; NO_ARGUMENT — il n'y a aucun argument. Elle construit TOUS les arguments à partir des faits et des règles de l'acte (y compris les chaînes qui n'ont pas tiré dans l'inférence ordinaire), les attaques rebut/undermine/undercut et les défaites par priorité. Les noms de prédicats viennent de law_packages. Sur les grands actes, un refus par plafond est possible — restreignez les faits ou augmentez limits.maxArguments.

NameTypeReqDescription
argsarray–les arguments du prédicat
factsarray–faits de l'affaire : [{predicate, args, negated?, provenance?}]. provenance est le même objet que pour law_ask : origin, document, citation, extractor. confidence est lu par l'EvidencePolicy du paque…
legalTimestring–la date du droit (YYYY-MM-DD)
limitsobject–les plafonds du profil : maxArguments (64), maxExtensions (8), maxUndecided (16)
packagestring–restreindre la question à un paquet de droit
predicatestringyesla conclusion dont on mesure la solidité

No output schema declared.

No examples provided.

law_ask ~1,646

Poser une question au droit formalisé. Quand la réponse est « non établi », elle porte whyNot — le rapport why_not du moteur : les règles candidates et l'état de chaque conjonct (satisfait / non satisfait / indéterminé) ; les faits manquants y sont visibles et n'ont pas à être inventés. AVANT LE PREMIER appel, obtenez les noms de prédicats par law_search (une question dans vos propres mots → adresses) ou law_packages (les signatures d'un acte connu) — un nom inventé sera rejeté. Si l'outil a renvoyé une erreur ou « non établi », C'EST LA RÉPONSE : transmettez-la à l'utilisateur et ne la substituez pas par des connaissances générales sur le droit d'un autre pays. Mais « je n'ai trouvé aucun acte convenable » N'EST PAS une réponse tant que law_search n'a pas été interrogé : le silence du catalogue est une propriété de la recherche par titre, non une conclusion sur le corpus. kind='truth' — si un fait est établi ; kind='collect' — énumérer les enregistrements ; kind='deadline' — calculer un délai sur le calendrier officiel ; kind='positions' — quelles OBLIGATIONS sont nées des faits et quels sont leurs statuts ; kind='why_not' — le rapport why_not sur le même but, quel que soit le statut de la réponse. La réponse porte les règles appliquées, les avertissements et la provenance avec empreintes ; truth/collect portent aussi un bloc signature pour la présentation. Le serveur n'invente pas : là où une norme n'est pas formalisée, la réponse est « non établi » ou une erreur.

NameTypeReqDescription
afterstring–deadline : la date de l'événement
afterTimestring–deadline : l'heure de dépôt
argsarray–les arguments du prédicat dans l'ordre de sa signature ; avec kind='collect', exactement l'un d'eux est la variable de sélection ?name (par exemple ['urn:x:water', 'urn:x:mix', '?value']), les autres…
calc––kind='calc' : un arbre {op,left,right}, op ∈ add|sub|mul|div|le|lt|ge|gt|eq|ne (les synonymes divide/multiply/plus/minus et les signes sont acceptés) ; les feuilles sont 5 | '3932 KZT' | '2 mrp' | {l…
cutoffstring–deadline : l'heure de clôture des opérations
daysinteger–deadline : la durée de la période
deadlinePolicystring|object–la politique de décompte des délais exprimés en jours : le StableId d'une deadline policy déclarée dans le monde de la question (p. ex. 'urn:kz:corpus:clir:administrative-code#AC_WORKING_DAY_TERMS'),…
evidencearray–documents de l'affaire, section 74, nœuds evidence_item. Un document est référencé depuis provenance.evidence de plusieurs faits. payload.confidence est une donnée pour l'EvidencePolicy ; le moteur n…
evidencePolicystring–StableId d'un nœud evidence_policy, section 78.2. Sans lui, les appels précédents gardent leur comportement. Le seuil de confidence est une règle de cette politique, pas un argument de l'appel
factsarray–faits de l'affaire : [{predicate, args, negated?, package?, provenance?, judgment?}]. package résout un nom court ambigu. provenance est {origin?, evidence?: StableId, span?: {page?, quote?, offset?}…
focusedboolean–kind='truth' : poser la question en focused_truth — la même réponse que le truth complet, mais la preuve et les avertissements ne couvrent que le cône de la question ; la réponse porte evaluationKind…
kind––le type de question (truth par défaut)
legalTimestring–la date du droit (YYYY-MM-DD)
packagestring–restreindre la question à un paquet de droit
predicatestring–ce qui est demandé, p. ex. 'duty_amount'
proofboolean–renvoyer dans la réponse le champ evaluation avec le graphe de preuve — une entrée toute prête pour law_explain (kind truth|collect ; par défaut un résumé sans le graphe)
responseMode––full (défaut) — la réponse complète. compact est accepté par compatibilité : ce serveur ne construit pas de réponse courte et renvoie la même réponse complète dans les deux modes ; il n'y a ni référe…
selectedInterpretationsarray–lectures nommées ; pour un groupe exactly_one, choisir exactement un StableId parmi law_packages/law_rules
supportEdgesarray–appuis, section 75, nœuds support_edge : from est l'id du document, to est le littéral du fait, relation est supports ou refutes. L'admission est décidée par l'EvidencePolicy du paquet, pas par l'hôte
unit–––
versionstring–la version exacte du paquet figée par le client (open('name@version')) ; si elle diffère de la composition du profil, l'hôte refuse au lieu de répondre avec une autre version

No output schema declared.

No examples provided.

law_capture_answer ~61

Exécuter un producteur enregistré et obtenir producerControl/0.2 pour une préparation ultérieure vérifiable d'une Lens. Le producteur n'est choisi que dans le registre livré.

NameTypeReqDescription
producerstringyes–
requestobjectyes–

No output schema declared.

No examples provided.

law_case_ask ~481

L'opération ask : exécuter une affaire enregistrée d'un paquet-affaire sur ses dépendances épinglées et renvoyer la réponse : par défaut une projection du document d'évaluation sans graphe de preuve, avec responseMode full ou proof: true le document canonique avec une preuve et un manifeste. La question est du JSON selon query.schema.json (query), une chaîne evaluate (evaluate + queryId), un queryId enregistré sans query, ou card + args. Un refus de préparation est une erreur avec un code LDC-*, jamais une réponse vide.

NameTypeReqDescription
argsobject–les paramètres de la carte : nom → expression textuelle du langage
cardstring–l'id d'une carte d'un catalogue installé
casestring–le nom de la déclaration d'affaire dans [[cases]] ; facultatif s'il n'y a qu'une affaire
evaluatestring–la chaîne `evaluate <expression>;` ; exige queryId
packagestringyesle chemin du paquet-affaire (le répertoire qui contient law.toml) depuis la racine du dépôt
proofboolean–true — le document complet avec le graphe de preuve (comme responseMode full) ; false — la projection. La même forme que dans law_ask.
queryobject–la question en JSON selon query.schema.json ; queryId est un URN dans l'espace de noms du paquet, ou un nom court donné dans queryId
queryIdstring–sans query/evaluate — le choix d'un queries/*.json enregistré par nom court ou URN complet ; avec evaluate — l'id de la question exécutée
responseMode––compact — une projection pour un agent : results, positions, conflicts, le manifeste, les issues au-dessus de info et tous les hachages sont conservés, proofGraph est remplacé par son hachage, ses ra…

No output schema declared.

No examples provided.

law_editions ~148

L'axe des éditions (O-2) : ce qui a changé dans un acte entre deux dates du droit — l'état des éditions, le datage des normes et le diff sémantique entre les projections D1. Le verdict NOT_DATED signifie « il n'y avait rien pour le dater », non « rien n'a changé ». L'issue d'une question particulière à une date vient de law_ask avec legalTime.

NameTypeReqDescription
dateAstringyesla date du droit « avant » (YYYY-MM-DD)
dateBstringyesla date du droit « après » (YYYY-MM-DD)
packagestringyesl'acte du corpus

No output schema declared.

No examples provided.

law_explain ~251

Déplier la preuve d'une réponse law_ask en une chaîne « règle ← prémisses → conclusion ». L'entrée compacte : question (les arguments law_ask d'origine, truth/collect), resultHash et codeHash issus de la provenance de la réponse. Le serveur répète le calcul et compare les empreintes ; si quelque chose a changé, il refuse explicitement. Autrement, passer l'évaluation de law_ask(proof=true). answerResource=fullAnswer.uri explique un instantané compact stocké sans recalcul et sans que le client charge des pages ; par défaut seulement la chaîne proofRef. nodeId sélectionne un nœud et toutes ses prémisses (jusqu'à 24 Ko, sinon un refus explicite). proofHash se rapporte au graphe entier ; scope marque la partie sélectionnée.

NameTypeReqDescription
answerResourcestring–le fullAnswer.uri d'une réponse stockée prise avec proof=true
codeHashstring––
evaluationobject–le document d'évaluation issu de law_ask
nodeIdstring––
questionobject–les arguments law_ask d'origine
resultHashstring––
NameTypeReqDescription
proofHashstring––
stepsarrayyes–

No examples provided.

law_inspect ~258

Inspecteur d'évaluation sur un document d'évaluation ENREGISTRÉ : summary — la fiche d'origine, la vérification de resultHash et de l'instantané, les listes de résultats, de positions et d'issues ; slice — la clôture des nœuds de preuve pour une question, une règle, une position ou un nœud avec leurs adresses, les deux côtés de BOTH, les défaites, les valeurs, les noms résolus d'après l'instantané ; diff — ce qui a changé entre deux documents aux niveaux du contexte, du résultat et de la justification ; locate — la déclaration par StableId. Rien n'est évalué ni recalculé : la source est evaluation de law_ask(proof=true) ou un answerResource. Une donnée absente est un état de limite (limits), jamais une négation.

NameTypeReqDescription
againstobject––
answerResourcestring––
bundleobject––
contextobject––
evaluationobject––
indexobject––
operation–yes–
pageobject––
selectobject––
snapshotobject––
sourcesobject––

Structured output declared, but exposes no named fields.

No examples provided.

law_packages ~764

Le catalogue du droit formalisé : actes, prédicats avec signatures, frontières de couverture. C'est d'ici que viennent les NOMS des prédicats — ils ne doivent jamais être inventés. Mais ne commencez PAS par le catalogue pour trouver le bon acte : l'aperçu est vaste, et le titre d'un acte coïncide rarement avec les mots d'une question (« Newton's laws of motion » ne contient pas le mot « physics »). Une question dans vos propres mots va d'abord à law_search, qui renvoie des adresses ; le catalogue sert à la signature exacte de ce que vous avez trouvé. Sans arguments — l'aperçu : une ligne par acte (clé, titre, ordre juridique, compteurs de règles, faits, signatures, normes, constantes) ; un acte entier — package="kz-gpk" ; une recherche sur les signatures, étiquettes et constantes de tous les actes — query="substring". Les trois modes sont PAGINÉS : limit et offset, le reste nommé dans le texte (`showing a–b of N; k more`) et dans structuredContent (total, truncated, next — un appel de continuation tout prêt). L'unité d'une page est nommée par pageUnit : l'aperçu et query paginent les ACTES (20 et 20 par défaut), package=… pagine les SIGNATURES d'un acte (20 par défaut, 300 au plus) — les grands codes en portent des milliers. package=… avec catalog=… pagine une liste séparée de l'acte : "questions" — le CATALOGUE DES QUESTIONS : quelles demandes sont prévues (une question en mots, une forme, un prédicat ou des normes) et à quoi l'acte NE répond PAS, avec le type de motif ; une fiche est un modèle de demande, non une réponse, et tous les actes n'en ont pas ; "norms" — les NORMES de l'acte, "constants" — les CONSTANTES (noms des déclarations). "task-guides" — les PARCOURS DE TÂCHE : l'ordre d'application d'un canon à un document — quoi recueillir, quelles cartes interroger et comment lire les réponses ; un parcours ne répond à rien. catalog="task-guides" est admis aussi sans package — tous les parcours du profil ; guide=… — le détail d'un parcours ; le parcours lui-mê…

NameTypeReqDescription
catalogstring–avec package : paginer le catalogue des questions, les normes, les constantes ou les parcours de tâche de l'acte au lieu de ses signatures ; "task-guides" aussi sans package : tous les parcours de tâ…
guidestring–avec catalog="task-guides" : le détail d'un parcours — un nom <paquet>/<id> (comme dans prompts/list) ou un id avec package
limitinteger–combien par page : actes (aperçu 20, query 20), signatures d'un acte (20, 300 au plus) ou éléments d'une liste catalog (questions 20, normes 20, constantes 100, parcours de tâche 20)
offsetinteger–à partir de quel élément de la page (0) ; l'unité est le pageUnit de la réponse
packagestring–les signatures complètes de cet acte
querystring–un filtre de sous-chaîne sur signatures, étiquettes et constantes (sans distinction de casse)

No output schema declared.

No examples provided.

law_passport ~105

Passeport d'une publication exacte : objet, interface, frontières, contrôles et performance. La section reports conserve l'historique des mesures, y compris les échecs. Les enregistrements sont paginés par JSON Pointer ; next poursuit la réponse.

NameTypeReqDescription
contentHashstringyes–
limitinteger––
namestringyes–
offsetinteger––
sectionsarray––
versionstringyes–

No output schema declared.

No examples provided.

law_prepare_answer ~213

À la demande explicite de l'utilisateur, répéter entre 1 et 12 appels law_ask ou law_process_run antérieurs, comparer strictement leurs replayControl, et préparer un document figé non public pour 24 heures. Le client ne fournit jamais la réponse machine : le serveur ne l'obtient qu'en exécutant à nouveau. Un écart dans une entrée, dans le droit, dans une ressource, dans le code du serveur, dans la bibliothèque du moteur ou dans le résultat rejette le document entier.

NameTypeReqDescription
assistantobject––
calculationsarray––
documentVersion––Version du document immuable ; 0.1 est conservée pour la compatibilité transitoire, 0.2 inclut tous les résultats natifs et le lecteur commun.
language–––
producerRunsarray–Exécutions de producteurs enregistrés avec control/0.2 ; mutuellement exclusives avec calculations.
questionstringyes–
NameTypeReqDescription
calculationCountintegeryes–
contentHashstringyes–
documentHashstringyes–
expiresAtintegeryes–
preparationIdstringyes–
previewUrlstringyes–
resultCountinteger––

No examples provided.

law_process ~165

De quelles étapes se compose la procédure établie par un acte, et si elle porte un défaut structurel. Les étapes, les transitions et la condition de chaque transition sont reconstruites à partir de la formalisation, non racontées : ce qui mène d'où vers où, et sous quelle condition. Le contrôle du graphe : étapes inaccessibles, transitions mortes, une transition qui n'entre dans aucune étape. Sans package — la liste des actes dont la procédure est formalisée. Une étape sans sortie est nommée mais N'EST PAS comptée comme défaut : si elle est terminale par dessein, la formalisation ne le montre pas.

NameTypeReqDescription
packagestring–l'acte ; sans lui — la liste des actes qui portent des procédures

No output schema declared.

No examples provided.

law_process_run ~407

Comment une affaire particulière se déroulera, étape par étape : un journal {date, attempt?, facts?} est exécuté cadre par cadre, et le droit de chaque cadre est le droit de SA date. La réponse dit : quelles étapes ont été atteintes ; quelle transition tentée n'a produit AUCUN effet juridique ; quelles obligations sont violées et quels délais courent ; ce qui est disponible ensuite et CE QUI MANQUE EXACTEMENT pour le reste. Les noms des transitions viennent de law_process. Étapes atteintes signifie « a-t-on déjà entré », non « où l'on est maintenant » : le noyau 0.1 ne calcule pas les points de l'état courant.

NameTypeReqDescription
instancestringyesce qui traverse la procédure : le numéro du lot, de la demande, de l'affaire
legalTimestring–la date de base (YYYY-MM-DD) ; la date d'un cadre est fixée par l'étape elle-même
packagestringyesl'acte
probeTimestring–l'instant d'une tentative hypothétique, pour déterminer les étapes disponibles sur le dernier cadre ; sans lui les étapes disponibles ne sont pas calculées — l'outil n'invente pas l'heure
procedurestring–la procédure, s'il y en a plus d'une
stepsarrayyesle journal de l'affaire : [{date, attempt?, time?, decisionTime?, knowledgeTime?, facts: [{predicate, args}]}] ; sur une transition tentée, `time` est l'instant de l'événement (ISO 8601 avec un décal…

No output schema declared.

No examples provided.

law_publish_answer ~51

Publier un document préparé. La répétition avec le même preparationId renvoie de façon idempotente la même URL et le même secret de révocation distinct.

NameTypeReqDescription
preparationIdstringyes–
NameTypeReqDescription
publicIdstringyes–
publicUrlstringyes–
publishedAtintegeryes–
revokeSecretstringyes–
revokedbooleanyes–

No examples provided.

law_query ~891

Une requête LawQL déterministe sur le CLIR d'une formalisation : une question sur le modèle de l'acte lui-même, pas sur une affaire. Relations (14) : anchors, edges, fields, imports, interpretations, labels, links, literals, nodes, norms, positions, rules, variables, windows. Listes des champs : `law query --schema`. Fonctions (9) : anchor/1, labels/1..2, short/1, contains/2, overlaps/2, starts_with/2, ends_with/2, position/2, derivation/2. exists/not exists sur une variable liée ; égalité et appartenance seulement, sans arithmétique ni comparaisons d'ordre. Périmètre : corpus par package.name (par exemple kz.corpus.labour_code, pas un nom de fichier) ou un glob ; sans corpus, toute la tranche du profil ; un périmètre hors profil est vide (CORPUS_EMPTY). Exemples : `from r in rules where r.head_predicate == "urn:…#eligible" select r.id as producer, r.strength as strength, anchor(r.id) as anchors` — qui produit ; `from l in literals where l.predicate == "urn:…#eligible" select l.node as reader, l.context as context` — qui lit ; `query eligible over "pkg" { for x: Person; where applicant(x); select eligible(x); }` — inférence par le noyau. C'est une orchestration au-dessus du CLIR et du noyau ; aucune sémantique juridique nouvelle n'est implémentée ici. Au lieu du texte, une question du catalogue avec arguments : anchors-of, imports-of, links-of, producers, readers, type-step (composition : `law query --list`) (les paramètres predicate/node/type sont des URN, pkg un package.name ou un glob). La réponse structurelle est une queryPage : resultHash du queryResult complet, snapshot (hachage de la liste des paquets du périmètre), rowCount, rows selon rowLimit (20, au plus 5000) et rowOffset, next avec le snapshot pour continuer ; full: true renvoie le queryResult complet quand le périmètre est un seul paquet. Chaque ligne porte sa provenance (nœuds CLIR) ; une réponse vide porte l'entonnoir explain (emptyAt nomme la clause) ; les erreurs portent des codes LDC-Qxxxx avec d…

NameTypeReqDescription
argumentsobject–les paramètres de la question : un objet « nom → chaîne » (predicate, node, type — des URN ; pkg — un package.name ou un glob)
caseobject–l'affaire pour query-over ; elle remplace la clause case
corpusstring–le périmètre de l'instantané : un package.name (par exemple kz.corpus.labour_code) ou un glob sur package.name ; sans corpus, toute la tranche du profil
engine––il y a un moteur — le noyau ; l'implémentation de référence est appelée par sa propre commande
fullboolean–renvoyer le queryResult complet au lieu d'une page ; seulement quand le périmètre est un seul paquet
limitinteger–un plafond explicite des matérialisations eval() (il ne borne PAS les lignes — voir rowLimit)
querystring–inline LawQL
questionstring–le nom d'une question du catalogue de questions nommées (producers, readers, anchors-of, imports-of, links-of, type-step) ou d'un lint ; à la place de query
rowLimitinteger–combien de lignes dans structuredContent (20 ; le budget peut le baisser)
rowOffsetinteger–à partir de quelle ligne (0) ; la continuation vient de next avec snapshot ; requêtes structurelles seulement
snapshotstring–le hachage d'instantané de next.snapshot de la page précédente : une continuation sur un autre instantané est refusée (SNAPSHOT_CHANGED)

No output schema declared.

No examples provided.

law_report ~302

Un SIGNALEMENT d'écart entre la formalisation et la source : la réponse contredit le texte épinglé, une norme de la source n'est pas exprimée par une règle, une étiquette diverge du texte, une adresse est introuvable. Un signalement est une hypothèse pour le triage par un formaliseur : il ne change PAS le droit, n'atteint jamais les réponses des autres outils, et « non dérivé » ne devient pas « dérivé » à cause de lui. Une adresse est requise et vérifiée contre le catalogue : package, fragment (un StableId issu de law_sources) et/ou predicate ; callId est le X-Law-Call-Id de la réponse que vous contestez. L'entrée va dans le journal du serveur.

NameTypeReqDescription
callIdstring–le X-Law-Call-Id de la réponse que vous contestez
category–yesle type d'écart : norme non exprimée / issue contre le texte / étiquette contre le texte / adresse introuvable / texte contre l'officiel / autre
expectedstringyesce que dit la source (avec l'article)
fragmentstring–le StableId du fragment source
observedstringyesce que le système a répondu
packagestringyesl'acte du corpus
predicatestring–le prédicat dont il est question

No output schema declared.

No examples provided.

law_revoke_answer ~66

Révoquer un document publié au moyen de son secret distinct. L'identifiant public à lui seul ne donne aucun contrôle ; la révocation ferme la page HTML, l'API et le téléchargement.

NameTypeReqDescription
publicIdstringyes–
revokeSecretstringyes–
NameTypeReqDescription
publicIdstringyes–
revoked–yes–

No examples provided.

law_rules ~288

Les règles du droit formalisé mises en mots : comment exactement un prédicat est dérivé (prémisses, articles sources). Appelez ceci AVANT de fournir des faits à law_ask — les règles disent quels faits sont nécessaires au lieu de les laisser à inventer. Pour les grands actes, package=… renvoie une table des matières ; le texte complet vient de predicate=…. La liste par paquet est paginée : limit (20 par défaut, 500 au plus) et offset ; le reste est nommé dans le texte (`showing a–b of N; k more`) et dans structuredContent (total, truncated, next — un appel de continuation tout prêt).

NameTypeReqDescription
contractboolean–Return a machine input contract over the same import/dependency world as law_ask. No case evaluation.
inputLimitinteger–Machine contract: leaf declarations per page (50).
inputOffsetinteger–Machine contract: offset of leaf declarations.
lang––la langue dans laquelle les règles sont mises
limitinteger–package : combien de règles par page (20 ; le budget peut le baisser)
offsetinteger–package : à partir de quelle règle (0)
packagestring–toutes les règles de l'acte
predicatestring–les règles qui dérivent ce prédicat
NameTypeReqDescription
compactboolean––
factsTemplatearray––
inputContractobject––
limitinteger––
nextobject––
offsetinteger––
packagestringyes–
ruleCountinteger––
rulesarrayyes–
totalinteger––
truncatedboolean––
verbalizationGapsinteger––

No examples provided.

law_screen ~274

Construire une condition nécessaire — un surensemble — pour la présélection de lignes d'une source externe. Ce n'est PAS une réponse juridique et PAS du SQL : le résultat est un arbre typé et un manifeste des extensions jusqu'à TRUE. Chaque ligne qui passe doit ensuite être calculée en entier par le moteur, avec un graphe de preuve, sur le même instantané des données. Le binding est passé comme objet épinglable ; sourceSchemaContentHash est l'empreinte réelle du schéma source et est comparée bruyamment avec l'épingle. Les faits d'affaire qui portent une provenance (origin, document, citation, extractor) sont fournis à law_ask, pas ici. Le nombre confidence est lu par l'EvidencePolicy du paquet, pas par cet outil et pas par le moteur.

NameTypeReqDescription
bindingobjectyesun artefact law.screen.binding/0.1
goalstringyesun StableId ou un nom court unique de l'objectif
legalTimestring–la date du droit YYYY-MM-DD ; sans elle, toutes les fenêtres de toutes les règles sont prises en compte
packagestringyesla clé de paquet depuis law_packages
sourceSchemaContentHashstringyesle sha256 réel du schéma source
NameTypeReqDescription
conditionobjectyes–
disclaimerstringyes–
manifestobjectyes–
schemaVersion–yes–

No examples provided.

law_search ~219

Une RECHERCHE sémantique sur le droit formalisé : une question ou une notion dans vos propres mots → des candidats avec adresses — prédicats avec signatures, règles, fragments d'articles. C'est la couche de DÉCOUVERTE, non de la réponse : le résultat dit QUOI demander ensuite (law_ask par signature, law_rules, law_sources) et n'établit ni un fait ni une norme. Le classement est un embedder lexical déterministe, et la similarité de texte n'est pas l'applicabilité d'une norme. Si vous connaissez le nom exact, allez directement à law_packages/law_ask ; un résultat vide ne signifie PAS que la norme n'existe pas.

NameTypeReqDescription
kindsarray–restreindre les types de candidat
limitinteger–combien de candidats (8, 25 au plus)
packagestring–chercher uniquement dans cet acte
querystringyesune question ou une notion dans vos propres mots
NameTypeReqDescription
candidatesarrayyes–
corpusFingerprintstringyes–
fallbackbooleanyes–
indexUnitsinteger––
jurisdictionstringyes–
modelobject––
querystringyes–

No examples provided.

law_sources ~323

Sources : par défaut de courts extraits (view=summary), 5 textes par page, avec l'adresse du texte complet dans fragments[].full. package ou fragment est requis (un StableId issu de law_search/law_rules). view=full renvoie des parties exactes du texte : textRange fixe une plage de caractères Unicode, fragments[].next est la continuation avec un contentHash. L'empreinte se rapporte à la source ENTIÈRE, non à l'extrait ni à la partie. textOffset/textLimit exigent fragment ; une continuation exige contentHash. Les listes sont paginées avec offset/limit ; le budget de réponse peut réduire une page.

NameTypeReqDescription
contentHashstring–l'empreinte du texte complet reprise de la partie précédente
fragmentstring–le StableId d'un fragment
languagestring–la langue de la variante, telle qu'indiquée sur la fiche source
limitinteger–combien de textes : summary 5, full 1 (le budget peut le baisser)
offsetinteger–à partir de quel fragment (0)
packagestring–la clé de paquet — tous les fragments de cet acte
statusstring–le statut de la variante, tel qu'indiqué sur la fiche source
textLimitinteger–le nombre maximal de caractères Unicode dans une partie du texte (aussi ≤8000 octets d'UTF-8)
textOffsetinteger––
view–––

No output schema declared.

No examples provided.

Install

How do I install the Code civil (France) MCP server?

Code civil (France) runs locally as an npm package, launched with npx -y @arxo/mcp-code-civil. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @arxo/mcp-code-civil

# add to Claude Code
claude mcp add io-arxo-code-civil -- npx -y @arxo/mcp-code-civil
Common questions

What is the Code civil (France) MCP server?

Code civil (France) is an MCP server listed in the public MCP registry as io.arxo/code-civil. French Civil Code (LEGI) as executable rules: facts and a legal date in, answers with grounds out. This page covers its npm package (@arxo/mcp-code-civil).

Is the Code civil (France) MCP server safe to use?

Code civil (France) scores 64 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 18 October 2026. It declares no install or post-install scripts. 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 Code civil (France) MCP server expose?

Code civil (France) exposes 21 tools: law_search, law_passport, law_answer_capabilities, law_capture_answer, law_prepare_answer, and 16 more. Their descriptions and schemas cost roughly 7,318 tokens of context every time the server is loaded.

Is the Code civil (France) MCP server still maintained?

Code civil (France) is still listed as active in the MCP registry. We last reached this channel on 18 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Code civil (France) MCP server under?

Code civil (France) declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.