io.github.matematicsolutions/de-eli-mcp
German law MCP: legislation (NeuRIS), case law (RII, Open Legal Data), Bundestag DIP documents.
Versions
0.1.0latestTools 15
de_search 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]``.
de_get_act 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``.
de_get_text 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``.
de_list_publishers 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 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.
de_case_search 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]``.
de_get_decision 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``.
de_get_decision_text 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``.
de_rii_case_search 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``.
de_rii_get_case_text 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).
de_oldp_case_search 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``.
de_oldp_get_case 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).
de_dip_search 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``.
de_coverage 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 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``.
Permissions 3
network medium filesystem low env_vars low