Skip to main content
Glama

Resolve Austrian Legal Citation

ris_lookup_citation
Read-onlyIdempotent

Resolve a single Austrian legal citation to its canonical RIS document deterministically — no keyword search. Four routes are auto-detected from the citation shape (or forced with kind): a norm citation — section-first ("§ 6 DSG", "Art 10 B-VG"), abbreviation-first ("DSG §1", "EMRK Art8", the shape ris_search_case_law returns in norms_cited; a comma-joined entry like "DSG §1, §24", or one joining full norms with ". " like "ZPO §179. ZPO §275 Abs2", resolves its first provision and names the rest), or a bare abbreviation like "ABGB" or "1. COVID-19-JuBG", with sub-provisions (Abs, Z, lit, "(1)"), the version a law is cited in ("ABGB idF 2. ErwSchG §254", "ABGB aF §140"), and a terminal ";" dropped, and a long title read by its short form after the dash ("StaatsanwaltschaftsG - StAG §35") — resolves through consolidated federal law, or a Bundesland with a state hint, as in force today or on in_force_as_of, while an EU act RIS does not consolidate (DSGVO, the Charter, EuGVVO, the EC Treaty as EG, EGV, or EG-Vertrag), or an EU act cited by its number ("RL 2006/123/EG", "VO (EG) 178/2002"), returns found: false pointing to EUR-Lex without a search; a gazette citation ("BGBl. I Nr. 165/1999", year-first "BGBl I 2018/24", pre-2004 "BGBl. Nr. 194/1961", imperial "RGBl. Nr. 189/1902", "StGBl. Nr. 1/1945", or "LGBl. Nr. 61/2026" with a state hint) routes to the right federal era tier by year — the 1945 Staatsgesetzblatt sits in the 1945–2003 tier beside the BGBl. — or to a state Landesgesetzblatt — falling back to that Bundesland’s pre-e-Recht series when the citation predates its switch; a case number ("Ro 2026/03/0016", "G 287/2022", "14Os49/26a", "2025-0.934.677", "W256 …") is matched to its court — a leading VfGH, VwGH, OGH, BVwG, or DSB names it ("VfGH G 13/2025"), court skips detection, and ambiguous formats probe up to two courts; an ECLI ("ECLI:AT:VFGH:2026:G13.2025") resolves to the decision that carries it; a collection number ("VfSlg 19.632/2012", "VwSlg 18.000 A/2010") resolves through the VfGH/VwGH collection — a VwSlg cite given without its part letter can name one decision in each of the two VwGH series, and comes back as ambiguous with both cites named rather than resolved to one of them. Matches are ranked before one is picked: a norm resolves to the hit whose abbreviation is the cited one, then the cited one plus a year ("EStG" → EStG 1988), then the cited one without a year RIS’s abbreviation omits, when the law’s short title carries it ("AlVG 1977" → AlVG), the exact §/Artikel label ahead of a prefixed one ("§ 1" before "Art. 2 § 1"), and a cite whose year matches nothing ("VwGVG 2014 §28") is searched once more without it, taking only the law filed under the cited abbreviation without that year and first promulgated no later than it ("VwGVG 2014" → VwGVG, not "AVG 1950" → the AVG of 1991), for a year no later than in_force_as_of’s; a case number resolves to the decision text, then to a Rechtssatz that decision leads; a gazette cite resolves only to an entry of the gazette it names (StGBl. and BGBl. share numbers in 1945, as the older gazettes do in their changeover years); and a "BGBl. Nr." cite without its part that matches more than one of parts I/II/III (from 1997 they reuse numbers) comes back as ambiguous with each part named. Returns the single best-matching document in the same shape as the corresponding search tool, with alternatives_count when more than one matched. A citation that cannot be classified or resolved returns found: false with next-step guidance — it never throws for a miss; only an upstream RIS outage is an error. For keyword rather than citation lookup, use ris_search_legislation or ris_search_case_law.

Input Schema

NameRequiredDescriptionDefault
kindNoForce a route, or auto (default) to classify by shape. Set explicitly when the citation shape is ambiguous.auto
courtNoCourt hint for a case number — short-circuits court detection, and a leading court name, to this court. An ECLI’s own court segment takes precedence; the hint is searched only for a segment this lookup does not map. Codes: ris_list_reference topic courts, minus normenliste (a norm index, which carries no case numbers).
stateNoBundesland hint — routes a norm to that state’s consolidated law (LrKons) and an LGBl. gazette to that state’s Landesgesetzblatt (LgblAuth, then the legacy Lgbl series for a citation predating the state’s e-Recht switch).
citationYesThe legal citation to resolve, e.g. "§ 6 DSG" or "DSG §1", "Art 10 B-VG", "BGBl. I Nr. 165/1999" or "BGBl I 2018/24", "Ro 2026/03/0016" or "VfGH G 13/2025", "ECLI:AT:VFGH:2026:G13.2025", or "VfSlg 19.632/2012".
in_force_as_ofNoFor a norm, resolve the version in force on this date (YYYY-MM-DD). Defaults to today in Austria.

Output Schema

NameRequiredDescriptionDefault
kindNoWhat the citation parsed as — "unknown" when it did not classify into any route.
errorNoPresent when the call failed. Absent on success.
foundNoTrue when the citation resolved to a single best-matching document.
recordNoThe resolved document, in the same normalized shape the corresponding search tool returns — ris_search_legislation for a norm, ris_search_case_law for a case or collection number, ris_search_gazette for a gazette. Present when found is true.
guidanceNoNext-step guidance naming a concrete tool. Present when found is false.
resolution_noteNoWhich application and filter resolved the citation. Present when found is true.
alternatives_countNoDocuments that also matched beyond the one returned — present only when more than one matched. List them all with the search tool named in resolution_note.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / citation / description
      Previous value: -"The legal citation to resolve, e.g. \"§ 6 DSG\" or \"DSG §1\", \"Art 10 B-VG\", \"BGBl. I Nr. 165/1999\", \"Ro 2026/03/0016\", or \"VfSlg 19.632/2012\"."New value: +"The legal citation to resolve, e.g. \"§ 6 DSG\" or \"DSG §1\", \"Art 10 B-VG\", \"BGBl. I Nr. 165/1999\" or \"BGBl I 2018/24\", \"Ro 2026/03/0016\" or \"VfGH G 13/2025\", \"ECLI:AT:VFGH:2026:G13.2025\", or \"VfSlg 19.632/2012\"."
    • changedInput schema / properties / court / description
      Previous value: -"Court hint for a case number — short-circuits court detection to this court. Codes: ris_list_reference topic courts, minus normenliste (a norm index, which carries no case numbers)."New value: +"Court hint for a case number — short-circuits court detection, and a leading court name, to this court. An ECLI’s own court segment takes precedence; the hint is searched only for a segment this lookup does not map. Codes: ris_list_reference topic courts, minus normenliste (a norm index, which carries no case numbers)."
  2. Changed6 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / additionalProperties
      Added value: +false
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "found",
      +      "kind"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / error
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "Present when the call failed. Absent on success.",
      +  "properties": {
      +    "code": {
      +      "description": "JSON-RPC error code for this failure.",
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "data": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "reason": {
      +          "description": "Machine-readable failure mode. Declared by this tool: `upstream_error`: A routed RIS search was unreachable, returned a server error, or served an HTML error page. An unparseable or unresolvable citation is NOT this error — it returns found: false. `upstream_timeout`: A routed RIS search did not answer within the request deadline. Other values are possible when a failure originates below the handler.",
      +          "examples": [
      +            "upstream_error",
      +            "upstream_timeout"
      +          ],
      +          "type": "string"
      +        },
      +        "recovery": {
      +          "additionalProperties": {},
      +          "description": "Actionable next step for the caller.",
      +          "properties": {
      +            "hint": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "hint"
      +          ],
      +          "type": "object"
      +        },
      +        "retryable": {
      +          "description": "Whether retrying may succeed.",
      +          "type": "boolean"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "message": {
      +      "description": "Human-readable description of what went wrong.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "code",
      +    "message"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / required
      Removed value: -[
      -  "found",
      -  "kind"
      -]
  3. Changed1 schema field changed
    • changedInput schema / properties / state / description
      Previous value: -"Bundesland hint — routes a norm to that state’s consolidated law (LrKons) and an LGBl. gazette to that state’s Landesgesetzblatt (LgblAuth)."New value: +"Bundesland hint — routes a norm to that state’s consolidated law (LrKons) and an LGBl. gazette to that state’s Landesgesetzblatt (LgblAuth, then the legacy Lgbl series for a citation predating the state’s e-Recht switch)."
  4. Changed4 schema fields changed
    • changedInput schema / properties / citation / description
      Previous value: -"The legal citation to resolve, e.g. \"§ 6 DSG\" or \"DSG §1\", \"Art 10 B-VG\", \"BGBl. I Nr. 165/1999\", \"Ra 2019/22/0184\", or \"VfSlg 19.632/2012\"."New value: +"The legal citation to resolve, e.g. \"§ 6 DSG\" or \"DSG §1\", \"Art 10 B-VG\", \"BGBl. I Nr. 165/1999\", \"Ro 2026/03/0016\", or \"VfSlg 19.632/2012\"."
    • changedInput schema / properties / court / description
      Previous value: -"Court hint for a case number — short-circuits court detection to this court. Codes: ris_list_reference topic courts."New value: +"Court hint for a case number — short-circuits court detection to this court. Codes: ris_list_reference topic courts, minus normenliste (a norm index, which carries no case numbers)."
    • changedInput schema / properties / court / enum
      Previous value: -[
      -  "vfgh",
      -  "vwgh",
      -  "justiz",
      -  "bvwg",
      -  "lvwg",
      -  "dsk",
      -  "normenliste",
      -  "dok",
      -  "pvak",
      -  "gbk",
      -  "uvs",
      -  "asylgh",
      -  "ubas",
      -  "umse",
      -  "bks",
      -  "verg",
      -  "upts"
      -]New value: +[
      +  "vfgh",
      +  "vwgh",
      +  "justiz",
      +  "bvwg",
      +  "lvwg",
      +  "dsk",
      +  "dok",
      +  "pvak",
      +  "gbk",
      +  "uvs",
      +  "asylgh",
      +  "ubas",
      +  "umse",
      +  "bks",
      +  "verg",
      +  "upts"
      +]
    • changedInput schema / properties / in_force_as_of / pattern
      Previous value: -"^\\d{4}-\\d{2}-\\d{2}$"New value: +"^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])$"
  5. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already establish read-only, idempotent, open-world behavior, but the description adds substantial context: unresolved citations return found:false rather than throwing, ambiguous cases return alternatives, EU acts point to EUR-Lex, and only upstream RIS outages are errors. These are meaningful behavioral disclosures beyond the annotations.

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

Conciseness2/5

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

The purpose is front-loaded, but the description is a very long wall of dense edge-case and ranking detail. Much of it is useful for a complex resolver, yet it is far from concise and risks overwhelming the agent with implementation minutiae.

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?

Given the complexity of Austrian citation resolution, the description is thorough: it covers norm, gazette, case-number, collection-number, and ECLI routes, plus ambiguity and failure behavior. With an output schema also present, nothing essential for correct invocation appears to be missing.

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

Parameters5/5

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

Schema coverage is already 100%, but the description adds real meaning about how kind routes are auto-detected, how court detection works, how state hints select LrKons or Landesgesetzblatt series, and how in_force_as_of is applied. It goes well beyond repeating the schema text.

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 a specific verb and resource: it resolves a single Austrian legal citation to its canonical RIS document deterministically. It explicitly distinguishes itself from keyword search and names the sibling search tools, so an agent can tell what it is for without opening the schema.

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

Usage Guidelines5/5

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

It clearly says this is for citation lookup rather than keyword lookup and directs keyword searches to ris_search_legislation or ris_search_case_law. It also explains the auto-detected citation routes, when to force kind, and how court and state hints affect routing.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.