LibreJustice
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.
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.
Tool Definition Quality
Average 4.7/5 across 5 of 5 tools scored.
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.
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.
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.
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 toolsget_decisionGet DecisionARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | A librejustice.fr decision URL, from a search_decisions hit or an inline citation link; search_decisions first if you have neither. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| text | Yes | |
| title | Yes | |
| office | No | |
| chamber | No | |
| solution | No | |
| procedure | No | |
| dateLecture | No | |
| legalDomain | No | |
| publication | No | |
| commentaires | No | Institutional 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. |
| appellateFate | No | Fate 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. |
| docketNumbers | No | |
| caseChronology | No | Linked 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. |
| jurisdictionCode | No | |
| jurisdictionType | Yes |
Tool Definition Quality
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.
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.
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.
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.
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.
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.
get_legal_textGet Legal TextARead-onlyIdempotentInspect
Fetch a statutory article as it read on a given date, by its url (any /texte/ link). Returns the version in force at date (omit for today): full text, status, validity dates, and the timeline of all versions — say which version you quote. The text carries inline markdown links to cross-referenced articles (/texte/, open with get_legal_text; when served at a date, the links point to the same date). commentaires carries institutional commentary anchored on the article (analyses inline, links otherwise). Covers French codes and statutes, plus curated foreign codes and treaties.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | A librejustice.fr article URL `/texte/{code}/{article}`: take it from a search_legal_texts hit or an inline citation link, or compose it — {code} is the code slug ("code-civil", as in facets.legal_instrument), {article} the lowercase article key ("l761-1" for L. 761-1, "1240" for 1240). Never a Légifrance id — LEGIARTI/LEGITEXT/CID are not accepted. | |
| date | No | Consultation date (YYYY-MM-DD) — returns the version in force at that date. Omit for the version currently in force. |
Output Schema
| Name | Required | Description |
|---|---|---|
| num | Yes | |
| url | Yes | |
| code | Yes | |
| etat | Yes | |
| nota | No | |
| text | No | Full text; cross-references to other articles render as inline markdown links (/texte/ urls, open with get_legal_text). |
| title | Yes | |
| dateFin | No | |
| versions | Yes | |
| dateDebut | Yes | |
| sourceUrl | No | |
| commentaires | No | Institutional 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. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true and idempotent=true, and the description adds significant behavioral detail: returns the in-force version at a date, includes the timeline of all versions, inline markdown links to cross-referenced articles point to the same date, and commentaires carry institutional commentary. This exceeds annotation coverage and clarifies important side-effects-free behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is tightly written with three sentences, each carrying substantive information: main functionality, link behavior, and coverage scope. It could be slightly more concise, but no sentence is wasted and the structure front-loads the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with an output schema, the description goes beyond requirements by explaining return content (full text, status, validity dates, timeline, commentary), cross-referencing behavior, and coverage. Even with annotations and schema present, this provides complete operational understanding for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the url and date parameters already well documented. The description adds no new parameter-level semantics beyond what the schema provides, but it does reinforce the URL construction and date omission. Baseline 3 is appropriate because the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb and resource: "Fetch a statutory article as it read on a given date, by its `url`." It explicitly scopes the tool to /texte/ links and distinguishes it from search tools like search_legal_texts by focusing on retrieval of a single known article rather than discovery.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use it to fetch article versions by URL, omit date for current version, and open cross-referenced links with this same tool. It mentions that URLs come from search_legal_texts hits or citation links, but does not explicitly state when not to use it compared to get_decision or other siblings.
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 ActivityARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Which tab to list: 'searches', 'bookmarks', 'readingHistory', or 'all' (default) for the three at once. | all |
| limit | No | Maximum number of entries per tab (1–100, default 50). |
Output Schema
| Name | Required | Description |
|---|---|---|
| searches | No | |
| bookmarks | No | |
| readingHistory | No |
Tool Definition Quality
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.
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.
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.
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.
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.
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 DecisionsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | '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 |
| sort | No | Result ordering. Use 'relevance' (default) unless the user wants chronological order. | relevance |
| limit | No | Maximum number of results (1–20, default 10). | |
| query | Yes | French 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. | |
| office | No | Filter by specialised judge/office (JLD, JAF, JCP, JEX, juge des enfants, premier président, magistrat désigné). Absent value = ordinary bench. | |
| chamber | No | Filter 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_to | No | Latest decision date, inclusive (YYYY-MM-DD). | |
| solution | No | Filter 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_rerank | No | When 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_from | No | Earliest decision date, inclusive (YYYY-MM-DD). | |
| procedure | No | Filter by procedural track (référés, QPC, EU referral, révision, tierce opposition…). Absent value = ordinary contentious procedure. | |
| publication | No | Filter 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_domain | No | Filter by legal domain (curated domain tree): 9 roots and their leaves (e.g. CIVIL_DROIT_LOCATIF). Selecting a root also matches all its leaves. | |
| significance | No | Filter 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_article | No | Restrict 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_instrument | No | Restrict 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_code | No | Restrict 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_type | No | Restrict 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
| Name | Required | Description |
|---|---|---|
| hits | Yes | |
| query | Yes | |
| facets | No | Per 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. |
Tool Definition Quality
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.
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.
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.
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.
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.
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.
search_legal_textsSearch Legal TextsARead-onlyIdempotentInspect
Find statutory articles from their subject or wording when the article number is unknown; returns a ranked shortlist with highlighted snippets and the exact total. Query in French, descriptive terms (« délai de recours contentieux refus implicite »); put the code in the code filter (slug or exact name), keep the query for the subject. The response carries a facets block (code, jurisdiction): per filter name, a map of filter value to article count — reuse those keys verbatim to refine. Chain a hit into get_legal_text with its url, plus date when the dispute is governed by an earlier version.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | Restrict to one code/text by its URL slug ("code-civil", as in facets.code) or exact name. Omit to search the whole navigable referential. | |
| date | No | Consultation date (YYYY-MM-DD) — searches the versions valid at that date (point-in-time, same semantics as get_legal_text). Omit to search the versions currently in force. | |
| limit | No | Maximum number of results (1–20, default 10). | |
| query | Yes | French query over statutory articles. Matches article titles (boosted) and bodies; alias expansion handles acronyms and usual names. | |
| jurisdiction | No | Filter by country/legal order, as an ISO 3166 alpha-2 country code: "FR" (France, the bulk of the corpus) or a foreign code ("SN", "DZ", "MA", "VN", "PE", …); plus "UE" for EU law and "INTL" for treaties/international law. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hits | Yes | |
| query | Yes | |
| total | Yes | |
| facets | Yes | Per filter name, a map of filter value to article count under the current query (code, jurisdiction). Reuse keys verbatim as filter values. Each axis is capped to its top 10. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already marking readOnlyHint=true and idempotentHint=true, the description adds substantial behavioral context: returns a ranked shortlist with highlighted snippets and exact total, includes a facets block to reuse verbatim, applies alias expansion, and shares date semantics with get_legal_text. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each earning its place: purpose, query guidance, facets, and chaining. Front-loaded with the core purpose and no redundancy. The density is appropriate for a search tool with this complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, query formulation, filters, facets, chaining behavior, and date semantics. Despite having an output schema, the description adds valuable usage context (highlighted snippets, total, facets reuse) that makes the tool self-contained and actionable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds meaning beyond schema: it clarifies query language, explains how to use the code filter with slugs/exact names, instructs reusing facet keys verbatim, and specifies date semantics for earlier versions. This significantly enriches parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Find statutory articles from their subject or wording when the article number is unknown.' This clearly distinguishes it from siblings like search_decisions (which searches court decisions) and get_legal_text (which retrieves a specific article by ID).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states when to use it ('when the article number is unknown') and provides concrete usage guidance: query in French, put the code in the code filter, keep the query for the subject. It also explains chaining into get_legal_text. It does not explicitly name alternatives for when not to use, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- Alicense-qualityDmaintenanceEnables querying and retrieving legal texts and decisions from French public APIs Légifrance and JudiLibre for legal research.MIT
- Alicense-qualityDmaintenanceProvides access to official French legal databases (Légifrance and JudiLibre) to search and retrieve French legislation, legal codes, case law, and judicial decisions through authenticated APIs.27MIT
- Alicense-qualityFmaintenanceEnables AI assistants to search and retrieve French legislation, case law, and EU law integrations from official sources via MCP.1081Apache 2.0
- AlicenseAqualityBmaintenanceProvides offline access to the French legal corpus (Legifrance/DILA) with full-text search, verbatim article retrieval, and citation grounding to prevent hallucinations.471MIT
Your Connectors
Sign in to create a connector for this server.