What the door is
The MCP door is a thin server between your assistant and the LexAtlas API.
It holds no data of its own: every call goes through your API key, with your rate limits and your
jurisdiction scope, exactly as a direct API call would. A refusal stays a refusal — 403,
429, 404 and 503 reach the assistant with their code and our
wording, so “not allowed” is never mistaken for “not found”.
Transport today is stdio: your MCP client starts the server on your host and talks to it locally; the server reaches the corpus through the same tunnel as the API (access model). Your key stays on your side.
A hosted endpoint that clients join by URL (Streamable HTTP) is in preparation. If your client can only connect by URL, say so in your request.
Tools
Two tools carry most of the work: one finds the provisions, the other reads them.
toollexatlas_search — find provisions by meaning
Hybrid search across the corpus: full-text and vector channels fused, across jurisdictions and languages. Use it when the assistant holds a question or a situation rather than a citation.
| argument | type | meaning |
|---|---|---|
query | string, required | the question or the wording, in any language the corpus holds |
jur | string | jurisdictions, comma-separated: ru, kz, by, … |
k | integer | how many rows to return; up to 20 on a pilot key |
Each row carries the citation (cite), act code and title, act kind, status,
language and which search channels matched. Pass the cite to
lexatlas_get to read the article.
// arguments the assistant sends
{ "query": "penalty for late payment under a supply contract", "jur": "ru", "k": 5 }
toollexatlas_get — read the article
One article in full: the text, the act it belongs to, status (in force or repealed), how fresh
our copy is, and provenance — the official source, its URL and the licence for reuse. With
as_of it returns the text as it stood on that date, together with the amending law
that set it (point-in-time; available for Russian codes).
| argument | type | meaning |
|---|---|---|
cite | string, required | jurisdiction:act_code:article, e.g. ru:gk_rf_1:395 |
lang | ru | en | language of the trust envelope around the text |
as_of | YYYY-MM-DD | the date to read the article on |
// arguments the assistant sends
{ "cite": "ru:gk_rf_1:395", "as_of": "2024-01-01" }
Act codes are ours and have changed before. If you keep citations long-term, keep the act's requisites (date and number) next to them — requisites do not age.
All eleven tools
| tool | what it answers |
|---|---|
lexatlas_verify | Is the article real, in force or repealed, and how fresh is our copy. |
lexatlas_get | Full text with the act, status and provenance — or as it stood on a chosen date. |
lexatlas_history | When the article was changed and by which law, from the first version onwards. |
lexatlas_search | Provisions across jurisdictions, found by wording or by the situation described. |
lexatlas_screen | A name, alias or registered ID against official sanctions lists, quoted verbatim. |
lexatlas_changes | Everything amended since a date you name — for monitoring, not re-reading. |
lexatlas_citecheck | Every legal reference in a draft checked at once, so invented citations surface. |
lexatlas_pipeline | Draft laws by stage — introduced, read, signed, published. |
lexatlas_coverage | How complete a jurisdiction is, counted against the source's own register. |
lexatlas_calendar | Provisions coming into force in the weeks ahead, with dates. |
lexatlas_related | What an article relies on and what relies on it — with the meaning of each link. |
Get a key
Write to us through the contact form: choose Legal-AI / data integration and add a line about what you are building. Keys are issued per client. Pilot key on request. Pricing on request.
With the key you receive the tunnel kit and the MCP server — one Python 3 file that uses only the standard library.
Configure your client
Claude Desktop, Cursor and most MCP clients read the same mcpServers block
(Claude Desktop — claude_desktop_config.json; Cursor — .cursor/mcp.json):
{
"mcpServers": {
"lexatlas": {
"command": "python3",
"args": ["/path/to/lexatlas_mcp.py"],
"env": {
"LEXATLAS_API": "http://127.0.0.1:8788",
"LEXATLAS_API_KEY": "lxa_…"
}
}
}
}
Claude Code adds the same server with one command:
claude mcp add lexatlas \
-e LEXATLAS_API=http://127.0.0.1:8788 \
-e LEXATLAS_API_KEY=lxa_… \
-- python3 /path/to/lexatlas_mcp.py
Other clients: any client that can launch a stdio MCP server — give it the same command and
the same two environment variables. LEXATLAS_API is your end of the tunnel;
LEXATLAS_API_KEY is the key we issue you.
Check the connection
From the host, without a key: curl -s http://127.0.0.1:8788/v1/health — the tunnel
answers. Then ask the assistant to verify ru:gk_rf_1:196: it should call
lexatlas_verify and report that the article exists and is in force. A wrong key comes
back as a refusal with its code, not as an empty answer.
Limits
| pilot key | ceiling |
|---|---|
| calls per minute | 60 |
| tool calls per day | 1 000 |
| rows per search | up to 20 |
| rows returned per day | a daily ceiling, set per key |
The exact ceilings, jurisdiction scope and expiry date of your key are served at
/v1/limits. A call over a ceiling returns 429
with the reason. Load tests are agreed in advance: the rate window is shared by all your workers.
What to keep out of queries
Every call is recorded in our request log together with your key and the time — for quotas, abuse control and diagnosing your integration. Search and screening queries are stored as text, up to 300 characters.
- Ask about the law, not about the person. “Liability of a guarantor under a loan” works better than a pasted client contract — and carries no one's data.
- Keep personal data out: names of private individuals, passport and tax numbers, addresses, phone numbers, case facts, client documents.
- Screening is the one tool that needs a name. Send only the name or registered ID being checked, with nothing around it.
- Answers carry the text of the law. Content marked
personal_datais served according to the entitlements on your key; handle it under your own data-protection rules.
What this is not
The tools answer specific questions — an article, a check, a list of changes. They are not a way to download the database: responses are bounded, and sequential enumeration of the corpus is watched. If you need the data itself rather than answers, tell us — that is a different conversation, and a fair one.
Request a key — pilot key on request, pricing on request.