fedlex domain MCP server, base tier (L2.2): the bitemporal citation loop over the public Fedlex SPARQL endpoint
Strong foundation with 18 well-named tools following verb_noun convention (resolve_, search_, list_, read_, get_). All tools have descriptions (avg 156 chars, within 10-1024 baseline). Input schemas present with type definitions and parameter descriptions. However, output schemas are not explicitly documented in the source code, responses are returned as pretty JSON but the structure is not formally specified. Error handling exists but lacks recovery guidance. Tool descriptions are concise and action-oriented, meeting the stage-one 160-char limit, but some parameter descriptions could be more detailed about constraints and formats.
Get the history of changes to a specific article; use when you need to see how an article has been modified over time; answer is a norm.
Get citation relationships for an act; use when you need to see which acts cite this one or which acts this one cites; answer is a norm.
Get all modifications and amendments to a consolidation; use when you need to see what changes have been made to an act; answer is a norm.
Get all references made from a consolidation; use when you need to see which other acts or documents are cited; answer is a norm.
Find acts related to a given act; use when you need to discover related legislation; answer is a hint.
Get the hierarchical structure of a consolidation; use when you need to see the table of contents or navigate the structure of an act; answer is a norm.
Output schemas not formally documented. Tools return pretty JSON but the response structure (fields, types, pagination tokens) is not specified in tool definitions. LLMs cannot reliably extract data or plan downstream calls without knowing response shape.
Error handling returns typed JSON error objects but lacks recovery guidance. When a tool fails, the response includes 'error' and 'detail' fields but does not suggest next steps (e.g., 'Try search_law() with a different query' or 'This language is not available for this version').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Get subdivisions of a legal act; use when you need to see the administrative subdivisions affected by an act; answer is a norm.
Look up terms in Fedlex vocabularies; use when you need to find or decode vocabulary terms like enforcement status or legal taxonomy; answer is a norm.
List all annexes of a consolidation; use when you need to see what annexes are attached to an act; answer is a norm.
List all consolidations of a Swiss legal act; use when you need to see all versions of an act that have been consolidated; answer is a norm.
List all language versions of a consolidation; use when you need to see which languages are available for a specific act version; answer is a norm.
List all tables in a consolidation; use when you need to find tables or tabular data within an act; answer is a norm.
Read one article or section from a dated consolidation; use when you need the full text of a specific article, paragraph, or annex element; answer is a norm.
Read the full text of a consolidation with pagination; use when you need the complete text of an act, potentially in multiple chunks; answer is a norm.
Read the content of a specific table; use when you need to extract data from a table within an act; answer is a norm.
Resolve SR number to Fedlex ELI and title; use when you have a Swiss legal act's systematic number (SR) and need its Fedlex identifier and official title; answer is a norm.
Search Swiss legal acts by title or keyword; use when you need to find acts matching a word or phrase in their titles; answer is a norm.
Search for words or phrases within a consolidation; use when you need to find text matching a query within a specific act version; answer is a norm.
Parameter constraints not fully specified. 'lang' parameter accepts 'de|fr|it|en|rm' but this is documented only in the description text, not as an enum in the schema. 'limit' and 'max_chars' have bounds mentioned in descriptions but not enforced via JSON Schema minValue/maxValue.
Pagination not uniformly implemented. Some tools (search_text, get_references, read_document) support offset/limit and return 'next_offset', but others (resolve_sr, list_consolidations, article_history) do not. Inconsistency forces LLMs to reason about which tools support pagination.
Tool composition assumes prior knowledge of ELI/SR identifiers. Many tools require 'eli' or 'eli_version' parameters, but only fedlex.resolve_sr and fedlex.search_law produce these. An agent must call a discovery tool first, then chain to a read tool, this is correct, but the descriptions do not explicitly guide this workflow.