lt-eli-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@lt-eli-mcpsearch for 'Civil Code'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
lt-eli-mcp
An MCP server for the Lithuanian Register of Legal Acts (TAR) via the data.gov.lt open-data API. It searches Lithuanian legislation by title and fetches full text, with verifiable citations.
Part of the MateMatic eu-legal-mcp production line - after PL, DE, AT, ES, FI, IE, NL, SE, FR,
LU, DK, CZ and HR. Same citation contract, TAR source. This connector reads a REST-JSON open-data
API (the data.gov.lt Spinta endpoint).
Scope. This MVP searches acts by title substring, returns metadata, and fetches the full Lithuanian text. ~CC BY 4.0 open data; acts are addressed by their TAR code (
tar_kodas). Language: Lithuanian. Every response carries adataset_note.ELI is national, not data.europa.eu. Lithuania has no
data.europa.euELI for the TAR dataset.eli_uricarries the canonicale-tar.ltlegalAct URL (the stable national identifier), which is also thesource_url. Every response carries aneli_notesaying so.
The tools
Tool | What it does |
| Find acts whose title contains a substring (optionally by type). |
| Metadata for an act by its TAR code. |
| Full Lithuanian text of an act by its TAR code. |
| Declare what this connector covers, when each family was captured, and - explicitly - what it does NOT cover. Every gap carries a fallback. |
Every response carries the contract: eli_uri (the e-tar.lt URL, e.g.
https://e-tar.lt/portal/lt/legalAct/...), human_readable_citation (title + official number),
and source_url.
Related MCP server: Estonian Law MCP Server
Install
Run it with no install step (once published to PyPI):
uvx lt-eli-mcpOr from source:
cd lt-eli-mcp
pip install -e .Configure (Claude Code / any MCP client)
{
"mcpServers": {
"lt-eli-mcp": { "command": "lt-eli-mcp" }
}
}Windows 11 with Smart App Control
Smart App Control blocks unsigned executables, which covers uvx.exe, pip.exe
and the lt-eli-mcp.exe launcher that pip writes at install time. The python.exe and
py.exe from the python.org installer are signed by the Python Software
Foundation, so running the module through the interpreter works:
python -m pip install lt-eli-mcp
python -m lt_eli_mcppip.exe is blocked for the same reason, so install with python -m pip, not
pip install. If python is not on PATH, use the Windows launcher: py -3 -m lt_eli_mcp.
{ "mcpServers": { "lt-eli-mcp": { "command": "python", "args": ["-m", "lt_eli_mcp"] } } }Do not turn Smart App Control off to work around this - it cannot be re-enabled without reinstalling Windows.
Environment:
LT_ELI_BASE_URL- defaulthttps://get.data.gov.ltLT_ELI_CACHE_DIR- default~/.matematic/cache/lt-eliLT_ELI_AUDIT_DIR- default~/.matematic/audit
No API key. The data.gov.lt open-data API is keyless.
Governance
Public data only - read-only against data.gov.lt; no client data leaves the machine.
Audit log - every tool call appends one JSON line to
~/.matematic/audit/lt-eli-mcp.jsonl.Vendor-neutral - talks only to
get.data.gov.lt; no LLM provider, no telemetry.Verifiable citations - every response is independently checkable via
source_url.
See CONSTITUTION.md and DISCOVERY.md.
Tests
pip install -e ".[dev]"
pytest tests/test_instructions_drift.py tests/test_parse.py -v # offline
pytest tests/test_smoke.py -v # hits live data.gov.ltLicence
Apache-2.0. © Matematic Solutions / Wieslaw Mazur. TAR data is CC BY 4.0; relayed with attribution
and a source_url.
Available Tools
4 toolslt_coverageARead-onlyIdempotent
Declare what this connector covers, how it is sourced, and what it does NOT cover.
Call this before telling a user that the law "does not contain" something, and whenever a search comes back empty: the absence may be a gap in this connector rather than in the law. Every gap carries a fallback saying where to look instead.
Returns:
Coverage with families, an as-of note, and a non-empty list of known gaps.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| status | No | |
| families | No | |
| as_of_note | Yes | States what the dates mean, and what they do not promise. |
| known_gaps | No | Never empty. An empty list would mean 'not checked', not 'no gaps'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool read-only, idempotent, and open-world; the description adds meaningful context about sourcing, known gaps, and the fact that empty results may reflect connector gaps rather than the law. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact blocks: what it does, when to call it, and what it returns. Every sentence earns its place and the usage trigger is front-loaded before the return format.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with rich annotations and an output schema, the description covers purpose, timing, gap behavior, fallback, and return shape. Nothing essential is missing for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is fully covered, so there are no parameter semantics to explain. The description's references to families, as-of note, and gaps are return-value details, not parameters. Baseline 4 for a 0-param tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific purpose: declare what the connector covers, how it is sourced, and what it does not cover. It distinguishes itself from sibling search/retrieval tools by focusing on coverage gaps and fallbacks, not legal content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance: call before telling a user the law 'does not contain' something and whenever a search comes back empty. It does not name sibling alternatives or explicit when-not-to-use conditions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lt_get_actARead-onlyIdempotent
Fetch Lithuanian act metadata by its TAR code.
| Name | Required | Description | Default |
|---|---|---|---|
| tar_kodas | Yes | e.g. ``"2014-21296"`` (from ``lt_search``). |
Output Schema
| Name | Required | Description |
|---|---|---|
| title | No | |
| number | No | |
| eli_uri | No | |
| eli_note | No | |
| validity | No | |
| tar_kodas | No | |
| source_url | No | |
| dataset_note | No | |
| date_adopted | No | |
| document_type | No | |
| date_published | No | |
| human_readable_citation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, and non-destructive. The description adds the boundary that it fetches 'metadata' (not full text), which is useful, but does not disclose any additional behavioral traits like output format, rate limits, or error conditions. Consistent with annotations, no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence conveys the core purpose without filler. Every word contributes, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple one-parameter schema, strong annotations, and presence of an output schema, the description is adequate. It communicates the essential scope (metadata by TAR code) and the structured fields cover the rest, forming a complete picture for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a well-described parameter (tar_kodas) including an example and origin from lt_search. The description mentions the TAR code but adds no semantic detail beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Fetch') and resource ('Lithuanian act metadata') and highlights the key ('TAR code'). It clearly distinguishes from siblings like lt_search and lt_get_text by focusing on metadata retrieval by identifier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description does not mention prerequisites, exclusions, or relationship to sibling tools. The schema's parameter description hints at lt_search but the main description lacks explicit usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lt_get_textARead-onlyIdempotent
Fetch the full Lithuanian text of an act by its TAR code.
| Name | Required | Description | Default |
|---|---|---|---|
| tar_kodas | Yes | e.g. ``"2014-21296"``. |
Output Schema
| Name | Required | Description |
|---|---|---|
| title | No | |
| format | No | |
| content | No | |
| eli_uri | No | |
| eli_note | No | |
| byte_size | No | |
| tar_kodas | No | |
| source_url | No | |
| dataset_note | No | |
| human_readable_citation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds useful behavioral context by specifying that it fetches the 'full Lithuanian text' (not a summary), which helps set expectations. It doesn't contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, complete sentence that is front-loaded with the action ('Fetch') and resource. No filler or redundant words. It is concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, single-parameter tool with comprehensive annotations and an output schema, the description provides sufficient context. It clearly states what the tool does and what input is needed. The output schema handles return-value details, so no further explanation is required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the parameter 'tar_kodas' is documented with an example. The description mentions 'by its TAR code', which aligns with the schema but does not add extra semantic meaning beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Fetch' with a clear resource ('full Lithuanian text of an act') and the key identifier ('by its TAR code'). This clearly distinguishes it from siblings like lt_search (searching) and lt_get_act (retrieving an act, likely metadata).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case: when you need the full text of an act given a TAR code. However, it does not explicitly state when to prefer this over lt_get_act or lt_search, nor does it mention any exclusions or alternatives. The guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lt_searchARead-onlyIdempotent
Search Lithuanian acts whose title contains a substring.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | max hits (1..200, default 50). | |
| contains | Yes | substring matched against the act title (Lithuanian ``pavadinimas``). | |
| doc_type | No | optional Lithuanian act type (``rusis``), e.g. ``"Istatymas"`` (law), ``"Isakymas"`` (order). Match the exact Lithuanian spelling. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | |
| total | Yes | |
| dataset_note | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, covering safety. The description adds a useful behavioral detail: the search is restricted to the act title (not full text). It does not add context like pagination or case sensitivity, but annotations lower the bar.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no filler. It front-loads the action and resource, and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with full schema coverage and annotations, the description is adequate. It explains what the tool does, and the schema covers parameters. It lacks explicit guidance on when to use it versus siblings, but this does not undermine overall completeness given the low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with detailed descriptions for limit, contains, and doc_type. The description does not add parameter info beyond what the schema already provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Search') and resource ('Lithuanian acts') with a clear parameter ('whose title contains a substring'). It clearly distinguishes from siblings lt_get_act and lt_get_text, which presumably retrieve specific acts or texts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use this tool when you need to find acts by title substring. It does not explicitly state when not to use it or name alternatives, but the context is clear given the sibling names. No exclusions or alternative scenarios are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
1 tool update
v0.3.3- Added
lt_coverage
3 tool updates
v0.2.1- First observed
lt_get_act - First observed
lt_get_text - First observed
lt_search
TDQS
Each tool has a clearly distinct function: search by title, fetch metadata by TAR code, fetch full text by TAR code, and declare coverage. There is no overlap or ambiguity between them.
All tools share the lt_ prefix, and three follow a verb_noun pattern (lt_search, lt_get_act, lt_get_text). However, lt_coverage breaks the pattern by being a noun, making the naming slightly inconsistent.
Four tools is well-scoped for a focused legal retrieval server. Each tool covers a distinct and necessary part of the workflow without unnecessary bloat.
The set provides a complete retrieval lifecycle: search to find acts, fetch metadata, fetch full text, and a coverage tool that explicitly documents gaps with fallbacks. No obvious dead ends or missing core operations.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
What a Lithuanian act said on one given date, with its validity window and a register URL.
Resolve, search and verify legal citations against the official sources, with provenance.
Semantic search over Polish law and case law, citing the exact in-force article.
Search UK Acts, Statutory Instruments, and legislation with full text retrieval
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables AI-powered legal research and analysis of Polish legal acts from the Sejm API. Provides comprehensive search, document retrieval, metadata analysis, and content access for legal documents from Dziennik Ustaw and Monitor Polski.1319MIT
- AlicenseNot gradedqualityFmaintenanceEnables querying Estonian legislation from Riigi Teataja, including full-text search across 1,602 statutes and 63,624 provisions, with EU law integration and citation validation.101Apache 2.0
- AlicenseAqualityAmaintenanceProvides access to Danish legislation from Retsinformation.dk, enabling retrieval of act metadata, full text, and recent changes with verifiable citations.4Apache 2.0
- AlicenseAqualityAmaintenanceSearches and retrieves Japanese national legislation from the official e-Gov API, providing verifiable citations with stable URLs and human-readable references.6Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/matematicsolutions/lt-eli-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server