Skip to main content
Glama

RIS MCP Server

CI npm version License: MIT Node.js MCP MCP Registry

An MCP (Model Context Protocol) server that gives AI assistants access to Austria's official legal database — the Rechtsinformationssystem (RIS).

Ask your AI assistant about Austrian law, and it will search and retrieve legal documents directly from the official government API. No API key required.

What You Can Do

Once connected, you can ask your AI assistant things like:

"What does Austrian law say about tenancy rights?"

"Find Constitutional Court decisions on freedom of expression."

"Show me §1295 of the ABGB (Austrian Civil Code)."

"What laws about climate protection were published in 2024?"

"Look up the building code for the province of Salzburg."

"Get the full text of document NOR40052761."

The server translates these natural language requests into structured API calls against the RIS Open Government Data API.

Related MCP server: ris-mcp

Features

  • 12 specialized tools covering all major RIS collections

  • Federal law (ABGB, StGB, UGB, ...) and state law for all 9 provinces

  • Court decisions from 16 court types (Supreme Court, Constitutional Court, Administrative Court, ...)

  • Law gazettes — Federal (BGBl) and state (LGBl)

  • Government bills, ministerial decrees, cabinet protocols

  • Full document retrieval with smart prefix-based routing

  • Change history tracking across 36 application types

  • Interactive result list (MCP Apps) in hosts that support it — with a full text answer everywhere else

  • Markdown and JSON output formats

  • Free and open — uses Austria's Open Government Data API, no API key needed

Quick Start

Run directly without installation:

pnpm dlx ris-mcp-ts

Or install globally:

pnpm add -g ris-mcp-ts

Configuration

Claude Desktop

Add to your Claude Desktop config (Settings > Developer > Edit Config):

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "ris": {
      "command": "npx",
      "args": ["-y", "ris-mcp-ts"]
    }
  }
}

Note: The "Add custom connector" UI in Claude Desktop only supports remote MCP servers (HTTP/SSE). Local stdio servers like this one must be configured via the JSON file.

Tip: You can also use pnpm dlx instead of npx in all configuration examples if you prefer pnpm.

Claude Code

Add to your project or user settings:

claude mcp add ris -- npx -y ris-mcp-ts

VS Code (GitHub Copilot)

Add to .vscode/mcp.json in your project:

{
  "servers": {
    "ris": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "ris-mcp-ts"]
    }
  }
}

Cursor

Add to .cursor/mcp.json in your project (or ~/.cursor/mcp.json for global access):

{
  "mcpServers": {
    "ris": {
      "command": "npx",
      "args": ["-y", "ris-mcp-ts"]
    }
  }
}

Windsurf

Add to your Windsurf MCP config at ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "ris": {
      "command": "npx",
      "args": ["-y", "ris-mcp-ts"]
    }
  }
}

Other MCP Clients

Any MCP-compatible client can connect via stdio transport:

npx -y ris-mcp-ts
# or: pnpm dlx ris-mcp-ts

Available Tools

Tool

Description

ris_bundesrecht

Search federal laws (ABGB, StGB, UGB, etc.)

ris_landesrecht

Search state/provincial laws (all 9 provinces)

ris_judikatur

Search court decisions (16 court types)

ris_bundesgesetzblatt

Search Federal Law Gazettes (BGBl I/II/III)

ris_landesgesetzblatt

Search State Law Gazettes (LGBl)

ris_regierungsvorlagen

Search government bills

ris_dokument

Retrieve full document text by ID or URL

ris_bezirke

Search district authority announcements

ris_gemeinden

Search municipal law and regulations

ris_sonstige

Search miscellaneous collections (8 sub-apps)

ris_history

Track document change history (36 app types)

ris_verordnungen

Search state ordinance gazettes

Interactive Result List

One widget, all eleven search tools. There is a single interactive result list, and every search tool renders into it: federal law, state law, case law, the federal and state law gazettes, government bills, district authority announcements, municipal law, the miscellaneous collections, change history and the ordinance gazettes. The screenshots below are the same widget in two different hosts, not two different features.

ris_dokument opens a reader instead. A single document can run to a quarter of a million characters, far past what one answer may carry, so the viewer loads it section by section as you scroll, offers an outline to jump by where the document has one, and links back into RIS. The full text still reaches the chat either way — the widget is never the only copy.

Hosts that support the MCP Apps extension render the hits as an interactive list — page through results without retyping the search, open a document in the browser, or request its full text with one click. The widget follows the host's light or dark theme; the shots below show both.

Example Prompts

RIS is a German-language database, so these work best in German. Each of these lands on a different tool:

"Zeig mir das Verbrauchergewährleistungsgesetz" — ris_bundesrecht

"Finde aktuelle OGH-Rechtsprechung zu Verjährung" — ris_judikatur

"Was steht im Tiroler Landesrecht zum Naturschutz?" — ris_landesrecht

"Zeig mir BGBl. I Nr. 175/2021" — ris_bundesgesetzblatt

In a host without MCP Apps support the same prompts return the full text answer instead — see the table below.

Host

What you get

claude.ai

Result list (pagination, document links) + document viewer (outline navigation, lazy loading)

ChatGPT

Result list (pagination) + document viewer (outline navigation, lazy loading)

Claude Code, and any client without MCP Apps support

The regular text results, unchanged

The chat answer is always complete. The widgets are an addition to it, never a replacement — a host that does not render them loses nothing.

Tool Reference

Search Austrian federal laws such as ABGB, StGB, UGB, and more.

Inputs:

Parameter

Type

Description

suchworte

string

Full-text search (e.g., "Mietrecht", "Schadenersatz")

titel

string

Search in law titles (e.g., "ABGB", "Strafgesetzbuch")

paragraph

string

Section number (e.g., "1295" for §1295, "7" for Art 7)

abschnitt_typ

string

Type of section paragraph refers to: "Paragraph" (default), "Artikel" (article-based laws like B-VG), "Anlage" (annex)

applikation

string

"BrKons" (consolidated, default), "Begut" (drafts), "BgblAuth" (gazette), "Erv" (English translations)

fassung_vom

string

Date for historical version (YYYY-MM-DD)

seite

number

Page number (default: 1)

limit

number

Results per page: 10, 20, 50, 100 (default: 20)

response_format

string

"markdown" (default) or "json"

All parameters are optional. At least one search parameter (suchworte, titel, or paragraph) should be provided.

Note: applikation="Erv" (English translations) uses a different parameter vocabulary internally (SearchTerms/Title) and does not support paragraph/abschnitt_typ or fassung_vom.

Search state laws of the nine Austrian provinces.

Inputs:

Parameter

Type

Description

suchworte

string

Full-text search

titel

string

Search in law titles

bundesland

string

Province: Wien, Niederoesterreich, Oberoesterreich, Salzburg, Tirol, Vorarlberg, Kaernten, Steiermark, Burgenland

paragraph

string

Section number (e.g., "1" for §1, "7" for Art 7)

abschnitt_typ

string

Type of section paragraph refers to: "Paragraph" (default), "Artikel", "Anlage"

fassung_vom

string

Date for historical version (YYYY-MM-DD)

gesetzesnummer

string

Exact law number (Gesetzesnummer) of a specific state law

applikation

string

"LrKons" (consolidated, default)

seite

number

Page number

limit

number

Results per page

response_format

string

"markdown" or "json"

Search court decisions from Austrian courts.

Inputs:

Parameter

Type

Description

suchworte

string

Full-text search in decisions

gerichtsbarkeit

string

Court system / data collection to search — the RIS "Applikation" (see below; default "Justiz")

dokumenttyp

string

"rechtssatz" (headnotes only), "entscheidungstext" (full texts only), or "beide" (both, default)

gericht

string

Actual court within the jurisdiction (e.g., "OGH", "OLG Wien"); applies to gerichtsbarkeit="Justiz"

rechtsgebiet

string

Broad legal area: "Zivilrecht" or "Strafrecht" (Justiz)

fachgebiet

string

OGH subject area (e.g., "Arbeitsrecht"); Justiz, needs dokumenttyp "entscheidungstext"/"beide"

entscheidungsart

string

Decision type (e.g., "Erkenntnis", "Beschluss"); allowed values differ by jurisdiction

sammlungsnummer

string

Collection number: VfSlg (Vfgh) or VwSlg (Vwgh)

norm

string

Legal norm (e.g., "1319a ABGB")

geschaeftszahl

string

Case number (e.g., "5Ob234/20b")

entscheidungsdatum_von

string

Decision date from (YYYY-MM-DD)

entscheidungsdatum_bis

string

Decision date to (YYYY-MM-DD)

sortierung

string

Sort by decision date: "datum_auf" (oldest first) or "datum_ab" (newest first)

seite

number

Page number

limit

number

Results per page

response_format

string

"markdown" or "json"

Available gerichtsbarkeit values (16):

Value

Court system

Justiz

Supreme Court (OGH), Higher Regional Courts (OLG), Regional Courts (LG) — default

Vfgh

Constitutional Court

Vwgh

Supreme Administrative Court

Bvwg

Federal Administrative Court

Lvwg

Provincial Administrative Courts

Dsk

Data Protection Authority

AsylGH

Asylum Court (historical, until 2013)

Normenliste

Index of legal norms

Pvak

Personnel Representation Supervisory Commission

Gbk

Equal Treatment Commission

Dok

Disciplinary Commission

Verg

Federal Procurement Office (historical, dissolved 2014)

Uvs

Independent Administrative Senates (historical, dissolved 2014)

Ubas

Independent Federal Asylum Senate (historical, dissolved 2014)

Umse

Environmental Senate (historical, dissolved 2014)

Bks

Federal Communications Board (historical, dissolved 2014)

Search the Federal Law Gazette (BGBl) — official publications of federal legislation.

Inputs:

Parameter

Type

Description

bgblnummer

string

Gazette number (e.g., "120")

teil

string

"1" (I = Acts), "2" (II = Regulations), "3" (III = Treaties)

jahrgang

string

Year (e.g., "2023")

suchworte

string

Full-text search

titel

string

Search in titles

applikation

string

"BgblAuth" (authentic from 2004, default), "BgblPdf" (PDF), "BgblAlt" (1945–2003)

seite

number

Page number

limit

number

Results per page

response_format

string

"markdown" or "json"

Search State Law Gazettes (LGBl) — official publications of state legislation.

Inputs:

Parameter

Type

Description

lgblnummer

string

Gazette number (e.g., "50")

jahrgang

string

Year (e.g., "2023")

bundesland

string

Province name

suchworte

string

Full-text search

titel

string

Search in titles

applikation

string

"LgblAuth" (authentic, default), "Lgbl" (general), "LgblNO" (Niederoesterreich)

seite

number

Page number

limit

number

Results per page

response_format

string

"markdown" or "json"

Search government bills — draft legislation submitted to parliament.

Inputs:

Parameter

Type

Description

suchworte

string

Full-text search

titel

string

Search in titles

beschlussdatum_von

string

Approval date from (YYYY-MM-DD)

beschlussdatum_bis

string

Approval date to (YYYY-MM-DD)

einbringende_stelle

string

Submitting ministry (e.g., BKA, BMF, BMJ, BMK)

im_ris_seit

string

Added recently: EinerWoche, ZweiWochen, EinemMonat, DreiMonaten, SechsMonaten, EinemJahr

sortierung_richtung

string

Ascending or Descending

sortierung_spalte

string

Kurztitel, EinbringendeStelle, Beschlussdatum

seite

number

Page number

limit

number

Results per page

response_format

string

"markdown" or "json"

Retrieve the full text of a legal document by its ID or URL. Uses a dual strategy: direct URL access first, then search API fallback.

Inputs:

Parameter

Type

Description

dokumentnummer

string

RIS document number (e.g., "NOR40052761")

url

string

Direct URL to document content

response_format

string

"markdown" (default) or "json"

At least one of dokumentnummer or url is required. Long documents are truncated to 25,000 characters.

Supported document prefixes:

Prefix

Type

NOR

Federal norms

LBG, LKT, LNO, LOO, LSB, LST, LTI, LVB, LWI

State laws (9 provinces)

JWR, JWT

Supreme Administrative Court (VwGH)

JFR, JFT

Constitutional Court (VfGH)

JJR, JJT

Ordinary courts (Justiz)

BVWG, LVWG

Federal / State Administrative Courts

DSB, PDK, GBK, PVAB, DKT, NL, ASYLGH

Data protection, equal treatment, personnel, disciplinary, norm lists, asylum

VERG, JUR, JUT, UBAS, UMSE, BKS

Historical jurisdictions (dissolved 2014)

BGBLA, BGBL, BGBLPDF

Federal Law Gazette (authentic / 1945–2003 / PDF)

REGV

Government bills

BVB

District authorities

VBL

Ordinance gazettes

MRP, ERL, PRUEF, AVSV, SPG, KMGER

Cabinet protocols, decrees, trade exams, social insurance, health plans, court announcements

The full routing registry lives in DOCUMENT_ROUTES (src/client.ts); unknown prefixes fall back to a Justiz search.

Search announcements from district administrative authorities.

Note: Only available for: Niederoesterreich, Oberoesterreich, Tirol, Vorarlberg, Burgenland, Steiermark.

Inputs:

Parameter

Type

Description

suchworte

string

Full-text search

titel

string

Search in titles

bundesland

string

Province name

bezirksverwaltungsbehoerde

string

District authority name

kundmachungsnummer

string

Announcement number

kundmachungsdatum_von

string

Date from (YYYY-MM-DD)

kundmachungsdatum_bis

string

Date to (YYYY-MM-DD)

im_ris_seit

string

Added recently: EinerWoche, ZweiWochen, EinemMonat, DreiMonaten, SechsMonaten, EinemJahr

seite

number

Page number

limit

number

Results per page

response_format

string

"markdown" or "json"

Search municipal law — local ordinances and regulations.

Inputs:

Parameter

Type

Description

suchworte

string

Full-text search

titel

string

Search in titles

bundesland

string

Province name

gemeinde

string

Municipality name (e.g., "Graz")

applikation

string

"Gr" (municipal law, default) or "GrA" (official gazettes)

im_ris_seit

string

Added recently

seite

number

Page number

limit

number

Results per page

response_format

string

"markdown" or "json"

Additional parameters depend on the selected application. See Gr (municipal law) and GrA (official gazettes) specific parameters in the source code.

Search miscellaneous legal collections and specialized databases.

Inputs:

Parameter

Type

Description

applikation

string

Required. Collection to search (see below)

suchworte

string

Full-text search

titel

string

Search in titles

datum_von

string

Date from (YYYY-MM-DD)

datum_bis

string

Date to (YYYY-MM-DD)

im_ris_seit

string

Added recently

seite

number

Page number

limit

number

Results per page

response_format

string

"markdown" or "json"

Available collections:

Value

Description

Mrp

Cabinet protocols (Ministerratsprotokolle)

Erlaesse

Ministerial decrees

Upts

Party transparency reports

KmGer

Court announcements

Avsv

Social insurance regulations

Avn

Veterinary notices

Spg

Health structure plans

PruefGewO

Trade licensing exams

Each collection has additional specific parameters. See the tool description for details.

Track document creation, modification, and deletion across the RIS database.

Inputs:

Parameter

Type

Description

applikation

string

Required. Application type (36 options — see below)

aenderungen_von

string

Changes from date (YYYY-MM-DD)

aenderungen_bis

string

Changes to date (YYYY-MM-DD)

include_deleted

boolean

Include deleted documents (default: false)

seite

number

Page number

limit

number

Results per page

response_format

string

"markdown" or "json"

Available applications (36):

Federal law: Bundesnormen, BgblAuth, BgblAlt, BgblPdf, RegV State law: Landesnormen, LgblAuth, Lgbl, LgblNO, Vbl, Gemeinderecht, GemeinderechtAuth Case law: Justiz, Vfgh, Vwgh, Bvwg, Lvwg, Dsk, Gbk, Pvak, AsylGH Other: Bvb, Mrp, Erlaesse, PruefGewO, Avsv, Spg, KmGer, Dok, Normenliste Historical (jurisdictions dissolved on 2014-01-01, change history still tracked): Verg, Upts, Uvs, Ubas, Umse, Bks

Search state ordinance gazettes (Verordnungsblätter).

Note: Currently only data from Tirol is available (since January 2022).

Inputs:

Parameter

Type

Description

suchworte

string

Full-text search

titel

string

Search in titles

bundesland

string

Province name

kundmachungsnummer

string

Announcement number

kundmachungsdatum_von

string

Date from (YYYY-MM-DD)

kundmachungsdatum_bis

string

Date to (YYYY-MM-DD)

seite

number

Page number

limit

number

Results per page

response_format

string

"markdown" or "json"

Development

Prerequisites

  • Node.js >= 20.19.0 (required by the Vite 7 widget build)

Setup

git clone https://github.com/Honeyfield-Org/ris-mcp-ts.git
cd ris-mcp-ts
pnpm install
pnpm run build

Scripts

Script

Description

pnpm run dev

Start with hot reload (tsx)

pnpm run build

Compile TypeScript

pnpm start

Run compiled version

pnpm test

Run the server tests

pnpm run test:ui

Run the widget tests (jsdom)

pnpm run gen:ui

Build the widget bundle into src/generated/ (runs automatically before dev/test/typecheck)

pnpm run check

Typecheck + lint + format check + both test suites

pnpm run inspect

Launch MCP Inspector for manual testing

Project Structure

src/
├── index.ts           # Entry point (stdio transport)
├── server.ts          # MCP server setup, delegates to tools/
├── client.ts          # HTTP client for RIS API
├── types.ts           # Zod schemas + TypeScript types
├── parser.ts          # JSON parsing and response normalization
├── formatting.ts      # Output formatting (markdown/json)
├── helpers.ts         # Shared helper functions
├── constants.ts       # Static mappings and configuration
├── widgets.ts         # MCP Apps widget resource + tool metadata
├── tools/             # One file per tool handler
│   ├── index.ts
│   ├── bundesrecht.ts
│   ├── landesrecht.ts
│   ├── judikatur.ts
│   └── ...
└── __tests__/         # Unit and integration tests

ui/                    # Widget sources (browser code, built by Vite)
├── trefferliste/      # The result-list widget
└── shared/            # Host bridge, shared states and theme

Contributing

See CONTRIBUTING.md for guidelines.

License

MIT


Built on the Open Government Data API provided by the Austrian Federal Chancellery (Bundeskanzleramt).

Available Tools

13 tools
ris_bezirkeBezirksverwaltungsbehörden durchsuchenA
Read-only

Search Austrian district administrative authority announcements (Kundmachungen der Bezirksverwaltungsbehörden).

Use this tool to find announcements and ordinances from district administrative authorities.

Note: Only certain states publish here: Niederösterreich, Oberösterreich, Tirol, Vorarlberg, Burgenland, Steiermark.

Example queries:

  • bundesland="Niederösterreich", suchworte="Bauordnung"

  • bezirksverwaltungsbehoerde="Bezirkshauptmannschaft Innsbruck"

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page: 10, 20, 50, or 100 (default: 20)
seiteNoPage number (default: 1)
titelNoSearch in titles
suchworteNoFull-text search terms
bundeslandNoFilter by state - Burgenland, Kärnten, Niederösterreich, Oberösterreich, Salzburg, Steiermark, Tirol, Vorarlberg, Wien
im_ris_seitNoFilter by time in RIS
response_formatNo"markdown" (default) or "json"markdown
kundmachungsnummerNoAnnouncement number
kundmachungsdatum_bisNoAnnouncement date to (YYYY-MM-DD)
kundmachungsdatum_vonNoAnnouncement date from (YYYY-MM-DD)
bezirksverwaltungsbehoerdeNoDistrict authority name (e.g., "Bezirkshauptmannschaft Innsbruck", "Bezirkshauptmannschaft Amstetten")

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYesPage number of this result set (1-based)
queryNoEcho of the validated search parameters alongside the tool name — re-issue the call with an incremented "seite" for the next page
has_moreYesWhether further result pages are available
documentsYesThe documents on this page
page_sizeYesNumber of documents per page
total_hitsYesTotal number of documents in RIS matching the search

TDQS

A4.1/5.0
Behavior4/5

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

The description adds useful behavioral context beyond annotations, such as the note that only certain states publish here (Niederösterreich, Oberösterreich, Tirol, Vorarlberg, Burgenland, Steiermark). Annotations already declare readOnlyHint=true and destructiveHint=false, so the description does not need to restate safety. It does not contradict annotations.

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

Conciseness4/5

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

The description is concise and front-loaded: the first sentence states the main purpose, followed by usage guidance, a caveat, and examples. The structure is efficient with no redundancy, though it could be slightly tighter by merging the first two sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there are 11 optional parameters, a full schema, an output schema, and annotations, the description provides sufficient context: the tool's scope, the limitation on participating states, and example queries. It does not need to explain return values because the output schema exists.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The schema already provides detailed descriptions for all 11 parameters (e.g., 'Results per page: 10, 20, 50, or 100 (default: 20)'). The description's example queries demonstrate parameter usage but do not add new semantic meaning beyond what the schema already defines.

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 clearly states the tool's purpose: 'Search Austrian district administrative authority announcements (Kundmachungen der Bezirksverwaltungsbehörden).' The verb 'search' combined with the specific resource (district administrative authority announcements) distinguishes it from sibling RIS tools like ris_bundesrecht or ris_judikatur.

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 when to use the tool ('find announcements and ordinances from district administrative authorities') and includes example queries. However, it does not explicitly state when not to use it or mention alternative tools for other RIS content, so it misses the 'explicit when-not' criterion for a 5.

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

ris_bundesgesetzblattBundesgesetzblatt durchsuchenA
Read-only

Search Austrian Federal Law Gazettes (Bundesgesetzblatt).

Use this tool for historical research and tracking when laws were enacted. Contains official publications of federal laws, ordinances, and treaties.

Example queries:

  • bgblnummer="120", jahrgang="2023", teil="1" -> Find specific gazette

  • suchworte="Klimaschutz" -> Full-text search in gazettes

ParametersJSON Schema
NameRequiredDescriptionDefault
teilNoPart - "1" (I=Laws), "2" (II=Ordinances), "3" (III=Treaties)
limitNoResults per page: 10, 20, 50, or 100 (default: 20)
seiteNoPage number (default: 1)
titelNoSearch in gazette titles
jahrgangNoYear (e.g., "2023")
suchworteNoFull-text search terms
bgblnummerNoGazette number (e.g., "120")
applikationNo"BgblAuth" (authentic 2004+, default), "BgblPdf" (PDF), "BgblAlt" (1945-2003)BgblAuth
response_formatNo"markdown" (default) or "json"markdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYesPage number of this result set (1-based)
queryNoEcho of the validated search parameters alongside the tool name — re-issue the call with an incremented "seite" for the next page
has_moreYesWhether further result pages are available
documentsYesThe documents on this page
page_sizeYesNumber of documents per page
total_hitsYesTotal number of documents in RIS matching the search

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already cover readOnlyHint and destructiveHint, lowering the bar. The description adds context about the corpus (official publications) but doesn't disclose behavioral traits like pagination, rate limits, or response format. Even though the schema covers some of these, the description adds no additional behavioral context beyond what annotations already imply.

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 front-loaded with the main purpose, followed by a clear usage directive and valuable example queries. It contains no fluff or redundant information, making it highly concise and well-structured.

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?

With 9 optional parameters, an output schema, and strong annotations, the description sufficiently covers what the tool does, when to use it, and how parameters can be combined. The example queries provide practical invocation guidance, making the tool easy to select and use correctly.

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 description coverage is 100%, so baseline is 3. The description provides example queries (e.g., bgblnummer='120', jahrgang='2023', teil='1' and suchworte='Klimaschutz') that illustrate how parameters combine for specific use cases, adding meaningful semantic guidance beyond the raw 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 clearly states 'Search Austrian Federal Law Gazettes (Bundesgesetzblatt)', identifying the specific resource and action. It also notes the gazette contains official publications of federal laws, ordinances, and treaties, distinguishing it from sibling tools like ris_bundesrecht or ris_judikatur.

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 explicitly directs when to use the tool: 'Use this tool for historical research and tracking when laws were enacted.' It also gives concrete example queries for common use cases. However, it does not mention alternatives or when not to use it, so it stops 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.

ris_bundesrechtBundesrecht durchsuchenA
Read-only

Search Austrian federal laws (Bundesrecht).

Use this tool to find Austrian federal legislation like ABGB, StGB, UGB, etc.

Search strategy: "titel" and "paragraph" are the precise entry points — prefer them whenever the law or the section is known ("paragraph" is ignored for applikation="Erv", the English translations). "suchworte" runs a broad full-text search and the RIS API returns those hits ordered alphabetically by law title, not by relevance, so a common term buries the relevant law under thousands of results. Austrian law often splits one topic across several statutes, so look for a companion law: warranty, for example, is covered both by the VGG (consumer sales, B2C, in force since 2022) and by §§ 922 ff ABGB (general warranty law, including B2B).

Example queries:

  • suchworte="Mietrecht" -> Find laws mentioning rent law

  • titel="ABGB", paragraph="1295" -> Find specific ABGB section

  • titel="B-VG", paragraph="7", abschnitt_typ="Artikel" -> Article-based laws

  • titel="ABGB", fassung_vom="2015-01-01" -> Consolidated version as of a date

  • applikation="Begut" -> Search draft legislation

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page: 10, 20, 50, or 100 (default: 20)
seiteNoPage number (default: 1)
titelNoSearch in law titles (e.g., "ABGB", "Strafgesetzbuch")
paragraphNoSection number to search for (e.g., "1295" for §1295, "7" for Art 7)
suchworteNoBroad full-text search terms (e.g., "Mietrecht", "Schadenersatz"). Hits come back ordered alphabetically by law title, not by relevance — prefer "titel" and/or "paragraph" whenever the law or the section is known.
applikationNoData source - "BrKons" (consolidated, default), "Begut" (drafts), "BgblAuth" (gazette), "Erv" (English translations)BrKons
fassung_vomNoConsolidated version as of this date (YYYY-MM-DD) — retrieves the law text as it stood on that day. Not supported for "Erv".
abschnitt_typNoType of section that "paragraph" refers to: "Paragraph" (default), "Artikel" (article-based laws like B-VG), or "Anlage" (annex). "Art 7 B-VG" requires "Artikel".Paragraph
response_formatNo"markdown" (default) or "json"markdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYesPage number of this result set (1-based)
queryNoEcho of the validated search parameters alongside the tool name — re-issue the call with an incremented "seite" for the next page
has_moreYesWhether further result pages are available
documentsYesThe documents on this page
page_sizeYesNumber of documents per page
total_hitsYesTotal number of documents in RIS matching the search

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=true, destructiveHint=false), the description discloses crucial behavioral quirks: 'suchworte' results are ordered alphabetically by law title; 'paragraph' is ignored for applikation='Erv'; and 'fassung_vom' retrieves the law as it stood on a specific date. These add significant operational context that the annotations do not cover, making API behavior predictable.

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 structured with a clear opening, a 'Search strategy' section, and a bulleted 'Example queries' list. Every sentence adds value: the strategy section explains when to use which parameter, and the examples cover diverse use cases. Despite its length, it is densely informative and well-organized, not wasteful.

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?

With 9 parameters, an output schema, and annotations, the description covers the essential search scenarios, edge cases (Erv ignoring paragraph, alphabetical sorting), and concrete examples. It addresses the main risks (buried results, article-based laws, versioned texts) without needing to duplicate schema details. Given the tool's complexity, this is a complete and self-sufficient guide.

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?

Although the schema already has 100% parameter coverage, the description adds substantial meaning: it explains that 'titel' and 'paragraph' are precise for known laws, that 'suchworte' is a broad but poorly ordered fallback, that 'abschnitt_typ' is required for article-based laws like B-VG, and that 'paragraph' is ignored for 'Erv'. The example queries further illustrate combinations. This enriches the schema beyond mere parameter names.

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

Purpose5/5

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

The description opens with 'Search Austrian federal laws (Bundesrecht)' and follows with 'Use this tool to find Austrian federal legislation like ABGB, StGB, UGB, etc.' This is a specific verb+resource statement. It clearly distinguishes from siblings like ris_landesrecht (state law) and ris_judikatur (case law) by explicitly stating the federal law scope.

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 explicit search-strategy guidance: 'titel and paragraph are the precise entry points — prefer them whenever the law or the section is known' and warns that 'suchworte' returns hits ordered alphabetically, not by relevance. It does not explicitly name sibling tools or state when to prefer this tool over them, but the federal-law scope is clear from the title and description. This is strong context with no explicit exclusions, so a 4 is appropriate.

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

ris_dokumentDokument abrufenA
Read-only

Retrieve full text of a legal document.

Use this after searching to load the complete text of a specific law or decision.

Note: For long documents, content may be truncated. Use specific searches to narrow down.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoDirect URL to document content
dokumentnummerNoRIS document number (e.g., "NOR40052761") - from search results
response_formatNo"markdown" (default) or "json"markdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
textYesThe document text, identical to the text content block — truncated at 25000 characters with a German notice when the document is longer
outlineNoJump targets of the document. Returned for a truncated markdown response whose outline is small enough to travel with it — a document that fits in one response has nothing to navigate to, and a statute-sized outline is fetched with the next section instead
source_urlNoRIS URL the document text was rendered from
total_lengthYesLength of the string "text" was cut from — the full rendered document in the requested format; greater than the length of "text" when the document was truncated
dokumentnummerNoRIS document number of this document, echoed from the request

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already provide readOnlyHint and destructiveHint, so the base safety profile is clear. The description adds valuable behavior: content may be truncated for long documents, and the tool is intended for post-search retrieval. No contradiction with annotations.

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

Conciseness5/5

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

Three sentences: purpose, usage context, and truncation caution. Each sentence adds distinct value, no waste, and the most important information is front-loaded.

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?

The tool is simple (3 optional params, output schema present), and annotations cover safety. The description covers what it does, when to use it, and warns about truncation. No significant gaps remain.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are already well-documented. The description does not add details beyond the schema, but it does reinforce that parameters come from search results. This meets the baseline for full schema coverage.

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 clearly states 'Retrieve full text of a legal document' with a specific verb and resource. It distinguishes this retrieval tool from sibling search tools by positioning it as the post-search step ('Use this after searching').

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?

Provides explicit context: 'Use this after searching to load the complete text of a specific law or decision.' It also includes a caution about truncation. However, it does not name alternative tools for sections or searches, so differentiation is implied rather than explicit.

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

ris_dokument_abschnittDokumentabschnittA
Read-only

Return one section of a document already open in the RIS document viewer. Intended for the viewer widget, not for direct use — for the full text of a document use ris_dokument.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoDirect URL of the open document, for documents opened by URL rather than by number
offsetNoCharacter offset into the document text; 0 returns the first section and the outline
dokumentnummerNoRIS document number of the open document - from the ris_dokument call that opened it

Output Schema

ParametersJSON Schema
NameRequiredDescription
textYesThe requested section of the document text
outlineNoJump targets of the document. Only returned for offset 0; empty when the document has no headings
source_urlNoRIS URL the document text was rendered from
next_offsetYesOffset to request for the following section, or null at the end of the document
total_lengthYesLength of the complete document text — compare across calls to detect that the document was re-fetched and offsets shifted
dokumentnummerNoRIS document number of the document this section belongs to

TDQS

A4.4/5.0
Behavior4/5

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

The description adds valuable behavioral context beyond the annotations by stating the tool operates on a document 'already open in the RIS document viewer,' implying a stateful prerequisite. Annotations already cover read-only and non-destructive traits, and the description does not contradict them.

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 only two sentences, front-loaded with the core purpose and followed by usage context. Every word earns its place, with no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and the existence of a rich schema and output schema, the description covers the essential context: what it does, when it's intended, and an alternative. It could mention which parameter to use for document identification, but the schema descriptions handle that, so completeness is solid.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description itself does not elaborate on parameter relationships or usage; it relies entirely on the schema, which sufficiently documents each parameter. No additional semantic value is provided.

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 clearly states the tool returns one section of an already-open document, with a specific verb ('Return') and resource ('one section of a document'). It also explicitly distinguishes from the sibling ris_dokument by noting that ris_dokument is for full text, making the purpose unambiguous.

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 provides explicit usage guidance: intended for the viewer widget and not for direct use, with a clear alternative for full-text retrieval ('use ris_dokument'). This precisely tells the agent when to use this tool and when not to.

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

ris_gemeindenGemeinderecht durchsuchenA
Read-only

Search Austrian municipal law (Gemeinderecht).

Use this tool to find municipal regulations and local ordinances.

Applications:

  • Gr: Municipal law (Gemeinderecht) - default

  • GrA: Cross-border municipal law (Gemeinderecht Authentisch/Amtsblätter)

Example queries:

  • gemeinde="Graz", suchworte="Parkgebuehren"

  • bundesland="Tirol", titel="Gebuehrenordnung"

  • applikation="Gr", index="Baurecht"

  • applikation="GrA", bezirk="Bregenz"

ParametersJSON Schema
NameRequiredDescriptionDefault
indexNoSubject area index (Gr only) - VertretungskoerperUndAllgemeineVerwaltung, OeffentlicheOrdnungUndSicherheit, UnterrichtErziehungSportUndWissenschaft, KunstKulturUndKultus, SozialeWohlfahrtUndWohnbaufoerderung, Gesundheit, StraßenUndWasserbauVerkehr, Wirtschaftsfoerderung, Dienstleistungen, Finanzwirtschaft
limitNoResults per page: 10, 20, 50, or 100 (default: 20)
seiteNoPage number (default: 1)
titelNoSearch in titles
bezirkNoDistrict name (GrA only, e.g., "Bregenz")
gemeindeNoMunicipality name (e.g., "Graz")
suchworteNoFull-text search terms
bundeslandNoFilter by state - Burgenland, Kärnten, Niederösterreich, Oberösterreich, Salzburg, Steiermark, Tirol, Vorarlberg, Wien
applikationNo"Gr" (municipal law, default) or "GrA" (cross-border/Amtsblätter)Gr
fassung_vomNoHistorical version date (YYYY-MM-DD, Gr only)
im_ris_seitNoFilter by time in RIS - EinerWoche, ZweiWochen, EinemMonat, DreiMonaten, SechsMonaten, EinemJahr
geschaeftszahlNoFile number/Aktenzeichen (Gr only)
gemeindeverbandNoMunicipal association name (GrA only)
response_formatNo"markdown" (default) or "json"markdown
kundmachungsnummerNoAnnouncement number (GrA only)
sortierung_richtungNoSort direction
sortierung_spalte_grNoSort column (Gr only)
kundmachungsdatum_bisNoAnnouncement date to (YYYY-MM-DD, GrA only)
kundmachungsdatum_vonNoAnnouncement date from (YYYY-MM-DD, GrA only)

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYesPage number of this result set (1-based)
queryNoEcho of the validated search parameters alongside the tool name — re-issue the call with an incremented "seite" for the next page
has_moreYesWhether further result pages are available
documentsYesThe documents on this page
page_sizeYesNumber of documents per page
total_hitsYesTotal number of documents in RIS matching the search

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering safety. The description adds behavioral context by defining the Gr and GrA applications and providing example query structures. However, it doesn't disclose pagination or rate limits, but those are not essential given the annotations and output schema.

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

Conciseness4/5

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

The description is moderately sized with clear sections for purpose, usage, applications, and examples. It is front-loaded with the core purpose. The examples add length but are directly useful. Some repetition of schema info could be trimmed, but overall it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 19 optional parameters, a complete search tool description needs examples and guidance, which are provided. The output schema exists so return values need not be described. The description covers the main use cases and variant applications, though it could mention how results are sorted/paginated. Overall it is adequate for the complexity.

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 all 19 parameters have descriptions. The description adds value through example queries that show parameter combinations (e.g., gemeinde='Graz', suchworte='Parkgebuehren') and clarifies which parameters belong to Gr vs GrA (though some of that is already in schema descriptions). This goes beyond the baseline of 3.

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 clearly states 'Search Austrian municipal law (Gemeinderecht)' with a specific verb and resource, and further clarifies 'municipal regulations and local ordinances.' This distinguishes it from sibling tools for federal law (ris_bundesrecht), state law (ris_landesrecht), and case law (ris_judikatur).

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 explicitly says 'Use this tool to find municipal regulations and local ordinances,' providing clear context. It also explains the Gr/GrA application variants and gives example queries, but does not explicitly state when to prefer an alternative tool or exclude other RIS tools. This is slightly less explicit than the 'search_calls_extensive' alternative example.

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

ris_historyÄnderungshistorie durchsuchenA
Read-only

Search document change history (Aenderungshistorie).

Use this tool to track changes to legal documents over time. Shows when documents were created, modified, or deleted.

Available applications (30 total):

  • Bundesrecht: Bundesnormen, BgblAuth, BgblAlt, BgblPdf, RegV

  • Landesrecht: Landesnormen, LgblAuth, Lgbl, LgblNO, Vbl, Gemeinderecht, GemeinderechtAuth

  • Judikatur: Justiz, Vfgh, Vwgh, Bvwg, Lvwg, Dsk, Gbk, Pvak, AsylGH

  • Sonstige: Bvb, Mrp, Erlaesse, PruefGewO, Avsv, Spg, KmGer, Dok, Normenliste

Example queries:

  • applikation="Bundesnormen", aenderungen_von="2024-01-01", aenderungen_bis="2024-01-31"

  • applikation="Justiz", aenderungen_von="2024-06-01"

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page: 10, 20, 50, or 100 (default: 20)
seiteNoPage number (default: 1)
applikationYesApplication to search history for - categories: Bundesrecht (Bundesnormen, BgblAuth, BgblAlt, BgblPdf, RegV), Landesrecht (Landesnormen, LgblAuth, Lgbl, LgblNO, Vbl, Gemeinderecht), Judikatur (Justiz, Vfgh, Vwgh, Bvwg, Lvwg, Dsk, Gbk, Pvak, AsylGH), Sonstige (Bvb, Mrp, Erlaesse, PruefGewO, Avsv, Spg, KmGer, Dok, Normenliste)
aenderungen_bisNoChanges to date (YYYY-MM-DD)
aenderungen_vonNoChanges from date (YYYY-MM-DD)
include_deletedNoInclude deleted documents in results (default: false)
response_formatNo"markdown" (default) or "json"markdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYesPage number of this result set (1-based)
queryNoEcho of the validated search parameters alongside the tool name — re-issue the call with an incremented "seite" for the next page
has_moreYesWhether further result pages are available
documentsYesThe documents on this page
page_sizeYesNumber of documents per page
total_hitsYesTotal number of documents in RIS matching the search

TDQS

A3.9/5.0
Behavior3/5

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

With annotations already declaring readOnlyHint=true and destructiveHint=false, the description adds context about tracking creation/modification/deletion events. It does not disclose pagination behavior or result size limits, but the annotations cover the safety profile, so a mid-range score is appropriate.

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

Conciseness4/5

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

The description is front-loaded with purpose, then usage, then a well-organized list of applications, and ends with concrete examples. It is somewhat long due to the app list, but the structure and examples make it readable and each section earns its place. Minor duplication with the schema's enum is acceptable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, usage, applications, and provides two example queries, which is sufficient for a read-only search tool with an output schema and good parameter descriptions. Slight concern: the description claims '30 total' applications while the schema enum provides 36, creating a minor inconsistency, but overall the tool is well-specified.

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

Parameters3/5

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

Schema description coverage is 100%, with each parameter already described in detail. The tool description adds example queries showing combinations of applikation and date range, but these examples reinforce, rather than add new meaning, to the parameter semantics. Thus baseline 3 is warranted.

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 a specific verb+resource: 'Search document change history' and explains it tracks changes to legal documents over time, showing when documents were created, modified, or deleted. It clearly distinguishes from sibling tools by focusing on the historical view across multiple applications, rather than specific document types.

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 explicitly says 'Use this tool to track changes to legal documents over time,' giving clear context for when to apply it. However, it does not mention alternatives or when not to use it, so it stops short of full when/when-not guidance.

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

ris_judikaturJudikatur durchsuchenA
Read-only

Search Austrian court decisions (Judikatur).

Use this tool to find court decisions from Austrian courts. Choose the jurisdiction via "gerichtsbarkeit" (which court system to search).

RIS distinguishes two document kinds, controlled by "dokumenttyp":

  • Rechtssatz: abstract legal principle / headnote (Leitsatz) distilled from a decision

  • Entscheidungstext: the full decision text including reasoning (Begruendung) The default "beide" searches both for the most complete results.

Example queries:

  • gerichtsbarkeit="Vfgh", suchworte="Grundrecht" -> Constitutional Court decisions

  • suchworte="Schadenersatz", gericht="OGH" -> Only Supreme Court (OGH) decisions

  • norm="1295 ABGB" -> Which decisions cite §1295 ABGB?

  • gerichtsbarkeit="Justiz", fachgebiet="Arbeitsrecht", sortierung="datum_ab" -> Newest labor-law decisions

ParametersJSON Schema
NameRequiredDescriptionDefault
normNoSearch by legal norm (e.g., "1319a ABGB")
limitNoResults per page: 10, 20, 50, or 100 (default: 20)
seiteNoPage number
gerichtNoFilter by the actual court within the jurisdiction (e.g., "OGH", "OLG Wien"). Applies to gerichtsbarkeit="Justiz".
suchworteNoFull-text search in decisions
fachgebietNoSubject area of OGH case law (e.g., "Arbeitsrecht", "Insolvenzrecht"). Applies to gerichtsbarkeit="Justiz" and only matches full decision texts (requires dokumenttyp "entscheidungstext" or "beide").
sortierungNoSort by decision date: "datum_auf" (oldest first) or "datum_ab" (newest first).
dokumenttypNoWhich document kind to search: "rechtssatz" (abstract headnotes only), "entscheidungstext" (full decision texts only), or "beide" (both, default). The RIS API otherwise searches only Rechtssätze.beide
rechtsgebietNoBroad legal area: "Zivilrecht" or "Strafrecht". Applies to gerichtsbarkeit="Justiz".
geschaeftszahlNoCase number (e.g., "5Ob234/20b")
gerichtsbarkeitNoCourt system / data collection to search (maps to the RIS "Applikation"): "Justiz" (OGH/OLG/LG/BG, default), "Vfgh" (Constitutional), "Vwgh" (Administrative), "Bvwg", "Lvwg", "Dsk" (Data Protection), "AsylGH", "Normenliste", "Pvak", "Gbk", "Dok", plus historical (dissolved 2014, stock still searchable): "Verg", "Uvs", "Ubas", "Umse", "Bks"Justiz
response_formatNo"markdown" or "json"markdown
sammlungsnummerNoCollection number: VfSlg (gerichtsbarkeit="Vfgh") or VwSlg (gerichtsbarkeit="Vwgh").
entscheidungsartNoType of decision. Allowed values differ by jurisdiction, e.g. Vfgh/Vwgh/Bvwg: "Beschluss", "Erkenntnis"; Lvwg also "Bescheid"; Justiz: "Verstärkter Senat", "Ordentliche Erledigung (Sachentscheidung)".
entscheidungsdatum_bisNoDecision date to (YYYY-MM-DD)
entscheidungsdatum_vonNoDecision date from (YYYY-MM-DD)

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYesPage number of this result set (1-based)
queryNoEcho of the validated search parameters alongside the tool name — re-issue the call with an incremented "seite" for the next page
has_moreYesWhether further result pages are available
documentsYesThe documents on this page
page_sizeYesNumber of documents per page
total_hitsYesTotal number of documents in RIS matching the search

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, which the description aligns with. The description adds valuable behavioral context beyond annotations, such as the distinction between Rechtssatz and Entscheidungstext, the default behavior of searching both, and the note that the RIS API otherwise searches only Rechtssätze. It also discloses the requirement that fachgebiet only matches full decision texts, which is not apparent from the schema alone.

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 well-structured: a one-line summary, a concise explanation of document kinds, and a bullet-like list of example queries. Each section earns its place, with the most important information front-loaded and examples at the end. It is thorough without being bloated, achieving excellent readability for an AI agent.

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 complex tool with 16 parameters and no required fields, the description provides ample context to invoke it correctly. It covers key dimensions: scope, document types, jurisdiction selection, parameter constraints, and example queries. It also notes historical data collections that remain searchable. The presence of an output schema and rich parameter descriptions means the description does not need to explain return formats, making this level of completeness ideal.

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%, with every parameter having a description, defaults, and enums. The description adds synergy by tying parameters together in examples (e.g., 'gerichtsbarkeit="Justiz", fachgebiet="Arbeitsrecht", sortierung="datum_ab"') and clarifying nuanced behaviors like the interaction between fachgebiet and dokumenttyp. This exceeds the baseline 3 by providing guidance on how to combine parameters effectively.

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

Purpose5/5

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

The description opens with a specific verb+resource: 'Search Austrian court decisions (Judikatur).' It clearly distinguishes this tool from siblings by focusing on case law (Judikatur) rather than legislative texts. It further differentiates document kinds (Rechtssatz vs. Entscheidungstext) and gives concrete examples, leaving 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 Guidelines4/5

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

The description provides clear when-to-use guidance through multiple example queries (e.g., 'gerichtsbarkeit="Vfgh", suchworte="Grundrecht"' and 'norm="1295 ABGB"'). It explains applicable jurisdictions and parameter constraints, such as fachgebiet only applying to Justiz and requiring dokumenttyp 'entscheidungstext' or 'beide'. It stops short of explicitly naming alternative sibling tools, but the context strongly implies when this tool is appropriate.

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

ris_landesgesetzblattLandesgesetzblatt durchsuchenA
Read-only

Search Austrian State Law Gazettes (Landesgesetzblatt).

Use this tool to find official publications of state/provincial laws. Covers all 9 federal states (Bundeslaender).

Example queries:

  • lgblnummer="50", jahrgang="2023", bundesland="Wien"

  • suchworte="Bauordnung", bundesland="Salzburg"

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page: 10, 20, 50, or 100 (default: 20)
seiteNoPage number (default: 1)
titelNoSearch in gazette titles
jahrgangNoYear (e.g., "2023")
suchworteNoFull-text search terms
bundeslandNoFilter by state - Wien, Niederoesterreich, Oberoesterreich, Salzburg, Tirol, Vorarlberg, Kaernten, Steiermark, Burgenland
lgblnummerNoGazette number (e.g., "50")
applikationNo"LgblAuth" (authentic, default), "Lgbl" (general), "LgblNO" (Lower Austria)LgblAuth
response_formatNo"markdown" (default) or "json"markdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYesPage number of this result set (1-based)
queryNoEcho of the validated search parameters alongside the tool name — re-issue the call with an incremented "seite" for the next page
has_moreYesWhether further result pages are available
documentsYesThe documents on this page
page_sizeYesNumber of documents per page
total_hitsYesTotal number of documents in RIS matching the search

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds behavioral context by stating the geographic coverage (all 9 states) and providing example queries that show how parameters combine. This goes beyond the annotations, though it does not describe edge cases or response format (not needed due to output schema).

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 and front-loaded with the main purpose. It includes two example queries that are highly informative without being verbose. Every sentence contributes value, and there is no redundant repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (9 parameters, output schema provided, rich annotations), the description is sufficiently complete. It clarifies the tool's domain, scope, and usage with examples. The only minor gap is not explicitly differentiating from ris_landesrecht, but the name and description make the gazette focus clear.

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 description coverage is 100%, which already explains all 9 parameters. The description adds value with example queries that demonstrate how to use specific parameters like lgblnummer, jahrgang, bundesland, and suchworte together. This enriches the parameter semantics beyond the schema's isolated definitions.

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 explicitly states 'Search Austrian State Law Gazettes (Landesgesetzblatt)' with a specific verb and resource. It adds that it covers all 9 federal states, which distinguishes it from sibling tools like ris_bundesgesetzblatt or ris_landesrecht. The purpose is unmistakable.

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 says 'Use this tool to find official publications of state/provincial laws,' providing clear context for when to use it. It does not explicitly name alternatives or state when not to use it, but the scope (state gazettes) is clear enough to guide tool selection.

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

ris_landesrechtLandesrecht durchsuchenA
Read-only

Search Austrian state/provincial laws (Landesrecht).

Use this tool to find laws enacted by Austrian federal states (Bundeslaender).

Search strategy: "titel" and "paragraph" (together with "bundesland") are the precise entry points — prefer them whenever the law or the section is known. "suchworte" runs a broad full-text search and the RIS API returns those hits ordered alphabetically by law title, not by relevance, so a common term buries the relevant law under thousands of results. Austrian law often splits one topic across several statutes and across the federal/state divide — when the topic turns out to be federal rather than state law (warranty, for example, sits in the VGG and in §§ 922 ff ABGB), search it with ris_bundesrecht instead.

Example queries:

  • suchworte="Bauordnung", bundesland="Salzburg" -> Find state building law

  • titel="Bauordnung", bundesland="Wien", paragraph="1" -> Specific section

  • suchworte="Naturschutz", bundesland="Tirol", fassung_vom="2020-01-01" -> Version as of a date

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page: 10, 20, 50, or 100 (default: 20)
seiteNoPage number
titelNoSearch in law titles
paragraphNoSection number to search for (e.g., "1" for §1, "7" for Art 7)
suchworteNoBroad full-text search terms. Hits come back ordered alphabetically by law title, not by relevance — prefer "titel" and/or "paragraph" whenever the law or the section is known.
bundeslandNoFilter by state - Wien, Niederoesterreich, Oberoesterreich, Salzburg, Tirol, Vorarlberg, Kaernten, Steiermark, Burgenland
applikationNo"LrKons" (consolidated, default)LrKons
fassung_vomNoConsolidated version as of this date (YYYY-MM-DD) — retrieves the law text as it stood on that day.
abschnitt_typNoType of section that "paragraph" refers to: "Paragraph" (default), "Artikel", or "Anlage" (annex).Paragraph
gesetzesnummerNoExact law number (Gesetzesnummer) for a specific state law
response_formatNo"markdown" or "json"markdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYesPage number of this result set (1-based)
queryNoEcho of the validated search parameters alongside the tool name — re-issue the call with an incremented "seite" for the next page
has_moreYesWhether further result pages are available
documentsYesThe documents on this page
page_sizeYesNumber of documents per page
total_hitsYesTotal number of documents in RIS matching the search

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already indicate read-only and open-world behavior, but the description adds valuable behavioral details: suchworte results are ordered alphabetically not by relevance, and Austrian legal topics are often split across federal/state laws. These traits aren't obvious from annotations and help the agent anticipate search outcomes.

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 well-structured: it opens with a clear one-sentence purpose, then provides usage strategy, and ends with example queries. Every sentence carries useful information, and the length is appropriate for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 11 parameters and an output schema, the description provides sufficient context for correct selection and invocation. It covers purpose, alternative tools, search strategies, and concrete examples, making it complete for real usage.

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 covers all parameters, but the description adds strategic meaning beyond the field descriptions. It explains how parameters like 'titel', 'paragraph', and 'suchworte' should be used together, provides example queries, and warns about the suchworte behavior (which is repeated in the schema but reinforced with examples).

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 clearly states the tool searches Austrian state/provincial laws (Landesrecht) and explicitly distinguishes it from ris_bundesrecht for federal laws. It uses a specific verb and resource, making the tool's purpose unambiguous and differentiated from siblings.

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?

The description provides explicit when-to-use guidance: it recommends using 'titel' and 'paragraph' for precise searches, warns against 'suchworte' due to alphabetical ordering, and directs users to ris_bundesrecht for federal law topics. This goes beyond general context and gives concrete decision rules.

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

ris_regierungsvorlagenRegierungsvorlagen durchsuchenA
Read-only

Search Austrian Government Bills (Regierungsvorlagen).

Use this tool for legislative history and parliamentary materials. Contains government proposals submitted to parliament.

Example queries:

  • suchworte="Klimaschutz" -> Full-text search in bills

  • einbringende_stelle="BMF (Bundesministerium für Finanzen)" -> Bills from Finance Ministry

  • beschlussdatum_von="2024-01-01", beschlussdatum_bis="2024-12-31" -> Bills from 2024

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page: 10, 20, 50, or 100 (default: 20)
seiteNoPage number (default: 1)
titelNoSearch in bill titles
suchworteNoFull-text search terms
im_ris_seitNoFilter by time in RIS
response_formatNo"markdown" (default) or "json"markdown
sortierung_spalteNoSort by column
beschlussdatum_bisNoDecision date to (YYYY-MM-DD)
beschlussdatum_vonNoDecision date from (YYYY-MM-DD)
einbringende_stelleNoFilter by submitting ministry
sortierung_richtungNoSort direction

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYesPage number of this result set (1-based)
queryNoEcho of the validated search parameters alongside the tool name — re-issue the call with an incremented "seite" for the next page
has_moreYesWhether further result pages are available
documentsYesThe documents on this page
page_sizeYesNumber of documents per page
total_hitsYesTotal number of documents in RIS matching the search

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds content context ('Contains government proposals submitted to parliament') and demonstrates search patterns, but does not disclose behaviors like result language, pagination limits, or API-specific quirks. With annotations covering the critical safety aspects, this is adequate but not exceptional.

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

Conciseness4/5

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

The description is well-structured: a clear one-line purpose, a usage sentence, a content sentence, and three examples. It is not overly verbose, and every section serves a purpose. It loses a point for slight redundancy in the first two sentences, both of which emphasize the bill topic, but overall it is tight and informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of a rich output schema, exhaustive parameter descriptions, and readOnly annotations, the description does not need to explain return values or safety. It adequately covers what the tool searches, when to use it, and how to formulate queries. It is complete for the average agent, though a note about German-language results or the 'openWorldHint' could push it to a 5.

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 has 100% description coverage, so the baseline is 3. The description goes beyond by providing concrete example queries that map to parameters (suchworte, einbringende_stelle, beschlussdatum_von/bis), clarifying how to combine them and what the expected outcome is (e.g., bills from 2024). This adds practical meaning beyond the raw 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 opens with 'Search Austrian Government Bills (Regierungsvorlagen)', a specific verb+resource statement that clearly distinguishes this tool from siblings like ris_bundesrecht or ris_judikatur. It further narrows scope with 'government proposals submitted to parliament', eliminating ambiguity.

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?

Explicitly states 'Use this tool for legislative history and parliamentary materials', giving a clear when-to-use context. It does not name alternatives, but the domain is distinct enough from siblings (laws, court decisions, ordinances) to imply exclusions. Example queries further illustrate realistic use cases.

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

ris_sonstigeSonstige Sammlungen durchsuchenA
Read-only

Search miscellaneous Austrian legal collections (Sonstige).

Use this tool for specialized legal documents and historical materials.

Available applications:

  • PruefGewO: Trade licensing examinations (Gewerbeordnung)

  • Avsv: Social insurance announcements (Sozialversicherung)

  • Spg: Health structure plans (Strukturpläne Gesundheit)

  • Avn: Official veterinary notices (Amtliche Veterinärnachrichten)

  • KmGer: Court announcements (Kundmachungen der Gerichte)

  • Upts: Party transparency decisions (Parteien-Transparenz-Senat)

  • Mrp: Council of Ministers protocols (Ministerratsprotokolle)

  • Erlaesse: Ministerial decrees (Erlässe der Bundesministerien)

Example queries:

  • applikation="Mrp", suchworte="Budget", einbringer="BMF..."

  • applikation="Erlaesse", bundesministerium="Bundesministerium für Finanzen"

  • applikation="Upts", partei="SPÖ - Sozialdemokratische Partei Österreichs"

  • applikation="KmGer", kmger_typ="Geschaeftsordnung"

  • applikation="Avsv", dokumentart="Richtlinie"

ParametersJSON Schema
NameRequiredDescriptionDefault
normNoLegal norm reference (for Erlaesse, Upts)
limitNoResults per page: 10, 20, 50, or 100 (default: 20)
seiteNoPage number (default: 1)
titelNoSearch in titles
parteiNoPolitical party (Upts only)
avn_typNoNotice type (Avn only) - Kundmachung, Verordnung, Erlass
gerichtNoCourt name (KmGer only)
osg_typNoAustrian health structure plan type (Spg only) - ÖSG, ÖSG - Großgeräteplan
rsg_typNoRegional health structure plan type (Spg only) - RSG, RSG - Großgeräteplan
urheberNoAuthor/institution (Avsv only)
rsg_landNoFederal state for RSG (Spg only)
abteilungNoDepartment/division (Erlaesse only)
avnnummerNoAVN number (Avn only)
datum_bisNoDate to (YYYY-MM-DD)
datum_vonNoDate from (YYYY-MM-DD)
kmger_typNoAnnouncement type (KmGer only) - Geschaeftsordnung, Geschaeftsverteilung
spgnummerNoSPG number (Spg only)
suchworteNoFull-text search terms
avsvnummerNoAVSV number (Avsv only)
einbringerNoSubmitter (Mrp only, e.g., ministry abbreviation)
fundstelleNoSource reference (Erlaesse only)
applikationYesCollection to search - "PruefGewO" (trade exams), "Avsv" (social insurance), "Spg" (health plans), "Avn" (veterinary notices), "KmGer" (court announcements), "Upts" (party transparency), "Mrp" (cabinet protocols), "Erlaesse" (decrees)
dokumentartNoDocument type search (Avsv only) - free text search expression
fassung_vomNoHistorical version date (YYYY-MM-DD, for Erlaesse)
im_ris_seitNoFilter by time in RIS - EinerWoche, ZweiWochen, EinemMonat, DreiMonaten, SechsMonaten, EinemJahr
pruefgewo_typNoExamination type (PruefGewO only) - Befähigungsprüfung, Eignungsprüfung, Meisterprüfung
geschaeftszahlNoFile number/Aktenzeichen (for Mrp, Upts, KmGer)
sitzungsnummerNoSession number (Mrp only)
response_formatNo"markdown" (default) or "json"markdown
bundesministeriumNoFederal ministry (Erlaesse only)
sortierung_richtungNoSort direction
gesetzgebungsperiodeNoLegislative period (Mrp only, e.g., '27')

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYesPage number of this result set (1-based)
queryNoEcho of the validated search parameters alongside the tool name — re-issue the call with an incremented "seite" for the next page
has_moreYesWhether further result pages are available
documentsYesThe documents on this page
page_sizeYesNumber of documents per page
total_hitsYesTotal number of documents in RIS matching the search

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false. The description adds behavioral context by listing the collection codes (PruefGewO, Avsv, Spg, etc.) and showing example queries, which clarifies the tool's scope beyond the safety flags. No contradictions are present.

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 well-structured: an opening purpose statement, a usage note, a bulleted list of applications, and five example queries. Despite the tool's complexity, every section is purposeful and front-loaded. The content is dense but not verbose, earning a perfect score.

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?

This is a complex tool with 32 parameters, but the description covers its purpose, usage context, all application codes, and practical examples. The output schema and 100% schema description coverage handle parameter details and return values. For a search tool of this complexity, the description is complete.

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 description coverage is 100%, so the baseline is 3. The description adds value by including concrete example queries that demonstrate how parameters combine (e.g., applikation='Mrp', suchworte='Budget', einbringer='BMF...'). This practical illustration exceeds what the schema alone provides, raising the score to 4.

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

Purpose4/5

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

The description opens with a specific verb and resource: 'Search miscellaneous Austrian legal collections (Sonstige).' It then enumerates the eight collections, making the scope concrete. However, it does not explicitly differentiate from sibling tools by naming a 'use X instead' alternative, so it falls short of a 5.

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 clearly states 'Use this tool for specialized legal documents and historical materials,' giving an explicit context for when to use it. It also provides example queries per application, which is practical guidance. It does not mention sibling alternatives or exclusion criteria, keeping it at a 4.

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

ris_verordnungenVerordnungsblätter durchsuchenA
Read-only

Search Austrian state ordinance gazettes (Verordnungsblaetter der Laender).

Use this tool to find official publications of state/provincial ordinances. NOTE: Currently only Tirol data is available (since January 1, 2022). Other federal states have not yet published their ordinance gazettes in RIS.

Example queries:

  • suchworte="Wolf" -> Full-text search

  • titel="Verordnung" -> Search in title

  • bundesland="Tirol" -> Filter by state (currently only Tirol has data)

  • kundmachungsnummer="25" -> Search by publication number

  • kundmachungsdatum_von="2024-01-01", kundmachungsdatum_bis="2024-12-31" -> Date range

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page: 10, 20, 50, or 100 (default: 20)
seiteNoPage number (default: 1)
titelNoSearch in title
suchworteNoFull-text search terms
bundeslandNoFilter by state (currently only Tirol has data)
response_formatNo"markdown" (default) or "json"markdown
kundmachungsnummerNoPublication number
kundmachungsdatum_bisNoPublication date to (YYYY-MM-DD)
kundmachungsdatum_vonNoPublication date from (YYYY-MM-DD)

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYesPage number of this result set (1-based)
queryNoEcho of the validated search parameters alongside the tool name — re-issue the call with an incremented "seite" for the next page
has_moreYesWhether further result pages are available
documentsYesThe documents on this page
page_sizeYesNumber of documents per page
total_hitsYesTotal number of documents in RIS matching the search

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds a key behavioral limitation: 'Currently only Tirol data is available (since January 1, 2022). Other federal states have not yet published their ordinance gazettes in RIS.' This is not captured in annotations and helps set expectations. The example queries also illustrate search semantics.

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

Conciseness4/5

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

The description is well-structured: an opening line, a usage sentence, a brief note on data availability, and a bulleted list of example queries. Every sentence contributes useful information and there is no fluff. It is slightly longer than the minimal example but remains focused and readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 9 optional parameters and an output schema, the description covers the primary search dimensions and the critical Tirol-only limitation. It provides examples for the main parameters (full-text, title, state, publication number, date range). Pagination and response format are handled by schema and output schema, so the description is sufficiently complete for a well-documented tool.

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

Parameters3/5

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

Schema description coverage is 100% – every parameter already has a descriptive label and meaning. The description's examples (suchworte, titel, bundesland, kundmachungsnummer, kundmachungsdatum_von/bis) essentially mirror the schema descriptions, adding only a combined date-range example but no new parameter syntax or deeper semantics 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 states 'Search Austrian state ordinance gazettes (Verordnungsblaetter der Laender)' which is a specific verb+resource, and clarifies 'state/provincial ordinances' distinguishing it from federal legal databases. The title 'Verordnungsblätter durchsuchen' reinforces this. This is distinct from siblings like ris_landesrecht or ris_landesgesetzblatt by focusing on ordinances specifically.

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?

Provides an explicit usage statement: 'Use this tool to find official publications of state/provincial ordinances.' It also gives concrete example queries for common scenarios, which helps the agent understand when to apply it. However, it does not explicitly mention alternatives for federal law or other contexts, stopping short of full when-not guidance.

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

TDQS

A4.2/5.0
Disambiguation4/5

Each tool targets a distinct legal database or function, and descriptions clarify the differences between similar-sounding tools (e.g., ris_bundesrecht vs ris_bundesgesetzblatt). The main ambiguity is the several 'collection' tools (ris_bezirke, ris_gemeinden, ris_sonstige), but their scopes are well-defined.

Naming Consistency5/5

All tools follow a consistent ris_<domain> pattern with lower_snake_case. This makes it easy to predict what a tool does from its name alone.

Tool Count5/5

13 tools is well within the ideal range and matches the complexity of the Austrian RIS legal system. Each tool has a non-overlapping purpose, and none feel redundant or excessive.

Completeness4/5

The toolset covers the major RIS categories: federal/state law, gazettes, court decisions, legislative history, and specialized collections. Minor gaps exist (e.g., ris_dokument_abschnitt is UI-oriented rather than for direct API use), but core research workflows are supported.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Honeyfield-Org/ris-mcp-ts'

If you have feedback or need assistance with the MCP directory API, please join our Discord server