EULEX Unified MCP — Tool Reference
Every tool exposed at https://mcp.eulex.ai/mcp, generated
directly from the live server's tool registry, so this page cannot drift from
what tools/list returns.
Tools
about
About EULEX Unified
read-onlyclosed-worldnon-destructiveidempotent
Discovery tool — describes the EULEX Unified MCP server. One server, N jurisdictions: Croatian legislation + case law (@hr), EU law / EUR-Lex (@eu), French codes / Légifrance (@fr). Call `list_scopes` for per-scope capabilities and identifiers.
No parameters.
browse_taxonomy
Browse Taxonomy
read-onlyclosed-worldnon-destructiveidempotent
Browse a jurisdiction's taxonomy. @hr: law-areas tree (481 areas). Without `area_id`: `depth=1` lists top-level areas, `depth>=2` lists ALL areas flat (with parent_law_area_id). With `area_id`: the area plus its direct children, always; `include_regulations` adds the regulations in that area (paginated). @fr: flat list of all LEGI code titles with article counts (~78 — includes annexes and old/new code variants).
| Parameter | Type | Description |
|---|---|---|
scope | string (default: '@hr') | |
area_id | string/null (optional) | |
include_regulations | boolean (default: False) | |
limit | integer (default: 50) | |
offset | integer (default: 0) | |
depth | integer (default: 1) |
case_law_search
Search Case Law
read-onlyclosed-worldnon-destructiveidempotent
Semantic search over court decisions (@hr: sudska praksa). COVERAGE NOTE (@hr): decision-embedding backfill is in progress; recall covers already-embedded decisions and grows over time.
| Parameter | Type | Description |
|---|---|---|
query | string | Free-text legal question. |
scope | string (default: '@hr') | Jurisdiction ('@hr'). |
top_k | integer (default: 20) | |
court_codes | string/null (optional) | Comma-separated filter, e.g. 'vs,vks'. |
reference_only | boolean (default: False) | Only VSRH reference decisions. |
date_from | string/null (optional) | |
date_to | string/null (optional) |
eu_transposition
EU Transposition
read-onlyclosed-worldnon-destructiveidempotent
Check how an EU directive was transposed into national law (@eu only). Transposition / national implementation lookup: which national laws implement a directive, per member state. Use for questions like 'has Croatia implemented NIS2', 'German implementation of the GDPR', 'which national measures transpose CSRD', 'transposition deadline for the Whistleblower Directive'. Returns the national implementing measures (NIMs) reported per member state, with the transposition deadline where known. Backed by the EUR-Lex Cellar SPARQL endpoint, so it is slower than the other tools (typically 5-30s).
| Parameter | Type | Description |
|---|---|---|
celex | string | CELEX id of the directive ('32022L2555') or a common alias ('NIS2', 'GDPR', 'CSRD'). |
member_state | string/null (optional) | Optional ISO 3166-1 alpha-2 filter ('HR', 'DE', 'FR'). Omit to get every member state. |
eurostat_query
Eurostat Query
read-onlyclosed-worldnon-destructiveidempotent
Query Eurostat statistics in natural language (@eu only). Official EU statistics, numbers and data tables: GDP, inflation, unemployment, employment, population, migration, trade, energy prices, renewable share, emissions, healthcare, education, digital economy. Use whenever the user needs quantitative data or figures about the EU or its member states. Returns the most relevant dataset as a markdown table plus its source URL — useful for adding quantitative EU data to a legal analysis. The pipeline combines dataset selection with SDMX/Eurostat REST calls and routinely takes 15-25s, so prefer it for questions that genuinely need statistics. Not offered on latency-constrained deployments.
| Parameter | Type | Description |
|---|---|---|
question | string | e.g. 'unemployment rate by member state 2023', 'renewable energy share by country'. |
find_publication
Find Publication
read-onlyclosed-worldnon-destructiveidempotent
Find official publications / documents by reference or date.
Per-scope modes (provide EXACTLY ONE mode for @hr):
@hr: nn_ref='2023/45' or '2023/45/12' (Narodne novine citation), OR
date_from+date_to (ISO dates), OR celex='32016R0679' (EU→HR bridge;
currently 0 records until ingest runs).
@eu: year=2016 and/or date_from/date_to + optional document_type
('regulation', 'directive', ...) — filters on entry-into-force date.
NOTE: entry-into-force year can differ from the CELEX year — acts
entering into force retroactively and consolidated versions
legitimately appear under a different year than their CELEX id.
Args:
scope: '@hr' or '@eu'.
nn_ref: (@hr) NN citation 'YYYY/NN' or 'YYYY/NN/DOC'.
celex: (@hr) CELEX identifier for the EU↔HR bridge.
year: (@eu) Entry-into-force year.
date_from, date_to: ISO dates (both required together for @hr).
document_type: (@eu) doc type filter.
in_force_only: (@eu) only in-force documents.
limit: Max results.| Parameter | Type | Description |
|---|---|---|
scope | string (default: '@hr') | |
nn_ref | string/null (optional) | |
celex | string/null (optional) | |
year | integer/null (optional) | |
date_from | string/null (optional) | |
date_to | string/null (optional) | |
document_type | string/null (optional) | |
in_force_only | boolean (default: False) | |
limit | integer (default: 20) |
get_article
Get Article
read-onlyclosed-worldnon-destructiveidempotent
Fetch the full text of one article/section.
| Parameter | Type | Description |
|---|---|---|
uri | string | Document URI; the article can be embedded ('@hr/regulation/{uuid}/article/112', '@eu/regulation/32016R0679/article/17', '@fr/code/Code civil/article/1240') or passed separately. |
article | string/null (optional) | Article ref when not in the URI — '@hr': 'Članak 112' / '112'; '@eu': '17' / 'Article 17' / 'Right to erasure' / 'Recital 12'; '@fr': 'L225-102-1' / '1240'. |
as_of | string/null (optional) | Point-in-time date YYYY-MM-DD (@hr, @fr) — the article as it stood on that date. Also accepted as URI suffix '@date'. |
version_id | string/null (optional) | Explicit version (@hr: version UUID; @fr: LEGIARTI id). |
get_chapter
Get Chapter
read-onlyclosed-worldnon-destructiveidempotent
Fetch a chapter (Glava/Dio/Poglavlje) with its full contents (@hr only).
| Parameter | Type | Description |
|---|---|---|
uri | string | '@hr/regulation/{uuid}'. |
chapter_ordinal | integer | Document-wide `ordinal` of the chapter HEADING segment — NOT the 1st/2nd/3rd chapter index. Get it from get_structure (heading rows carry their ordinal; e.g. GLAVA I. may sit at ordinal 0, GLAVA II. at ordinal 60). |
as_of | string/null (optional) | |
version_id | string/null (optional) |
get_decision
Get Court Decision
read-onlyclosed-worldnon-destructiveidempotent
Get a court decision by URI ('@hr/decision/{uuid}').| Parameter | Type | Description |
|---|---|---|
uri | string | |
include_text | boolean (default: False) | Also fetch the full decision body segments. |
include_citations | boolean (default: False) | NN-regulation citations found in the decision (resolved ones chain into get_article). |
include_related | boolean (default: False) | Related decisions (previous/next/corrected). |
get_full_document
Get Full Document
read-onlyclosed-worldnon-destructiveidempotent
Fetch the ENTIRE consolidated document in one call (@hr only). Use to read or summarize a whole law instead of article-by-article. `format`: 'text' | 'html' | 'mixed'.
| Parameter | Type | Description |
|---|---|---|
uri | string | |
as_of | string/null (optional) | |
version_id | string/null (optional) | |
format | string (default: 'text') | |
include_segments | boolean (default: False) |
get_publication
Get Publication
read-onlyclosed-worldnon-destructiveidempotent
Get a single official-gazette publication by URI (@hr only).
| Parameter | Type | Description |
|---|---|---|
uri | string | '@hr/publication/{uuid}'. |
get_regulation
Get Regulation
read-onlyclosed-worldnon-destructiveidempotent
Get document/regulation metadata by URI.
| Parameter | Type | Description |
|---|---|---|
uri | string | '@hr/regulation/{uuid}', '@hr/Zakon o radu' (title resolve), '@eu/regulation/32016R0679', '@eu/GDPR' (alias), etc. |
get_related
Get Related Documents
read-onlyclosed-worldnon-destructiveidempotent
Related documents graph. @hr: 'successors' | 'predecessors' | 'related' | 'law_areas' | 'all'. @eu: 'amendments' | 'amended_by' | 'cites' | 'cited_by' | 'legal_basis' | 'consolidated_versions' | 'related_case_law' | 'all'. A narrow @eu filter returns ONLY that relation type. When the graph has no data the server falls back to EUR-Lex relationship metadata, whose type names differ (e.g. 'modify_relationships', 'instruments_cited', 'affected_by_case') — a filter that matches nothing returns empty `relations` plus `available_relation_types` listing what this document actually has; re-issue with one of those.
| Parameter | Type | Description |
|---|---|---|
uri | string | |
relation_type | string (default: 'all') |
get_status
Get Status / Verify
read-onlyclosed-worldnon-destructiveidempotent
In-force status + version timeline, with explicit mode enum.
| Parameter | Type | Description |
|---|---|---|
uri | string | Document URI (@hr or @eu). |
mode | string (default: 'current') | 'current' (default — is it in force now), 'at_date' (which version was in force on `as_of`; @hr only), 'in_range' (all versions active between `date_from`/`date_to`; @hr only), 'history' (full version/event timeline). @eu supports 'current' and 'history' only — point-in-time modes return `unsupported_capability` there. |
as_of | string/null (optional) | Date for mode='at_date' (YYYY-MM-DD). |
date_from | string/null (optional) | |
date_to | string/null (optional) | |
include_history | boolean (default: False) | Also append full version history (@hr — one citable source per NN objava). |
consolidate | boolean (default: False) | (@hr) Merge NN history across the ENTIRE lineage (legacy fragments joined), deduped. Implies history. |
live | boolean (default: False) | (@eu) Authoritative EUR-Lex Cellar SPARQL check (5-30s). Latency-constrained deployments coerce this to false and say so in `profile_note` (status served from database instead). |
get_structure
Get Structure (TOC)
read-onlyclosed-worldnon-destructiveidempotent
Get the table of contents / heading structure of a document (@hr, @eu).
| Parameter | Type | Description |
|---|---|---|
uri | string | |
as_of | string/null (optional) | |
version_id | string/null (optional) |
list_articles
List Articles
read-onlyclosed-worldnon-destructiveidempotent
Flat list of articles in a document.
@hr: all article headings of a regulation version (as_of supported).
@fr: articles of a code ('@fr/code/Code civil'), paginated via
limit/offset.| Parameter | Type | Description |
|---|---|---|
uri | string | |
as_of | string/null (optional) | |
version_id | string/null (optional) | |
in_force_only | boolean (default: True) | |
limit | integer (default: 100) | |
offset | integer (default: 0) |
list_scopes
List Scopes
read-onlyclosed-worldnon-destructiveidempotent
List configured jurisdictions with their capabilities and status. This is the discriminator tool: call it to learn WHICH scope supports WHICH capability before calling capability-specific tools. A scope missing a capability returns `unsupported_capability`.
No parameters.
resolve
Resolve Identifier
read-onlyclosed-worldnon-destructiveidempotent
Resolve a free-text title/alias to canonical URIs (cheap, no embeddings).
Use BEFORE content tools when you only have a title: '@hr' resolves
Croatian titles ('Zakon o radu' → regulation UUIDs, with ambiguity
info), '@eu' resolves common-name aliases ('GDPR' → CELEX).
Returns `matches[]` with `uri` + `ambiguous` + `best_guess`.| Parameter | Type | Description |
|---|---|---|
query | string | |
scope | string (default: '@hr') | |
top_k | integer (default: 5) |
search
Search Legislation
read-onlyclosed-worldnon-destructiveidempotent
Search legislation across one or more jurisdictions. Check scope_status for each backend's effective mode, reranked flag and degradation warnings before treating results as complete.
| Parameter | Type | Description |
|---|---|---|
query | string | Free-text query in any language. |
scopes | array (default: ['@hr']) | Jurisdictions to search — ALWAYS set this explicitly; the default is ["@hr"] (Croatian) only, so EU or French questions return nothing relevant unless you pass their scope. Croatian questions → ["@hr"], EU regulations/ directives/CELEX → ["@eu"], French codes → ["@fr"]; any combination, or ["*"] for all jurisdictions (unknown or cross-jurisdiction questions). |
top_k | integer (default: 20) | Max merged results (1-50). |
mode | string (default: 'semantic') | "semantic" (default, paraphrase-aware embedding search), "lexical" (exact term/title match; @hr and @fr only), or "hybrid" (semantic + BM25 fusion; @hr only — best recall for rare/exact terms). A scope that lacks the mode reports it in `scope_errors` instead of failing the whole call. |
in_force_only | boolean (default: True) | Restrict to currently in-force provisions. In mode="lexical" the filter is applied after retrieval, so fewer than top_k results may come back. |
stratified | boolean (default: False) | (@hr semantic/hybrid) Reserve result quota per regulation type (zakon/pravilnik/...). Default False — it breaks score-monotonic ordering and is much slower; enable only when coverage across regulation types matters more than top-rank precision. |