Skip to main content
Glama

Search Legal Documents

legal_search
Read-onlyIdempotent

Search legal documents across jurisdictions (DE federal, EU, Bavaria, North Rhine-Westphalia, Saxony) using hybrid semantic + keyword search. Returns ranked results with content snippets, not full text.

Rephrase colloquial language into legal terminology for best results. Formuliere Suchanfragen als natürliche Sätze, nicht als Keyword-Listen (z.B. 'Wann verjährt ein Schadensersatzanspruch?' statt 'Verjährung Schadensersatz Frist BGB'). Das System durchsucht Gesetzestexte — verwende die Sprache des Gesetzes, nicht Doktrin-Begriffe (z.B. 'Auslegung mehrdeutiger Klauseln' statt 'contra proferentem'). Set document_kind to match what the question needs: any norm subtype ('statute'/'regulation'/'directive') when it asks for the rule itself — its requirements, definitions or deadlines; 'decision' when it asks how courts apply a rule. The three norm subtypes form ONE filter class — any of them admits all three, so you need not tell statute from regulation from directive, and a reflexive 'statute' never hides an EU regulation/directive. The only real cut this filter makes is norm vs. case-law: 'decision' restricts to court decisions and drops every norm BEFORE ranking, so it can hide the statute that answers a rule question. Leave document_kind empty when the question genuinely needs both (norm + its case-law application), or when German-vs-EU law is unclear (e.g. data protection: BDSG vs DSGVO) — then consider running two searches with different filters instead of guessing. Never combine a statute law_abbreviation with a decision scope ('decision', a decision source_type, court or decision_type): decisions carry file-number identifiers, not statute abbreviations, so that intersection is always empty — use cited_norm instead to find decisions applying a law. See legal://filter_values for the per-value definitions and the disambiguation list. Set law_abbreviation, jurisdiction and source_type only when the user explicitly names a specific law or jurisdiction. When results span multiple laws or versions, check the legal://rechtsrahmen resource to pick the correct jurisdiction (e.g. EU vs national, substantive vs procedural).

COMMON PITFALLS — choose the correct law:

  • Procedural law by jurisdiction: ZPO (zivilrecht), STPO (strafrecht), VWGO (verwaltungsrecht), ARBGG (arbeitsrecht), SGG (sozialrecht), BVERFGG (verfassungsrecht), FAMFG (familienrecht)

  • AO, ESTG, KSTG, USTG, FGO: AO=procedure, EStG/KStG/UStG=substantive

  • VVG, BGB: Insurance rescission → BGB §§ 812ff, not VVG

  • VERSAUSGLG, FAMFG: VersAusglG=substantive, FamFG=procedure

  • APOG, AMG: ApoG=operation, AMG=drug approval

  • WEHRPFLG, SG: WPflG=conscription, SG=soldiers

  • AGG, BETRVG: AGG=anti-discrimination, BetrVG=works council

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
courtNoFilter by court: BGH, BVerwG, BFH, BAG, BSG, BVerfG, BPatG, GmSOGB, Sächsisches OVG, Oberverwaltungsgericht NRW, Oberlandesgericht Düsseldorf, Oberlandesgericht Hamm, Oberlandesgericht Köln, Landesarbeitsgericht Düsseldorf, Landesarbeitsgericht Hamm, Landesarbeitsgericht Köln, Landessozialgericht NRW, Finanzgericht Düsseldorf, Finanzgericht Köln, Finanzgericht Münster, Verfassungsgerichtshof NRW, EuGH, EuG.
queryYesSearch query as a natural sentence using statutory language (not keywords or doctrinal terms).
top_kNoNumber of results to return (default 5).
chapterNoFilter by chapter/section within a law. Rarely needed — can reduce recall. Only useful with law_abbreviation.
date_toNoInclude results until this date (YYYY-MM-DD).
languageNoCorpus language: 'de' (default — the full German + EU corpus) or 'en' (English-language corpus: currently EDPB/EDSA data-protection guidance only; much smaller than 'de'). DE and EN are separate corpora — a document published in both languages has one entry per language under the same abbreviation. Set 'en' only when the user explicitly works in English or asks for the English version.
date_fromNoInclude results from this date onwards (YYYY-MM-DD).
cited_normNoRestrict results to court decisions that verifiably cite this provision (citation-graph filter, e.g. '§ 573 BGB' or 'Art. 6 DSGVO'). Combine with a case-specific query — e.g. query='Eigenbedarfskündigung Härtefall hohes Alter', cited_norm='§ 573 BGB' — to get decisions that both apply the provision AND match the facts of the case. This is the preferred way to find case law for a specific provision and a specific question. Matching is paragraph-level (Abs./Satz/Nr. are ignored). Only court decisions carry citations, so this filter implicitly restricts to case law — no document_kind needed. For the raw citation inventory of a provision (newest first), use legal_find_citing_decisions instead. For an EU directive both the directive article ('Art. 9 Richtlinie 2011/83/EU') and the national transposition norm ('§ 355 BGB') are valid filters: the directive article matches EU case law (EuGH/EuG) and German decisions citing it directly (richtlinienkonforme Auslegung), while the transposition norm matches the larger body of German decisions applying the transposed rule. Prefer the transposition norm for everyday German case law, the directive article for EU-level interpretation; run a plain legal_search first if you do not know the transposition norm. EU regulations (DSGVO, MDR) are cited directly.
source_typeNoFilter by source: 'gii' (German federal laws like BGB, StGB), 'eurlex' (EU regulations like DSGVO, DSA), 'eurlex_caselaw' (EU court decisions, EuGH/EuG), 'rechtsprechung' (federal court decisions, 2010 onwards), 'bverfge' (BVerfG leading decisions from the official reporter BVerfGE, up to 2009 — the reported slice, not every BVerfG decision of that era), 'bverwg' (BVerwG judgments (Urteile) up to 2009), 'sachsen_rechtsprechung' (Saxon OVG decisions), 'nrw_rechtsprechung' (NRW higher-court decisions: OVG/OLG/LAG/LSG/FG/VerfGH), 'bayern_gesetze' (Bavaria), 'nrw_gesetze' (North Rhine-Westphalia), 'verwaltungsvorschriften' (federal administrative regulations, e.g. TA Luft, BMGVwV), 'edsa' (EDPB/EDSA data-protection guidance — soft law, not enacted norms; mostly English, see the language parameter), 'dsk' (Datenschutzkonferenz guidance: Orientierungshilfen, Kurzpapiere, Beschlüsse — the German supervisory authorities' reading of GDPR/BDSG), 'gesetzesmaterialien' (legislative materials — Gesetzesbegründung from Bundestag Drucksachen, the legislator's intent behind a federal norm; the corpus includes draft bills that never became law. Materials appear ONLY when explicitly requested via this value or document_kind='explanatory_memorandum' — an unfiltered search never returns them). Leave empty for cross-source search.
jurisdictionNoFilter by jurisdiction: 'de' (all German law — matches federal AND state law, incl. Staatsverträge like the Medienstaatsvertrag), 'eu' (EU), 'de_by' (Bavaria only), 'de_nw' (North Rhine-Westphalia only), 'de_sn' (Saxony only). For federal statutes ONLY, use source_type='gii' instead. Leave empty for cross-jurisdiction search.
decision_typeNoFilter by decision type: 'Urteil' or 'Beschluss'.
document_kindNoFilter by document class: the three norm subtypes 'statute', 'regulation' and 'directive' form ONE filter class — any of them admits all three, so you cannot (and need not) tell them apart, and an EU regulation or directive is never hidden by a reflexive 'statute'. Three values discriminate: 'decision' restricts to court case-law (prefer it for how-a-norm-is-applied questions), 'guidance' restricts to supervisory-authority soft law (EDPB/EDSA and Datenschutzkonferenz — authoritative readings of the GDPR/BDSG, not enacted norms and not binding), and 'explanatory_memorandum' restricts to legislative materials (Gesetzesbegründung / BT-Drucksachen — the legislator's intent behind a norm; prefer it for ratio-legis or purpose-of-an-amendment questions). Materials are opt-in: an unfiltered search never returns them — set this value (or source_type='gesetzesmaterialien') to search them, or use legal_get_materials for a specific provision. Leave empty for mixed questions. See legal://filter_values for the per-value definitions and disambiguation.
law_abbreviationNoFilter by law abbreviation, e.g. 'bgb', 'dsgvo'. Leave empty for thematic questions.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

TDQS

A4.9/5.0
Behavior5/5

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

Annotations cover safety (readOnly, idempotent, non-destructive), and the description adds substantial behavioral context: result snippets not full text, norm subtypes as one filter class, decisions dropped before ranking, materials only appear on request, language corpus differences, and the empty-intersection warning. No contradictions with annotations.

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

Conciseness4/5

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

The description is long but well-structured with clear sections, front-loading the core purpose. Some redundancy exists, such as repeating the natural-sentence query guidance in both English and German, which adds some bulk but does not detract from readability. It is appropriately sized for the tool's complexity.

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?

For a 13-parameter, complex legal search tool, the description is thorough: it covers query formulation, filter interactions, cross-references to legal:// resources, and common legal pitfalls. An output schema exists, so lack of detailed return description is acceptable; the description states what the user needs to know.

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

Parameters5/5

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

Despite 100% schema coverage, the description enriches parameter understanding far beyond schema descriptions: document_kind class semantics, cited_norm paragraph matching and transposition-norm strategy, language corpus size and separation, source_type specifics (bverfge slice, bverwg scope), and the law_abbreviation/decision conflict. All 13 parameters are given practical meaning.

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 opens with a specific verb-resource statement: 'Search legal documents across jurisdictions... using hybrid semantic + keyword search' and clearly notes returns are ranked snippets, not full text. It distinguishes from sibling tools through inline pointers to alternatives like legal_find_citing_decisions and legal_get_materials, establishing a unique purpose.

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?

Usage guidance is explicit and extensive: when to set document_kind (rule vs. application), when to leave it empty, when to use cited_norm vs. document_kind, and when to use alternative tools. It even gives decision rules for two searches and a full section on correct law abbreviations, satisfying the when/when-not requirement.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.4/5.0
Disambiguation5/5

Each legal tool targets a distinct operation: finding citing decisions, retrieving context, legislative history, stats, TOC, law lists, and exact lookups. The batch lookup is clearly a convenience wrapper for the single lookup, and the generic resource tools are unmistakably separate from the legal research functions.

Naming Consistency5/5

All legal tools follow a consistent 'legal_' prefix plus verb_noun pattern (e.g., legal_find_citing_decisions, legal_get_context, legal_list_laws). The two generic MCP tools also follow verb_noun (list_resources, read_resource), maintaining overall consistency.

Tool Count5/5

With 11 tools, the server is well-scoped for a comprehensive legal research domain. Each tool provides a distinct capability, and none feels redundant or excessive. The count is within the ideal 3-15 range.

Completeness4/5

The tool set covers the core legal research lifecycle: discovery (list_laws, search), lookup (lookup, lookup_batch), citation analysis (find_citing_decisions), structural navigation (get_toc, get_context), and legislative intent (get_materials). Minor gaps exist, such as the lack of coverage for certain state court decisions and non-German legislative materials, but these are explicitly documented and workarounds are provided.

Resources