Skip to main content
Glama

Look Up Provision by Citation

legal_lookup
Read-onlyIdempotent

Retrieve a specific legal provision by citation (e.g. '§ 823 BGB', 'Art. 6 DSGVO', '§ 280 Abs. 1 BGB'), or a court decision by Aktenzeichen or ECLI (e.g. 'VII ZR 184/14', 'BGH VII ZR 184/14', 'C-184/14', 'ECLI:DE:BGH:2017:050117BVIIZR184.14.0'). Citation order is flexible — '§ 9 DSGVO', 'DSGVO Art. 9', 'Artikel 9 DSGVO' all resolve correctly. is_exact_match reports whether the citation was matched exactly; non-exact results can be a semantic fallback, the first section of an annex, or an uncertain decision match. The result hint explains which case applies; found=true alone does not prove citation identity. Provision text is reassembled where available; content_truncated and the result hint identify incomplete text and its continuation. An ambiguous provision returns found=false with stored candidates and citation_forms: complete citations that select each printing, including a source occurrence where required. Select an EUR-Lex article reprint with its quoted complete key, e.g. '"Art. 45 (2)" reg_2013_153'. An unquoted paragraph qualifier does not select a printing. Quote a complete stored document-part key when its title contains article references; the quoted key takes precedence over coordinates within that title. A decision lookup returns its lead section (Leitsatz); further sections are reachable via legal_get_toc or legal_get_context on the returned norm_id. Where an abbreviation names laws of several legal orders and neither the scope nor the cited provision decides, the result is found=false with reason='ambiguous_jurisdiction' and one candidate per law, each with the legal_lookup arguments that resolve exactly it; also_exists_in on a hit lists the other laws the abbreviation names.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
citationYesFull citation string, e.g. '§ 823 BGB' or 'VII ZR 184/14'
languageNoDocument language: 'de' (documents in German, of every legal order in the scope) or 'en' (currently EDPB/EDSA data-protection guidance only). Omitted, the account's document language applies ('de' unless the account sets another). DE and EN are separate corpora — a document published in both languages has one entry per language under the same abbreviation. 'en' selects the English corpus regardless of the answer language; 'edsa' is published mostly in English.
source_typeNoSource the cited law or decision must come from: 'gii', 'eurlex', 'eurlex_caselaw', 'rechtsprechung', 'bverfge', 'bverwg', 'sachsen_rechtsprechung', 'nrw_rechtsprechung', 'bayern_gesetze', 'nrw_gesetze', 'verwaltungsvorschriften', 'edsa', 'dsk' or 'gesetzesmaterialien'. An abbreviation names one law per source, so the source selects exactly one law — also between federal and state law, which 'de' covers together. Omitted, every source answers. Note: 'edsa' is published mostly in English: language='en' covers the full set, the German corpus only the translated documents.
jurisdictionNoLegal orders the cited law or decision must belong to, one or more: 'de' (all German law — federal AND state), 'eu', 'de_by', 'de_nw', 'de_sn'. A value matches its own family only: 'de' adds no EU law. Omitted, every legal order answers, and where an abbreviation names laws of several (e.g. 'EUV': a German Verordnung and the EU Treaty), the account's legal order decides; jurisdiction_scope names it. Set, nothing outside it answers: a not_found then lists in also_exists_in where the cited law exists.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedInput schema / properties / jurisdiction
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "description": "Jurisdiction of the legal document.",
      +        "enum": [
      +          "de",
      +          "eu",
      +          "de_by",
      +          "de_sn",
      +          "de_nw"
      +        ],
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Legal orders the cited law or decision must belong to, one or more: 'de' (all German law — federal AND state), 'eu', 'de_by', 'de_nw', 'de_sn'. A value matches its own family only: 'de' adds no EU law. Omitted, every legal order answers, and where an abbreviation names laws of several (e.g. 'EUV': a German Verordnung and the EU Treaty), the account's legal order decides; jurisdiction_scope names it. Set, nothing outside it answers: a not_found then lists in also_exists_in where the cited law exists."
      +}
    • addedInput schema / properties / source_type
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "bayern_gesetze",
      +        "bverfge",
      +        "bverwg",
      +        "dsk",
      +        "edsa",
      +        "eurlex",
      +        "eurlex_caselaw",
      +        "gesetzesmaterialien",
      +        "gii",
      +        "nrw_gesetze",
      +        "nrw_rechtsprechung",
      +        "rechtsprechung",
      +        "sachsen_rechtsprechung",
      +        "verwaltungsvorschriften"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Source the cited law or decision must come from: 'gii', 'eurlex', 'eurlex_caselaw', 'rechtsprechung', 'bverfge', 'bverwg', 'sachsen_rechtsprechung', 'nrw_rechtsprechung', 'bayern_gesetze', 'nrw_gesetze', 'verwaltungsvorschriften', 'edsa', 'dsk' or 'gesetzesmaterialien'. An abbreviation names one law per source, so the source selects exactly one law — also between federal and state law, which 'de' covers together. Omitted, every source answers. Note: 'edsa' is published mostly in English: language='en' covers the full set, the German corpus only the translated documents."
      +}
    • removedOutput schema / additionalProperties
      Removed value: -true
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "additionalProperties": true,
      +    "allOf": [
      +      {
      +        "if": {
      +          "properties": {
      +            "reason": {
      +              "enum": [
      +                "ambiguous_abbreviation",
      +                "ambiguous_jurisdiction"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "reason"
      +          ]
      +        },
      +        "then": {
      +          "properties": {
      +            "candidates": {
      +              "items": {
      +                "properties": {
      +                  "arguments": {
      +                    "properties": {
      +                      "citation": {
      +                        "type": "string"
      +                      },
      +                      "language": {
      +                        "type": "string"
      +                      },
      +                      "source_type": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "citation",
      +                      "source_type",
      +                      "language"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "jurisdiction": {
      +                    "type": "string"
      +                  },
      +                  "law_abbreviation": {
      +                    "type": "string"
      +                  },
      +                  "source_type": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "law_abbreviation",
      +                  "source_type",
      +                  "jurisdiction",
      +                  "arguments"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            }
      +          },
      +          "required": [
      +            "candidates",
      +            "candidate_count",
      +            "hint"
      +          ]
      +        }
      +      }
      +    ],
      +    "properties": {
      +      "also_exists_in": {
      +        "items": {
      +          "properties": {
      +            "jurisdiction": {
      +              "type": "string"
      +            },
      +            "law_abbreviation": {
      +              "type": "string"
      +            },
      +            "source_type": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "law_abbreviation",
      +            "source_type",
      +            "jurisdiction"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "candidate_count": {
      +        "type": "integer"
      +      },
      +      "citation": {
      +        "type": "string"
      +      },
      +      "found": {
      +        "type": "boolean"
      +      },
      +      "hint": {
      +        "type": "string"
      +      },
      +      "jurisdiction_scope": {
      +        "properties": {
      +          "jurisdictions": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "language": {
      +            "type": "string"
      +          },
      +          "source": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "jurisdictions",
      +          "language",
      +          "source"
      +        ],
      +        "type": "object"
      +      },
      +      "reason": {
      +        "enum": [
      +          "unparseable_citation",
      +          "not_found",
      +          "ambiguous_abbreviation",
      +          "ambiguous_jurisdiction",
      +          "ambiguous_provision"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "found",
      +      "jurisdiction_scope"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "required": [
      +      "notice"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed1 schema field changed
    • changedInput schema / properties / language / description
      Previous value: -"Document language: 'de' (German-language documents from German and EU sources) or 'en' (currently EDPB/EDSA data-protection guidance only). Omitted, the account's document language applies ('de' unless the account sets another). DE and EN are separate corpora — a document published in both languages has one entry per language under the same abbreviation. 'en' selects the English corpus regardless of the answer language; 'edsa' is published mostly in English."New value: +"Document language: 'de' (documents in German, of every legal order in the scope) or 'en' (currently EDPB/EDSA data-protection guidance only). Omitted, the account's document language applies ('de' unless the account sets another). DE and EN are separate corpora — a document published in both languages has one entry per language under the same abbreviation. 'en' selects the English corpus regardless of the answer language; 'edsa' is published mostly in English."
  3. Changed1 schema field changed
    • changedInput schema / properties / language / description
      Previous value: -"Document language: 'de' (default, German-language documents from German and EU sources) or 'en' (currently EDPB/EDSA data-protection guidance only). DE and EN are separate corpora — a document published in both languages has one entry per language under the same abbreviation. 'en' selects the English corpus regardless of the answer language; 'edsa' is published mostly in English."New value: +"Document language: 'de' (German-language documents from German and EU sources) or 'en' (currently EDPB/EDSA data-protection guidance only). Omitted, the account's document language applies ('de' unless the account sets another). DE and EN are separate corpora — a document published in both languages has one entry per language under the same abbreviation. 'en' selects the English corpus regardless of the answer language; 'edsa' is published mostly in English."
  4. Changed2 schema fields changed
    • changedInput schema / properties / language / anyOf
      Previous value: -[
      -  {
      -    "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"
      -  }
      -]New value: +[
      +  {
      +    "description": "Document language, independent of the language of the answer.",
      +    "enum": [
      +      "de",
      +      "en"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / language / description
      Previous value: -"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. 'en' selects the English corpus regardless of the answer language; 'edsa' is published mostly in English."New value: +"Document language: 'de' (default, German-language documents from German and EU sources) or 'en' (currently EDPB/EDSA data-protection guidance only). DE and EN are separate corpora — a document published in both languages has one entry per language under the same abbreviation. 'en' selects the English corpus regardless of the answer language; 'edsa' is published mostly in English."
  5. Changed1 schema field changed
    • changedInput schema / properties / language / description
      Previous value: -"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."New value: +"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. 'en' selects the English corpus regardless of the answer language; 'edsa' is published mostly in English."
  6. Changed1 schema 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."
      +}
  7. Changed1 schema 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'"
  8. Changed2 schema fields changed
    • addedInput schema / properties / citation / maxLength
      Added value: +200
    • addedInput schema / properties / citation / minLength
      Added value: +1
  9. First observed

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources