# Merit — Ukrainian Law & Registers [Verified owner] [Health: Active]

**Category:** ⚖️ Legal  
**Repository:** https://merit.legal/mcp  
**Views:** 8  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/merit-ukrainian-law-registers

## Description
Gives AI agents Ukrainian legislation on any date, case law, court schedules, the company register, enforcement, debtors and five sanctions lists, from 50+ official sources, through 120+ read-only tools.

## Tools
Capabilities this server exposes over MCP:

- **eu_sanctions__search** — Search the EU consolidated financial sanctions list (persons and enterprises) by name or alias. Returns matching listed parties with their aliases, listing regulation, and identifying details, plus a `stale` flag when the underlying snapshot is older than the freshness window.
- **ua_law__search** — Search Ukrainian legislation by free text and/or metadata filters.

One entry per matching document, carrying the `nreg` `get_document_toc` takes.
Never text.

`in_force_on_date` keeps only acts the portal's own commencement and repeal
events put in force that day, dropping any act with no such event recorded.
`total` counts what it kept; `total_relation: 'gte'` marks a floor.
- **ua_law__search_units** — Find provisions by their text: which articles, points or clauses say X.

Every word of `text` must appear (quote it for an exact phrase). Searches the
text as published on `on_date` (default today); `nreg` limits it to acts. Each
hit is the smallest unit holding it, with that day's `urn`. ⟦ ⟧ in `excerpt`
mark matches, not the law's text. `amending_act` hits restate other acts.
`search` finds acts by title.
- **ua_law__get_document** — One act's card, by registration number. No text: use `get_document_toc` then `get_unit_fulltext`.

`urn_current_edition` is null unless an edition is in force today -- a repealed
act has none; `urn_latest_edition` is the newest text in effect today whatever
the status; `urn_next_edition`, text scheduled to take effect later.

Editions '30000101' and up await a date not yet fixed (e.g. end of martial
law) and are none of these.
- **ua_law__get_unit** — Metadata for one structural unit, addressed by its URN.

`urn` is 'urn:ua:law:{nreg}:{path}@{YYYYMMDD}'. Drop '@{YYYYMMDD}' for today's
edition; drop the path too for the whole document. Take one from a filtered
`get_document_toc` rather than building it.

A URN resolving to no unit answers 'not_found' with the nearest real units
either side and `same_segment` -- real paths ending in the segment asked for,
the hint when the right article was guessed under a wrong ancestor.
- **ua_law__get_unit_in_force** — Whether one unit was legally in force on a given date.

`in_force` is true, false, or null when the corpus cannot tell. `outcome`
'deterministic' is from the portal's own events or edition history, anything
else from AI review of the text.

An undated URN asks about the provision; a dated one about that version of
its text: false once replaced (`scope` 'version', `version_in_force_urn`).

`decided_for_provision` false: the answer is the act's, possibly wrong for an
article inserted or deleted mid-life.

`source: 'no_force_event'`: none ever recorded -- read `document_status_name`.
- **ua_law__get_unit_fulltext** — Unit text, paged.

Past `max_chars` it is `truncated`: pass `next_cursor` as `cursor` for more.
Pages end after a paragraph, else after a space, else mid-word (a tiny
`max_chars`). Only page 1 lists `parts`, sub-units with their own `urn`,
unless `parts_offset` is passed.

`text: null` with status 'edition_text_unavailable' (edition not stored) or
'extraction_failed' (unit not cut out) is a unit that DOES exist -- not a
repeal. No unit at that address answers 'not_found'.

`text_since`: the edition this text first reads so; `edition_date` only dates
the act's latest change.
- **ua_law__get_units_fulltext** — Several units' text in one call: a norm and what it relies on.

`units` answers each URN in order as `get_unit_fulltext` would, sharing one
`max_chars`: a unit that does not fit is `truncated` with a `next_cursor`, and
units past the budget come back with no text. A URN matching nothing is its
own 'not_found' entry.
- **ua_law__get_unit_editions** — The editions on which one unit's text changed, and what changed it.

Each entry is a version: its dated `urn`, how many editions kept it, and
`amended_by`, the acts behind the change ('unit_notes': cited by the unit's
notes; 'edition_basis': the edition's basis). `removed`: the unit
disappears; `moved_from`: its address changed (`text_changed` false if only
that). A `baseline` opens the list: the first text, or with
`from_date` the text in force that day. Edition '30000101' and up
(`edition_date` null) takes effect on a date not yet fixed.

`complete: false` means `limit` cut older entries.
- **ua_law__get_document_toc** — One document's units in reading order -- and the article resolver: `kind='article'` with `number='626'` returns that article alone, `urn` included.

Structure only. Each entry carries the `urn` `get_unit_fulltext` takes and a
`heading`, or for a clause its opening paragraph as `lead_text` with
`text_chars` for the provision's full length.

Filter, do not page: the Civil Code is 5,431 units, 1,329 of them articles.
- **ua_edrsr__search** — Faceted full-text search over Ukrainian court decisions (ЄДРСР).

Hits are metadata with no reasoning text. What a court held comes only from
`get_document`.

`doc_type_name` tells a procedural ruling (Ухвала) from a merits judgment
without fetching it.

`q` is lemmatized inside the index; do not stem it first. Integer filters OR
within, AND across.

A null `total` is the index not answering, not a no-match.

- **ua_edrsr__get_document** — One decision: its text, its citations, its structural parts.

Text is windowed, never dumped whole. `text_window` says what came back and how
to get the rest. Citations cover that window only, with `*_outside_window`
counting the rest; repeats of one case roll up into `occurrences`.

Citations carry what was written and what it resolved to, so an unresolved one
stays visible. Join on `resolved_cause_num`, not the written number.

`case_citations` are what this decision cites. Text near a citation is this
court's reasoning, not the cited court's.

- **ua_edrsr__get_court_practice** — Court practice on one statute article: which cases cite it, by court and year,
ranked highest authority first.

Spellings of one code answer alike ('ККУ', 'КК України') and mean the code in
force; `repealed_excluded` lists repealed namesakes' nregs.

`index_coverage.status` says what `total_cases` means (a real zero, or
unresolved citations); under `index_unavailable` it is null, not a count.

- **ua_edrsr__lookup_case** — One case by document id or case number, with the cases related to it. Give
exactly one of `doc_id` or `cause_num`. Metadata only, no reasoning text: what
a court held comes from `get_document`.

Highest instance first, judgments before rulings, newest first.

`related_cases` is citation-graph overlap, never semantic similarity or a
judgement on merits, and may repeat a decision from `matches`. `score` weights
each shared anchor and case by rarity, so boilerplate ranks near nothing.
`departures`/`departed_by`: Supreme Court departures read from the texts.

- **ua_bankruptcy__search** — Ukrainian bankruptcy and insolvency announcements (ДСА registry).

One result is one published announcement, not one case. A case accumulates
announcements as it proceeds and long-running cases have hundreds, so use
`get_case` for one case's history and current stage.

Company names are stored in full legal form and in capitals, so a distinctive
fragment of the trade name works far better than an exact name. `debtor_code` is
the reliable way to identify a party.

- **ua_bankruptcy__get_case** — One bankruptcy case's announcement history and current procedural stage, newest
first.

`current_stage` is the most recent announcement's type. The registry publishes
no case-level status record, so the latest publication is the only statement of
where the case stands, and `debtor_code`, `debtor_name` and `court_name` are
read off that same announcement.

Check `mirror.ready` to tell "no proceedings published" apart from an unsynced
mirror.

- **ua_cpi_inflation__search** — Ukrainian consumer price index figures over a period range, newest first.

This is Derzhstat's own consumer price index, not a producer price index and not
the NBU's mixed inflation series. The distinction matters: the month-on-month
series (`base_period` PREV_MONTH) is what Article 625(2) of the Civil Code is
computed from.

An index of 100.0 means no change against its base. Omitting `base_period`
returns every base for each period, which is rarely what a calculation wants.

- **ua_debtors__search** — Ukraine's Unified Register of Debtors (Єдиний реєстр боржників, ЄРБ): persons
with an open, unsatisfied enforcement proceeding.

An entry is dropped at the first daily sync after its proceeding closes, so "not
listed" means nothing was open as of `as_of`, never that nothing ever was. The register publishes no dates, so rows
carry none and arrive in arbitrary order.

`ua_enforcement_proceedings` also holds closed and refused proceedings.

- **ua_debtors__lookup** — Every debtor listed under one enforcement-proceeding number.

Always a list: one proceeding can be enforced against several debtors, so a
number legitimately has several answers.

- **ua_edr_companies__search** — Ukrainian legal entities in the open ЄДР extract (Єдиний державний реєстр
юридичних осіб). Legal entities only; ФОП are `search_fop`.

The open extract publishes neither the registered address (місцезнаходження)
nor КВЕД activity codes. Both were withdrawn upstream for security reasons, so
they are absent rather than lost and no response can supply them; only a paid
НАІС/Дія extract carries them.

`q` does not reach officers or founders. `lookup` returns those.

- **ua_edr_companies__lookup** — One legal entity by ЄДРПОУ code or `record`, with its people.

`people`: founders, beneficial owners, signers and board members; the head is
the latest appointment. `company` adds termination, bankruptcy, succession,
branches and tax registration.

`history`: changes per weekly release since tracking began; `on_date`: people
then. Earlier history: paid НАІС extract only.

A code shared by several subjects returns the live one, the rest in
`other_subjects`.

No address or КВЕД codes upstream.

- **ua_edr_companies__search_fop** — ФОП (фізичні особи-підприємці) in the open ЄДР extract, by name (ПІБ), status
and registration/termination date. Ordered by the filtered date, else `record`.

No РНОКПП, address or КВЕД upstream: namesakes cannot be told apart, so a name
hit alone does not identify a person.

- **ua_edr_companies__lookup_fop** — One ФОП by `record`: termination entry and reason, annulled termination,
farm-household flag, property manager, tax/ЄСВ registration.

- **ua_enforcement_proceedings__search** — АСВП, Ukraine's register of enforcement proceedings (виконавчі провадження).

Wider than ЄРБ (`ua_debtors`): it keeps closed ('Завершено') and refused
('Відмовлено у відкритті') proceedings too. The shared key is `vp_num`.

`debtor_code` is published for legal entities only, about 9% of rows. The source
carries no identifier at all for a natural-person debtor, so a null code means
the source publishes none, not that parsing failed.

- **ua_enforcement_proceedings__lookup** — Every row published under one enforcement-proceeding number.

Always a list: a proceeding with several debtors is published as one row per
debtor. `matches` is capped at 200.

- **ofac_sanctions__search** — Search the US Treasury OFAC Specially Designated Nationals (SDN) list (individuals, entities, vessels, and aircraft) by name or alias. Returns matching listed parties with their aliases, sanctions programs, and identifying details, plus `stale`/`available` flags describing how current the underlying snapshot is.
- **ua_sanctions__search** — Ukraine's NSDC (РНБО) sanctions register: individuals, legal persons, vessels.
`q`: name/alias words, all required; a code in `q` also matches identifiers.
`status`: active, expired (term ended), excluded (cancelled). `source.as_of` =
latest decree loaded.

- **un_sanctions__search** — Search the UN Security Council Consolidated Sanctions List (individuals and entities) by name or alias. Returns matching listed records with their aliases, listing regime (`un_list_type`), and identifying details, plus a `stale` flag when the underlying snapshot is older than the freshness window and a `snapshot.retrieved` flag that is false if no snapshot has ever been obtained yet.
- **uk_sanctions__search** — Search the UK Sanctions List (HM Treasury / FCDO consolidated financial sanctions designations) by name or alias. Returns matching designated parties with their aliases, regime, date of birth and nationality (for individuals), and the sanctions measures imposed. A `stale` flag is set when the underlying snapshot is older than the freshness window, and `retrieved` is false if no snapshot has ever been fetched yet.
- **ua_echr__search** — Search ECHR (European Court of Human Rights) case law via HUDOC, scoped to cases against Ukraine: judgments, decisions and communicated cases with application number(s), engaged articles, importance level, conclusion and a HUDOC permalink, including Ukrainian translations where HUDOC holds one. A live lookup with a short-lived cache, not a stored dataset.
- **ua_echr__get_case** — One HUDOC document by `itemid`, adding cited Strasbourg case law, domestic law at issue, judges.
- **ua_corruption_registry__search** — Ukraine's register of persons who committed corruption or corruption-related
offences (НАЗК).

An entry records one offender, the offence, the article they were held liable
under, the sanction, and the court decision or disciplinary decree that imposed
it. Most entries are natural persons sanctioned by a court.

`sentence_number`, where present, is the decision's ЄДРСР id, so an entry can be
checked against the decisions register itself.

This source publishes no freshness of its own, so `as_of` is mirror sync date.

- **ua_nbu_rate__rate** — Look up the National Bank of Ukraine's official exchange rate (UAH per unit) for a currency, as of a given date or today if none is given. Supports historical dates for ЦК §533 п.2-style currency-conversion calculations, not only the current rate. Returns `available: false` with a null rate, rather than an error, when NBU has nothing published for the requested currency or date.
- **ua_court_hearings__search** — Hearings scheduled in Ukrainian courts (Список справ, призначених до
розгляду), every court, read daily from court.gov.ua (a court listing on its
own portal instead: source=courtportal). The source lists today onward; past
hearings stay here as last listed. Needs case_number, court_code or q.
- **ua_vs_digest__search** — The Supreme Court's analytical publications: дайджести, огляди and узагальнення
судової практики, plus the наукові висновки НКР при ВС.

Not in ЄДРСР, which has the judgments but no positions by dispute category:
for a Supreme Court position, search here first.

`document` returns the text, link and case numbers. `court_body` `vs` is a
cross-cutting digest of no single cassation court (a quarter of the corpus),
not a missing value.

- **ua_vs_digest__document** — One Supreme Court publication's extracted text, `document_url`, cited case
numbers and linked ЄДРСР `edrsr_ids` -- only this tool returns them.

These are analytical reports, not judgments, averaging ~128,000 characters, so
a window from the start is usually cover page and contents. Pass
`text_query` to open it at the passage you want. `char_count` is the full
length; `has_more` whether more follows.

`extract_status` says why there is no text: `empty` is a scan with no OCR
layer, one in nine; `failed` errored; `unsupported` is not a PDF.

- **ua_holidays__check_date** — Whether one date is a public holiday or non-working day in Ukraine.

`is_holiday` is true, false, or **null** -- null when `covered` is false, i.e.
the mirror has not computed that year. Null is not "no": a deadline calculation
must be able to tell "this is a working day" from "this source cannot say".

`matches` carries the day with its name and verbatim statute line; a list, as a
movable feast and a dated holiday can coincide.

`is_holiday` means ст. 73 lists the day. During martial law ст. 73 does not
apply: see `martial_law.suspends_holidays`, null past the decreed end.
- **ua_lpd__search** — The Supreme Court's legal positions (правові позиції).

A position is an analyst's short statement of what the Court held, not a
quotation, filed under a classifier and linked to its source decisions. ЄДРСР
has the judgments, not which passage is the holding: for a Supreme Court
position, search here first.

Hits omit the text unless `full_text`; `position` serves it. `mark`
`indented`: the position departs from (or refines) an earlier holding;
`modified`: a later decision departed from or refined it.
`norm_refs` dates each norm it quotes to the edition then in force.

- **ua_lpd__position** — One legal position, with its text and published markup.

Pass a search hit's `position_id`. `text` is plain, `text_html` as published.

`norm_refs` dates each statute quoted to the `ua_law` edition then in force,
with a `urn` `ua_law__get_unit_fulltext` takes, to compare with today's text.

`departs_from`/`departed_in` link departures, read from position texts;
`history` has the detail. `approved_at` is NOT a publication date: its absence
says nothing about whether a position is current.

- **ua_legal_indicators__get** — Value of a legal indicator in force on a date, with the act and article that set it.

nbu_discount_rate: NBU облікова ставка, % p.a., since 1992. pm_general, pm_child_under_6, pm_child_6_18, pm_able_bodied, pm_disabled: прожитковий мінімум, from 2005. min_wage_monthly (from 2009-11), min_wage_hourly (from 2010). Statutory figures are curated from the budget laws. found=false with a reason: outside coverage, next year's law not curated yet, or NBU not synced. Exchange rates: ua_nbu_rate; CPI: ua_cpi_inflation.
- **ua_legal_indicators__court_fee** — Судовий збір for a claim, or an appeal/cassation against the judgment, in a civil, commercial or administrative court (ст. 4 Закону № 3674-VI). Base: able-bodied прожитковий мінімум on 1 January of the filing year (minimum wage 2011-2016). Returns amount, formula and provisions. Rates are the law's current text; an older filing may have owed another rate. Not covered (error): special claims, court orders, appeals against rulings, bankruptcy, exemptions.
- **catalog__search** — Find tools left out of this list (the catalog) by topic. Each hit is a tool name and its first sentence; an empty result means no catalog tool mentions those words.
- **catalog__describe** — A catalog tool's full description and input schema, as tools/list would publish it.
- **catalog__call** — Run a catalog tool with its arguments. It is validated, limited, billed and answered exactly as a listed tool would be.

## Claude Desktop Quick Installation
Remote MCP endpoint (confidence: medium). Install path inferred — verify against the README before running it. Add as a URL/SSE server in your client:

```json
"mcpServers": {
  "merit-ukrainian-law-registers": {
    "url": "https://merit.legal/mcp"
  }
}
```

## Documentation

## What Merit — Ukrainian Law & Registers does

Merit provides read-only legal and public-record research through MCP. Its coverage includes Ukrainian legislation, decisions from the Unified State Register of Court Decisions, company and individual entrepreneur records, enforcement proceedings, the Unified Register of Debtors, bankruptcy announcements, consumer price index data, ECHR materials from HUDOC, and sanctions lists maintained by the EU, United States, United Nations, and United Kingdom.

The legislation tools support both document-level and provision-level research. An agent can search acts by text or metadata, identify provisions containing particular wording, inspect a document’s structure, retrieve unit text, compare editions, and ask whether a provision was legally in force on a specified date. Court tools search and retrieve Ukrainian decisions, expose citations, find related cases, and rank practice citing a particular statutory article.

## How it works

MCP clients call individual tools with structured parameters. Legislation is addressed using registration numbers and URNs that identify a document, structural path, and optionally a dated edition. A typical text workflow is to search or retrieve a table of contents first, then use the returned URN with a unit-text tool. Full text is paged by character budget, and larger requests can continue with a cursor.

Date handling is central to the legal corpus. Searches can use the text published on a chosen date, while force-status queries distinguish a provision’s current or dated version. Edition history records changes, removals, moves, and the acts associated with amendments. Court decisions are returned through windows rather than as unbounded full-document responses, with citation information limited to the returned window.

Registry searches use source-specific identifiers where available. For example, company lookups accept an EDRPOU code or record, enforcement lookups use a proceeding number, and bankruptcy case history is retrieved separately from announcement search. Sanctions searches return aliases and identifying information along with freshness indicators for the underlying snapshot.

## Tools and capabilities

- Search Ukrainian acts by free text, metadata, date, and commencement or repeal events.
- Find law provisions by wording and retrieve their structure, metadata, editions, and paged text.
- Check whether a legal unit was in force on a specified date, including uncertain outcomes.
- Search, retrieve, and relate Ukrainian court decisions, citations, and article-specific practice.
- Search companies, sole proprietors, debtors, enforcement proceedings, and bankruptcy announcements.
- Query EU, OFAC, UN, and UK sanctions data, plus ECHR cases against Ukraine through HUDOC.
- Retrieve a consumer price index figure for a selected period.

## Limitations and notes

The service is read-only. Legislation search returns document records rather than document text; text retrieval requires following the document or unit workflow. Full-text responses may be truncated or unavailable for particular stored editions, and a missing extracted text value does not necessarily mean that the legal unit was repealed.

The public company extract does not include addresses or KVED activity codes, and company search does not search officers or founders. Individual entrepreneur records lack identifiers such as РНОКПП, address, and KVED data, so a name match alone may not distinguish people with the same name. Natural-person enforcement records may have no published identifier.

The Debtors Register represents open, unsatisfied proceedings as of its synchronization date; absence from it does not establish that no proceeding ever existed. The wider enforcement register also includes closed and refused proceedings. Bankruptcy status is inferred from the latest published announcement, while sanctions and some registry datasets expose freshness or mirror-readiness fields that should be checked before relying on currentness.

_Full upstream README: https://allmcps.com/mcp/merit-ukrainian-law-registers/readme_

