Skip to main content
Glama

Search Austrian Gazettes

ris_search_gazette
Read-onlyIdempotent

Browse Austria’s promulgation record — the authentic, legally binding gazettes — at every level of government. scope picks the jurisdiction: federal (default; the Bundesgesetzblatt across three era tiers auto-routed by year — BgblAuth 2004+ authentic, BgblPdf 1945–2003, BgblAlt 1848–1940 metadata-only ÖNB scans; one call serves one tier, so a published_from/published_to interval crossing 2004-01-01 or 1945-01-01 is rejected with the boundaries to split at, and RIS carries no federal gazette for 1941–1944), one Bundesland (its Landesgesetzblatt), district (Bezirke promulgations), or municipal (Gemeinde promulgations). For a state scope, series selects law gazettes (law_gazette, the default → LGBl) vs ordinance gazettes (ordinance_gazette → Verordnungsblätter, currently Tirol only), and state_era picks which era of that series to search: current (the default → the authentic LGBl) or legacy (the state’s earlier non-authentic series — Niederösterreich’s systematic LgblNO, or the older Lgbl elsewhere; Wien carries neither, and ordinance gazettes have no legacy series). Filter by query (full text), title, number ("171/2026" — a pre-2004 number auto-routes to the right era tier), part (federal I/II/III or pre_1997), type (laws/regulations/announcements/other), published_from/to, issuer (federal or ordinance gazettes only), district_authority (district only), or municipality (municipal only). Every result carries a binding label (authentic vs historical_record vs consolidated_informational) and the amtssigniert authentic PDF wherever it exists — the binding artifact, never a paraphrase. For one known gazette number, ris_lookup_citation resolves it directly. Coverage windows, era tiers, and part semantics: ris_list_reference topic applications or gazette_parts.

Input Schema

NameRequiredDescriptionDefault
pageNo1-based result page. Default 1.
partNoFederal only. part1 (Gesetze) | part2 (Verordnungen) | part3 (Staatsverträge) — parts exist from 1997; pre_1997 searches the older partless BGBl (routes to the 1945–2003 tier). Semantics: ris_list_reference topic gazette_parts.
typeNoDocument-type filter (Typ) for federal and state law gazettes: laws (Gesetze) | regulations (Verordnungen) | announcements (Kundmachungen) | other (Sonstiges).
queryNoFull-text search (Suchworte). Boolean operators UND/ODER/NICHT or AND/OR/NOT, parentheses, quoted phrases; wildcard * is trailing-only. Syntax: ris_list_reference topic search_syntax. Omit to leave unfiltered; a blank value is rejected.
scopeNoJurisdiction level: federal (default — the Bundesgesetzblatt, era tier auto-routed), a Bundesland (burgenland … wien, its Landesgesetzblatt), district (Bezirke promulgations), or municipal (Gemeinde promulgations).federal
titleNoTitle search (Titel) — phrase field: * allowed leading or trailing with ≥2 characters beside it. Omit to leave unfiltered; a blank value is rejected.
issuerNoIssuing body — federal (EinbringendeStelle: a ministry abbreviation such as "BMF" or a full designation; an abbreviation missing from ris_list_reference topic ministries is rejected, a full designation missing from it is sent as written) or ordinance gazettes (Vbl Einbringer, exact match with no wildcards: Landeshauptmann/frau, Landesregierung, Amt der Landesregierung, Sonstige Landesbehörden) only. Omit to leave unfiltered; a blank value is rejected.
numberNoGazette number, e.g. "171/2026" (federal; the cited form "BGBl. II Nr. 171/2026" works from 2004 only — earlier tiers match the bare "194/1961"), "61/2026" (state), a Kundmachungsnummer (district/municipal). A trailing year routes a federal query to the right era tier; a bare number searches the current tier. Omit to leave unfiltered; a blank value is rejected.
seriesNoState scopes only. law_gazette (default when omitted) searches the authentic Landesgesetzblatt; ordinance_gazette searches the Verordnungsblätter (Vbl — currently Tirol only, 2022+).
sort_byNoSort column: published (Kundmachungsdatum) or number. Availability varies by tier; default: upstream order.
page_sizeNoDocuments per page, 1–100 (default 20). Served as a page of 10 (1–10) or 20 (11–100), with a notice when that differs. For more results, keep the size and raise page.
state_eraNoState scopes only. current (default when omitted) searches the authentic Landesgesetzblatt; legacy searches the state’s earlier non-authentic series — Niederösterreich’s systematic LgblNO collection, or the historical Lgbl for the other Bundesländer (Wien carries neither).
municipalityNoMunicipal only. Exact municipality name (Gemeinde), RIS’s spelling. Omit to leave unfiltered; a blank value is rejected.
published_toNoLatest promulgation date (YYYY-MM-DD). Federal: the interval must stay inside one era tier, so pair it with published_from — an interval crossing 2004-01-01 or 1945-01-01 is rejected with the boundaries to split at.
published_fromNoEarliest promulgation date (YYYY-MM-DD). A pre-2004 range routes a federal query to an earlier era tier. Federal: the interval must stay inside one tier — set published_to as well, since a one-sided bound is open into every tier beyond it.
sort_directionNoSort direction; applies with sort_by.
district_authorityNoDistrict only. Bezirksverwaltungsbehörde name, e.g. "Bezirkshauptmannschaft Liezen" — full list: ris_list_reference topic district_authorities. Omit to leave unfiltered; a blank value is rejected.

Output Schema

NameRequiredDescriptionDefault
pageNo1-based page number RIS served.
errorNoPresent when the call failed. Absent on success.
noticeNoThe served page size when it differs from page_size, then zero-hit guidance — the likely cause and the concrete next call.
resultsNoMatching gazette entries for the requested page. Totals, paging, and the served application in enrichment.
pageSizeNoPage size RIS applied.
truncatedNoPresent and true when more pages exist beyond this one — raise page to continue.
totalCountNoTotal matching entries across all pages.
servedApplicationNoThe RIS application that served the query — for federal, the single era tier auto-routed from the number’s year or the publication-date interval (BgblAuth 2004+, BgblPdf 1945–2003, BgblAlt 1848–1940); otherwise the resolved state/district/municipal application.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changed
    • changedInput schema / properties / page_size / description
      Previous value: -"Documents per page: 10 or 20 (default 20). For more results, keep the size and raise page."New value: +"Documents per page, 1–100 (default 20). Served as a page of 10 (1–10) or 20 (11–100), with a notice when that differs. For more results, keep the size and raise page."
    • removedInput schema / properties / page_size / enum
      Removed value: -[
      -  10,
      -  20
      -]
    • addedInput schema / properties / page_size / maximum
      Added value: +100
    • addedInput schema / properties / page_size / minimum
      Added value: +1
    • changedInput schema / properties / page_size / type
      Previous value: -"number"New value: +"integer"
    • changedOutput schema / properties / notice / description
      Previous value: -"Zero-hit guidance — names the likely cause and the concrete next call."New value: +"The served page size when it differs from page_size, then zero-hit guidance — the likely cause and the concrete next call."
    • changedOutput schema / properties / results / items / properties / celex_references / description
      Previous value: -"CELEX numbers of the EU acts this entry transposes — RIS CelexNummer metadata (BgblAuth, BgblPdf, LgblAuth; LgblNO CelexNummern) plus [CELEX-Nr.: …] title markers. LgblNO keeps the older form without the sector digit (383L0189) and corrigendum suffixes (394L0010R(01)). Empty when none."New value: +"CELEX numbers of the EU acts this entry transposes — RIS CelexNummer metadata (BgblAuth, BgblPdf, LgblAuth; LgblNO CelexNummern) plus [CELEX-Nr.: …] title markers. LgblNO keeps the older form with a two-digit year (383L0189) and corrigendum suffixes (394L0010R(01)). Empty when none."
  2. Changed7 schema fields changed
    • changedInput schema / properties / number / description
      Previous value: -"Gazette number, e.g. \"171/2026\" or \"BGBl. II Nr. 171/2026\" (federal), \"61/2026\" (state), a Kundmachungsnummer (district/municipal). A trailing year routes a federal query to the right era tier; a bare number searches the current tier. Omit to leave unfiltered; a blank value is rejected."New value: +"Gazette number, e.g. \"171/2026\" (federal; the cited form \"BGBl. II Nr. 171/2026\" works from 2004 only — earlier tiers match the bare \"194/1961\"), \"61/2026\" (state), a Kundmachungsnummer (district/municipal). A trailing year routes a federal query to the right era tier; a bare number searches the current tier. Omit to leave unfiltered; a blank value is rejected."
    • addedOutput schema / properties / results / items / properties / celex_references
      Added value: +{
      +  "description": "CELEX numbers of the EU acts this entry transposes — RIS CelexNummer metadata (BgblAuth, BgblPdf, LgblAuth; LgblNO CelexNummern) plus [CELEX-Nr.: …] title markers. LgblNO keeps the older form without the sector digit (383L0189) and corrigendum suffixes (394L0010R(01)). Empty when none.",
      +  "items": {
      +    "description": "One CELEX number of a transposed EU act, as RIS writes it.",
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / results / items / properties / issue
      Added value: +{
      +  "description": "Gazette issue (Stück) the entry appeared in — LgblNO StueckNummer, BgblAlt Stueck.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / results / items / properties / promulgation
      Added value: +{
      +  "description": "The gazette that carried the entry — on the 1945–2003 federal tier its citation (Fundstelle, e.g. \"StGBl. Nr. 1/1945\", \"BGBl. I Nr. 50/1999\"), on the 1848–1940 tier the gazette title (Kundmachungsorgan, e.g. \"Staatsgesetzblatt für die Republik Österreich\"). Gazettes filed in one tier can share a gazette_number — the 1945 StGBl. and BGBl., and the 1848–1940 gazettes in their changeover years — and this tells them apart.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / results / items / properties / start_page
      Added value: +{
      +  "description": "First page of the entry in the gazette volume (Anfangsseite) — BgblAlt only.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / results / items / properties / systematic_number
      Added value: +{
      +  "description": "Niederösterreich systematic classification number (Gliederungszahl, e.g. 0001/1-62) — LgblNO only, which carries no gazette number; cite an LgblNO entry by this plus issue.",
      +  "type": "string"
      +}
    • changedOutput schema / properties / results / items / required
      Previous value: -[
      -  "document_number",
      -  "binding",
      -  "content_urls"
      -]New value: +[
      +  "document_number",
      +  "celex_references",
      +  "binding",
      +  "content_urls"
      +]
  3. Changed18 schema fields changed
    • changedInput schema / properties / district_authority / description
      Previous value: -"District only. Bezirksverwaltungsbehörde name, e.g. \"Bezirkshauptmannschaft Liezen\" — full list: ris_list_reference topic district_authorities."New value: +"District only. Bezirksverwaltungsbehörde name, e.g. \"Bezirkshauptmannschaft Liezen\" — full list: ris_list_reference topic district_authorities. Omit to leave unfiltered; a blank value is rejected."
    • addedInput schema / properties / district_authority / pattern
      Added value: +"\\S"
    • changedInput schema / properties / issuer / description
      Previous value: -"Issuing body — federal (EinbringendeStelle, e.g. \"BMF\") or ordinance gazettes (Vbl Einbringer: Landeshauptmann/frau, Landesregierung, Amt der Landesregierung, Sonstige Landesbehörden) only. Phrase field."New value: +"Issuing body — federal (EinbringendeStelle: a ministry abbreviation such as \"BMF\" or a full designation; an abbreviation missing from ris_list_reference topic ministries is rejected, a full designation missing from it is sent as written) or ordinance gazettes (Vbl Einbringer, exact match with no wildcards: Landeshauptmann/frau, Landesregierung, Amt der Landesregierung, Sonstige Landesbehörden) only. Omit to leave unfiltered; a blank value is rejected."
    • addedInput schema / properties / issuer / pattern
      Added value: +"\\S"
    • changedInput schema / properties / municipality / description
      Previous value: -"Municipal only. Exact municipality name (Gemeinde), RIS’s spelling."New value: +"Municipal only. Exact municipality name (Gemeinde), RIS’s spelling. Omit to leave unfiltered; a blank value is rejected."
    • addedInput schema / properties / municipality / pattern
      Added value: +"\\S"
    • changedInput schema / properties / number / description
      Previous value: -"Gazette number, e.g. \"171/2026\" or \"BGBl. II Nr. 171/2026\" (federal), \"61/2026\" (state), a Kundmachungsnummer (district/municipal). A trailing year routes a federal query to the right era tier; a bare number searches the current tier."New value: +"Gazette number, e.g. \"171/2026\" or \"BGBl. II Nr. 171/2026\" (federal), \"61/2026\" (state), a Kundmachungsnummer (district/municipal). A trailing year routes a federal query to the right era tier; a bare number searches the current tier. Omit to leave unfiltered; a blank value is rejected."
    • addedInput schema / properties / number / pattern
      Added value: +"\\S"
    • removedInput schema / properties / page_size / anyOf
      Removed value: -[
      -  {
      -    "const": 10,
      -    "type": "number"
      -  },
      -  {
      -    "const": 20,
      -    "type": "number"
      -  },
      -  {
      -    "const": 50,
      -    "type": "number"
      -  },
      -  {
      -    "const": 100,
      -    "type": "number"
      -  }
      -]
    • changedInput schema / properties / page_size / description
      Previous value: -"Documents per page — RIS accepts 10, 20, 50, or 100. Default 20."New value: +"Documents per page: 10 or 20 (default 20). For more results, keep the size and raise page."
    • addedInput schema / properties / page_size / enum
      Added value: +[
      +  10,
      +  20
      +]
    • addedInput schema / properties / page_size / type
      Added value: +"number"
    • changedInput schema / properties / query / description
      Previous value: -"Full-text search (Suchworte). Boolean operators UND/ODER/NICHT or AND/OR/NOT, parentheses, quoted phrases; wildcard * is trailing-only. Syntax: ris_list_reference topic search_syntax."New value: +"Full-text search (Suchworte). Boolean operators UND/ODER/NICHT or AND/OR/NOT, parentheses, quoted phrases; wildcard * is trailing-only. Syntax: ris_list_reference topic search_syntax. Omit to leave unfiltered; a blank value is rejected."
    • addedInput schema / properties / query / pattern
      Added value: +"\\S"
    • changedInput schema / properties / title / description
      Previous value: -"Title search (Titel) — phrase field: * allowed leading or trailing with ≥2 characters beside it."New value: +"Title search (Titel) — phrase field: * allowed leading or trailing with ≥2 characters beside it. Omit to leave unfiltered; a blank value is rejected."
    • addedInput schema / properties / title / pattern
      Added value: +"\\S"
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `scope_filter_mismatch`: A filter was combined with a scope that does not support it (part off federal; series/state_era off a state scope; district_authority off district; municipality off municipal; issuer outside federal/ordinance gazettes), or series: ordinance_gazette was combined with state_era: legacy (ordinance gazettes have no legacy counterpart) — rejected locally before any upstream call; the message names the offending pair. `cross_tier_range`: A federal published_from/published_to interval overlaps more than one Bundesgesetzblatt era tier (BgblAuth 2004+, BgblPdf 1945–2003, BgblAlt 1848–1940) — including a one-sided bound, which is open into every tier beyond it. Rejected locally before any upstream call: one call serves exactly one application, so a spanning range would return the records of a single tier and silently omit the rest of the interval. A year-bearing number or part: pre_1997 names the tier outright and is never rejected. `invalid_query`: A page past the last page of results; or a parameter the resolved gazette does not carry — sort_by, number, type, part, issuer, or a state absent from the historical Lgbl series — rejected locally before any upstream call, naming the field and the gazette that rejected it (by scope/series/state_era, or for a federal era tier by its window and the input that routed there); or RIS rejecting a value in-band (the Client error message is passed through verbatim, in German, and it does not name the page). `upstream_error`: RIS is unreachable, returned a server error, or served an HTML error page. `upstream_timeout`: RIS did not answer the search within the request deadline. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `scope_filter_mismatch`: A filter was combined with a scope that does not support it (part off federal; series/state_era off a state scope; district_authority off district; municipality off municipal; issuer outside federal/ordinance gazettes), or series: ordinance_gazette was combined with state_era: legacy (ordinance gazettes have no legacy counterpart) — rejected locally before any upstream call; the message names the offending pair. `cross_tier_range`: A federal published_from/published_to interval overlaps more than one Bundesgesetzblatt era tier (BgblAuth 2004+, BgblPdf 1945–2003, BgblAlt 1848–1940) — including a one-sided bound, which is open into every tier beyond it. Rejected locally before any upstream call: one call serves exactly one application, so a spanning range would return the records of a single tier and silently omit the rest of the interval. A year-bearing number or part: pre_1997 names the tier outright and is never rejected. `unresolved_ministry`: A federal issuer is an abbreviation-shaped value matching no row of the RIS ministries table (the message names the closest matches), or a ministry the table lists only for another issuer parameter (the message names the parameters that accept it) — rejected locally before any upstream call. A value the table does not know that contains a space is sent to RIS as written instead. `invalid_query`: A page past the last page of results; or a parameter the resolved gazette does not carry — sort_by, number, type, part, issuer, or a state absent from the historical Lgbl series — rejected locally before any upstream call, naming the field and the gazette that rejected it (by scope/series/state_era, or for a federal era tier by its window and the input that routed there); or RIS rejecting a value in-band (the Client error message is passed through verbatim, in German, and it does not name the page). `upstream_error`: RIS is unreachable, returned a server error, or served an HTML error page. `upstream_timeout`: RIS did not answer the search within the request deadline. Other values are possible when a failure originates below the handler."
    • changedOutput schema / properties / error / properties / data / properties / reason / examples
      Previous value: -[
      -  "scope_filter_mismatch",
      -  "cross_tier_range",
      -  "invalid_query",
      -  "upstream_error",
      -  "upstream_timeout"
      -]New value: +[
      +  "scope_filter_mismatch",
      +  "cross_tier_range",
      +  "unresolved_ministry",
      +  "invalid_query",
      +  "upstream_error",
      +  "upstream_timeout"
      +]
  4. 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": [
      +      "results",
      +      "totalCount",
      +      "page",
      +      "pageSize",
      +      "servedApplication"
      +    ]
      +  },
      +  {
      +    "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: `scope_filter_mismatch`: A filter was combined with a scope that does not support it (part off federal; series/state_era off a state scope; district_authority off district; municipality off municipal; issuer outside federal/ordinance gazettes), or series: ordinance_gazette was combined with state_era: legacy (ordinance gazettes have no legacy counterpart) — rejected locally before any upstream call; the message names the offending pair. `cross_tier_range`: A federal published_from/published_to interval overlaps more than one Bundesgesetzblatt era tier (BgblAuth 2004+, BgblPdf 1945–2003, BgblAlt 1848–1940) — including a one-sided bound, which is open into every tier beyond it. Rejected locally before any upstream call: one call serves exactly one application, so a spanning range would return the records of a single tier and silently omit the rest of the interval. A year-bearing number or part: pre_1997 names the tier outright and is never rejected. `invalid_query`: A page past the last page of results; or a parameter the resolved gazette does not carry — sort_by, number, type, part, issuer, or a state absent from the historical Lgbl series — rejected locally before any upstream call, naming the field and the gazette that rejected it (by scope/series/state_era, or for a federal era tier by its window and the input that routed there); or RIS rejecting a value in-band (the Client error message is passed through verbatim, in German, and it does not name the page). `upstream_error`: RIS is unreachable, returned a server error, or served an HTML error page. `upstream_timeout`: RIS did not answer the search within the request deadline. Other values are possible when a failure originates below the handler.",
      +          "examples": [
      +            "scope_filter_mismatch",
      +            "cross_tier_range",
      +            "invalid_query",
      +            "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: -[
      -  "results",
      -  "totalCount",
      -  "page",
      -  "pageSize",
      -  "servedApplication"
      -]
  5. Changed3 schema fields changed
    • changedInput schema / properties / published_from / description
      Previous value: -"Earliest promulgation date (YYYY-MM-DD). A pre-2004 range routes a federal query to an earlier era tier."New value: +"Earliest promulgation date (YYYY-MM-DD). A pre-2004 range routes a federal query to an earlier era tier. Federal: the interval must stay inside one tier — set published_to as well, since a one-sided bound is open into every tier beyond it."
    • changedInput schema / properties / published_to / description
      Previous value: -"Latest promulgation date (YYYY-MM-DD)."New value: +"Latest promulgation date (YYYY-MM-DD). Federal: the interval must stay inside one era tier, so pair it with published_from — an interval crossing 2004-01-01 or 1945-01-01 is rejected with the boundaries to split at."
    • changedOutput schema / properties / servedApplication / description
      Previous value: -"The RIS application that served the query — for federal, the era tier auto-routed by year (BgblAuth 2004+, BgblPdf 1945–2003, BgblAlt 1848–1940); otherwise the resolved state/district/municipal application."New value: +"The RIS application that served the query — for federal, the single era tier auto-routed from the number’s year or the publication-date interval (BgblAuth 2004+, BgblPdf 1945–2003, BgblAlt 1848–1940); otherwise the resolved state/district/municipal application."
  6. Changed2 schema fields changed
    • changedInput schema / properties / published_from / 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])$"
    • changedInput schema / properties / published_to / 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])$"
  7. Changed2 schema fields changed
    • removedInput schema / properties / include_non_authentic
      Removed value: -{
      -  "description": "State scopes only. Adds the historical non-authentic state gazette — Niederösterreich’s systematic LgblNO, or the older Lgbl for the other Bundesländer (Wien is not carried).",
      -  "type": "boolean"
      -}
    • addedInput schema / properties / state_era
      Added value: +{
      +  "description": "State scopes only. current (default when omitted) searches the authentic Landesgesetzblatt; legacy searches the state’s earlier non-authentic series — Niederösterreich’s systematic LgblNO collection, or the historical Lgbl for the other Bundesländer (Wien carries neither).",
      +  "enum": [
      +    "current",
      +    "legacy"
      +  ],
      +  "type": "string"
      +}
  8. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already mark it read-only/idempotent/open-world, but the description adds real behavioral context: intervals crossing 2004-01-01 or 1945-01-01 are rejected with the boundaries to split at, no federal gazette exists for 1941–1944, Wien has no legacy series, and page_size is silently served as 10 or 20 with a notice. It also discloses that results carry binding labels and amtssigniert PDFs rather than paraphrases.

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

Conciseness4/5

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

Purpose and scope selection are front-loaded and no sentence is filler, which is defensible for a 17-parameter tool with era-routing rules. However, it is delivered as one dense multi-clause paragraph whose nested parentheticals make the filter list harder to scan than it needs to be.

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 17 optional parameters, an output schema, and full annotation coverage, the description supplies everything an agent needs: scope/era routing, interval-splitting constraints, filter applicability, and the meaning of the binding labels returned. Nothing material is missing.

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?

Schema coverage is 100%, so most parameter meaning is already structured. The description still adds cross-parameter applicability semantics (issuer federal/ordinance only, district_authority district only, municipality municipal only, number with a trailing year routes the era tier) that help an agent plan a call rather than read each field in isolation.

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?

Opens with a specific verb and resource ("Browse Austria's promulgation record — the authentic, legally binding gazettes") and immediately names the jurisdiction levels. It distinguishes itself from siblings by routing single-citation lookups to ris_lookup_citation and reference semantics to ris_list_reference.

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?

Explicitly states when to use this vs ris_lookup_citation ("For one known gazette number..."), and gives conditional rules for every scope: federal era auto-routing, the 1945/2004 split requirement, the 1941–1944 coverage gap, series/state_era interplay, and which filters apply to which scope. Little is left to inference.

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.