← Back to search

io.github.matematicsolutions/de-eli-mcp

matematicsolutions Scanned 21d ago

German law MCP: legislation (NeuRIS), case law (RII, Open Legal Data), Bundestag DIP documents.

D
58.9 / 100

Versions

0.1.0latest
first seen Jun 30, 2026
PermissionsTool SafetyAuthAnnotationsCode QualityStabilitySpecVuln HistoryAuthorTransparencyCommunity

Tools 15

de_search
annotations: none low

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). Args: query: ``SearchQuery`` - search_term, eli, date_from/to, temporal_coverage_from/to, size (1..300), page_index, sort. Returns: ``SearchResult`` with ``total_items`` and ``items: list[ActInfo]``.

query SearchQuery
de_get_act
annotations: none low

Fetch act metadata from NeuRIS by ELI. Args: eli: 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). Returns: ``Act`` with ``eli_uri``, ``human_readable_citation``, ``source_url``.

eli str
de_get_text
annotations: none low

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. Args: eli: ELI of the act (expression level recommended). format: ``"html"`` or ``"xml"`` (LegalDocML.de). Returns: ``ActText`` with ``eli_uri``, ``human_readable_citation``, ``source_url``, ``content`` and ``content_type``.

eli str format TextFormat
de_list_publishers
annotations: none low

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).

de_recent_changes
annotations: none low

Acts published since ``since_iso`` (ISO 8601), newest-first. Maps to ``GET /v1/legislation?sort=date&dateFrom=...``. Useful for a law-monitoring feature. Args: since_iso: a date in ISO 8601 (e.g. ``"2026-01-01"``). limit: max items to return (1..300). Returns: List of ``ActInfo`` enriched with the citation contract.

limit int since_iso str
de_case_search
annotations: none low

Search German federal court decisions in NeuRIS. Maps to ``GET /v1/case-law``. Each item gets ``ecli``, ``human_readable_citation``, ``source_url``. Args: query: ``CaseSearchQuery`` - search_term, date_from/to, size, page_index, sort. Returns: ``CaseSearchResult`` with ``total_items`` and ``items: list[DecisionInfo]``.

query CaseSearchQuery
de_get_decision
annotations: none low

Fetch court-decision metadata from NeuRIS by document number. Args: document_number: NeuRIS document number, e.g. ``"KARE600069049"``. Returns: ``Decision`` with ``ecli``, ``human_readable_citation``, ``source_url``.

document_number str
de_get_decision_text
annotations: none low

Fetch the full text of a court decision. Resolves the manifestation from the decision's ``encoding`` array and downloads it. Args: document_number: NeuRIS document number, e.g. ``"KARE600069049"``. format: ``"html"`` or ``"xml"``. Returns: ``DecisionText`` with ``ecli``, ``human_readable_citation``, ``source_url``, ``content``.

format TextFormat document_number str
de_rii_case_search
annotations: none low

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). Args: query: ``RiiCaseQuery`` - court, aktenzeichen_contains, date_from/to, limit, offset. Returns: ``RiiCaseSearchResult`` with ``total_items`` and ``items: list[RiiCaseInfo]``, each carrying a ``doc_id`` usable with ``de_rii_get_case_text``.

query RiiCaseQuery
de_rii_get_case_text
annotations: none low

Fetch the full text of a decision from rechtsprechung-im-internet.de (RII). Args: doc_id: the RII document id from a ``de_rii_case_search`` result's ``doc_id`` (e.g. ``"JURE100055033"``), or a full ZIP URL. Returns: ``RiiCaseText`` with ``ecli`` (when the court publishes one), a German ``human_readable_citation``, ``source_url``, and the full ``content`` (Tatbestand + Entscheidungsgruende/Gruende).

doc_id str
de_oldp_case_search
annotations: none low

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. Args: query: ``OldpCaseQuery`` - text (full-text; ignores the other filters), court_slug, file_number (exact), date_after/date_before, page. Returns: ``OldpCaseSearchResult`` with ``total_items`` and ``items: list[OldpCaseInfo]``, each carrying an ``id``/``slug`` usable with ``de_oldp_get_case``.

query OldpCaseQuery
de_oldp_get_case
annotations: none low

Fetch the full text of one decision from Open Legal Data. Args: case_ref: 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. Returns: ``OldpCaseText`` with ``eli_uri`` (the ECLI when the source carries one), a German ``human_readable_citation``, ``source_url`` (the public case page) and the full ``content`` (decision HTML).

case_ref str
de_dip_search
annotations: none low

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``). Args: query: ``DipSearchQuery`` - resource (drucksache / plenarprotokoll / vorgang / '-text' variants), titel, dokumentnummer, zuordnung ('BT'/'BR'), wahlperiode, vorgangstyp, date_start/date_end, cursor. Returns: ``DipSearchResult`` with ``total_items`` (numFound), ``items`` and the pagination ``cursor``.

query DipSearchQuery
de_coverage
annotations: none low

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.

de_dip_get_document
annotations: none low

Fetch one entity from the Bundestag DIP by id. Args: resource: ``"drucksache"``, ``"drucksache-text"``, ``"plenarprotokoll"``, ``"plenarprotokoll-text"`` or ``"vorgang"``. Use a ``-text`` variant to get the full document text. doc_id: the DIP entity id from a ``de_dip_search`` result (e.g. ``"258173"``). Returns: ``DipDocumentText`` with a parliamentary ``human_readable_citation`` (e.g. ``"BT-Drs. 20/1"``), the official PDF as ``source_url`` and - for ``-text`` resources - the full ``content``.

doc_id str resource str

Permissions 3

network medium
Server uses network capabilities via: httpx, urllib
filesystem low
Server uses filesystem capabilities via: open(), os, pathlib
env_vars low
Server uses env_vars capabilities via: os.environ

Scan Findings 62

low
Tool 'de_search' has no annotations annotation_checker · 100%
low
Tool 'de_get_act' has no annotations annotation_checker · 100%
low
Tool 'de_get_text' has no annotations annotation_checker · 100%
low
Tool 'de_list_publishers' has no annotations annotation_checker · 100%
low
Tool 'de_recent_changes' has no annotations annotation_checker · 100%
low
Tool 'de_case_search' has no annotations annotation_checker · 100%
low
Tool 'de_get_decision' has no annotations annotation_checker · 100%
low
Tool 'de_get_decision_text' has no annotations annotation_checker · 100%
low
Tool 'de_rii_case_search' has no annotations annotation_checker · 100%
low
Tool 'de_rii_get_case_text' has no annotations annotation_checker · 100%
low
Tool 'de_oldp_case_search' has no annotations annotation_checker · 100%
low
Tool 'de_oldp_get_case' has no annotations annotation_checker · 100%
low
Tool 'de_dip_search' has no annotations annotation_checker · 100%
low
Tool 'de_coverage' has no annotations annotation_checker · 100%
low
Tool 'de_dip_get_document' has no annotations annotation_checker · 100%
high
Remote transport without authentication auth_checker · 70%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
medium
Vulnerable dependency: fastmcp@3.4,<4 (GHSA-5h2m-4q8j-pqpj) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@3.4,<4 (GHSA-c2jp-c369-7pvx) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@3.4,<4 (GHSA-m8x7-r2rg-vh5g) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@3.4,<4 (GHSA-mxxr-jv3v-6pgc) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@3.4,<4 (GHSA-rcfx-77hg-w2wv) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@3.4,<4 (GHSA-rj5c-58rq-j5g5) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@3.4,<4 (GHSA-rww4-4w9c-7733) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@3.4,<4 (GHSA-vv7q-7jx5-f767) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@3.4,<4 (PYSEC-2026-1364) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@3.4,<4 (PYSEC-2026-1365) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@3.4,<4 (PYSEC-2026-2474) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@3.4,<4 (PYSEC-2026-2475) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@3.4,<4 (PYSEC-2026-2476) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@3.4,<4 (PYSEC-2026-338) dependency_analyzer · 95%
medium
Vulnerable dependency: httpx@0.27,<1 (GHSA-h8pj-cxx2-jfg2) dependency_analyzer · 95%
medium
Vulnerable dependency: httpx@0.27,<1 (PYSEC-2022-183) dependency_analyzer · 95%
medium
Vulnerable dependency: diskcache@5.6 (GHSA-w8v5-vhqr-4h9v) dependency_analyzer · 95%
medium
Vulnerable dependency: diskcache@5.6 (PYSEC-2026-2447) dependency_analyzer · 95%
medium
Vulnerable dependency: anyio@4.3 (GHSA-5p39-cfhj-2xmp) dependency_analyzer · 95%
medium
Vulnerable dependency: anyio@4.3 (GHSA-82r6-8w77-94w6) dependency_analyzer · 95%
info
pyproject.toml metadata manifest_parser · 100%
info
Tool: de_search manifest_parser · 90%
info
Tool: de_get_act manifest_parser · 90%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%
info
Tool: de_get_text manifest_parser · 90%
info
Tool: de_list_publishers manifest_parser · 90%
info
Tool: de_recent_changes manifest_parser · 90%
info
Tool: de_case_search manifest_parser · 90%
info
Tool: de_get_decision manifest_parser · 90%
info
Tool: de_get_decision_text manifest_parser · 90%
info
Tool: de_rii_case_search manifest_parser · 90%
info
Tool: de_rii_get_case_text manifest_parser · 90%
info
Tool: de_oldp_case_search manifest_parser · 90%
info
Tool: de_oldp_get_case manifest_parser · 90%
info
Tool: de_dip_search manifest_parser · 90%
info
Tool: de_coverage manifest_parser · 90%
info
Tool: de_dip_get_document manifest_parser · 90%
info
Transport: streamable-http manifest_parser · 80%
info
Required env vars (10) manifest_parser · 80%
info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
medium
Permission: network access detected permission_analyzer · 90%
low
Permission: filesystem access detected permission_analyzer · 80%
low
Permission: env_vars access detected permission_analyzer · 90%
critical
Tool poisoning in 'de_coverage': Cross-tool sequencing directive poisoning · 85%
info
No dependency files found for SBOM generation sbom_generator · 100%