Serveur MCP donnant accès à l'API Légifrance (PISTE). 62 outils couvrant : recherche fulltext, codes juridiques, lois/décrets, Journal Officiel, conventions collectives (KALI), jurisprudence, CNIL, accords d'entreprise, circulaires, débats parlementaires, dossiers législatifs, BOCC et historique des versions.
Server exposes 25 tools via FastMCP HTTP transport with basic schema coverage. All tools have descriptions (10-80 chars, mostly under 100), but descriptions are generic and lack LLM-optimized guidance on WHEN to use each tool or HOW to chain them. Input schemas are present with type declarations, but parameter descriptions are minimal (5-30 chars) and lack constraints, ranges, or format guidance. No output schemas documented. Error handling is centralized in a try/except wrapper that returns plain text, not structured recovery guidance. Tool naming follows verb_noun convention (get_, search_) but many tools are near-duplicates (search_fulltext vs search_codes vs search_laws) without clear differentiation. No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Composition is weak: 25 tools mostly perform isolated lookups; no batch variants, no pagination guidance in descriptions, no chaining IDs in responses.
Récupère un article spécifique d'un code juridique
Récupère un document BOCC (Bulletin Officiel des Collectivités Territoriales)
Récupère une circulaire
Récupère une décision CNIL
Récupère un code juridique complet par son identifiant
Récupère une convention collective (KALI)
Récupère un accord d'entreprise
Récupère un document du Journal Officiel
Descriptions are generic and lack LLM-optimized guidance. Most descriptions are 35-80 chars and do not explain WHEN to use each tool, how it differs from similar tools, or what the LLM should expect. E.g., 'Recherche fulltext dans tous les documents Légifrance' does not tell the LLM when to prefer this over search_codes or search_laws.
Parameter descriptions are minimal (5-30 chars) and lack constraints, ranges, or format guidance. E.g., 'page' is described as 'Numéro de page (défaut: 1)' but does not state the valid range (1-N?), whether 0-indexed, or what happens if out of bounds. 'query' lacks guidance on minimum length, special characters, or max length.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | <=2025-11-25 | v2 |
Récupère une décision de jurisprudence
Récupère une loi ou un décret par son identifiant
Récupère un dossier législatif
Récupère un débat parlementaire
Récupère l'historique des versions d'un document
Recherche dans les documents BOCC
Recherche dans les circulaires
Recherche dans les décisions CNIL
Recherche dans les codes juridiques
Recherche dans les conventions collectives
Recherche dans les accords d'entreprise
Recherche fulltext dans tous les documents Légifrance
Recherche dans le Journal Officiel
Recherche dans la jurisprudence
Recherche dans les lois et décrets
Recherche dans les dossiers législatifs
Recherche dans les débats parlementaires
No output schemas documented. Tools return results but the LLM has no formal specification of response structure, field types, or which fields are guaranteed vs optional. This forces the LLM to infer structure from examples, increasing hallucination risk.
Error handling returns plain text strings instead of structured recovery guidance. The try/except wrapper catches all exceptions and returns 'Erreur dans {tool_name} : {exc}' without telling the LLM whether the error is retryable, user-fixable, or fatal, or what to do next.
Tool naming lacks differentiation. 12 search_* tools and 13 get_* tools are near-duplicates without clear guidance on which to use. E.g., search_fulltext, search_codes, search_laws, and search_journal_officiel all search documents but the LLM cannot infer the scope difference from names alone. Descriptions do not clarify.