Model Context Protocol server for LexAPI — query EUR-Lex and EU case law from Claude, Cursor, and other MCP-enabled clients.
Strong tool definitions with comprehensive schemas and clear descriptions. All 10 tools have explicit input schemas with proper JSON Schema structure, type definitions, and parameter descriptions. Tool names follow verb_noun convention (lex_search, lex_get_document, lex_cited_by). Descriptions are detailed (100-250 chars) and include usage guidance. Tool annotations present (readOnlyHint, openWorldHint, idempotentHint). Main gaps: output schemas not documented in source; error handling guidance minimal; no batch variants for common multi-call patterns.
Fetch both inbound and outbound citations for a CELEX in one call, with per-edge-type counts. Use when the user wants a holistic view of how a document sits in the citation graph.
Find documents that cite this CELEX (inbound edges). Returns source documents grouped with their edge type (reference, amendment, repeal, implementation, legal-basis, proposal). Use to see who depends on or modifies a given act.
Find documents this CELEX cites (outbound edges). Returns target documents grouped with their edge type. Use to see what an act relies on, amends, or implements.
Fetch the full parsed content of a single EU document by CELEX number. Returns metadata (title, type, dates, author, ECLI/ELI, keywords) plus structured body (articles, sections, tables, annexes). Articles are individually addressable with id, number, title, and content. Use this when the user has a specific CELEX or wants the body of a known document.
Fetch a parsed document from any EUR-Lex URL — useful when the user pastes a link from their browser. Extracts the CELEX from the URL and returns the same shape as lex_get_document plus sourceUrl and extractedCelex echoes.
Output schemas not documented. Tool descriptions explain what is returned (e.g., 'Returns metadata...', 'Returns relevance-scored matches...') but formal output schema definitions are absent from source. LLMs cannot plan downstream tool calls or extract specific fields without documented return types.
Error handling guidance missing. No recovery hints in tool descriptions (e.g., 'If CELEX not found, try lex_search first'). Error responses from handlers not visible in source, so LLMs cannot self-correct on failures.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | <=2025-11-25 | v2 |
Fetch metadata only for a CELEX (title, dates, type, author, ECLI/ELI, keywords, subjects) — significantly faster than lex_get_document because it skips body parsing. Use this for quick "what is this document" lookups or before deciding whether to fetch the body.
List documents published to the Official Journal recently. Default window is 7 days. Filterable by document type, author, and language. Use this when the user asks "what was published this week" or wants a delta over a date window.
Search EUR-Lex with structured filters (free text, date range, document type, author, language). Returns a paginated list of matching documents with CELEX numbers, titles, and dates. Use this when the user wants to find documents matching a topic or filter; use lex_get_document afterwards to fetch full content of a specific result.
Embedding-based search over EU case law — finds cases by meaning, not exact keywords. Returns relevance-scored matches with ECLI, court, case name/number, and (where available) full text. Requires a paid LexAPI plan; returns 403 on FREE tier.
Embedding-based search over EU legislation — finds acts by meaning. Returns relevance-scored matches with CELEX, title, type, and (where available) full text. Requires a paid LexAPI plan; returns 403 on FREE tier.
Pagination limits not enforced in descriptions. lex_search and lex_recent_documents accept maxPages/limit but no guidance on typical result sizes or token impact. lex_cited_by and lex_cites default to limit=100 without context on when to reduce.
Semantic tools (lex_semantic_case_law, lex_semantic_legislation) lack clear tier-gating documentation. Descriptions mention '403 on FREE tier' but no guidance on how to handle or what to suggest to users when tier is insufficient.
No batch variants for multi-document operations. Agents calling lex_get_document in a loop for 10 CELEXes waste tokens and latency. A batch_get_documents tool would improve efficiency.