Skip to main content
Glama
Ownership verified

Server Details

Search French and European case law and French legal texts (codes, statutes, treaties).

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
librejustice/librejustice
GitHub Stars
21
Server Listing
LibreJustice

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.7/5 across 5 of 5 tools scored.

Server CoherenceA
Disambiguation5/5

Each tool targets a distinct resource and action: getting a decision, getting a legal text, searching decisions, searching legal texts, and listing user activity. No two tools overlap in purpose, and the descriptions make the boundaries crystal clear.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern: get_decision, get_legal_text, search_decisions, search_legal_texts, list_my_activity. The verbs (get, search, list) appropriately indicate the operation type, and the nouns identify the resource.

Tool Count5/5

With exactly 5 tools, the server covers the core legal research workflows—search and retrieval for both decisions and legal texts, plus a user activity view—without unnecessary extras. The count is well-scoped for the domain.

Completeness5/5

The tool surface is complete for legal research: users can discover both decisions and legal texts through search, fetch full details via get_* tools, and manage their research history. There are no obvious dead ends or missing critical operations.

Available Tools

5 tools
get_decisionGet DecisionA
Read-onlyIdempotent
Inspect

Fetch the full text and metadata of a decision by its url. The text carries inline markdown links to cited articles (/texte/, open with get_legal_text) and cited decisions (/decision/, open with get_decision); a citation spanning several articles (« articles 3 à 6 », « et suivants ») links its first article and appends the others as labelled links right after the span. appellateFate states in one line what became of THIS decision on review (INFIRMATION = reversed, it no longer stands; CONFIRMATION = upheld) — read it before citing the decision as authority. caseChronology lists the linked prior AND subsequent decisions of the same case (appeal, pourvoi, renvoi) known to the corpus. An absent fate or chronology never proves no recourse exists — only that none is linked in the corpus. commentaires carries the institutional commentary (official analyses inline, links to the rapporteur public's conclusions and related court documents).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesA librejustice.fr decision URL, from a search_decisions hit or an inline citation link; search_decisions first if you have neither.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
textYes
titleYes
officeNo
chamberNo
solutionNo
procedureNo
dateLectureNo
legalDomainNo
publicationNo
commentairesNoInstitutional commentary anchored on this document: court-written analyses served inline (`body`), plus outbound links (`url`) to the rapporteur public's conclusions and to related institutional documents (reports, opinions, press releases). Context, never the ruling itself — quote the decision text, not a commentaire, as the court's words.
appellateFateNoFate of THIS decision before the court that reviewed it, precomputed from caseChronology: 'INFIRMATION — Cour d'appel de Paris, 1 juillet 2025 (url)'. INFIRMATION = this decision was reversed and no longer stands; CONFIRMATION = upheld. Absent = no recourse known to the corpus, which never proves the decision is final.
docketNumbersNo
caseChronologyNoLinked prior and subsequent decisions of the same case (appeal, pourvoi, renvoi), most recent first, current decision included. The fate of a judgment reads in the solution of the decision that reviewed it (INFIRMATION = reversed, CONFIRMATION = upheld). Absent chronology never proves no recourse exists.
jurisdictionCodeNo
jurisdictionTypeYes
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite strong annotations (readOnly, non-destructive, idempotent), the description adds substantial behavioral context: citation formatting details, the meaning of appellateFate, the scope of caseChronology, and the caveat that absence does not prove non-existence. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is densely informative yet compact, with each sentence conveying a distinct aspect (content, link handling, metadata fields, caveats). No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the single parameter, strong annotations, output schema presence, and sibling context, the description covers key usage details, metadata semantics, and important caveats, making it fully sufficient for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the url parameter description already explains its origin (search_decisions hit or inline citation) and fallback. The tool description mostly repeats this, adding no new semantic meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Fetch') and resource ('full text and metadata of a decision by its url'), clearly distinguishing it from siblings like get_legal_text for articles and search_decisions for querying. It also explains the inline link behavior, reinforcing what this tool uniquely does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly instructs to use search_decisions first when lacking a URL, and clarifies when get_legal_text vs get_decision is appropriate for inline links. This provides direct guidance on tool selection and alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_my_activityList My ActivityA
Read-onlyIdempotent
Inspect

List the authenticated user's own activity, most recent first. kind selects which tab: 'searches' (past queries with their structured filters and source), 'bookmarks' or 'readingHistory' (decisions, each with title, a summary and the url to chain into get_decision), or 'all' to get the three at once. Only the requested tab(s) are populated. In readingHistory, lastSource == 'web' means the user opened the decision manually at least once (a genuine read); 'mcp' means it was only ever opened through this connector. Requires a connected account.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoWhich tab to list: 'searches', 'bookmarks', 'readingHistory', or 'all' (default) for the three at once.all
limitNoMaximum number of entries per tab (1–100, default 50).

Output Schema

ParametersJSON Schema
NameRequiredDescription
searchesNo
bookmarksNo
readingHistoryNo
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint (false). Description adds ordering (most recent first), which tabs populate, and interpretation of lastSource in readingHistory. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with core purpose first. Each sentence earns its place. Slightly verbose on readingHistory detail but overall concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given output schema exists, description needn't detail return values. Covers kind and limit semantics, account requirement. Adequately complete for a list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage 100% (baseline 3). Description adds meaning: what each kind returns (structured filters, summary, URL chain) and default behavior. For limit, it adds minimal beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'List the authenticated user's own activity, most recent first.' Specifies resource (activity) and verb (list). Distinguishes from siblings like get_decision by mentioning chaining via URL.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains when to use (to list activity) and how to select tabs via kind. Implicitly contrasts with get_decision for specific decisions, but lacks explicit when-not-to-use or comparison with other siblings like search_decisions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_decisionsSearch DecisionsA
Read-onlyIdempotent
Inspect

Search decisions by meaning and keywords combined. Returns a shortlist: title, url, an overview (aiSummary: AI-written summary of what the decision is about, a machine paraphrase never quotable as the court's words; or snippet: the verbatim passage where your keywords matched) and metadata; get_decision reads the full text. Put constraints in the structured filters (jurisdiction, dates, articles, codes), keep the query for the legal issue. Values within one filter are OR'd; different filters are AND'd. The response carries a facets block: per filter name, a map of filter value to decision count under the current query. Reuse those keys verbatim to refine (a code from facets.jurisdiction_code, a slug from facets.legal_instrument). Hit metadata fields carry the same tokens under the same names: a hit's jurisdictionCode, chamber or solution passes back verbatim into the matching filter.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo'auto' is the right choice in almost all cases — it picks the regime from the query shape. auto: combines meaning and keyword matching on plain queries; switches to keyword-only when the query contains ET / OU / SAUF or quoted phrases. lexical: force keyword-only matching. The right choice when searching for a named entity (company, municipality, person), a precise legal formula, or an exact quote — cuts semantic noise. semantic: force the meaning+keyword hybrid even on quoted or operator queries (where auto would fall back to keyword-only).auto
sortNoResult ordering. Use 'relevance' (default) unless the user wants chronological order.relevance
limitNoMaximum number of results (1–20, default 10).
queryYesFrench query, the primary input. Two regimes — pick the right tool for the job: (a) Natural language or descriptive keywords for legal-issue searches; the engine handles synonyms and reformulations. Examples: « responsabilité hôpital infection nosocomiale » ; « étranger malade soins inaccessibles dans son pays d'origine » ; « licenciement discrimination syndicale charge de la preuve ». (b) Quoted exact phrases and ET / OU / SAUF operators for a named entity (company, municipality, person), a precise legal formula, or the direction of a holding: semantic matching ignores negations (« n'est pas X » ranks like « est X »), and only an exact phrase targets which way the court ruled. Examples: « "Société Générale" » ; « "commune de Saint-Denis" SAUF Réunion » ; « "force majeure" ET épidémie ». Using operators or quotes switches the engine to keyword-only matching for the whole query (no synonyms), so do not mix the two regimes.
officeNoFilter by specialised judge/office (JLD, JAF, JCP, JEX, juge des enfants, premier président, magistrat désigné). Absent value = ordinary bench.
chamberNoFilter by chamber category (any-of, uniform across orders, e.g. "CIVILE", "SOCIALE", "COMMERCIALE", "PROCEDURES_COLLECTIVES", "ETRANGERS", "PROTECTION_SOCIALE", "INSTRUCTION"). Codes come from the chamber facet of a previous search.
date_toNoLatest decision date, inclusive (YYYY-MM-DD).
solutionNoFilter by the ruling of the operative part (référentiel solution). REJET / IRRECEVABILITE / DESISTEMENT / NON_LIEU_A_STATUER are procedural or negative endings; CONFIRMATION / INFIRMATION* / REFORMATION are appeal outcomes; CASSATION* is cassation-specific; ANNULATION covers administrative annulment; SATISFACTION_TOTALE / SATISFACTION_PARTIELLE cover first-instance civil rulings granting the claim.
ai_rerankNoWhen enabled (default), reorders results by actual relevance to the query using an LLM reranker. Keep on for agentic use — shortlist quality is significantly higher. Cost: a few seconds of extra latency. Disable only for high-rate exploratory searches where latency matters more than ranking quality.
date_fromNoEarliest decision date, inclusive (YYYY-MM-DD).
procedureNoFilter by procedural track (référés, QPC, EU referral, révision, tierce opposition…). Absent value = ordinary contentious procedure.
publicationNoFilter by publication level (any-of, référentiel publication): PUBLIE_BULLETIN / INEDIT_BULLETIN (Cour de cassation), PUBLIE_LEBON / MENTIONNE_LEBON / INEDIT_LEBON (administrative), AUTRE (no publication statement in the source).
legal_domainNoFilter by legal domain (curated domain tree): 9 roots and their leaves (e.g. CIVIL_DROIT_LOCATIF). Selecting a root also matches all its leaves.
significanceNoFilter by jurisprudential significance (any-of), derived from publication codes at strongest rank: MAJEURE (rapport annuel / recueil Lebon), IMPORTANTE (bulletin, tables du Lebon, lettres de chambre, communiqués), LIMITEE (unpublished), INDETERMINEE (no publication statement — lower courts, European courts).
legal_articleNoRestrict to decisions citing a specific article of a specific code, as a composite key "<instrument>|<article>" where <instrument> is a slug or an exact text name, resolved like legal_instrument (e.g. "code-civil|1240", "code-de-justice-administrative|L761-1"). The instrument prefix is required — the same article number exists in several codes.
legal_instrumentNoRestrict to decisions citing one or more given codes or statutes. Accepts a slug from facets.legal_instrument (e.g. "code-civil") or an exact text name resolved server-side (e.g. "Code civil").
jurisdiction_codeNoRestrict to one or more precise court units by referential code. Code shapes: "cc" (Cour de cassation), "ce" (Conseil d'État), "cnda", "cedh", "cjue"; "ca_<city>", "caa_<city>", "ta_<city>", "tj_<city>", "tcom_<city>" (e.g. "ca_paris", "ta_marseille", "tj_paris", "tcom_lyon"). When unsure, guess with the city name in the code — the error names the nearest valid ones. Each code is a court; the chamber is a separate axis (see chamber); use jurisdiction_type for the broad category.
jurisdiction_typeNoRestrict to one or more court categories: TJ (tribunal judiciaire), CA (cour d'appel), CC (Cour de cassation), TCOM (tribunal des activités économiques), TA (tribunal administratif), CAA (cour administrative d'appel), CE (Conseil d'État), CNDA (asylum), CONSTIT (Conseil constitutionnel), TC (Tribunal des conflits), CNIL (sanctions), CEDH and CJUE (European courts).

Output Schema

ParametersJSON Schema
NameRequiredDescription
hitsYes
queryYes
facetsNoPer filter name, a map of filter value to decision count under the current query (jurisdiction_type, jurisdiction_code, chamber, office, legal_domain, solution, significance, publication, date_lecture_year, legal_instrument). Reuse keys verbatim as filter values. jurisdiction_code is capped to the top 15 courts (other_courts counts the rest), legal_instrument to the top 10 statutes.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so the bar for adding value is high. The description discloses that aiSummary is 'a machine paraphrase never quotable as the court's words', explains the facets block, and clarifies filter combination logic (OR within, AND across). These are behavioral traits beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the primary purpose and then adds only high-value behavioral and usage details. Each sentence covers a distinct aspect (result shape, query/filter split, OR/AND semantics, facet reuse), with no redundant filler. It is dense but appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 18 parameters and an output schema, the description focuses on the critical decision logic: how to partition query vs filters, how results are presented (aiSummary vs snippet), and how to refine via facets. It also points to get_decision for the full text, covering the main agent workflow. The output schema covers return values, so the description need not repeat them.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds cross-cutting parameter semantics: values within a single filter are OR'd, different filters are AND'd, and facet keys from the response can be reused verbatim as parameter values. This global logic is not evident from individual parameter descriptions, adding meaningful meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Search decisions by meaning and keywords combined', clearly stating the tool's function. It distinguishes from sibling tools by noting 'get_decision reads the full text' and describing the shortlist output. The guidance to 'Put constraints in the structured filters... keep the query for the legal issue' further reinforces the tool's role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly names get_decision as the follow-up for full text, giving the agent a clear when-to-use vs. compromise. It provides actionable rules: keep constraints in filters and the legal issue in the query, with OR/AND semantics and facet reuse for refinement. This is explicit guidance relative to the alternative tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.