Skip to content
Merit MCP server

Help

The Merit MCP server gives an AI assistant access to Ukrainian legislation, case law and state registers. This page tells you how to connect it, how it works and what to do when something goes wrong.

What it is

Merit MCP is a server for the open Model Context Protocol standard. Through it, an AI assistant (Claude, ChatGPT, Gemini or another MCP client) calls tools that search official sources:

  • Ukrainian legislation from the database of the Verkhovna Rada, in its version on any date, with a comparison of versions;
  • court decisions from the Unified State Register of Court Decisions, legal positions and practice reviews of the Supreme Court, ECHR judgments;
  • the register of companies and sole proprietors (ЄДР), the registers of advocates, notaries, debtors, enforcement proceedings, bankruptcy and other state registers;
  • the sanctions lists of the EU, OFAC (USA), the UK and the UN (the register of the NSDC of Ukraine is not available yet).

The full list of sources is on the Merit MCP server page.

  • Read only. No tool changes anything or sends anything on your behalf.
  • It does not see your chat. The assistant sends the server only the request to a source, such as a case number, an article or a company code. The rest of the chat stays in the assistant.

Who it is for, and its limits

The server is for advocates, lawyers, law firms and compliance teams who work with Ukrainian law.

The answers of the assistant are not legal advice. The server returns the data of a source with its date, and an AI model draws the conclusion. The model can make a mistake: miss a version, misstate a decision or draw a wrong conclusion. So:

  1. check each conclusion against the primary source that the assistant cites;
  2. look at the date of the source (as_of): the register can have changed after it;
  3. a lawyer makes the decision in a case and is responsible for it.

How to connect

The server address:

https://law.merit.legal/mcp

Claude

Custom connectors work on the Free (one connector), Pro, Max, Team and Enterprise plans, in claude.ai, Claude Desktop and the mobile apps.

  1. Open Customize → Connectors and click + Add → Add custom connector.
  2. Name: Merit. URL: the server address above. Click Continue, then Add.
  3. Click Connect next to the connector and sign in.

On Team and Enterprise, an owner adds the connector: Organization settings → Connectors → Add → Custom → Web. Members then click Connect in Customize → Connectors. Details: Merit in Claude.

Claude Code

Run this in a terminal:

claude mcp add --transport http merit https://law.merit.legal/mcp

Then type /mcp in Claude Code, choose merit and sign in.

ChatGPT

ChatGPT connects custom MCP servers in Business and Enterprise/Edu workspaces, on the web. An admin or owner of the workspace adds the server.

  1. Open Plugins and click + → Add custom MCP server.
  2. Name: Merit. Under Connection, paste the server address. Pick OAuth sign-in.
  3. Tick I understand and want to continue and click Create as a plugin.
  4. Publish the plugin for the workspace. Members install Merit in Settings → Plugins and sign in.

In a chat, type @ and pick Merit. Details: Merit in ChatGPT.

Gemini

Gemini connects custom apps in a personal Google account: on gemini.google.com and in the app. In a Gemini Enterprise work account, an administrator adds the server.

  1. Open Settings & help → Connected apps and click Add a custom app.
  2. Paste the server address and save.
  3. Gemini opens the Merit sign-in page. Sign in with your email and click “Allow”.

If Gemini activity is turned off in the account, custom apps may not work.

Sign-in

  1. The client opens the sign-in page on merit.legal.
  2. Type your email. The first time, accept the public offer and the privacy policy.
  3. Type the 6-digit code from the letter, or open the link in the same letter.
  4. On the consent page, check the name of the app and the address it returns you to, and click “Allow”.

You do not copy a key: the client gets access when you sign in. You can turn off each connection on its own in your account. The account is in Ukrainian.

Requests work when the account has an active plan. You can connect before that: the connection is kept, and requests start to work when the plan is active. Each person has up to 3 connections, for example Claude, ChatGPT and Gemini.

How it works

  • Tool names. Each source is a set of tools named source__action, for example ua_law__get_unit_in_force or ua_edr_companies__lookup.
  • The catalogue. The assistant sees the main tools at once. It finds the others in the catalogue of the server: catalog__search finds a tool by topic, catalog__describe gives its parameters, and catalog__call runs it in the same way as a main tool.
  • Search first, then details. A search hit carries the key of the record. With that key, the lookup or get_… tool of the same source returns the full record.
  • The date of the source. An answer carries as_of: the publication date of the source itself, not the date of our sync. A stale flag means that the snapshot of the source is old.
  • An empty result does not mean “no such record”. It means that nothing matched, or that the source is not loaded yet (then as_of is empty). An empty result does not prove that a person, a company or a proceeding does not exist.
  • An unavailable source. An answer with available: false and a reason means that the source does not answer now. It is an answer, not an error.
  • Truncation is always declared. A shortened field carries a flag or a character count. A field without them is whole.
  • Sanctions are in five lists: Ukraine, the EU, OFAC, the UK and the UN. A “no” in one list says nothing about the other four.
  • Formats. Dates are YYYY-MM-DD. An ЄДРПОУ code has 8 digits (a legal person), an РНОКПП has 10 digits (a natural person).

Data and privacy

For each call, we log the key of the connection, the time, the tool name and the IP address. The log does not keep the content of requests (search words, case numbers, ЄДРПОУ codes) or the answers of the server. We keep the call log for 12 months.

We do not see your conversations with the assistant. The provider of the MCP client that you chose processes them under its own policy.

The server gives only data from open state registers and databases, to the extent that the holder of the source published them.

The details are in the privacy policy. The terms of the service are in the public offer. The Ukrainian texts of both are binding.

Troubleshooting

The client asks you to sign in again, or shows error 401

The server no longer accepts this connection. This happens when the connection was turned off in the account, replaced by a new one on the consent page, when the account owner removed you from the team, or when the plan has fewer seats and the extra connections were turned off. Connect again in the client: it opens the sign-in page again.

The assistant reports a limit

  • “The call limit for this period has been reached”: the calls of the current period are used up, or the account has no active plan. The message gives the date when the limit resets. The calls you used are in the Usage section of the account.
  • “This account’s period ended”: the period of the plan has ended. The state of the plan is in the account.
  • “rate limit exceeded”: too many calls in a minute. Wait a minute and try again.
  • “This account is suspended”: access of the account is stopped. Write to us at support@merit.legal.

The letter with the code does not come

Check the spam folder and the address you typed. The letter can take a few minutes. A code is valid for 15 minutes and has 5 tries. If the code did not work or has expired, ask for a new one on the sign-in page. The number of letters is limited: if you ask for codes often, the page asks you to wait.

The consent page says that the connections are taken

Each person has up to 3 connections. When all your connections are taken, the consent page asks you to choose the one that the new connection replaces. You can also turn off an old connection before: account → Connections.

When the page says “All connections of the account are in use”, the whole team account has no free seat. Ask the account owner: the owner sees all the connections of the team and can turn off those not in use.

An answer has available: false

The source is unavailable for a time: the holder of the register does not answer, or the source is under maintenance. The reason field gives the cause. Try again later. Such an answer does not count towards the call limit.

An empty result

An empty result means that nothing matched this request, not that the record does not exist. Try another spelling of the name, the ЄДРПОУ code instead of the name, a wider date range or another source. If as_of is empty, the source is not loaded yet. For a sanctions check, the assistant must search all five lists.

How to disconnect the server

  1. Remove the Merit connector in the settings of the client. In Claude Code: claude mcp remove merit.
  2. Turn off the connection in the account: Connections → “Turn off”. After that, the server accepts no request of this connection.

Removing the connector does not end the contract. To end it, write to support@merit.legal from the address you sign in with.

Support

Write to support@merit.legal. Support works on working days from 10:00 to 18:00 Kyiv time. We answer within 2 working days.

In the letter, give the address you sign in with, the client (Claude, ChatGPT, Gemini or another), the tool name, the time of the request and the text of the error. Do not send confidential case material.

Vulnerabilities. Report a security problem to the same address, support@merit.legal. If another person got access to your connection, turn it off in the account or write to us: we revoke it within 1 working day.

The service is provided by Serhii Kushniruk, sole proprietor (ФОП Кушнірук Сергій Ігорович): the provider under the public offer and the data controller under the privacy policy.