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.

19 tools · all read-only. The server performs retrieval over official primary-law sources — EU law (EUR-Lex), Croatian legislation and case law (Narodne novine, courts), and French codified law (Légifrance/LEGI). No tool creates, modifies or deletes any record. Authentication is OAuth 2.1 with PKCE (S256), RFC 8414 metadata, RFC 9728 protected-resource discovery and RFC 7591 dynamic client registration. Two tools reach fixed external EU endpoints and say so in their descriptions (eu_transposition → EUR-Lex Cellar SPARQL, eurostat_query → Eurostat REST/SDMX); every other tool reads only EULEX's own databases.

Tools

about
browse_taxonomy
case_law_search
eu_transposition
eurostat_query
find_publication
get_article
get_chapter
get_decision
get_full_document
get_publication
get_regulation
get_related
get_status
get_structure
list_articles
list_scopes
resolve
search

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).
ParameterTypeDescription
scopestring (default: '@hr')
area_idstring/null (optional)
include_regulationsboolean (default: False)
limitinteger (default: 50)
offsetinteger (default: 0)
depthinteger (default: 1)

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.
ParameterTypeDescription
querystringFree-text legal question.
scopestring (default: '@hr')Jurisdiction ('@hr').
top_kinteger (default: 20)
court_codesstring/null (optional)Comma-separated filter, e.g. 'vs,vks'.
reference_onlyboolean (default: False)Only VSRH reference decisions.
date_fromstring/null (optional)
date_tostring/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).
ParameterTypeDescription
celexstringCELEX id of the directive ('32022L2555') or a common alias ('NIS2', 'GDPR', 'CSRD').
member_statestring/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.
ParameterTypeDescription
questionstringe.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.
ParameterTypeDescription
scopestring (default: '@hr')
nn_refstring/null (optional)
celexstring/null (optional)
yearinteger/null (optional)
date_fromstring/null (optional)
date_tostring/null (optional)
document_typestring/null (optional)
in_force_onlyboolean (default: False)
limitinteger (default: 20)

get_article

Get Article

read-onlyclosed-worldnon-destructiveidempotent

Fetch the full text of one article/section.
ParameterTypeDescription
uristringDocument 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.
articlestring/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_ofstring/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_idstring/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).
ParameterTypeDescription
uristring'@hr/regulation/{uuid}'.
chapter_ordinalintegerDocument-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_ofstring/null (optional)
version_idstring/null (optional)

get_decision

Get Court Decision

read-onlyclosed-worldnon-destructiveidempotent

Get a court decision by URI ('@hr/decision/{uuid}').
ParameterTypeDescription
uristring
include_textboolean (default: False)Also fetch the full decision body segments.
include_citationsboolean (default: False)NN-regulation citations found in the decision (resolved ones chain into get_article).
include_relatedboolean (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'.
ParameterTypeDescription
uristring
as_ofstring/null (optional)
version_idstring/null (optional)
formatstring (default: 'text')
include_segmentsboolean (default: False)

get_publication

Get Publication

read-onlyclosed-worldnon-destructiveidempotent

Get a single official-gazette publication by URI (@hr only).
ParameterTypeDescription
uristring'@hr/publication/{uuid}'.

get_regulation

Get Regulation

read-onlyclosed-worldnon-destructiveidempotent

Get document/regulation metadata by URI.
ParameterTypeDescription
uristring'@hr/regulation/{uuid}', '@hr/Zakon o radu' (title resolve), '@eu/regulation/32016R0679', '@eu/GDPR' (alias), etc.

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.
ParameterTypeDescription
uristring
relation_typestring (default: 'all')

get_status

Get Status / Verify

read-onlyclosed-worldnon-destructiveidempotent

In-force status + version timeline, with explicit mode enum.
ParameterTypeDescription
uristringDocument URI (@hr or @eu).
modestring (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_ofstring/null (optional)Date for mode='at_date' (YYYY-MM-DD).
date_fromstring/null (optional)
date_tostring/null (optional)
include_historyboolean (default: False)Also append full version history (@hr — one citable source per NN objava).
consolidateboolean (default: False)(@hr) Merge NN history across the ENTIRE lineage (legacy fragments joined), deduped. Implies history.
liveboolean (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).
ParameterTypeDescription
uristring
as_ofstring/null (optional)
version_idstring/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.
ParameterTypeDescription
uristring
as_ofstring/null (optional)
version_idstring/null (optional)
in_force_onlyboolean (default: True)
limitinteger (default: 100)
offsetinteger (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`.
ParameterTypeDescription
querystring
scopestring (default: '@hr')
top_kinteger (default: 5)

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.
ParameterTypeDescription
querystringFree-text query in any language.
scopesarray (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_kinteger (default: 20)Max merged results (1-50).
modestring (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_onlyboolean (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.
stratifiedboolean (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.