ris-mcp
This server gives AI assistants access to Austria's official legal database (RIS) through 12 specialized tools for searching and retrieving legal documents.
Search federal laws (
ris_bundesrecht): Find Austrian federal legislation (ABGB, StGB, UGB, etc.) by keyword, title, section number, or historical dateSearch state/provincial laws (
ris_landesrecht): Look up laws from all 9 Austrian provinces with support for historical versionsSearch court decisions (
ris_judikatur): Query decisions from 16 court systems including the Supreme Court (OGH), Constitutional Court (VfGH), Administrative Court (VwGH), and moreSearch Federal Law Gazettes (
ris_bundesgesetzblatt): Find official publications of federal laws, ordinances, and treaties (BGBl I/II/III) from 1945 to presentSearch State Law Gazettes (
ris_landesgesetzblatt): Access official publications of state legislation across all provincesSearch government bills (
ris_regierungsvorlagen): Find draft legislation submitted to parliament, filterable by ministry and dateRetrieve full document text (
ris_dokument): Fetch the complete text of any legal document by its RIS document ID or URLSearch district authority announcements (
ris_bezirke): Find announcements from district administrative authorities (6 provinces)Search municipal law (
ris_gemeinden): Look up local ordinances and regulations by municipality or provinceSearch miscellaneous collections (
ris_sonstige): Access specialized databases including cabinet protocols, ministerial decrees, social insurance regulations, trade licensing exams, and moreTrack document change history (
ris_history): Monitor when legal documents were created, modified, or deleted across 36 application typesSearch state ordinance gazettes (
ris_verordnungen): Find official publications of state ordinances
Key features: No API key required (uses Austria's free Open Government Data API), supports Markdown or JSON output, historical law versions via date parameters, and paginated results.
RIS MCP Server
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-tsOr install globally:
pnpm add -g ris-mcp-tsConfiguration
Claude Desktop
Add to your Claude Desktop config (Settings > Developer > Edit Config):
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%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 dlxinstead ofnpxin all configuration examples if you prefer pnpm.
Claude Code
Add to your project or user settings:
claude mcp add ris -- npx -y ris-mcp-tsVS 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-tsAvailable Tools
Tool | Description |
| Search federal laws (ABGB, StGB, UGB, etc.) |
| Search state/provincial laws (all 9 provinces) |
| Search court decisions (16 court types) |
| Search Federal Law Gazettes (BGBl I/II/III) |
| Search State Law Gazettes (LGBl) |
| Search government bills |
| Retrieve full document text by ID or URL |
| Search district authority announcements |
| Search municipal law and regulations |
| Search miscellaneous collections (8 sub-apps) |
| Track document change history (36 app types) |
| 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 |
| string | Full-text search (e.g., "Mietrecht", "Schadenersatz") |
| string | Search in law titles (e.g., "ABGB", "Strafgesetzbuch") |
| string | Section number (e.g., "1295" for §1295, "7" for Art 7) |
| string | Type of section |
| string | "BrKons" (consolidated, default), "Begut" (drafts), "BgblAuth" (gazette), "Erv" (English translations) |
| string | Date for historical version (YYYY-MM-DD) |
| number | Page number (default: 1) |
| number | Results per page: 10, 20, 50, 100 (default: 20) |
| 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 supportparagraph/abschnitt_typorfassung_vom.
Search state laws of the nine Austrian provinces.
Inputs:
Parameter | Type | Description |
| string | Full-text search |
| string | Search in law titles |
| string | Province: Wien, Niederoesterreich, Oberoesterreich, Salzburg, Tirol, Vorarlberg, Kaernten, Steiermark, Burgenland |
| string | Section number (e.g., "1" for §1, "7" for Art 7) |
| string | Type of section |
| string | Date for historical version (YYYY-MM-DD) |
| string | Exact law number (Gesetzesnummer) of a specific state law |
| string | "LrKons" (consolidated, default) |
| number | Page number |
| number | Results per page |
| string | "markdown" or "json" |
Search court decisions from Austrian courts.
Inputs:
Parameter | Type | Description |
| string | Full-text search in decisions |
| string | Court system / data collection to search — the RIS "Applikation" (see below; default "Justiz") |
| string | "rechtssatz" (headnotes only), "entscheidungstext" (full texts only), or "beide" (both, default) |
| string | Actual court within the jurisdiction (e.g., "OGH", "OLG Wien"); applies to gerichtsbarkeit="Justiz" |
| string | Broad legal area: "Zivilrecht" or "Strafrecht" (Justiz) |
| string | OGH subject area (e.g., "Arbeitsrecht"); Justiz, needs dokumenttyp "entscheidungstext"/"beide" |
| string | Decision type (e.g., "Erkenntnis", "Beschluss"); allowed values differ by jurisdiction |
| string | Collection number: VfSlg (Vfgh) or VwSlg (Vwgh) |
| string | Legal norm (e.g., "1319a ABGB") |
| string | Case number (e.g., "5Ob234/20b") |
| string | Decision date from (YYYY-MM-DD) |
| string | Decision date to (YYYY-MM-DD) |
| string | Sort by decision date: "datum_auf" (oldest first) or "datum_ab" (newest first) |
| number | Page number |
| number | Results per page |
| string | "markdown" or "json" |
Available gerichtsbarkeit values (16):
Value | Court system |
| Supreme Court (OGH), Higher Regional Courts (OLG), Regional Courts (LG) — default |
| Constitutional Court |
| Supreme Administrative Court |
| Federal Administrative Court |
| Provincial Administrative Courts |
| Data Protection Authority |
| Asylum Court (historical, until 2013) |
| Index of legal norms |
| Personnel Representation Supervisory Commission |
| Equal Treatment Commission |
| Disciplinary Commission |
| Federal Procurement Office (historical, dissolved 2014) |
| Independent Administrative Senates (historical, dissolved 2014) |
| Independent Federal Asylum Senate (historical, dissolved 2014) |
| Environmental Senate (historical, dissolved 2014) |
| Federal Communications Board (historical, dissolved 2014) |
Search the Federal Law Gazette (BGBl) — official publications of federal legislation.
Inputs:
Parameter | Type | Description |
| string | Gazette number (e.g., "120") |
| string | "1" (I = Acts), "2" (II = Regulations), "3" (III = Treaties) |
| string | Year (e.g., "2023") |
| string | Full-text search |
| string | Search in titles |
| string | "BgblAuth" (authentic from 2004, default), "BgblPdf" (PDF), "BgblAlt" (1945–2003) |
| number | Page number |
| number | Results per page |
| string | "markdown" or "json" |
Search State Law Gazettes (LGBl) — official publications of state legislation.
Inputs:
Parameter | Type | Description |
| string | Gazette number (e.g., "50") |
| string | Year (e.g., "2023") |
| string | Province name |
| string | Full-text search |
| string | Search in titles |
| string | "LgblAuth" (authentic, default), "Lgbl" (general), "LgblNO" (Niederoesterreich) |
| number | Page number |
| number | Results per page |
| string | "markdown" or "json" |
Search government bills — draft legislation submitted to parliament.
Inputs:
Parameter | Type | Description |
| string | Full-text search |
| string | Search in titles |
| string | Approval date from (YYYY-MM-DD) |
| string | Approval date to (YYYY-MM-DD) |
| string | Submitting ministry (e.g., BKA, BMF, BMJ, BMK) |
| string | Added recently: EinerWoche, ZweiWochen, EinemMonat, DreiMonaten, SechsMonaten, EinemJahr |
| string | Ascending or Descending |
| string | Kurztitel, EinbringendeStelle, Beschlussdatum |
| number | Page number |
| number | Results per page |
| 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 |
| string | RIS document number (e.g., "NOR40052761") |
| string | Direct URL to document content |
| 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 |
| string | Full-text search |
| string | Search in titles |
| string | Province name |
| string | District authority name |
| string | Announcement number |
| string | Date from (YYYY-MM-DD) |
| string | Date to (YYYY-MM-DD) |
| string | Added recently: EinerWoche, ZweiWochen, EinemMonat, DreiMonaten, SechsMonaten, EinemJahr |
| number | Page number |
| number | Results per page |
| string | "markdown" or "json" |
Search municipal law — local ordinances and regulations.
Inputs:
Parameter | Type | Description |
| string | Full-text search |
| string | Search in titles |
| string | Province name |
| string | Municipality name (e.g., "Graz") |
| string | "Gr" (municipal law, default) or "GrA" (official gazettes) |
| string | Added recently |
| number | Page number |
| number | Results per page |
| 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 |
| string | Required. Collection to search (see below) |
| string | Full-text search |
| string | Search in titles |
| string | Date from (YYYY-MM-DD) |
| string | Date to (YYYY-MM-DD) |
| string | Added recently |
| number | Page number |
| number | Results per page |
| string | "markdown" or "json" |
Available collections:
Value | Description |
| Cabinet protocols (Ministerratsprotokolle) |
| Ministerial decrees |
| Party transparency reports |
| Court announcements |
| Social insurance regulations |
| Veterinary notices |
| Health structure plans |
| 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 |
| string | Required. Application type (36 options — see below) |
| string | Changes from date (YYYY-MM-DD) |
| string | Changes to date (YYYY-MM-DD) |
| boolean | Include deleted documents (default: false) |
| number | Page number |
| number | Results per page |
| 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 |
| string | Full-text search |
| string | Search in titles |
| string | Province name |
| string | Announcement number |
| string | Date from (YYYY-MM-DD) |
| string | Date to (YYYY-MM-DD) |
| number | Page number |
| number | Results per page |
| 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 buildScripts
Script | Description |
| Start with hot reload (tsx) |
| Compile TypeScript |
| Run compiled version |
| Run the server tests |
| Run the widget tests (jsdom) |
| Build the widget bundle into |
| Typecheck + lint + format check + both test suites |
| 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 themeContributing
See CONTRIBUTING.md for guidelines.
License
Built on the Open Government Data API provided by the Austrian Federal Chancellery (Bundeskanzleramt).
Available Tools
13 toolsris_bezirkeBezirksverwaltungsbehörden durchsuchenARead-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"
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page: 10, 20, 50, or 100 (default: 20) | |
| seite | No | Page number (default: 1) | |
| titel | No | Search in titles | |
| suchworte | No | Full-text search terms | |
| bundesland | No | Filter by state - Burgenland, Kärnten, Niederösterreich, Oberösterreich, Salzburg, Steiermark, Tirol, Vorarlberg, Wien | |
| im_ris_seit | No | Filter by time in RIS | |
| response_format | No | "markdown" (default) or "json" | markdown |
| kundmachungsnummer | No | Announcement number | |
| kundmachungsdatum_bis | No | Announcement date to (YYYY-MM-DD) | |
| kundmachungsdatum_von | No | Announcement date from (YYYY-MM-DD) | |
| bezirksverwaltungsbehoerde | No | District authority name (e.g., "Bezirkshauptmannschaft Innsbruck", "Bezirkshauptmannschaft Amstetten") |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | Page number of this result set (1-based) |
| query | No | Echo of the validated search parameters alongside the tool name — re-issue the call with an incremented "seite" for the next page |
| has_more | Yes | Whether further result pages are available |
| documents | Yes | The documents on this page |
| page_size | Yes | Number of documents per page |
| total_hits | Yes | Total number of documents in RIS matching the search |
TDQS
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.
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.
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.
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.
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.
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 durchsuchenARead-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
| Name | Required | Description | Default |
|---|---|---|---|
| teil | No | Part - "1" (I=Laws), "2" (II=Ordinances), "3" (III=Treaties) | |
| limit | No | Results per page: 10, 20, 50, or 100 (default: 20) | |
| seite | No | Page number (default: 1) | |
| titel | No | Search in gazette titles | |
| jahrgang | No | Year (e.g., "2023") | |
| suchworte | No | Full-text search terms | |
| bgblnummer | No | Gazette number (e.g., "120") | |
| applikation | No | "BgblAuth" (authentic 2004+, default), "BgblPdf" (PDF), "BgblAlt" (1945-2003) | BgblAuth |
| response_format | No | "markdown" (default) or "json" | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | Page number of this result set (1-based) |
| query | No | Echo of the validated search parameters alongside the tool name — re-issue the call with an incremented "seite" for the next page |
| has_more | Yes | Whether further result pages are available |
| documents | Yes | The documents on this page |
| page_size | Yes | Number of documents per page |
| total_hits | Yes | Total number of documents in RIS matching the search |
TDQS
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.
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.
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.
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.
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.
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 durchsuchenARead-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
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page: 10, 20, 50, or 100 (default: 20) | |
| seite | No | Page number (default: 1) | |
| titel | No | Search in law titles (e.g., "ABGB", "Strafgesetzbuch") | |
| paragraph | No | Section number to search for (e.g., "1295" for §1295, "7" for Art 7) | |
| suchworte | No | Broad 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. | |
| applikation | No | Data source - "BrKons" (consolidated, default), "Begut" (drafts), "BgblAuth" (gazette), "Erv" (English translations) | BrKons |
| fassung_vom | No | Consolidated version as of this date (YYYY-MM-DD) — retrieves the law text as it stood on that day. Not supported for "Erv". | |
| abschnitt_typ | No | Type 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_format | No | "markdown" (default) or "json" | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | Page number of this result set (1-based) |
| query | No | Echo of the validated search parameters alongside the tool name — re-issue the call with an incremented "seite" for the next page |
| has_more | Yes | Whether further result pages are available |
| documents | Yes | The documents on this page |
| page_size | Yes | Number of documents per page |
| total_hits | Yes | Total number of documents in RIS matching the search |
TDQS
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.
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.
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.
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.
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.
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 abrufenARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Direct URL to document content | |
| dokumentnummer | No | RIS document number (e.g., "NOR40052761") - from search results | |
| response_format | No | "markdown" (default) or "json" | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | The document text, identical to the text content block — truncated at 25000 characters with a German notice when the document is longer |
| outline | No | Jump 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_url | No | RIS URL the document text was rendered from |
| total_length | Yes | Length 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 |
| dokumentnummer | No | RIS document number of this document, echoed from the request |
TDQS
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.
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.
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.
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.
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.
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_abschnittDokumentabschnittARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Direct URL of the open document, for documents opened by URL rather than by number | |
| offset | No | Character offset into the document text; 0 returns the first section and the outline | |
| dokumentnummer | No | RIS document number of the open document - from the ris_dokument call that opened it |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | The requested section of the document text |
| outline | No | Jump targets of the document. Only returned for offset 0; empty when the document has no headings |
| source_url | No | RIS URL the document text was rendered from |
| next_offset | Yes | Offset to request for the following section, or null at the end of the document |
| total_length | Yes | Length of the complete document text — compare across calls to detect that the document was re-fetched and offsets shifted |
| dokumentnummer | No | RIS document number of the document this section belongs to |
TDQS
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.
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.
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.
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.
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.
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 durchsuchenARead-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"
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | Subject area index (Gr only) - VertretungskoerperUndAllgemeineVerwaltung, OeffentlicheOrdnungUndSicherheit, UnterrichtErziehungSportUndWissenschaft, KunstKulturUndKultus, SozialeWohlfahrtUndWohnbaufoerderung, Gesundheit, StraßenUndWasserbauVerkehr, Wirtschaftsfoerderung, Dienstleistungen, Finanzwirtschaft | |
| limit | No | Results per page: 10, 20, 50, or 100 (default: 20) | |
| seite | No | Page number (default: 1) | |
| titel | No | Search in titles | |
| bezirk | No | District name (GrA only, e.g., "Bregenz") | |
| gemeinde | No | Municipality name (e.g., "Graz") | |
| suchworte | No | Full-text search terms | |
| bundesland | No | Filter by state - Burgenland, Kärnten, Niederösterreich, Oberösterreich, Salzburg, Steiermark, Tirol, Vorarlberg, Wien | |
| applikation | No | "Gr" (municipal law, default) or "GrA" (cross-border/Amtsblätter) | Gr |
| fassung_vom | No | Historical version date (YYYY-MM-DD, Gr only) | |
| im_ris_seit | No | Filter by time in RIS - EinerWoche, ZweiWochen, EinemMonat, DreiMonaten, SechsMonaten, EinemJahr | |
| geschaeftszahl | No | File number/Aktenzeichen (Gr only) | |
| gemeindeverband | No | Municipal association name (GrA only) | |
| response_format | No | "markdown" (default) or "json" | markdown |
| kundmachungsnummer | No | Announcement number (GrA only) | |
| sortierung_richtung | No | Sort direction | |
| sortierung_spalte_gr | No | Sort column (Gr only) | |
| kundmachungsdatum_bis | No | Announcement date to (YYYY-MM-DD, GrA only) | |
| kundmachungsdatum_von | No | Announcement date from (YYYY-MM-DD, GrA only) |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | Page number of this result set (1-based) |
| query | No | Echo of the validated search parameters alongside the tool name — re-issue the call with an incremented "seite" for the next page |
| has_more | Yes | Whether further result pages are available |
| documents | Yes | The documents on this page |
| page_size | Yes | Number of documents per page |
| total_hits | Yes | Total number of documents in RIS matching the search |
TDQS
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.
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.
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.
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.
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.
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 durchsuchenARead-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"
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page: 10, 20, 50, or 100 (default: 20) | |
| seite | No | Page number (default: 1) | |
| applikation | Yes | Application 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_bis | No | Changes to date (YYYY-MM-DD) | |
| aenderungen_von | No | Changes from date (YYYY-MM-DD) | |
| include_deleted | No | Include deleted documents in results (default: false) | |
| response_format | No | "markdown" (default) or "json" | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | Page number of this result set (1-based) |
| query | No | Echo of the validated search parameters alongside the tool name — re-issue the call with an incremented "seite" for the next page |
| has_more | Yes | Whether further result pages are available |
| documents | Yes | The documents on this page |
| page_size | Yes | Number of documents per page |
| total_hits | Yes | Total number of documents in RIS matching the search |
TDQS
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.
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.
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.
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.
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.
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 durchsuchenARead-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
| Name | Required | Description | Default |
|---|---|---|---|
| norm | No | Search by legal norm (e.g., "1319a ABGB") | |
| limit | No | Results per page: 10, 20, 50, or 100 (default: 20) | |
| seite | No | Page number | |
| gericht | No | Filter by the actual court within the jurisdiction (e.g., "OGH", "OLG Wien"). Applies to gerichtsbarkeit="Justiz". | |
| suchworte | No | Full-text search in decisions | |
| fachgebiet | No | Subject area of OGH case law (e.g., "Arbeitsrecht", "Insolvenzrecht"). Applies to gerichtsbarkeit="Justiz" and only matches full decision texts (requires dokumenttyp "entscheidungstext" or "beide"). | |
| sortierung | No | Sort by decision date: "datum_auf" (oldest first) or "datum_ab" (newest first). | |
| dokumenttyp | No | Which 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 |
| rechtsgebiet | No | Broad legal area: "Zivilrecht" or "Strafrecht". Applies to gerichtsbarkeit="Justiz". | |
| geschaeftszahl | No | Case number (e.g., "5Ob234/20b") | |
| gerichtsbarkeit | No | Court 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_format | No | "markdown" or "json" | markdown |
| sammlungsnummer | No | Collection number: VfSlg (gerichtsbarkeit="Vfgh") or VwSlg (gerichtsbarkeit="Vwgh"). | |
| entscheidungsart | No | Type 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_bis | No | Decision date to (YYYY-MM-DD) | |
| entscheidungsdatum_von | No | Decision date from (YYYY-MM-DD) |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | Page number of this result set (1-based) |
| query | No | Echo of the validated search parameters alongside the tool name — re-issue the call with an incremented "seite" for the next page |
| has_more | Yes | Whether further result pages are available |
| documents | Yes | The documents on this page |
| page_size | Yes | Number of documents per page |
| total_hits | Yes | Total number of documents in RIS matching the search |
TDQS
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.
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.
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.
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.
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.
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 durchsuchenARead-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"
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page: 10, 20, 50, or 100 (default: 20) | |
| seite | No | Page number (default: 1) | |
| titel | No | Search in gazette titles | |
| jahrgang | No | Year (e.g., "2023") | |
| suchworte | No | Full-text search terms | |
| bundesland | No | Filter by state - Wien, Niederoesterreich, Oberoesterreich, Salzburg, Tirol, Vorarlberg, Kaernten, Steiermark, Burgenland | |
| lgblnummer | No | Gazette number (e.g., "50") | |
| applikation | No | "LgblAuth" (authentic, default), "Lgbl" (general), "LgblNO" (Lower Austria) | LgblAuth |
| response_format | No | "markdown" (default) or "json" | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | Page number of this result set (1-based) |
| query | No | Echo of the validated search parameters alongside the tool name — re-issue the call with an incremented "seite" for the next page |
| has_more | Yes | Whether further result pages are available |
| documents | Yes | The documents on this page |
| page_size | Yes | Number of documents per page |
| total_hits | Yes | Total number of documents in RIS matching the search |
TDQS
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.
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.
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.
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.
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.
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 durchsuchenARead-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
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page: 10, 20, 50, or 100 (default: 20) | |
| seite | No | Page number | |
| titel | No | Search in law titles | |
| paragraph | No | Section number to search for (e.g., "1" for §1, "7" for Art 7) | |
| suchworte | No | Broad 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. | |
| bundesland | No | Filter by state - Wien, Niederoesterreich, Oberoesterreich, Salzburg, Tirol, Vorarlberg, Kaernten, Steiermark, Burgenland | |
| applikation | No | "LrKons" (consolidated, default) | LrKons |
| fassung_vom | No | Consolidated version as of this date (YYYY-MM-DD) — retrieves the law text as it stood on that day. | |
| abschnitt_typ | No | Type of section that "paragraph" refers to: "Paragraph" (default), "Artikel", or "Anlage" (annex). | Paragraph |
| gesetzesnummer | No | Exact law number (Gesetzesnummer) for a specific state law | |
| response_format | No | "markdown" or "json" | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | Page number of this result set (1-based) |
| query | No | Echo of the validated search parameters alongside the tool name — re-issue the call with an incremented "seite" for the next page |
| has_more | Yes | Whether further result pages are available |
| documents | Yes | The documents on this page |
| page_size | Yes | Number of documents per page |
| total_hits | Yes | Total number of documents in RIS matching the search |
TDQS
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.
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.
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.
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.
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.
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 durchsuchenARead-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
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page: 10, 20, 50, or 100 (default: 20) | |
| seite | No | Page number (default: 1) | |
| titel | No | Search in bill titles | |
| suchworte | No | Full-text search terms | |
| im_ris_seit | No | Filter by time in RIS | |
| response_format | No | "markdown" (default) or "json" | markdown |
| sortierung_spalte | No | Sort by column | |
| beschlussdatum_bis | No | Decision date to (YYYY-MM-DD) | |
| beschlussdatum_von | No | Decision date from (YYYY-MM-DD) | |
| einbringende_stelle | No | Filter by submitting ministry | |
| sortierung_richtung | No | Sort direction |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | Page number of this result set (1-based) |
| query | No | Echo of the validated search parameters alongside the tool name — re-issue the call with an incremented "seite" for the next page |
| has_more | Yes | Whether further result pages are available |
| documents | Yes | The documents on this page |
| page_size | Yes | Number of documents per page |
| total_hits | Yes | Total number of documents in RIS matching the search |
TDQS
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.
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.
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.
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.
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.
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 durchsuchenARead-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"
| Name | Required | Description | Default |
|---|---|---|---|
| norm | No | Legal norm reference (for Erlaesse, Upts) | |
| limit | No | Results per page: 10, 20, 50, or 100 (default: 20) | |
| seite | No | Page number (default: 1) | |
| titel | No | Search in titles | |
| partei | No | Political party (Upts only) | |
| avn_typ | No | Notice type (Avn only) - Kundmachung, Verordnung, Erlass | |
| gericht | No | Court name (KmGer only) | |
| osg_typ | No | Austrian health structure plan type (Spg only) - ÖSG, ÖSG - Großgeräteplan | |
| rsg_typ | No | Regional health structure plan type (Spg only) - RSG, RSG - Großgeräteplan | |
| urheber | No | Author/institution (Avsv only) | |
| rsg_land | No | Federal state for RSG (Spg only) | |
| abteilung | No | Department/division (Erlaesse only) | |
| avnnummer | No | AVN number (Avn only) | |
| datum_bis | No | Date to (YYYY-MM-DD) | |
| datum_von | No | Date from (YYYY-MM-DD) | |
| kmger_typ | No | Announcement type (KmGer only) - Geschaeftsordnung, Geschaeftsverteilung | |
| spgnummer | No | SPG number (Spg only) | |
| suchworte | No | Full-text search terms | |
| avsvnummer | No | AVSV number (Avsv only) | |
| einbringer | No | Submitter (Mrp only, e.g., ministry abbreviation) | |
| fundstelle | No | Source reference (Erlaesse only) | |
| applikation | Yes | Collection 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) | |
| dokumentart | No | Document type search (Avsv only) - free text search expression | |
| fassung_vom | No | Historical version date (YYYY-MM-DD, for Erlaesse) | |
| im_ris_seit | No | Filter by time in RIS - EinerWoche, ZweiWochen, EinemMonat, DreiMonaten, SechsMonaten, EinemJahr | |
| pruefgewo_typ | No | Examination type (PruefGewO only) - Befähigungsprüfung, Eignungsprüfung, Meisterprüfung | |
| geschaeftszahl | No | File number/Aktenzeichen (for Mrp, Upts, KmGer) | |
| sitzungsnummer | No | Session number (Mrp only) | |
| response_format | No | "markdown" (default) or "json" | markdown |
| bundesministerium | No | Federal ministry (Erlaesse only) | |
| sortierung_richtung | No | Sort direction | |
| gesetzgebungsperiode | No | Legislative period (Mrp only, e.g., '27') |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | Page number of this result set (1-based) |
| query | No | Echo of the validated search parameters alongside the tool name — re-issue the call with an incremented "seite" for the next page |
| has_more | Yes | Whether further result pages are available |
| documents | Yes | The documents on this page |
| page_size | Yes | Number of documents per page |
| total_hits | Yes | Total number of documents in RIS matching the search |
TDQS
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.
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.
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.
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.
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.
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 durchsuchenARead-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
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page: 10, 20, 50, or 100 (default: 20) | |
| seite | No | Page number (default: 1) | |
| titel | No | Search in title | |
| suchworte | No | Full-text search terms | |
| bundesland | No | Filter by state (currently only Tirol has data) | |
| response_format | No | "markdown" (default) or "json" | markdown |
| kundmachungsnummer | No | Publication number | |
| kundmachungsdatum_bis | No | Publication date to (YYYY-MM-DD) | |
| kundmachungsdatum_von | No | Publication date from (YYYY-MM-DD) |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | Page number of this result set (1-based) |
| query | No | Echo of the validated search parameters alongside the tool name — re-issue the call with an incremented "seite" for the next page |
| has_more | Yes | Whether further result pages are available |
| documents | Yes | The documents on this page |
| page_size | Yes | Number of documents per page |
| total_hits | Yes | Total number of documents in RIS matching the search |
TDQS
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.
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.
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.
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.
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.
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
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.
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.
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.
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
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
An MCP server that provides congressional transcripts
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
An MCP server for deep research or task groups
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceAn MCP server that provides comprehensive US legislation.2337MIT
- AlicenseAqualityAmaintenanceEnables searching and retrieving Austrian federal legislation and case law from the official legal information system RIS, with verifiable ELI and ECLI identifiers.6Apache 2.0
- AlicenseAqualityBmaintenanceAustria's legal information system (RIS): federal & state law, case law, gazettes, change monitoring.101Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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