Skip to main content
Glama

de-eli-mcp

Install (one command)

Published on PyPI + MCP Registry (io.github.matematicsolutions/de-eli-mcp). Run without cloning:

uvx de-eli-mcp

Configure your MCP client (stdio):

{ "mcpServers": { "de-eli-mcp": { "command": "uvx", "args": ["de-eli-mcp"] } } }

Windows 11 with Smart App Control

Smart App Control blocks unsigned executables, which covers uvx.exe, pip.exe and the de-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 de-eli-mcp
python -m de_eli_mcp

pip.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 de_eli_mcp.

{ "mcpServers": { "de-eli-mcp": { "command": "python", "args": ["-m", "de_eli_mcp"] } } }

Do not turn Smart App Control off to work around this - it cannot be re-enabled without reinstalling Windows.

Building from source: see Install.

An MCP server for German law: NeuRIS (rechtsinformationen.bund.de) for federal legislation, three case-law sources - NeuRIS's beta case-law slice, the complete federal-courts aggregator rechtsprechung-im-internet.de (RII, official BMJ/juris portal) for BVerfG, BGH, BAG, BFH, BVerwG, BSG (+ BPatG), and Open Legal Data (de.openlegaldata.io, ~424k decisions from ~1 100 courts of ALL levels, including the state courts of all 16 Laender, with full-text search) - plus the Bundestag's DIP (dip.bundestag.de) for parliamentary documents and legislative history (~287k Drucksachen with full text, plenary transcripts, ~335k legislative procedures, Bundestag AND Bundesrat).

Part of the MateMatic eu-legal-mcp production line: the German counterpart of the Polish sejm-eli-mcp, built on the same architecture and citation contract against the German source.

Beta source (legislation + de_case_search). NeuRIS is an official but beta service; its dataset is not yet complete. Every response carries a dataset_note saying so.

Complete source (case law). de_rii_case_search / de_rii_get_case_text query rechtsprechung-im-internet.de directly. Per an independent audit (Legal Data Hunter, worldwidelaw/legal-sources), RII's coverage of BVerfG, BGH, BAG, BFH, BVerwG and BSG is marked status: complete - unlike NeuRIS's /v1/case-law, which only carries a small beta slice (and can drop fields such as ecli for the very same decision RII serves with a full ECLI - see BAG decision KARE600069049 / ECLI:DE:BAG:2024:... as a live example). Prefer the RII tools for these six courts.

State courts + full-text search (Open Legal Data). de_oldp_case_search / de_oldp_get_case query de.openlegaldata.io - a community open-data aggregator (Open Knowledge Foundation ecosystem, BMBF Prototypefund) of ~424k decisions from ~1 100 German courts at every level, including the state courts of all 16 Laender. It is NOT an official government service and does not claim completeness - for the six federal supreme courts prefer the RII tools; use OLDP for state case law and for full-text hunting (no other source here searches decision content).

Legislative history (Bundestag DIP). de_dip_search / de_dip_get_document query the parliament's official DIP API - Drucksachen (bills, motions, committee reports, government answers - the home of Gesetzesbegruendungen), plenary transcripts and legislative procedures, for Bundestag and Bundesrat. The Bundestag publishes a public API key on its help page (the current one is valid until end of May 2027 and ships as the default); set DE_DIP_API_KEY when it rotates or to use your own key.

Licence. German official works - statutes, ordinances, court decisions and official headnotes - are outside copyright under § 5 UrhG (gemeinfrei), which is the standard basis for reusing German legal data. NeuRIS is operated by the BMJV / DigitalService GmbH; RII is operated by the BMJ (juris GmbH). Neither publishes a separate API terms or key requirement. Open Legal Data's database is under ODbL v1.0 (the decisions themselves are gemeinfrei); DIP data is under Data licence Germany - attribution - 2.0 (dl-de/by-2-0). This connector only relays that public content, with attribution and a source_url. Caveat: NeuRIS is in test phase; re-check the terms at general availability. (This is a practitioner's read, not formal legal advice.)

Related MCP server: German Legal MCP Server

The tools

Tool

What it does

de_search

Search legislation by term, ELI and date (GET /v1/legislation).

de_get_act

Fetch act metadata by ELI.

de_get_text

Fetch the full text (html or xml / LegalDocML.de).

de_list_publishers

List the publication organs (BGBl I/II, Bundesanzeiger).

de_recent_changes

Acts published since a date, newest-first.

de_case_search / de_get_decision(_text)

NeuRIS case-law beta slice (/v1/case-law).

de_rii_case_search

Search BVerfG/BGH/BAG/BFH/BVerwG/BSG/BPatG decisions via RII's master TOC (court, Aktenzeichen substring, date range).

de_rii_get_case_text

Full text of one RII decision by doc_id - real ecli when the court publishes one, plus titelzeile/leitsatz/tenor/full content.

de_oldp_case_search

Search Open Legal Data - 423 944 decisions from 1 119 courts at all levels (verified live 2026-07-08), the only tool here covering state courts and offering full-text search (text). Metadata filters: court_slug, file_number (exact), date_after/date_before.

de_oldp_get_case

Full decision text (HTML) by OLDP id or slug, with ECLI when the source carries one.

de_dip_search

Search the Bundestag DIP - Drucksachen (287 327), Plenarprotokolle (5 789), Vorgaenge (334 524); filters titel, dokumentnummer, zuordnung (BT/BR), wahlperiode, dates; cursor pagination.

de_dip_get_document

One DIP entity by id; the -text resource variants return the full document text. Citations like BT-Drs. 20/1 with the official PDF as source_url.

de_coverage

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 (ELI e.g. eli/bund/bgbl-1/2017/s2097/2025-01-01/1/deu, or ECLI for RII case law e.g. ECLI:DE:BVerfG:2024:rk20241120.1bvr226823), human_readable_citation (e.g. BDSG (BGBl I, 2017 2097) or BVerfG, Kammerbeschluss vom 20.11.2024 - 1 BvR 2268/23), and source_url.

Install

cd de-eli-mcp
pip install -e .

Configure (Claude Code / any MCP client)

Copy .mcp.json.example and adjust if needed:

{
  "mcpServers": {
    "de-eli-mcp": { "command": "de-eli-mcp" }
  }
}

Environment:

  • DE_ELI_BASE_URL - default https://testphase.rechtsinformationen.bund.de

  • DE_RII_BASE_URL - default https://www.rechtsprechung-im-internet.de

  • DE_OLDP_BASE_URL - default https://de.openlegaldata.io

  • DE_DIP_BASE_URL - default https://search.dip.bundestag.de

  • DE_DIP_API_KEY - default: the public key the Bundestag documents on dip.bundestag.de/über-dip/hilfe/api (valid until end of May 2027; rotates ~yearly)

  • DE_ELI_CACHE_DIR - default ~/.matematic/cache/de-eli

  • DE_ELI_AUDIT_DIR - default ~/.matematic/audit

NeuRIS, RII and Open Legal Data are keyless. DIP needs an API key, but the Bundestag publishes a public one (shipped as the default) - zero setup either way.

Governance

  • Public data only - read-only against NeuRIS; no client data leaves the machine beyond search parameters.

  • Audit log - every tool call appends one JSON line to ~/.matematic/audit/de-eli-mcp.jsonl.

  • Vendor-neutral - the server talks only to NeuRIS and the local filesystem; no LLM provider, no telemetry.

  • Verifiable citations - every response is independently checkable via source_url.

See CONSTITUTION.md (the binding rules) and DISCOVERY.md (the NeuRIS API map).

Tests

pip install -e ".[dev]"
# offline (fixtures)
pytest tests/test_instructions_drift.py tests/test_rii_client.py tests/test_oldp_client.py tests/test_dip_client.py -v
# live smokes (NeuRIS + RII + Open Legal Data + DIP)
pytest tests/test_smoke.py -v

Licence

Apache-2.0. © Matematic Solutions / Wieslaw Mazur.

Available Tools

15 tools
de_coverageA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNo
familiesNo
as_of_noteYesStates what the dates mean, and what they do not promise.
known_gapsNoNever empty. An empty list would mean 'not checked', not 'no gaps'.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the description doesn't need to repeat those safety guarantees. It adds valuable behavioral context beyond annotations by explaining that the tool's purpose is to identify gaps in the connector itself and that each gap carries a fallback. It also details the return structure (families, as-of note, gaps). This enriches agent understanding but stops short of describing edge cases (e.g., what happens if no gaps exist), so a 4 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is succinct, front-loaded with the core purpose, then usage guidance, then expected return. Every sentence serves a function: stating coverage, prescribing when to call, explaining the rationale, and outlining the return object. No fluff or redundancy. The structure is logical and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, output schema available), the description provides everything an agent needs: what the tool does, when to call it, why it matters (gap identification), and what to expect in the response. No missing critical information. The mention of fallbacks within gaps is a nice touch for decision-making.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema description coverage is 100% (empty object). With 0 params, the baseline is 4, and the description doesn't add parameter-specific details because there are none to document. It does explain the return semantics, which complements the output schema, but parameter semantics is not directly enhanced. The baseline holds.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('Declare') on a specific resource ('what this connector covers, how it is sourced, and what it does NOT cover'). It also differentiates from sibling search/get tools by focusing on coverage metadata rather than data retrieval. The phrase 'the absence may be a gap in this connector' further clarifies its unique role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use guidance is provided: 'Call this before telling a user that the law does not contain something, and whenever a search comes back empty.' It also explains the rationale and the fallback behavior, making the usage context unambiguous. No alternative tools are mentioned, but none are needed since this is a complementary metadata tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

de_dip_get_documentA
Read-onlyIdempotent

Fetch one entity from the Bundestag DIP by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYesthe DIP entity id from a ``de_dip_search`` result (e.g. ``"258173"``).
resourceYes``"drucksache"``, ``"drucksache-text"``, ``"plenarprotokoll"``, ``"plenarprotokoll-text"`` or ``"vorgang"``. Use a ``-text`` variant to get the full document text.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
noteNo
datumNo
titelNo
contentNoFull document text (plain).
eli_uriYes
byte_sizeNo
source_urlYes
dokumentartNo
herausgeberNo
wahlperiodeNo
dokumentnummerNo
human_readable_citationNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the tool read-only, idempotent, and non-destructive, so the description does not need to repeat that. It adds useful behavioral nuance: it fetches exactly one entity by id and that '-text' resource variants return full document text rather than metadata.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that conveys the core operation without any filler. It is appropriately sized for a simple fetch-by-id tool and every word contributes meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With fully documented parameters, an output schema, and annotations covering safety and idempotence, the definition provides enough for an agent to call the tool correctly. The only notable gap is the absence of explicit sibling differentiation, but that is a minor omission given the otherwise complete structured context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both parameters already have rich descriptions: doc_id is tied to de_dip_search results with an example, and resource enumerates valid values with the '-text' semantics. The description itself adds no additional parameter-level detail, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Fetch'), a clear object ('one entity'), and the retrieval key ('by id'), making the tool's purpose obvious. It distinguishes itself from search-oriented siblings like de_dip_search by emphasizing single-entity retrieval, though it does not explicitly name any alternative tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than explicit: the doc_id parameter references a de_dip_search result, and the resource description directs users to choose a '-text' variant for full document text. The description does not explain when to prefer this tool over similar siblings such as de_get_text or de_get_act.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

de_get_actB
Read-onlyIdempotent

Fetch act metadata from NeuRIS by ELI.

ParametersJSON Schema
NameRequiredDescriptionDefault
eliYesa German ELI, e.g. ``"eli/bund/bgbl-1/2017/s2097/2025-01-01/1/deu"`` (an API path or work-level ELI is also accepted).

Output Schema

ParametersJSON Schema
NameRequiredDescription
@idNo
nameNo
eli_uriNo
source_urlNo
abbreviationNo
dataset_noteNo
alternateNameNo
legislationIdentifierNo
legislationLegalForceNo
human_readable_citationNo

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the agent knows this is a safe read operation. The description adds no additional behavioral context such as error handling, rate limits, or behavior on missing ELI, but it does not contradict annotations either. Since annotations carry the safety profile, a 3 is appropriate – the description adds no extra value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence: 'Fetch act metadata from NeuRIS by ELI.' It is front-loaded with the core action and object, contains zero waste, and is appropriately sized for a simple retrieval tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one parameter, read-only, has an output schema), and the description covers its essential purpose. However, it lacks any usage guidance or sibling differentiation, which is critical given the large list of sibling tools. While not seriously incomplete for a straightforward retrieval, the missing context for tool selection prevents a higher score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides a thorough description of the 'eli' parameter, including an example and accepted formats (API path or work-level ELI). The description simply says 'by ELI' without adding any new meaning. With schema coverage at 100%, the baseline of 3 is correct – the description does not enhance understanding of the parameter beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (fetch), the object (act metadata), the source (NeuRIS), and the key (by ELI). It is specific and unambiguous, but it does not explicitly differentiate from sibling tools like de_get_text or de_get_decision, which might also deal with acts. Thus it is clear but lacks sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. There is no mention of when to prefer de_get_text for full text or de_search for searching. The description offers no context about preconditions or selection criteria, so an agent receives no direction on tool choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

de_get_decisionA
Read-onlyIdempotent

Fetch court-decision metadata from NeuRIS by document number.

ParametersJSON Schema
NameRequiredDescriptionDefault
document_numberYesNeuRIS document number, e.g. ``"KARE600069049"``.

Output Schema

ParametersJSON Schema
NameRequiredDescription
@idNo
ecliNo
headlineNo
courtNameNo
courtTypeNo
source_urlNo
fileNumbersNo
dataset_noteNo
decisionDateNo
documentTypeNo
documentNumberNo
human_readable_citationNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry the full safety profile (readOnlyHint, idempotentHint, non-destructive). The description adds that this returns metadata rather than full text, which is useful context. It does not disclose anything further like pagination or missing-document behavior, but the annotations lower the burden and the metadata-vs-text distinction adds genuine value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler. The core purpose and identifier are stated immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool with rich annotations and an output schema, this is largely complete. The main gap is that with 13 siblings, an explicit pointer distinguishing this from de_get_decision_text and the search tools would strengthen it, but the 'metadata' qualifier already does most of that work.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% — document_number is fully described with an example ('KARE600069049'). The description merely reinforces 'by document number' without adding format or validation details, so it stays at the baseline for a fully-covered schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Fetch'), resource ('court-decision metadata'), source system ('NeuRIS'), and lookup key ('by document number'). The 'metadata' qualifier cleanly distinguishes it from the sibling de_get_decision_text, so an agent can tell them apart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description conveys it is the metadata-lookup path for a document number, which implicitly contrasts with text retrieval tools. However, it never names an alternative or states when not to use it, and there are many siblings (de_get_decision_text, de_search, de_case_search) that could be confused with it. No explicit routing guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

de_get_decision_textA
Read-onlyIdempotent

Fetch the full text of a court decision.

Resolves the manifestation from the decision's encoding array and downloads it.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNo``"html"`` or ``"xml"``.html
document_numberYesNeuRIS document number, e.g. ``"KARE600069049"``.

Output Schema

ParametersJSON Schema
NameRequiredDescription
ecliNo
formatYes
contentNo
byte_sizeNo
source_urlYes
content_typeNo
dataset_noteNo
human_readable_citationNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds value by explaining the internal mechanism (resolving the manifestation from the encoding array) and that it downloads the text. However, it doesn't disclose potential error conditions or that the 'format' parameter affects the downloaded content. This is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The core purpose is front-loaded, and the second sentence adds relevant technical context without digression. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with high schema coverage and an output schema present, the description covers the essential behavior. It explains how the text is fetched and that it resolves from encoding. Minor omissions like format handling are already in the schema, so the description is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: both 'format' and 'document_number' have descriptions in the schema. The description does not add further meaning beyond what the schema provides; it omits even mentioning the format param. Baseline 3 is appropriate since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Fetch') and resource ('full text of a court decision'), clearly distinguishing it from siblings like de_get_decision (metadata) and de_get_act (acts). It also adds a concrete detail about resolving the manifestation from the encoding array, making the purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. It doesn't mention that de_get_decision returns metadata instead of text, nor does it suggest prerequisite steps like obtaining a document_number from a search tool. The agent is left to infer usage context from the name and schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

de_get_textA
Read-onlyIdempotent

Fetch the full text of an act.

Resolves the manifestation from the act's encoding array (the contentUrl for the requested format) and downloads it. Format is selected by file extension upstream, not by Accept header.

ParametersJSON Schema
NameRequiredDescriptionDefault
eliYesELI of the act (expression level recommended).
formatNo``"html"`` or ``"xml"`` (LegalDocML.de).html

Output Schema

ParametersJSON Schema
NameRequiredDescription
formatYes
contentNo
eli_uriYes
byte_sizeNo
source_urlYes
content_typeNo
dataset_noteNo
human_readable_citationNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds valuable non-obvious behavior: how the manifestation is resolved and that format selection depends on file extension rather than Accept headers. This goes beyond annotations and helps an agent anticipate the tool's behavior without exceeding what annotations already provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler. The core action is front-loaded, and the behavioral caveat about format selection is stated succinctly. Every word contributes to understanding the tool's purpose and mechanics.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a text-fetching tool with an output schema and rich annotations, the description covers the essential resolution and download behavior, plus the non-standard format selection quirk. It doesn't address failure cases or the exact return format, but the output schema likely handles that. What's missing (e.g., handling of missing formats, network errors) is minor and not required for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with good descriptions for both parameters. The description enriches this by explaining the role of 'format' in the resolution process (file extension upstream) and hints at the 'eli' being the expression-level identifier via the encoding array. This adds meaning beyond the schema's existing descriptions, so it earns above the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Fetch the full text of an act') and explains the mechanism (resolving from the encoding array and downloading). This clearly distinguishes it from siblings like de_get_act (presumably metadata) and other text-fetching tools, even without naming them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies usage—when you need the full text of an act, use this tool—but does not explicitly contrast with alternatives like de_get_act or de_get_decision_text. The mention of 'Format is selected by file extension upstream' gives a behavioral caveat but not when to choose this tool over others. It is clear for the primary use case, but lacks explicit routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

de_list_publishersA
Read-onlyIdempotent

List the German publication organs (ELI agent codes).

NeuRIS has no publisher-dictionary endpoint, so this is derived from the ELI agent slot (BGBl I/II, Bundesanzeiger). Non-exhaustive.

Returns: List of Publisher (code, name, note).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark it read-only, idempotent, and non-destructive. The description adds value by explaining the data source (ELI agent slot) and the non-exhaustive limitation, which goes beyond the annotations. No contradiction detected.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the primary action. It includes necessary context (NeuRIS source, origin) and a clear return type, with no redundant sentences. Each sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and an output schema exists, the description fully covers what an agent needs to know: what it lists, how it is derived, its limitations, and the return structure. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so the description does not need to elaborate on them. The baseline for zero-parameter tools is 4, and the description appropriately focuses on output rather than parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists German publication organs (ELI agent codes), a specific verb and resource. It explains the derivation from ELI agent slot and names the limitation (non-exhaustive), leaving no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains the context (no publisher-dictionary endpoint, derived from ELI agent slot) and the non-exhaustive nature, which implies when to use it. It does not explicitly name alternatives, but among siblings it is the only publisher-list tool, making the use case obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

de_oldp_get_caseB
Read-onlyIdempotent

Fetch the full text of one decision from Open Legal Data.

ParametersJSON Schema
NameRequiredDescriptionDefault
case_refYesa numeric OLDP case id (e.g. ``"521203"``) or a slug (e.g. ``"lg-nurnberg-furth-2026-05-21-8-o-486025"``) from a ``de_oldp_case_search`` result.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
dateNo
ecliNo
noteNo
slugNo
contentNoFull decision text (HTML).
eli_uriYes
byte_sizeNo
court_nameNo
source_urlYes
file_numberNo
decision_typeNo
human_readable_citationNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the 'fetch full text' behavior, but this is largely implied by the name and does not enrich beyond the annotations. No additional behavioral details (e.g., rate limits, error conditions) are provided, so a baseline score is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with zero superfluous words. It is front-loaded with the core action and object, making it immediately scannable. Perfect conciseness for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one parameter, no nested objects) and has an output schema, so the description need not explain return values. It states what the tool returns ('full text of one decision') and the source. The only minor gap is that it doesn't explicitly mention the requirement for a case_ref from search, but this is covered by the schema and is sufficiently implied by the naming convention. Overall, it is complete for a straightforward fetch operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single parameter case_ref is fully documented in the input schema (numeric id or slug from search). The description does not add any extra meaning to the parameter, but since the schema already does the heavy lifting, the baseline of 3 is warranted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Fetch'), object ('full text of one decision'), and source ('Open Legal Data'). It is clear about the resource type but does not differentiate among sibling tools like de_get_decision or de_rii_get_case_text, which also fetch decisions. The name 'de_oldp_get_case' hints at the OLDP dataset, but the description alone does not explicitly distinguish it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention that it requires a case_ref from a de_oldp_case_search result, nor does it explain when to prefer this over other case-fetching tools. The input schema implies the relationship to search, but the description itself offers no usage context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

de_recent_changesA
Read-onlyIdempotent

Acts published since since_iso (ISO 8601), newest-first.

Maps to GET /v1/legislation?sort=date&dateFrom=.... Useful for a law-monitoring feature.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNomax items to return (1..300).
since_isoYesa date in ISO 8601 (e.g. ``"2026-01-01"``).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds behavioral context beyond that by stating the sort order (newest-first) and the underlying GET endpoint mapping. This is useful but not extensive, so a 3 is appropriate given the annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The primary behavior is front-loaded and the mapping/use case is secondary. The phrase 'Useful for a law-monitoring feature' is slightly extraneous but not wasteful; it would earn a 5 if even that were removed or if it named an alternative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with two documented parameters and an output schema, the description is nearly complete. It explains the scope (acts since a date), ordering, and API mapping. It does not mention any exclusions or alternative usage, but those are not strictly required given the tool's simplicity and the presence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (since_iso and limit) are already documented with their types and meanings. The description mentions since_iso but adds no new semantic detail beyond the schema. Baseline 3 applies because the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb-resource pair: 'Acts published since since_iso', with a clear sorting order ('newest-first'). The resource is 'legislation' via the mapped endpoint. It is distinct from siblings like de_search and de_get_act, but does not explicitly name or differentiate them, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a use case ('Useful for a law-monitoring feature') which implies when to use it, but it does not explicitly state when not to use it or name alternative tools. There is no comparison with siblings like de_search, so 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.

de_rii_get_case_textB
Read-onlyIdempotent

Fetch the full text of a decision from rechtsprechung-im-internet.de (RII).

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYesthe RII document id from a ``de_rii_case_search`` result's ``doc_id`` (e.g. ``"JURE100055033"``), or a full ZIP URL.

Output Schema

ParametersJSON Schema
NameRequiredDescription
ecliNo
normNo
noteNo
courtNo
tenorNo
doc_idYes
doktypNo
contentNoFull text (Tatbestand + Gruende).
eli_uriYes
leitsatzNo
byte_sizeNo
source_urlYes
titelzeileNo
aktenzeichenNo
decision_dateNo
spruchkoerperNo
human_readable_citationNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description does not need to repeat them. The description adds that the tool fetches full text from RII, which is useful context, but it does not disclose output format or any edge-case behavior. Given the rich annotations, a score of 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that immediately communicates the tool's purpose and source. There is no filler or redundant detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 complete schema coverage and meaningful annotations, the description is largely sufficient. It could mention that the input originates from de_rii_case_search, but that information is already present in the schema's parameter description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides 100% coverage for doc_id, including its origin and example format. The main description adds no additional parameter meaning beyond what the schema already specifies, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Fetch') and a specific resource ('full text of a decision from rechtsprech-im-internet.de'). It clearly identifies the data source and content type, though it does not explicitly distinguish itself from similar sibling tools like de_get_decision_text or de_get_text beyond the RII source name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not state when to use this tool versus alternatives, nor does it provide exclusion criteria. The tool name and the doc_id description hint at usage after de_rii_case_search, but the main description itself offers no guidance on choosing this tool over sibling decision-text tools.

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. 14 tool updatesv0.5.3
    • Addedde_case_search
    • Addedde_coverage
    • Addedde_dip_get_document
    • Addedde_dip_search
    • Addedde_get_act
    • Addedde_get_decision
    • Addedde_get_decision_text
    • Addedde_get_text
    • Addedde_list_publishers
    • Addedde_oldp_case_search
    • Addedde_oldp_get_case
    • Addedde_recent_changes
    • Addedde_rii_case_search
    • Addedde_rii_get_case_text
  2. 13 tool updatesv0.4.3
    • Removedde_case_search
    • Removedde_dip_get_document
    • Removedde_dip_search
    • Removedde_get_act
    • Removedde_get_decision
    • Removedde_get_decision_text
    • Removedde_get_text
    • Removedde_list_publishers
    • Removedde_oldp_case_search
    • Removedde_oldp_get_case
    • Removedde_recent_changes
    • Removedde_rii_case_search
    • Removedde_rii_get_case_text
  3. 14 tool updatesv0.4.2
    • First observedde_case_search
    • First observedde_dip_get_document
    • First observedde_dip_search
    • First observedde_get_act
    • First observedde_get_decision
    • First observedde_get_decision_text
    • First observedde_get_text
    • First observedde_list_publishers
    • First observedde_oldp_case_search
    • First observedde_oldp_get_case
    • First observedde_recent_changes
    • First observedde_rii_case_search
    • First observedde_rii_get_case_text
    • First observedde_search

TDQS

A3.9/5.0
Disambiguation5/5

Only one tool exists, so there is no possibility of confusion between tools. The single tool has a clearly defined purpose.

Naming Consistency5/5

With a single tool, naming conventions are trivially consistent. The name 'de_search' follows a predictable pattern of domain prefix plus action.

Tool Count3/5

A single search tool for German legislation is focused but feels thin; additional tools for retrieval by citation or listing categories would round out the surface. The count is borderline acceptable.

Completeness3/5

The tool provides search but lacks direct retrieval of specific legislation by ELI URI or other identifiers. The surface covers basic search but has notable gaps for common legislative lookup workflows.

Maintenance

ActivityActive
ResponsivenessNo issues

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

Related MCP Servers

  • F
    license
    A
    quality
    B
    maintenance
    Provides access to the official German Federal Legal Information Portal (rechtsinformationen.bund.de) enabling AI agents to search German federal laws, court decisions, and legal documentation with authoritative citations from official sources.
    5
    23
    -
  • A
    license
    A
    quality
    A
    maintenance
    Provides unified access to German federal and state legislation, court decisions, and European Union legal databases for comprehensive legal research. It enables users to search and retrieve full-text laws, parliamentary documents, and judicial rulings directly through the Model Context Protocol.
    20
    132
    4
    GPL 3.0

Latest Blog Posts

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/de-eli-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server