Skip to main content
Glama

Server Details

MCP server for German & EU law. Verified, citable legal context for any LLM. Daily updates from official sources, hosted in Germany

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Available Tools

11 tools
list_resourcesA
Read-only
Inspect

List all available resources and resource templates.

Returns JSON with resource metadata. Static resources have a 'uri' field, while templates have a 'uri_template' field with placeholders like {name}.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

The description adds meaningful behavioral context beyond the readOnlyHint annotation by explaining that the return JSON distinguishes static resources ('uri' field) from templates ('uri_template' field with placeholders). This helps the agent understand the output structure without contradicting the annotation.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core action and a concise structural detail about the return format. Every word earns its place, with no redundancy.

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 zero-parameter listing tool with an output schema and readOnlyHint annotation, the description covers purpose and return structure sufficiently. It explains the resource/template distinction, which is the key contextual information an agent needs.

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

Parameters4/5

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

The tool has zero parameters, so schema coverage is effectively 100%. The description correctly omits parameter details, and the baseline of 4 applies because there is nothing to add beyond the schema.

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

Purpose5/5

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

The description uses the specific verb 'List' and identifies the resource as 'all available resources and resource templates,' clearly distinguishing it from sibling tools like read_resource. It leaves no ambiguity about what the tool does.

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

Usage Guidelines3/5

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

The description implies usage for discovering available resources but does not explicitly state when to use this tool versus alternatives such as read_resource. No exclusion or alternative guidance is provided, so usage context is only implied.

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

read_resourceA
Read-only
Inspect

Read a resource by its URI.

For static resources, provide the exact URI. For templated resources, provide the URI with template parameters filled in.

Returns the resource content as a string. Binary content is base64-encoded.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriYesThe URI of the resource to read

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Given the readOnlyHint annotation, the description adds valuable behavior beyond annotations: it discloses that content is returned as a string and that binary content is base64-encoded. This addresses the return format, which is not itemized in the schema. It does not discuss auth requirements or error behavior, but for a simple read operation the additional context is sufficient.

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

Conciseness5/5

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

The description is concise at three sentences, with the primary verb and resource in the first sentence. It front-loads the core purpose and then provides two clarifying details (templated URI handling and binary encoding) without redundancy or tangential fluff.

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 simple single-parameter tool, the description covers the key usage nuances (URI types) and return format (string/base64). An output schema exists to detail structured return values, so the description does not need to repeat that. It is complete for an agent to correctly invoke the tool.

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

Parameters4/5

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

The schema description for 'uri' is brief ('The URI of the resource to read'), but the tool description adds meaningful semantics by explaining how URIs work for static vs. templated resources. This helps the agent correctly construct the parameter value, which is valuable beyond the schema's minimal definition.

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

Purpose5/5

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

The description states 'Read a resource by its URI' with a specific verb and resource, clearly distinguishing this from sibling tools like list_resources (enumeration vs. reading a specific resource). It also distinguishes between static and templated URIs, adding precision.

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

Usage Guidelines4/5

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

The description provides clear context on how to use the tool—by giving exact URIs for static resources and filled-in parameters for templated ones—making the usage pattern explicit. However, it does not explicitly mention when not to use this tool or direct users to alternatives like list_resources for enumeration, so it falls short of a full 5.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 1 tool update
    • Changedlegal_get_toc1 field changed
      • changedInput schema / properties / source_type / description
        Previous value: -"'gii', 'eurlex', 'eurlex_caselaw', 'rechtsprechung', 'bverfge', 'bverwg', 'sachsen_rechtsprechung', 'nrw_rechtsprechung', 'bayern_gesetze', 'nrw_gesetze', 'verwaltungsvorschriften', 'edsa', 'dsk' or 'gesetzesmaterialien'. Leave empty to auto-detect. Note: 'edsa' is published mostly in English — pair it with language='en', or the DE default leaves you only the few translated documents."New value: +"'gii', 'eurlex', 'eurlex_caselaw', 'rechtsprechung', 'bverfge', 'bverwg', 'sachsen_rechtsprechung', 'nrw_rechtsprechung', 'bayern_gesetze', 'nrw_gesetze', 'verwaltungsvorschriften', 'edsa', 'dsk' or 'gesetzesmaterialien'. Leave empty to auto-detect; where an abbreviation names a law in two sources, the answer lists them so you can retry. Note: 'edsa' is published mostly in English — pair it with language='en', or the DE default leaves you only the few translated documents."
  2. 3 tool updates
    • Changedlegal_get_toc1 field changed
      • changedInput schema / properties / source_type / description
        Previous value: -"'gii', 'eurlex', 'eurlex_caselaw', 'rechtsprechung', 'sachsen_rechtsprechung', 'nrw_rechtsprechung', 'bayern_gesetze', 'nrw_gesetze', or 'verwaltungsvorschriften'. Leave empty to auto-detect."New value: +"'gii', 'eurlex', 'eurlex_caselaw', 'rechtsprechung', 'bverfge', 'bverwg', 'sachsen_rechtsprechung', 'nrw_rechtsprechung', 'bayern_gesetze', 'nrw_gesetze', 'verwaltungsvorschriften', 'edsa', 'dsk' or 'gesetzesmaterialien'. Leave empty to auto-detect. Note: 'edsa' is published mostly in English — pair it with language='en', or the DE default leaves you only the few translated documents."
    • Changedlegal_list_laws3 fields changed
      • changedInput schema / properties / document_kind / description
        Previous value: -"Filter by document class: the norm subtypes 'statute', 'regulation' and 'directive' form ONE class (any of them lists all three); 'decision' is separate and restricts to court case-law."New value: +"Filter by document class: the norm subtypes 'statute', 'regulation' and 'directive' form ONE class (any of them lists all three); 'decision' (court case-law), 'guidance' (supervisory-authority soft law, EDSA/DSK) and 'explanatory_memorandum' (legislative materials) are separate classes."
      • changedInput schema / properties / jurisdiction / description
        Previous value: -"Filter by jurisdiction: 'de' (all German law — matches federal AND state law; for federal only use source_type='gii'), 'eu', 'de_by' (Bavaria only), 'de_sn' (Saxony only). Leave empty for all jurisdictions."New value: +"Filter by jurisdiction: 'de' (all German law — matches federal AND state law; for federal only use source_type='gii'), 'eu', 'de_by' (Bavaria only), 'de_nw' (North Rhine-Westphalia only), 'de_sn' (Saxony only). Leave empty for all jurisdictions."
      • changedInput schema / properties / source_type / description
        Previous value: -"Filter: 'gii', 'eurlex', 'eurlex_caselaw', 'rechtsprechung', 'sachsen_rechtsprechung', 'nrw_rechtsprechung', 'bayern_gesetze', 'nrw_gesetze', or 'verwaltungsvorschriften'."New value: +"Filter: 'gii', 'eurlex', 'eurlex_caselaw', 'rechtsprechung', 'bverfge', 'bverwg', 'sachsen_rechtsprechung', 'nrw_rechtsprechung', 'bayern_gesetze', 'nrw_gesetze', 'verwaltungsvorschriften', 'edsa', 'dsk' or 'gesetzesmaterialien'. Note: 'edsa' is published mostly in English — pair it with language='en', or the DE default leaves you only the few translated documents."
    • Changedlegal_search3 fields changed
      • changedInput schema / properties / document_kind / description
        Previous value: -"Filter 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'. Two values discriminate: 'decision' restricts to court case-law (prefer it for how-a-norm-is-applied questions), 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."New value: +"Filter 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."
      • changedInput schema / properties / jurisdiction / description
        Previous value: -"Filter by jurisdiction: 'de' (all German law — matches federal AND state law, incl. Staatsverträge like the Medienstaatsvertrag), 'eu' (EU), 'de_by' (Bavaria only), 'de_sn' (Saxony only). For federal statutes ONLY, use source_type='gii' instead. Leave empty for cross-jurisdiction search."New value: +"Filter 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."
      • changedInput schema / properties / source_type / description
        Previous value: -"Filter 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), '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), '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."New value: +"Filter 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."
  3. 1 tool update
    • Changedlegal_list_laws1 field changed
      • changedInput schema / properties / search / description
        Previous value: -"Case-insensitive search on abbreviation and title, e.g. 'bgb', 'datenschutz'. Also accepts a CELEX number ('32022L2555') or an EU instrument reference ('2022/2555', 'Richtlinie (EU) 2022/2555') and resolves it to the stored law."New value: +"Case-insensitive search on abbreviation, title and official short designation ('Elektronischer-Rechtsverkehr-Verordnung'), e.g. 'bgb', 'datenschutz'. Also accepts a CELEX number ('32022L2555') or an EU instrument reference ('2022/2555', 'Richtlinie (EU) 2022/2555') and resolves it to the stored law."
  4. 2 tool updates
    • Changedlegal_find_citing_decisions1 field changed
      • changedInput schema / properties / cited_norm / description
        Previous value: -"The legal provision, e.g. '§ 823 BGB', 'Art. 6 DSGVO'."New value: +"The legal provision, e.g. '§ 823 BGB', 'Art. 6 DSGVO'. 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."
    • Changedlegal_search1 field changed
      • changedInput schema / properties / cited_norm / description
        Previous value: -"Restrict 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."New value: +"Restrict 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."
  5. 3 tool updates
    • Changedlegal_get_toc2 fields changed
      • changedInput schema / properties / source_type / anyOf
        Previous value: -[
        -  {
        -    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        -    "enum": [
        -      "gii",
        -      "eurlex",
        -      "eurlex_caselaw",
        -      "rechtsprechung",
        -      "sachsen_rechtsprechung",
        -      "sachsen_gesetze",
        -      "bayern_gesetze",
        -      "nrw_gesetze",
        -      "gesetzesmaterialien",
        -      "edsa",
        -      "bverfge",
        -      "bverwg",
        -      "verwaltungsvorschriften",
        -      "dsk"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        +    "enum": [
        +      "gii",
        +      "eurlex",
        +      "eurlex_caselaw",
        +      "rechtsprechung",
        +      "sachsen_rechtsprechung",
        +      "sachsen_gesetze",
        +      "bayern_gesetze",
        +      "nrw_gesetze",
        +      "nrw_rechtsprechung",
        +      "gesetzesmaterialien",
        +      "edsa",
        +      "bverfge",
        +      "bverwg",
        +      "verwaltungsvorschriften",
        +      "dsk"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / source_type / description
        Previous value: -"'gii', 'eurlex', 'eurlex_caselaw', 'rechtsprechung', 'sachsen_rechtsprechung', 'bayern_gesetze', 'nrw_gesetze', or 'verwaltungsvorschriften'. Leave empty to auto-detect."New value: +"'gii', 'eurlex', 'eurlex_caselaw', 'rechtsprechung', 'sachsen_rechtsprechung', 'nrw_rechtsprechung', 'bayern_gesetze', 'nrw_gesetze', or 'verwaltungsvorschriften'. Leave empty to auto-detect."
    • Changedlegal_list_laws2 fields changed
      • changedInput schema / properties / source_type / anyOf
        Previous value: -[
        -  {
        -    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        -    "enum": [
        -      "gii",
        -      "eurlex",
        -      "eurlex_caselaw",
        -      "rechtsprechung",
        -      "sachsen_rechtsprechung",
        -      "sachsen_gesetze",
        -      "bayern_gesetze",
        -      "nrw_gesetze",
        -      "gesetzesmaterialien",
        -      "edsa",
        -      "bverfge",
        -      "bverwg",
        -      "verwaltungsvorschriften",
        -      "dsk"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        +    "enum": [
        +      "gii",
        +      "eurlex",
        +      "eurlex_caselaw",
        +      "rechtsprechung",
        +      "sachsen_rechtsprechung",
        +      "sachsen_gesetze",
        +      "bayern_gesetze",
        +      "nrw_gesetze",
        +      "nrw_rechtsprechung",
        +      "gesetzesmaterialien",
        +      "edsa",
        +      "bverfge",
        +      "bverwg",
        +      "verwaltungsvorschriften",
        +      "dsk"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / source_type / description
        Previous value: -"Filter: 'gii', 'eurlex', 'eurlex_caselaw', 'rechtsprechung', 'sachsen_rechtsprechung', 'bayern_gesetze', 'nrw_gesetze', or 'verwaltungsvorschriften'."New value: +"Filter: 'gii', 'eurlex', 'eurlex_caselaw', 'rechtsprechung', 'sachsen_rechtsprechung', 'nrw_rechtsprechung', 'bayern_gesetze', 'nrw_gesetze', or 'verwaltungsvorschriften'."
    • Changedlegal_search4 fields changed
      • changedInput schema / properties / court / anyOf
        Previous value: -[
        -  {
        -    "description": "Courts available as search filter.\n\nValues match the ``extra.gericht`` Qdrant payload field used by\nboth Rechtsprechung-im-Internet (German federal courts) and\nEUR-Lex case law (EU courts).",
        -    "enum": [
        -      "BGH",
        -      "BVerfG",
        -      "BVerwG",
        -      "BFH",
        -      "BAG",
        -      "BSG",
        -      "BPatG",
        -      "GmSOGB",
        -      "Sächsisches OVG",
        -      "EuGH",
        -      "EuG"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Courts available as search filter.\n\nValues match the ``extra.gericht`` Qdrant payload field used by\nboth Rechtsprechung-im-Internet (German federal courts) and\nEUR-Lex case law (EU courts).",
        +    "enum": [
        +      "BGH",
        +      "BVerfG",
        +      "BVerwG",
        +      "BFH",
        +      "BAG",
        +      "BSG",
        +      "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"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / court / description
        Previous value: -"Filter by court: BGH, BVerwG, BFH, BAG, BSG, BVerfG, BPatG, GmSOGB, Sächsisches OVG, EuGH, EuG."New value: +"Filter 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."
      • changedInput schema / properties / source_type / anyOf
        Previous value: -[
        -  {
        -    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        -    "enum": [
        -      "gii",
        -      "eurlex",
        -      "eurlex_caselaw",
        -      "rechtsprechung",
        -      "sachsen_rechtsprechung",
        -      "sachsen_gesetze",
        -      "bayern_gesetze",
        -      "nrw_gesetze",
        -      "gesetzesmaterialien",
        -      "edsa",
        -      "bverfge",
        -      "bverwg",
        -      "verwaltungsvorschriften",
        -      "dsk"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        +    "enum": [
        +      "gii",
        +      "eurlex",
        +      "eurlex_caselaw",
        +      "rechtsprechung",
        +      "sachsen_rechtsprechung",
        +      "sachsen_gesetze",
        +      "bayern_gesetze",
        +      "nrw_gesetze",
        +      "nrw_rechtsprechung",
        +      "gesetzesmaterialien",
        +      "edsa",
        +      "bverfge",
        +      "bverwg",
        +      "verwaltungsvorschriften",
        +      "dsk"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / source_type / description
        Previous value: -"Filter 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), 'sachsen_rechtsprechung' (Saxon OVG decisions), 'bayern_gesetze' (Bavaria), 'nrw_gesetze' (North Rhine-Westphalia), 'verwaltungsvorschriften' (federal administrative regulations, e.g. TA Luft, BMGVwV), '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."New value: +"Filter 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), '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), '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."
  6. 3 tool updates
    • Changedlegal_get_toc1 field changed
      • changedInput schema / properties / source_type / anyOf
        Previous value: -[
        -  {
        -    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        -    "enum": [
        -      "gii",
        -      "eurlex",
        -      "eurlex_caselaw",
        -      "rechtsprechung",
        -      "sachsen_rechtsprechung",
        -      "sachsen_gesetze",
        -      "bayern_gesetze",
        -      "nrw_gesetze",
        -      "gesetzesmaterialien",
        -      "edsa",
        -      "bverfge",
        -      "bverwg",
        -      "verwaltungsvorschriften"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        +    "enum": [
        +      "gii",
        +      "eurlex",
        +      "eurlex_caselaw",
        +      "rechtsprechung",
        +      "sachsen_rechtsprechung",
        +      "sachsen_gesetze",
        +      "bayern_gesetze",
        +      "nrw_gesetze",
        +      "gesetzesmaterialien",
        +      "edsa",
        +      "bverfge",
        +      "bverwg",
        +      "verwaltungsvorschriften",
        +      "dsk"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedlegal_list_laws1 field changed
      • changedInput schema / properties / source_type / anyOf
        Previous value: -[
        -  {
        -    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        -    "enum": [
        -      "gii",
        -      "eurlex",
        -      "eurlex_caselaw",
        -      "rechtsprechung",
        -      "sachsen_rechtsprechung",
        -      "sachsen_gesetze",
        -      "bayern_gesetze",
        -      "nrw_gesetze",
        -      "gesetzesmaterialien",
        -      "edsa",
        -      "bverfge",
        -      "bverwg",
        -      "verwaltungsvorschriften"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        +    "enum": [
        +      "gii",
        +      "eurlex",
        +      "eurlex_caselaw",
        +      "rechtsprechung",
        +      "sachsen_rechtsprechung",
        +      "sachsen_gesetze",
        +      "bayern_gesetze",
        +      "nrw_gesetze",
        +      "gesetzesmaterialien",
        +      "edsa",
        +      "bverfge",
        +      "bverwg",
        +      "verwaltungsvorschriften",
        +      "dsk"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedlegal_search1 field changed
      • changedInput schema / properties / source_type / anyOf
        Previous value: -[
        -  {
        -    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        -    "enum": [
        -      "gii",
        -      "eurlex",
        -      "eurlex_caselaw",
        -      "rechtsprechung",
        -      "sachsen_rechtsprechung",
        -      "sachsen_gesetze",
        -      "bayern_gesetze",
        -      "nrw_gesetze",
        -      "gesetzesmaterialien",
        -      "edsa",
        -      "bverfge",
        -      "bverwg",
        -      "verwaltungsvorschriften"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        +    "enum": [
        +      "gii",
        +      "eurlex",
        +      "eurlex_caselaw",
        +      "rechtsprechung",
        +      "sachsen_rechtsprechung",
        +      "sachsen_gesetze",
        +      "bayern_gesetze",
        +      "nrw_gesetze",
        +      "gesetzesmaterialien",
        +      "edsa",
        +      "bverfge",
        +      "bverwg",
        +      "verwaltungsvorschriften",
        +      "dsk"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
  7. 3 tool updates
    • Changedlegal_get_toc2 fields changed
      • changedInput schema / properties / source_type / anyOf
        Previous value: -[
        -  {
        -    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        -    "enum": [
        -      "gii",
        -      "eurlex",
        -      "eurlex_caselaw",
        -      "rechtsprechung",
        -      "sachsen_rechtsprechung",
        -      "sachsen_gesetze",
        -      "bayern_gesetze",
        -      "nrw_gesetze",
        -      "gesetzesmaterialien",
        -      "edsa",
        -      "bverfge",
        -      "bverwg"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        +    "enum": [
        +      "gii",
        +      "eurlex",
        +      "eurlex_caselaw",
        +      "rechtsprechung",
        +      "sachsen_rechtsprechung",
        +      "sachsen_gesetze",
        +      "bayern_gesetze",
        +      "nrw_gesetze",
        +      "gesetzesmaterialien",
        +      "edsa",
        +      "bverfge",
        +      "bverwg",
        +      "verwaltungsvorschriften"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / source_type / description
        Previous value: -"'gii', 'eurlex', 'eurlex_caselaw', 'rechtsprechung', 'sachsen_rechtsprechung', 'bayern_gesetze', or 'nrw_gesetze'. Leave empty to auto-detect."New value: +"'gii', 'eurlex', 'eurlex_caselaw', 'rechtsprechung', 'sachsen_rechtsprechung', 'bayern_gesetze', 'nrw_gesetze', or 'verwaltungsvorschriften'. Leave empty to auto-detect."
    • Changedlegal_list_laws2 fields changed
      • changedInput schema / properties / source_type / anyOf
        Previous value: -[
        -  {
        -    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        -    "enum": [
        -      "gii",
        -      "eurlex",
        -      "eurlex_caselaw",
        -      "rechtsprechung",
        -      "sachsen_rechtsprechung",
        -      "sachsen_gesetze",
        -      "bayern_gesetze",
        -      "nrw_gesetze",
        -      "gesetzesmaterialien",
        -      "edsa",
        -      "bverfge",
        -      "bverwg"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        +    "enum": [
        +      "gii",
        +      "eurlex",
        +      "eurlex_caselaw",
        +      "rechtsprechung",
        +      "sachsen_rechtsprechung",
        +      "sachsen_gesetze",
        +      "bayern_gesetze",
        +      "nrw_gesetze",
        +      "gesetzesmaterialien",
        +      "edsa",
        +      "bverfge",
        +      "bverwg",
        +      "verwaltungsvorschriften"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / source_type / description
        Previous value: -"Filter: 'gii', 'eurlex', 'eurlex_caselaw', 'rechtsprechung', 'sachsen_rechtsprechung', 'bayern_gesetze', or 'nrw_gesetze'."New value: +"Filter: 'gii', 'eurlex', 'eurlex_caselaw', 'rechtsprechung', 'sachsen_rechtsprechung', 'bayern_gesetze', 'nrw_gesetze', or 'verwaltungsvorschriften'."
    • Changedlegal_search2 fields changed
      • changedInput schema / properties / source_type / anyOf
        Previous value: -[
        -  {
        -    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        -    "enum": [
        -      "gii",
        -      "eurlex",
        -      "eurlex_caselaw",
        -      "rechtsprechung",
        -      "sachsen_rechtsprechung",
        -      "sachsen_gesetze",
        -      "bayern_gesetze",
        -      "nrw_gesetze",
        -      "gesetzesmaterialien",
        -      "edsa",
        -      "bverfge",
        -      "bverwg"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        +    "enum": [
        +      "gii",
        +      "eurlex",
        +      "eurlex_caselaw",
        +      "rechtsprechung",
        +      "sachsen_rechtsprechung",
        +      "sachsen_gesetze",
        +      "bayern_gesetze",
        +      "nrw_gesetze",
        +      "gesetzesmaterialien",
        +      "edsa",
        +      "bverfge",
        +      "bverwg",
        +      "verwaltungsvorschriften"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / source_type / description
        Previous value: -"Filter 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), 'sachsen_rechtsprechung' (Saxon OVG decisions), 'bayern_gesetze' (Bavaria), 'nrw_gesetze' (North Rhine-Westphalia), '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."New value: +"Filter 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), 'sachsen_rechtsprechung' (Saxon OVG decisions), 'bayern_gesetze' (Bavaria), 'nrw_gesetze' (North Rhine-Westphalia), 'verwaltungsvorschriften' (federal administrative regulations, e.g. TA Luft, BMGVwV), '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."
  8. 3 tool updates
    • Changedlegal_get_toc1 field changed
      • changedInput schema / properties / source_type / anyOf
        Previous value: -[
        -  {
        -    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        -    "enum": [
        -      "gii",
        -      "eurlex",
        -      "eurlex_caselaw",
        -      "rechtsprechung",
        -      "sachsen_rechtsprechung",
        -      "sachsen_gesetze",
        -      "bayern_gesetze",
        -      "nrw_gesetze",
        -      "gesetzesmaterialien",
        -      "edsa",
        -      "bverfge"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        +    "enum": [
        +      "gii",
        +      "eurlex",
        +      "eurlex_caselaw",
        +      "rechtsprechung",
        +      "sachsen_rechtsprechung",
        +      "sachsen_gesetze",
        +      "bayern_gesetze",
        +      "nrw_gesetze",
        +      "gesetzesmaterialien",
        +      "edsa",
        +      "bverfge",
        +      "bverwg"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedlegal_list_laws1 field changed
      • changedInput schema / properties / source_type / anyOf
        Previous value: -[
        -  {
        -    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        -    "enum": [
        -      "gii",
        -      "eurlex",
        -      "eurlex_caselaw",
        -      "rechtsprechung",
        -      "sachsen_rechtsprechung",
        -      "sachsen_gesetze",
        -      "bayern_gesetze",
        -      "nrw_gesetze",
        -      "gesetzesmaterialien",
        -      "edsa",
        -      "bverfge"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        +    "enum": [
        +      "gii",
        +      "eurlex",
        +      "eurlex_caselaw",
        +      "rechtsprechung",
        +      "sachsen_rechtsprechung",
        +      "sachsen_gesetze",
        +      "bayern_gesetze",
        +      "nrw_gesetze",
        +      "gesetzesmaterialien",
        +      "edsa",
        +      "bverfge",
        +      "bverwg"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedlegal_search1 field changed
      • changedInput schema / properties / source_type / anyOf
        Previous value: -[
        -  {
        -    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        -    "enum": [
        -      "gii",
        -      "eurlex",
        -      "eurlex_caselaw",
        -      "rechtsprechung",
        -      "sachsen_rechtsprechung",
        -      "sachsen_gesetze",
        -      "bayern_gesetze",
        -      "nrw_gesetze",
        -      "gesetzesmaterialien",
        -      "edsa",
        -      "bverfge"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        +    "enum": [
        +      "gii",
        +      "eurlex",
        +      "eurlex_caselaw",
        +      "rechtsprechung",
        +      "sachsen_rechtsprechung",
        +      "sachsen_gesetze",
        +      "bayern_gesetze",
        +      "nrw_gesetze",
        +      "gesetzesmaterialien",
        +      "edsa",
        +      "bverfge",
        +      "bverwg"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
  9. 3 tool updates
    • Changedlegal_get_toc1 field changed
      • changedInput schema / properties / source_type / anyOf
        Previous value: -[
        -  {
        -    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        -    "enum": [
        -      "gii",
        -      "eurlex",
        -      "eurlex_caselaw",
        -      "rechtsprechung",
        -      "sachsen_rechtsprechung",
        -      "sachsen_gesetze",
        -      "bayern_gesetze",
        -      "nrw_gesetze",
        -      "gesetzesmaterialien",
        -      "edsa"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        +    "enum": [
        +      "gii",
        +      "eurlex",
        +      "eurlex_caselaw",
        +      "rechtsprechung",
        +      "sachsen_rechtsprechung",
        +      "sachsen_gesetze",
        +      "bayern_gesetze",
        +      "nrw_gesetze",
        +      "gesetzesmaterialien",
        +      "edsa",
        +      "bverfge"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedlegal_list_laws1 field changed
      • changedInput schema / properties / source_type / anyOf
        Previous value: -[
        -  {
        -    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        -    "enum": [
        -      "gii",
        -      "eurlex",
        -      "eurlex_caselaw",
        -      "rechtsprechung",
        -      "sachsen_rechtsprechung",
        -      "sachsen_gesetze",
        -      "bayern_gesetze",
        -      "nrw_gesetze",
        -      "gesetzesmaterialien",
        -      "edsa"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        +    "enum": [
        +      "gii",
        +      "eurlex",
        +      "eurlex_caselaw",
        +      "rechtsprechung",
        +      "sachsen_rechtsprechung",
        +      "sachsen_gesetze",
        +      "bayern_gesetze",
        +      "nrw_gesetze",
        +      "gesetzesmaterialien",
        +      "edsa",
        +      "bverfge"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedlegal_search1 field changed
      • changedInput schema / properties / source_type / anyOf
        Previous value: -[
        -  {
        -    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        -    "enum": [
        -      "gii",
        -      "eurlex",
        -      "eurlex_caselaw",
        -      "rechtsprechung",
        -      "sachsen_rechtsprechung",
        -      "sachsen_gesetze",
        -      "bayern_gesetze",
        -      "nrw_gesetze",
        -      "gesetzesmaterialien",
        -      "edsa"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        +    "enum": [
        +      "gii",
        +      "eurlex",
        +      "eurlex_caselaw",
        +      "rechtsprechung",
        +      "sachsen_rechtsprechung",
        +      "sachsen_gesetze",
        +      "bayern_gesetze",
        +      "nrw_gesetze",
        +      "gesetzesmaterialien",
        +      "edsa",
        +      "bverfge"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
  10. 5 tool updates
    • Changedlegal_get_toc2 fields changed
      • addedInput schema / properties / language
        Added value: +{
        +  "anyOf": [
        +    {
        +      "description": "Content language of legal documents.\n\nUses StrEnum so values compare equal to plain strings for\nseamless PostgreSQL/Qdrant compatibility.",
        +      "enum": [
        +        "de",
        +        "en"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Corpus 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."
        +}
      • changedInput schema / properties / source_type / anyOf
        Previous value: -[
        -  {
        -    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        -    "enum": [
        -      "gii",
        -      "eurlex",
        -      "eurlex_caselaw",
        -      "rechtsprechung",
        -      "sachsen_rechtsprechung",
        -      "sachsen_gesetze",
        -      "bayern_gesetze",
        -      "nrw_gesetze",
        -      "gesetzesmaterialien"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        +    "enum": [
        +      "gii",
        +      "eurlex",
        +      "eurlex_caselaw",
        +      "rechtsprechung",
        +      "sachsen_rechtsprechung",
        +      "sachsen_gesetze",
        +      "bayern_gesetze",
        +      "nrw_gesetze",
        +      "gesetzesmaterialien",
        +      "edsa"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedlegal_list_laws3 fields changed
      • changedInput schema / properties / document_kind / anyOf
        Previous value: -[
        -  {
        -    "description": "Legal document type classification.\n\nUses StrEnum so values compare equal to plain strings for\nseamless PostgreSQL/Qdrant compatibility.",
        -    "enum": [
        -      "statute",
        -      "regulation",
        -      "directive",
        -      "decision",
        -      "explanatory_memorandum"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Legal document type classification.\n\nUses StrEnum so values compare equal to plain strings for\nseamless PostgreSQL/Qdrant compatibility.",
        +    "enum": [
        +      "statute",
        +      "regulation",
        +      "directive",
        +      "decision",
        +      "explanatory_memorandum",
        +      "guidance"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / language
        Added value: +{
        +  "anyOf": [
        +    {
        +      "description": "Content language of legal documents.\n\nUses StrEnum so values compare equal to plain strings for\nseamless PostgreSQL/Qdrant compatibility.",
        +      "enum": [
        +        "de",
        +        "en"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Corpus 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."
        +}
      • changedInput schema / properties / source_type / anyOf
        Previous value: -[
        -  {
        -    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        -    "enum": [
        -      "gii",
        -      "eurlex",
        -      "eurlex_caselaw",
        -      "rechtsprechung",
        -      "sachsen_rechtsprechung",
        -      "sachsen_gesetze",
        -      "bayern_gesetze",
        -      "nrw_gesetze",
        -      "gesetzesmaterialien"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        +    "enum": [
        +      "gii",
        +      "eurlex",
        +      "eurlex_caselaw",
        +      "rechtsprechung",
        +      "sachsen_rechtsprechung",
        +      "sachsen_gesetze",
        +      "bayern_gesetze",
        +      "nrw_gesetze",
        +      "gesetzesmaterialien",
        +      "edsa"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedlegal_lookup1 field changed
      • addedInput schema / properties / language
        Added value: +{
        +  "anyOf": [
        +    {
        +      "description": "Content language of legal documents.\n\nUses StrEnum so values compare equal to plain strings for\nseamless PostgreSQL/Qdrant compatibility.",
        +      "enum": [
        +        "de",
        +        "en"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Corpus 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."
        +}
    • Changedlegal_lookup_batch1 field changed
      • addedInput schema / properties / language
        Added value: +{
        +  "anyOf": [
        +    {
        +      "description": "Content language of legal documents.\n\nUses StrEnum so values compare equal to plain strings for\nseamless PostgreSQL/Qdrant compatibility.",
        +      "enum": [
        +        "de",
        +        "en"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Corpus 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."
        +}
    • Changedlegal_search3 fields changed
      • changedInput schema / properties / document_kind / anyOf
        Previous value: -[
        -  {
        -    "description": "Legal document type classification.\n\nUses StrEnum so values compare equal to plain strings for\nseamless PostgreSQL/Qdrant compatibility.",
        -    "enum": [
        -      "statute",
        -      "regulation",
        -      "directive",
        -      "decision",
        -      "explanatory_memorandum"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Legal document type classification.\n\nUses StrEnum so values compare equal to plain strings for\nseamless PostgreSQL/Qdrant compatibility.",
        +    "enum": [
        +      "statute",
        +      "regulation",
        +      "directive",
        +      "decision",
        +      "explanatory_memorandum",
        +      "guidance"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / language
        Added value: +{
        +  "anyOf": [
        +    {
        +      "description": "Content language of legal documents.\n\nUses StrEnum so values compare equal to plain strings for\nseamless PostgreSQL/Qdrant compatibility.",
        +      "enum": [
        +        "de",
        +        "en"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Corpus 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."
        +}
      • changedInput schema / properties / source_type / anyOf
        Previous value: -[
        -  {
        -    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        -    "enum": [
        -      "gii",
        -      "eurlex",
        -      "eurlex_caselaw",
        -      "rechtsprechung",
        -      "sachsen_rechtsprechung",
        -      "sachsen_gesetze",
        -      "bayern_gesetze",
        -      "nrw_gesetze",
        -      "gesetzesmaterialien"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Known legal document source types.\n\nUses StrEnum so values compare equal to plain strings\n(e.g. ``SourceType.GII == \"gii\"``), which keeps Qdrant\npayloads and PostgreSQL columns compatible without conversion.",
        +    "enum": [
        +      "gii",
        +      "eurlex",
        +      "eurlex_caselaw",
        +      "rechtsprechung",
        +      "sachsen_rechtsprechung",
        +      "sachsen_gesetze",
        +      "bayern_gesetze",
        +      "nrw_gesetze",
        +      "gesetzesmaterialien",
        +      "edsa"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
  11. 1 tool update
    • Changedlegal_search1 field changed
      • addedInput schema / properties / cited_norm
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 200,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Restrict 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."
        +}
  12. 1 tool update
    • Changedlegal_list_laws1 field changed
      • changedInput schema / properties / search / description
        Previous value: -"Case-insensitive search on abbreviation and title, e.g. 'bgb', 'datenschutz'."New value: +"Case-insensitive search on abbreviation and title, e.g. 'bgb', 'datenschutz'. Also accepts a CELEX number ('32022L2555') or an EU instrument reference ('2022/2555', 'Richtlinie (EU) 2022/2555') and resolves it to the stored law."
  13. 1 tool update
    • Changedlegal_lookup1 field changed
      • changedInput schema / properties / citation / description
        Previous value: -"Full citation string, e.g. '§ 823 BGB'"New value: +"Full citation string, e.g. '§ 823 BGB' or 'VII ZR 184/14'"
  14. 1 tool update
    • Changedlegal_search2 fields changed
      • changedInput schema / properties / document_kind / description
        Previous value: -"Filter 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'. Two values discriminate: 'decision' restricts to court case-law (prefer it for how-a-norm-is-applied questions), 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). Leave empty for mixed questions. See legal://filter_values for the per-value definitions and disambiguation."New value: +"Filter 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'. Two values discriminate: 'decision' restricts to court case-law (prefer it for how-a-norm-is-applied questions), 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."
      • changedInput schema / properties / source_type / description
        Previous value: -"Filter 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), 'sachsen_rechtsprechung' (Saxon OVG decisions), 'bayern_gesetze' (Bavaria), 'nrw_gesetze' (North Rhine-Westphalia), 'gesetzesmaterialien' (legislative materials — Gesetzesbegründung from Bundestag Drucksachen, the legislator's intent behind a federal norm). Leave empty for cross-source search."New value: +"Filter 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), 'sachsen_rechtsprechung' (Saxon OVG decisions), 'bayern_gesetze' (Bavaria), 'nrw_gesetze' (North Rhine-Westphalia), '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."
  15. 1 tool update
    • Changedlegal_search2 fields changed
      • changedInput schema / properties / document_kind / description
        Previous value: -"Filter 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'. 'decision' is the one discriminating value: it restricts to court case-law and excludes all norms. So this filter only ever cuts norm-vs-decision. For how-a-norm-is-applied questions prefer 'decision'; leave empty for mixed norm/case-law questions. See legal://filter_values for the per-value definitions and disambiguation."New value: +"Filter 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'. Two values discriminate: 'decision' restricts to court case-law (prefer it for how-a-norm-is-applied questions), 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). Leave empty for mixed questions. See legal://filter_values for the per-value definitions and disambiguation."
      • changedInput schema / properties / source_type / description
        Previous value: -"Filter 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), 'sachsen_rechtsprechung' (Saxon OVG decisions), 'bayern_gesetze' (Bavaria), 'nrw_gesetze' (North Rhine-Westphalia). Leave empty for cross-source search."New value: +"Filter 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), 'sachsen_rechtsprechung' (Saxon OVG decisions), 'bayern_gesetze' (Bavaria), 'nrw_gesetze' (North Rhine-Westphalia), 'gesetzesmaterialien' (legislative materials — Gesetzesbegründung from Bundestag Drucksachen, the legislator's intent behind a federal norm). Leave empty for cross-source search."
  16. 3 tool updates
    • Changedlegal_get_toc1 field changed
      • changedInput schema / properties / source_type / description
        Previous value: -"'gii', 'eurlex', 'eurlex_caselaw', 'rechtsprechung', 'sachsen_rechtsprechung', 'sachsen_gesetze', 'bayern_gesetze', or 'nrw_gesetze'. Leave empty to auto-detect."New value: +"'gii', 'eurlex', 'eurlex_caselaw', 'rechtsprechung', 'sachsen_rechtsprechung', 'bayern_gesetze', or 'nrw_gesetze'. Leave empty to auto-detect."
    • Changedlegal_list_laws1 field changed
      • changedInput schema / properties / source_type / description
        Previous value: -"Filter: 'gii', 'eurlex', 'eurlex_caselaw', 'rechtsprechung', 'sachsen_rechtsprechung', 'sachsen_gesetze', 'bayern_gesetze', or 'nrw_gesetze'."New value: +"Filter: 'gii', 'eurlex', 'eurlex_caselaw', 'rechtsprechung', 'sachsen_rechtsprechung', 'bayern_gesetze', or 'nrw_gesetze'."
    • Changedlegal_search1 field changed
      • changedInput schema / properties / source_type / description
        Previous value: -"Filter 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), 'sachsen_rechtsprechung' (Saxon OVG decisions), 'sachsen_gesetze' (Saxony), 'bayern_gesetze' (Bavaria), 'nrw_gesetze' (North Rhine-Westphalia). Leave empty for cross-source search."New value: +"Filter 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), 'sachsen_rechtsprechung' (Saxon OVG decisions), 'bayern_gesetze' (Bavaria), 'nrw_gesetze' (North Rhine-Westphalia). Leave empty for cross-source search."

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables detection and analysis of pre-public product launches through web search, content extraction, AI-powered scoring, and automated alerting. Provides comprehensive tools for surfacing stealth startup signals before they trend publicly.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI chat clients to perform market research and competitive intelligence by gathering company overviews, competitor lists, product portfolios, pricing snapshots, and recent news via live Tavily search.
    MIT
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