de-eli-mcp
This server provides comprehensive access to German legal information through multiple official and community sources, with verifiable citations.
Legislation (NeuRIS)
Search federal legislation by keyword, ELI identifier, and date ranges
Fetch act metadata and retrieve full texts in HTML or XML (LegalDocML.de) format
List publication organs (BGBl I/II, Bundesanzeiger) and monitor recent legislative changes
Case Law – NeuRIS Beta
Search federal court decisions by term and date range
Fetch decision metadata and full texts in HTML or XML format
Case Law – Rechtsprechung-im-Internet (RII)
Search decisions from BVerfG, BGH, BAG, BFH, BVerwG, BSG, and BPatG via the official BMJ/juris aggregator
Filter by court, docket number (Aktenzeichen), and date range; retrieve full texts including ECLI, Leitsatz, Tenor, and full content
Case Law – Open Legal Data (OLDP)
Search ~424k decisions from ~1,100 courts at all levels across all 16 German Länder, including state and lower courts
Full-text search with filters for court, docket number, and date range; retrieve full texts by OLDP id or slug
Parliamentary Documents – Bundestag DIP
Search Drucksachen (~287k), plenary transcripts (~5,800), and legislative procedures/Vorgänge (~335k)
Filter by title, document number, chamber (BT/BR), electoral term, procedure type, and date range
Fetch individual documents including full text for legislative history research (Gesetzesbegründungen)
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., "@de-eli-mcpsearch for the Bundesdatenschutzgesetz"
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.
de-eli-mcp
Install (one command)
Published on PyPI + MCP Registry (io.github.matematicsolutions/de-eli-mcp). Run without cloning:
uvx de-eli-mcpConfigure 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_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 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 adataset_notesaying so.Complete source (case law).
de_rii_case_search/de_rii_get_case_textquery 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 markedstatus: complete- unlike NeuRIS's/v1/case-law, which only carries a small beta slice (and can drop fields such aseclifor the very same decision RII serves with a full ECLI - see BAG decisionKARE600069049/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_casequery 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_documentquery 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); setDE_DIP_API_KEYwhen 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 |
| Search legislation by term, ELI and date ( |
| Fetch act metadata by ELI. |
| Fetch the full text ( |
| List the publication organs (BGBl I/II, Bundesanzeiger). |
| Acts published since a date, newest-first. |
| NeuRIS case-law beta slice ( |
| Search BVerfG/BGH/BAG/BFH/BVerwG/BSG/BPatG decisions via RII's master TOC (court, Aktenzeichen substring, date range). |
| Full text of one RII decision by |
| 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 ( |
| Full decision text (HTML) by OLDP id or slug, with ECLI when the source carries one. |
| Search the Bundestag DIP - Drucksachen (287 327), Plenarprotokolle (5 789), Vorgaenge (334 524); filters |
| One DIP entity by id; the |
| 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- defaulthttps://testphase.rechtsinformationen.bund.deDE_RII_BASE_URL- defaulthttps://www.rechtsprechung-im-internet.deDE_OLDP_BASE_URL- defaulthttps://de.openlegaldata.ioDE_DIP_BASE_URL- defaulthttps://search.dip.bundestag.deDE_DIP_API_KEY- default: the public key the Bundestag documents ondip.bundestag.de/über-dip/hilfe/api(valid until end of May 2027; rotates ~yearly)DE_ELI_CACHE_DIR- default~/.matematic/cache/de-eliDE_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 -vLicence
Apache-2.0. © Matematic Solutions / Wieslaw Mazur.
Available Tools
15 toolsde_case_searchBRead-onlyIdempotent
Search German federal court decisions in NeuRIS.
Maps to GET /v1/case-law. Each item gets ecli,
human_readable_citation, source_url.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ``CaseSearchQuery`` - search_term, date_from/to, size, page_index, sort. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | |
| query_echo | No | |
| total_items | 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, covering the safety profile. The description adds useful context by mapping to GET /v1/case-law and stating the output fields per item (ecli, human_readable_citation, source_url). However, it does not disclose any additional behavioral traits such as pagination limits, rate constraints, or query syntax requirements beyond what the schema implies.
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 two sentences with no filler. It front-loads the core purpose, then provides the API mapping and key output attributes. Every sentence earns its place, making it efficient 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 tool with a nested query object and an output schema, the description gives the essential action and result fields, but lacks usage guidance relative to its many siblings. It does not explain when to prefer this tool, which is a notable gap given the crowded sibling list. The description is adequate for basic invocation but incomplete for correct selection among alternatives.
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%, so the input schema (including the query object's description listing search_term, date_from/to, size, page_index, sort) already explains the parameters. The tool description adds nothing about parameter semantics—its mention of output fields is not related to inputs. Baseline of 3 applies since the schema carries the semantic weight.
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 clear verb ('Search') and a specific resource ('German federal court decisions in NeuRIS'), making the tool's purpose unambiguous. It does not explicitly name sibling alternatives, but the specificity of 'German federal court decisions in NeuRIS' is sufficiently distinctive to separate it from broader tools like de_search or de_get_decision.
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 provides no guidance on when to use this tool versus any of the many siblings (e.g., de_rii_case_search, de_oldp_case_search). It does not state exclusions, prerequisites, or alternative tools. An agent must infer usage solely from the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
de_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 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.
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.
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.
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.
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.
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_documentARead-onlyIdempotent
Fetch one entity from the Bundestag DIP by id.
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | Yes | the DIP entity id from a ``de_dip_search`` result (e.g. ``"258173"``). | |
| resource | Yes | ``"drucksache"``, ``"drucksache-text"``, ``"plenarprotokoll"``, ``"plenarprotokoll-text"`` or ``"vorgang"``. Use a ``-text`` variant to get the full document text. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| note | No | |
| datum | No | |
| titel | No | |
| content | No | Full document text (plain). |
| eli_uri | Yes | |
| byte_size | No | |
| source_url | Yes | |
| dokumentart | No | |
| herausgeber | No | |
| wahlperiode | No | |
| dokumentnummer | No | |
| human_readable_citation | No |
TDQS
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.
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.
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.
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.
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.
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_dip_searchBRead-onlyIdempotent
Search the Bundestag DIP - Germany's official parliamentary documentation.
Covers Drucksachen (bills, motions, reports, government answers), plenary
transcripts and legislative procedures of Bundestag and Bundesrat. Legislative
history (Gesetzesbegruendungen) is a standard aid of German statutory
interpretation. Uses the documented public API key by default (rotates ~yearly;
override with DE_DIP_API_KEY).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ``DipSearchQuery`` - resource (drucksache / plenarprotokoll / vorgang / '-text' variants), titel, dokumentnummer, zuordnung ('BT'/'BR'), wahlperiode, vorgangstyp, date_start/date_end, cursor. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| items | No | |
| cursor | No | |
| query_echo | No | |
| total_items | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the safety profile (readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true), so the bar for additional value is lower. The description adds genuinely useful context beyond the annotations by disclosing API key handling: 'Uses the documented public API key by default (rotates ~yearly; override with DE_DIP_API_KEY)'. No contradiction with annotations exists. It falls short of explaining error behavior or rate limits, so a 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The primary purpose is front-loaded and the text is compact overall. The sentence 'Legislative history... is a standard aid of German statutory interpretation' provides useful domain motivation for a legal researcher but is somewhat tangential to actually invoking the tool, keeping this from a 5.
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?
An output schema exists, so return values need no prose explanation; the input schema fully documents all parameters; and annotations cover the safety profile. The description supplies the domain scope and the API-key behavior that structured fields don't convey. The one notable gap is sibling routing (how this differs from de_search or de_dip_get_document), which is minor given the rich schema and output schema.
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% — every sub-property (titel, cursor, date_end, resource, zuordnung, wahlperiode, vorgangstyp, dokumentnummer) has a description, and the nested query object itself carries a summary. Per the rubric, high coverage earns a baseline 3. The tool description adds only marginal parameter context, mapping the covered document types to the resource enum, so it doesn't need to compensate.
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 opens with a specific verb-resource pair ('Search the Bundestag DIP - Germany's official parliamentary documentation') and enumerates the exact content types covered (Drucksachen, plenary transcripts, legislative procedures of Bundestag and Bundesrat). This is clear and specific. However, it does not differentiate from siblings like de_search or the several case-search tools (de_rii_case_search, de_oldp_case_search), so an agent must infer the distinction from the domain terms alone rather than an explicit boundary.
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 explicit when-to-use vs alternatives guidance is given. The description implies this is the entry point for DIP parliamentary documentation, and the note that 'Legislative history... is a standard aid of German statutory interpretation' gestures at a use case, but there is no statement of when to prefer this over de_search, de_dip_get_document, or the case-law searchers. The agent must route by inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
de_get_actBRead-onlyIdempotent
Fetch act metadata from NeuRIS by ELI.
| Name | Required | Description | Default |
|---|---|---|---|
| eli | Yes | a 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
| Name | Required | Description |
|---|---|---|
| @id | No | |
| name | No | |
| eli_uri | No | |
| source_url | No | |
| abbreviation | No | |
| dataset_note | No | |
| alternateName | No | |
| legislationIdentifier | No | |
| legislationLegalForce | No | |
| human_readable_citation | No |
TDQS
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.
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.
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.
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.
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.
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_decisionARead-onlyIdempotent
Fetch court-decision metadata from NeuRIS by document number.
| Name | Required | Description | Default |
|---|---|---|---|
| document_number | Yes | NeuRIS document number, e.g. ``"KARE600069049"``. |
Output Schema
| Name | Required | Description |
|---|---|---|
| @id | No | |
| ecli | No | |
| headline | No | |
| courtName | No | |
| courtType | No | |
| source_url | No | |
| fileNumbers | No | |
| dataset_note | No | |
| decisionDate | No | |
| documentType | No | |
| documentNumber | No | |
| human_readable_citation | No |
TDQS
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.
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.
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.
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.
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.
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_textARead-onlyIdempotent
Fetch the full text of a court decision.
Resolves the manifestation from the decision's encoding array and downloads it.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | ``"html"`` or ``"xml"``. | html |
| document_number | Yes | NeuRIS document number, e.g. ``"KARE600069049"``. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ecli | No | |
| format | Yes | |
| content | No | |
| byte_size | No | |
| source_url | Yes | |
| content_type | No | |
| dataset_note | No | |
| human_readable_citation | No |
TDQS
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.
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.
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.
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.
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.
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_textARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| eli | Yes | ELI of the act (expression level recommended). | |
| format | No | ``"html"`` or ``"xml"`` (LegalDocML.de). | html |
Output Schema
| Name | Required | Description |
|---|---|---|
| format | Yes | |
| content | No | |
| eli_uri | Yes | |
| byte_size | No | |
| source_url | Yes | |
| content_type | No | |
| dataset_note | No | |
| human_readable_citation | No |
TDQS
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.
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.
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.
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.
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.
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_publishersARead-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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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_case_searchARead-onlyIdempotent
Search German case law across ALL court levels via Open Legal Data.
Open Legal Data (de.openlegaldata.io) is a community open-data aggregator (~424k decisions from ~1 100 courts at check). It is the only source here that covers STATE courts and the only one with full-text search. Database ODbL v1.0; the decisions themselves are gemeinfrei (§ 5 UrhG). Not an official service - prefer the RII tools for the six federal supreme/constitutional courts.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ``OldpCaseQuery`` - text (full-text; ignores the other filters), court_slug, file_number (exact), date_after/date_before, page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| items | No | |
| query_echo | No | |
| total_items | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds valuable context: it is a community aggregator (~424k decisions), not an official service, and notes the database license. This goes beyond the annotations without contradicting them, though it does not cover pagination or response details (which the output schema likely handles).
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 compact and front-loaded with the core purpose, followed by essential context about coverage, licensing, and tool routing. Every sentence earns its place; no fluff or repetition.
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 that an output schema exists and the annotations cover safety, the description fully equips the agent: it explains what makes this tool unique, limitations (not official service), and when to use alternatives. Nothing critical is missing for correct selection and invocation.
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 each parameter has its own detailed description (e.g., text full-text search, court_slug examples, exact file_number). The description itself does not add extra parameter meaning beyond what the schema provides, so baseline 3 applies.
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 action ('Search German case law') with scope ('all court levels') and names the exact source (Open Legal Data). It distinguishes itself from RII tools by emphasizing state-court coverage and full-text search, making its unique purpose unmistakable.
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?
Explicitly identifies when to use this tool (state courts, full-text needs) and when not to ('prefer the RII tools for the six federal supreme/constitutional courts'). It also clarifies that it is the only source covering state courts, leaving no ambiguity about the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
de_oldp_get_caseBRead-onlyIdempotent
Fetch the full text of one decision from Open Legal Data.
| Name | Required | Description | Default |
|---|---|---|---|
| case_ref | Yes | a 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
| Name | Required | Description |
|---|---|---|
| id | No | |
| date | No | |
| ecli | No | |
| note | No | |
| slug | No | |
| content | No | Full decision text (HTML). |
| eli_uri | Yes | |
| byte_size | No | |
| court_name | No | |
| source_url | Yes | |
| file_number | No | |
| decision_type | No | |
| human_readable_citation | No |
TDQS
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.
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.
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.
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.
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.
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_changesARead-onlyIdempotent
Acts published since since_iso (ISO 8601), newest-first.
Maps to GET /v1/legislation?sort=date&dateFrom=.... Useful for a
law-monitoring feature.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | max items to return (1..300). | |
| since_iso | Yes | a date in ISO 8601 (e.g. ``"2026-01-01"``). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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_case_searchARead-onlyIdempotent
Search German federal court decisions via rechtsprechung-im-internet.de (RII).
RII is the official BMJ/juris case-law aggregator and, per the independent Legal
Data Hunter audit, is complete for BVerfG, BGH, BAG, BFH, BVerwG, BSG (+ BPatG) -
unlike NeuRIS's /v1/case-law, which is a small beta slice. Filters over the master
table of contents (court, Aktenzeichen substring, date range); there is no full-text
search (the TOC carries no decision text).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ``RiiCaseQuery`` - court, aktenzeichen_contains, date_from/to, limit, offset. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| items | No | |
| query_echo | No | |
| total_items | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation as read-only and idempotent. The description adds behavioral context beyond that: it filters over the master table of contents, has no full-text search (TOC carries no decision text), and covers specific federal courts. This informs the agent about the nature of the results and data source, which annotations do not provide.
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?
Two sentences, no fluff. The first sentence gives the core purpose; the second packs source, coverage scope, alternative comparison, filter types, and a limitation into one well-structured sentence. The purpose is front-loaded, 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 search tool with a nested query object and an output schema, the description covers the query scope, data source, completeness status, filter types, and the absence of full-text. It also differentiates from a known alternative. The agent has all necessary context to decide when to call this tool and what to expect.
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 schema already documents all parameters with descriptions (100% coverage). The description mentions the filter fields (court, Aktenzeichen substring, date range) but adds no new semantics beyond what the schema states. It does clarify that the search operates on metadata (TOC) rather than full text, which helps interpret the parameters, but this is a general clarification, not parameter-specific detail.
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 verb ('Search'), a specific resource ('German federal court decisions'), and a specific source ('rechtsprech-im-internet.de (RII)'). It also distinguishes itself from NeuRIS's `/v1/case-law` by noting its completeness, making it clear which tool is which among the many search siblings.
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 explicitly contrasts this tool with NeuRIS's `/v1/case-law`, calling the latter a 'small beta slice', which implies this tool is preferred for complete coverage. It also states a key limitation ('there is no full-text search'), indirectly telling the agent when to choose a different tool. While it doesn't list alternative tools by name, the context signals and sibling list provide enough to infer usage boundaries.
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_textBRead-onlyIdempotent
Fetch the full text of a decision from rechtsprechung-im-internet.de (RII).
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | Yes | the RII document id from a ``de_rii_case_search`` result's ``doc_id`` (e.g. ``"JURE100055033"``), or a full ZIP URL. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ecli | No | |
| norm | No | |
| note | No | |
| court | No | |
| tenor | No | |
| doc_id | Yes | |
| doktyp | No | |
| content | No | Full text (Tatbestand + Gruende). |
| eli_uri | Yes | |
| leitsatz | No | |
| byte_size | No | |
| source_url | Yes | |
| titelzeile | No | |
| aktenzeichen | No | |
| decision_date | No | |
| spruchkoerper | No | |
| human_readable_citation | No |
TDQS
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.
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.
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.
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.
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.
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.
de_searchARead-onlyIdempotent
Search German federal legislation in NeuRIS.
Maps to GET /v1/legislation. Each item gets eli_uri,
human_readable_citation, source_url (per Art. 4 CONSTITUTION).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ``SearchQuery`` - search_term, eli, date_from/to, temporal_coverage_from/to, size (1..300), page_index, sort. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | |
| query_echo | No | |
| total_items | Yes | |
| dataset_note | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint. Description adds endpoint mapping and returned fields, providing moderate additional context but no behavioral surprises.
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?
Two sentences: first states purpose, second maps endpoint and key return fields. No wasted words; front-loaded with core information.
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 complexity (nested object, many parameters) and rich schema/annotations, the description is adequate. Missing pagination or sorting details but schema covers those.
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%, so the schema documents parameters well. Tool description adds no further parameter explanation beyond stating what fields are returned, which is already in the output schema.
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?
Describes the tool as 'Search German federal legislation in NeuRIS', a specific verb+resource. Differentiates from siblings like de_case_search by specifying 'legislation' vs. case law.
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?
Implies use for German federal legislation but no explicit when-to-use, when-not-to-use, or alternative tools mentioned. Lacks guidance beyond scope.
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.
14 tool updates
v0.5.3- Added
de_case_search - Added
de_coverage - Added
de_dip_get_document - Added
de_dip_search - Added
de_get_act - Added
de_get_decision - Added
de_get_decision_text - Added
de_get_text - Added
de_list_publishers - Added
de_oldp_case_search - Added
de_oldp_get_case - Added
de_recent_changes - Added
de_rii_case_search - Added
de_rii_get_case_text
13 tool updates
v0.4.3- Removed
de_case_search - Removed
de_dip_get_document - Removed
de_dip_search - Removed
de_get_act - Removed
de_get_decision - Removed
de_get_decision_text - Removed
de_get_text - Removed
de_list_publishers - Removed
de_oldp_case_search - Removed
de_oldp_get_case - Removed
de_recent_changes - Removed
de_rii_case_search - Removed
de_rii_get_case_text
14 tool updates
v0.4.2- First observed
de_case_search - First observed
de_dip_get_document - First observed
de_dip_search - First observed
de_get_act - First observed
de_get_decision - First observed
de_get_decision_text - First observed
de_get_text - First observed
de_list_publishers - First observed
de_oldp_case_search - First observed
de_oldp_get_case - First observed
de_recent_changes - First observed
de_rii_case_search - First observed
de_rii_get_case_text - First observed
de_search
TDQS
Only one tool exists, so there is no possibility of confusion between tools. The single tool has a clearly defined purpose.
With a single tool, naming conventions are trivially consistent. The name 'de_search' follows a predictable pattern of domain prefix plus action.
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.
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
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
Search Swiss federal legislation: laws, articles, amendments via the Fedlex SPARQL endpoint.
German law via Ansvar Gateway. Cited, OAuth + paid tier.
Verified, citable German & EU law for any LLM. Daily updates from official sources, hosted in DE.
Verified, citable German & EU law for any LLM. Daily updates from official sources, hosted in DE.
Related MCP Servers
- FlicenseAqualityBmaintenanceProvides 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.523-
- AlicenseAqualityAmaintenanceProvides 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.201324GPL 3.0
- AlicenseAqualityAmaintenanceEnables searching and retrieving Austrian federal legislation and case law from the official legal information system RIS, with verifiable ELI and ECLI identifiers.6Apache 2.0
- AlicenseNot gradedqualityDmaintenanceProvides LLM-friendly access to German federal legislation via the NeuRIS API, enabling tool-based retrieval of laws, norms, and statutory text.21MIT
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/de-eli-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server