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
13 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 |
| Return one section of an open document by character offset (feeds the document viewer widget) |
| 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). Prefer 20; a page over the structured-payload budget is delivered at the next smaller size (see Result size) |
| 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: 10, 20, 50, 100 (default: 20). Prefer 20; a page over the structured-payload budget is delivered at the next smaller size (see Result size) |
| 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: 10, 20, 50, 100 (default: 20). Prefer 20; a page over the structured-payload budget is delivered at the next smaller size (see Result size) |
| 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: 10, 20, 50, 100 (default: 20). Prefer 20; a page over the structured-payload budget is delivered at the next smaller size (see Result size) |
| 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: 10, 20, 50, 100 (default: 20). Prefer 20; a page over the structured-payload budget is delivered at the next smaller size (see Result size) |
| 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: 10, 20, 50, 100 (default: 20). Prefer 20; a page over the structured-payload budget is delivered at the next smaller size (see Result size) |
| 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.
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.
The tool is declared app-only (_meta.ui.visibility: ["app"]): hosts that honour the flag hide it from the model and let only the viewer widget call it. It serves the same text ris_dokument produced, from the document cache where possible, so the offsets the viewer holds address the same document.
Inputs:
Parameter | Type | Description |
| string | RIS document number of the open document - from the ris_dokument call that opened it |
| string | Direct URL of the open document, for documents opened by URL rather than by number |
| number | Character offset into the document text; 0 returns the first section and the outline (default: 0) |
At least one of dokumentnummer or url is required. Each section is 25,000 characters long.
Output (structuredContent):
Field | Type | Description |
| string | The requested section of the document text |
| number | Length of the complete document text — compare across calls to detect that the document was re-fetched and offsets shifted |
| number | null | Offset to request for the following section, or null at the end of the document |
| array | Jump targets of the document. Only returned for offset 0; empty when the document has no headings |
| string | RIS document number of the document this section belongs to (absent for documents opened by URL) |
| string | RIS URL the document text was rendered from |
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: 10, 20, 50, 100 (default: 20). Prefer 20; a page over the structured-payload budget is delivered at the next smaller size (see Result size) |
| 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: 10, 20, 50, 100 (default: 20). Prefer 20; a page over the structured-payload budget is delivered at the next smaller size (see Result size) |
| 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: 10, 20, 50, 100 (default: 20). Prefer 20; a page over the structured-payload budget is delivered at the next smaller size (see Result size) |
| 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: 10, 20, 50, 100 (default: 20). Prefer 20; a page over the structured-payload budget is delivered at the next smaller size (see Result size) |
| 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: 10, 20, 50, 100 (default: 20). Prefer 20; a page over the structured-payload budget is delivered at the next smaller size (see Result size) |
| string | "markdown" or "json" |
Result size
The text block of every tool is capped at 25,000 characters. The search tools'
structuredContent has its own budget of 45,000 characters (serialized); a
page that would exceed it is delivered at the next smaller RIS page size
(100 → 50 → 20 → 10) with page, page_size, has_more and the query echo
rewritten to that size and a German notice in both the text and the payload.
Page with query.limit and query.seite as echoed. Prefer limit: 20; 50
suits a broad survey; 100 is only ever delivered when the hits are small.
The default is calibrated to Claude Code, which rejects a result whose
structured payload exceeds 25,000 tokens (measured: rejected at 58,659
characters, accepted at 46,311; the margin below that covers content that
tokenizes worse); claude.ai renders far larger payloads and needs no budget.
Self-hosters whose client accepts larger results can raise the budget with the
RIS_STRUCTURED_CONTENT_BUDGET environment variable (a positive integer).
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). Every hit costs about 1k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice). | |
| 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 |
| notice | No | Present when the page was delivered at a smaller size than requested to fit the payload budget — page, page_size and query already describe the delivered page; page with query.limit |
| 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 the safety profile. The description adds the state-publishing limitation but does not discuss any other behavioral traits (e.g., pagination behavior, response format details) beyond what the schema provides. This is adequate but not rich.
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, front-loaded with the main purpose, and includes a brief usage note and two examples. Every sentence adds value, and there is no redundant 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?
With an output schema present and detailed parameter descriptions in the schema, the description provides enough context for an agent to call the tool correctly: it states the domain, the state limitation, and gives example parameters. It could mention the response format options, but those are covered in the schema (response_format parameter). Overall, it is complete for a search 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 coverage is 100%, so all 11 parameters have descriptions in the schema. The description adds example query combinations (bundesland with suchworte, bezirksverwaltungsbehoerde), which is helpful but not a semantic expansion. It does not compensate for any schema gaps because there are none.
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 verb ('Search') and the resource ('Austrian district administrative authority announcements'), and the title reinforces the domain. It is distinct from sibling tools by focusing on district administrative authorities (Bezirksverwaltungsbehörden), which is a specific subset of RIS documents.
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 examples and a key constraint (only certain states publish here), which helps the agent decide when to use this tool. It does not name alternative tools for other legal domains, but the scope is clear enough for typical usage.
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). Every hit costs about 1k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice). | |
| 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 |
| notice | No | Present when the page was delivered at a smaller size than requested to fit the payload budget — page, page_size and query already describe the delivered page; page with query.limit |
| 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 (readOnlyHint=true, openWorldHint=true, destructiveHint=false) already carry the safety profile, and the description's search framing is consistent with them. The description adds content-coverage context (laws, ordinances, treaties), but the most valuable behavioral detail — payload cost and auto-shrinking page behavior — lives in the schema's limit parameter, not in the description itself.
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?
Purpose, use case, content scope, and examples are packed into a compact structure with the purpose front-loaded. The example queries earn their place by showing realistic parameter combinations, though the example block could be marginally tighter without losing value.
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 fully-documented parameters, an output schema, and complete annotations, the description covers purpose, use case, and content scope adequately. The only gap is explicit sibling routing (e.g., pointing to ris_bundesrecht for current consolidated law), which is a minor omission given how rich the schema and output schema already are.
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?
All 9 parameters are documented at 100% schema coverage, with the limit parameter's description being especially rich (payload budget and page-size fallback). The description's two example queries add light combinatorial guidance (which parameters work together), but this is marginal value layered on top of a fully self-documenting 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?
Names a specific verb (Search) and resource (Austrian Federal Law Gazettes), and the 'Federal' qualifier distinguishes it from sibling ris_landesgesetzblatt (state gazette). The content note ('official publications of federal laws, ordinances, and treaties') and the two example queries pin down the exact scope, so an agent can tell it apart from the consolidated-law and judicature siblings without opening schemas.
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?
States a clear use case — 'historical research and tracking when laws were enacted' — which implicitly separates it from siblings like ris_bundesrecht (current consolidated law) and ris_judikatur (court decisions). However, it never names these alternatives or states when NOT to use this tool, leaving part of the disambiguation to the agent.
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). Every hit costs about 1k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice). | |
| 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 |
| notice | No | Present when the page was delivered at a smaller size than requested to fit the payload budget — page, page_size and query already describe the delivered page; page with query.limit |
| 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 (readOnlyHint, openWorldHint, destructiveHint) cover safety, but the description adds rich behavioral context: suchworte ordering, payload budget per hit, page-size reduction with notice, and exceptions for 'Erv' (paragraph ignored, fassung_vom unsupported). These details go well beyond what annotations provide.
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?
Well-structured and front-loaded: purpose, search strategy, then example queries. Every section earns its place; the example queries are compact and illustrative without redundancy. Length is justified by 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?
Complete for a 9-parameter search tool with an output schema. It covers search strategy, edge cases (Erv, article-based laws), pagination behavior, and companion-law hints. No critical information an agent needs to call it correctly is missing.
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 baseline is 3, but the description adds substantial meaning: explains how 'paragraph' interacts with 'abschnitt_typ', gives example queries mapping parameters to real use cases, and notes specific constraints like paragraph being ignored for 'Erv'. This materially aids correct invocation.
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?
Clearly states the tool searches Austrian federal laws (Bundesrecht), with a specific verb and resource. It names example laws (ABGB, StGB, UGB) and the federal scope distinguishes it from sibling tools like ris_landesrecht. The purpose is immediately understandable and differentiated.
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 search strategy: prefer 'titel' and 'paragraph' for precise lookups, warns that 'suchworte' returns alphabetical rather than relevance-ordered results, and even advises looking for companion laws (e.g., VGG vs ABGB). This is clear when-to-use and when-not-to-use guidance with alternatives.
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?
Annotations already declare `readOnlyHint: true` and `destructiveHint: false`, so the safety profile is known. The description adds valuable behavioral context by stating the prerequisite that the document must already be open in the RIS document viewer, and it clarifies that this tool is not for standalone use. This goes beyond the basic annotation coverage.
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 two sentences, front-loaded with the core purpose, and every sentence adds value: the first states the function, the second provides usage guidance and an alternative. There is no redundancy or wasted words.
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 has an output schema, so return values are already structured. The description covers the essential operational context: what it does, when to use it (viewer widget), the prerequisite (open document), and the alternative for full text. Given the tool's simplicity and rich schema, 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?
The input schema provides 100% parameter description coverage (all three parameters have clear descriptions, including the `offset` semantics). The tool description itself does not add further parameter details, but it does not need to since the schema is exhaustive. This matches the baseline of 3 for high 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 the tool returns "one section of a document already open in the RIS document viewer," specifying the verb, resource, and context. It distinguishes itself from the sibling `ris_dokument` by explicitly noting that the full text should use `ris_dokument` instead.
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 the tool is "intended for the viewer widget, not for direct use" and directs users to `ris_dokument` for the full text. This provides clear when-to-use guidance and an explicit alternative, making it easy for an agent to choose correctly.
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). Every hit costs about 1k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice). | |
| 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 |
| notice | No | Present when the page was delivered at a smaller size than requested to fit the payload budget — page, page_size and query already describe the delivered page; page with query.limit |
| 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 read-only safety profile is covered. The main description adds little beyond usage mechanics; the one genuinely behavioral disclosure (payload budget, page_size/notice behavior) lives in the limit parameter's schema description rather than the main text, so the description itself contributes marginal behavioral context.
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 purpose is front-loaded in the first sentence, followed by a compact Applications block and well-chosen example queries. No filler or repetition of schema content; the structure is efficient and scannable.
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 19-parameter tool with an output schema present, the description covers the usage patterns, application variants, and parameter scoping well. Example queries give agents a template for invocation. Minor gap: it does not advise on choosing between this and sibling legal-search tools, but within-tool completeness is strong.
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 parameters are documented. The description adds value beyond the schema by mapping parameters to example values (gemeinde='Graz', suchworte='Parkgebuehren') and by clarifying which parameters apply to which applikation (Gr vs GrA), which the schema does not state. This meaningfully compensates for the large 19-parameter surface.
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?
States a specific verb+resource: 'Search Austrian municipal law (Gemeinderecht)' and 'find municipal regulations and local ordinances.' The resource is clearly distinct from siblings like ris_landesrecht or ris_bundesrecht, though the description does not explicitly name any sibling for contrast.
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 guidance through the Applications section (Gr default vs GrA for cross-border/Amtsblätter), concrete example queries pairing parameters with values, and inline scope notes marking which parameters are Gr-only (index, fassung_vom, geschaeftszahl, sortierung_spalte_gr) versus GrA-only (bezirk, gemeindeverband, kundmachungsnummer). It does not, however, state when to prefer sibling tools such as ris_landesrecht.
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). Every hit costs about 1k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice). | |
| 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 |
| notice | No | Present when the page was delivered at a smaller size than requested to fit the payload budget — page, page_size and query already describe the delivered page; page with query.limit |
| 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 the safety profile. The description adds meaningful context beyond annotations by specifying what the tool surfaces (created/modified/deleted events), and the limit parameter description adds rich behavioral detail about payload budgets and automatic page-size downgrades. 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?
Well-structured: purpose is front-loaded, followed by the application list and examples. The application list is somewhat redundant with the schema's enum descriptions, and the count ('30 total') slightly understates the 36 enum values listed, but the overall layout is clean and scannable.
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 7 parameters, an output schema, and rich annotations, the description covers the key operational aspects: what it tracks, which applications it covers, and how to form queries. Return-value details are covered by the output schema, so that gap is acceptable. The minor undercount of applications is a small incompleteness.
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 the schema already documents all 7 parameters in detail (including the very thorough limit description). The description's added value is marginal — the application list duplicates the schema's applikation description, and the example queries reinforce usage patterns. This meets the baseline for high 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?
States a specific verb+resource ('Search document change history') and explains what it does: track creation, modification, and deletion of legal documents over time. This clearly differentiates it from siblings like ris_dokument or ris_bundesrecht, which are document-retrieval tools rather than history-search tools.
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 says 'Use this tool to track changes to legal documents over time', giving clear usage context, and provides concrete example queries with parameter values. It doesn't explicitly name alternatives or state when not to use it, but the purpose is sufficiently distinct from the sibling retrieval tools to route an agent correctly.
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). Every hit costs about 1k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice). | |
| 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 |
| notice | No | Present when the page was delivered at a smaller size than requested to fit the payload budget — page, page_size and query already describe the delivered page; page with query.limit |
| 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, so the description correctly doesn't restate those. It adds meaningful behavioral context beyond annotations: the limit parameter's payload cost and automatic page-size fallback, and the constraint that fachgebiet only matches full decision texts (requiring dokumenttyp 'entscheidungstext' or 'beide'). This is valuable transparency for a search tool with pagination and filtering quirks.
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?
Well-structured and front-loaded: a one-sentence summary leads, followed by a concise explanation of the two document kinds and then practical examples. Every sentence serves a purpose—either explaining semantics, constraints, or usage—without redundancy. The length is justified by the tool's complexity, and the organization aids readability.
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 16 optional parameters, full schema coverage, an output schema, and the annotations, the description covers the essential decision points: what to search, how to filter, and key caveats. It doesn't explicitly walk through every parameter, but the schema already does that. The description's focus on the most impactful parameters and their interactions is sufficient for an agent to use the tool effectively.
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 baseline is 3. The description adds significant value by clarifying parameter interactions (e.g., gericht applies only to 'Justiz', fachgebiet requires specific document types, and limit's payload implications). It also gives example queries that map parameter combinations to real use cases, which goes beyond the schema's individual field descriptions.
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?
States a specific verb ('Search') and resource ('Austrian court decisions (Judikatur)'), and clearly differentiates from sibling RIS tools by focusing on case law. The description goes further to distinguish the two document kinds (Rechtssatz vs. Entscheidungstext) and provides 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?
Provides explicit guidance on choosing jurisdiction ('gerichtsbarkeit'), document type ('dokumenttyp'), and gives multiple example queries illustrating different use cases (e.g., filtering by court, norm, subject area). While it doesn't explicitly state when NOT to use this tool versus siblings like ris_bundesrecht, the domain focus is clear enough for an agent to select it appropriately. The lack of explicit exclusion of alternatives is the only gap.
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). Every hit costs about 1k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice). | |
| 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 |
| notice | No | Present when the page was delivered at a smaller size than requested to fit the payload budget — page, page_size and query already describe the delivered page; page with query.limit |
| 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, so the safety profile is covered. The description adds only the scope (all 9 states) and does not disclose additional behaviors like pagination or payload limits, though some of that is in the schema. It neither contradicts nor enriches the annotations meaningfully.
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 short and well-structured: a one-sentence purpose, a scope note, and two concrete example queries. Every sentence serves a purpose and the content is front-loaded, making it easy for an agent to quickly understand the tool.
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 has 9 parameters, enums, and an output schema, which the description does not need to replicate. The description provides the essential overview and examples, while the schema handles parameter details. It lacks only a brief note on pagination or response format, but those are covered elsewhere, so overall completeness is adequate.
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 schema already documents all parameters. The description adds example queries that illustrate parameter usage (lgblnummer, jahrgang, bundesland, suchworte), which is helpful but not necessary given the complete schema. It does not add 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 clearly states the tool searches Austrian State Law Gazettes and finds official publications of state laws. It is specific about the resource and action, but does not explicitly differentiate it from sibling tools like ris_landesrecht or ris_bundesgesetzblatt, relying on the name and scope for distinction.
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 gives clear context—use for state/provincial law gazettes—and provides example queries, but it does not state when to avoid this tool or mention alternatives such as ris_landesrecht for consolidated laws. Usage guidance 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_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). Every hit costs about 1k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice). | |
| 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 |
| notice | No | Present when the page was delivered at a smaller size than requested to fit the payload budget — page, page_size and query already describe the delivered page; page with query.limit |
| 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 readOnlyHint annotation, the description discloses critical behavioral quirks: suchworte results are alphabetically ordered by law title (not relevance) and can bury relevant hits, and the limit parameter self-adjusts to a smaller page size when the payload budget is exceeded, with a notice. These are non-obvious behaviors that materially affect how the agent interprets results.
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 efficiently structured: purpose first, then search strategy, then examples. Every sentence earns its place, and the critical alternative-routing and ordering caveat are front-loaded before the examples. No redundancy or filler.
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 an 11-parameter tool with an output schema, the description covers all necessary decision points: when to use it, how to craft precise queries, which alternatives exist, and subtle behaviors like ordering and pagination fallback. The presence of an output schema means return format is already handled, so nothing essential is missing.
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 already documents all 11 parameters with 100% coverage, so the baseline is 3. The description adds value by explaining the relative precision of titel/paragraph vs suchworte, giving example query combinations (including fassung_vom), and clarifying the limit behavior. However, it does not systematically walk through each parameter, relying on the schema for full semantics.
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 precise verb–resource pair ('Search Austrian state/provincial laws (Landesrecht)') and immediately differentiates from the sibling ris_bundesrecht by stating that federal law should go there. The examples further reinforce the scope, so an agent can instantly identify what this tool does and how it differs from nearby tools.
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 gives explicit when-to-use guidance: prefer 'titel' and 'paragraph' over 'suchworte' for precision, and explicitly routes federal topics (e.g., warranty in VGG/ABGB) to ris_bundesrecht. This is a clear, actionable routing rule with a concrete example, leaving no ambiguity about alternative selection.
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). Every hit costs about 1k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice). | |
| 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 |
| notice | No | Present when the page was delivered at a smaller size than requested to fit the payload budget — page, page_size and query already describe the delivered page; page with query.limit |
| 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 mark the tool as read-only, open-world, and non-destructive, so the safety profile is covered. The description adds dataset scope and example query behavior, but not operational traits such as pagination or result-size behavior; those are partly covered by the schema's detailed limit parameter description.
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 compact, front-loads the central purpose, and every sentence earns its place. The three example bullets are high-signal and make the parameter semantics concrete without padding or repetition.
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 an 11-parameter search tool, the description does not re-explain the schema but gives enough orientation for tool selection and basic invocation. It could be slightly stronger by explicitly excluding related RIS tools, but the rich schema, annotations, and examples cover most operational concerns.
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 with concrete example queries showing how suchworte, einbringende_stelle, and date-range parameters combine into realistic searches, which helps an agent map natural-language intents to parameters.
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 Austrian Government Bills (Regierungsvorlagen)'. It further defines the dataset as government proposals submitted to parliament for legislative history, which clearly separates it from sibling tools such as ris_judikatur or ris_bundesrecht.
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 to use this tool for legislative history and parliamentary materials. It does not explicitly name alternative tools or state when not to use it, so it misses the top bar, but the intended use case is clearly stated rather than merely implied.
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). Every hit costs about 1k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice). | |
| 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 |
| notice | No | Present when the page was delivered at a smaller size than requested to fit the payload budget — page, page_size and query already describe the delivered page; page with query.limit |
| 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 read-only and open-world annotations, the description discloses payload behavior: each hit costs ~1k characters, and if a page exceeds the budget, it returns the next smaller page size with a notice. This transparency about internal limits and fallback behavior is valuable.
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 thorough with examples and parameter guidance, but it is somewhat long. However, every sentence contributes useful information—no fluff—so it remains efficient and well-structured with clear lists and examples.
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 provides sufficient context for invoking the tool correctly, including response_format choices and applikation-specific parameters. While it does not describe the output structure, the output schema is present, and the description's coverage of usage nuances is comprehensive for a tool of this 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?
The schema already covers all 32 parameters with detailed descriptions. The tool description adds context by grouping parameters with their associated applikation (e.g., 'Avsv only', 'Mrp only'), enhancing understanding of which parameters apply in which scenarios, though this is also partly present in the schema descriptions.
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 miscellaneous Austrian legal collections and lists the specific applications (PruefGewO, Avsv, etc.). It differentiates from sibling tools by explicitly naming 'Sonstige' and the unique collections covered, 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?
The description provides concrete example queries for different applikation types, illustrating parameter combinations. It also advises on limit settings based on payload costs and suggests when to use smaller vs. larger limits, giving practical guidance on when and how to use the tool effectively.
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). Every hit costs about 1k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice). | |
| 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 |
| notice | No | Present when the page was delivered at a smaller size than requested to fit the payload budget — page, page_size and query already describe the delivered page; page with query.limit |
| 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 the safety profile. The description adds valuable context: the current data limitation (only Tirol since 2022) and example queries that illustrate expected behavior. It does not contradict annotations and enriches them with operational constraints.
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, starting with a clear purpose, then a note on data availability, and finally example queries. It is slightly lengthy but every part earns its place, and the examples are presented compactly. 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?
For a tool with 9 optional parameters and an output schema, the description adequately covers the main usage patterns and the crucial data limitation. Pagination and response_format are described in the schema, so the description need not repeat them. It is complete enough for an agent to call the tool 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 coverage is 100%, so each parameter has a description. The description goes beyond by providing concrete example queries (suchworte, titel, bundesland, kundmachungsnummer, date range) that demonstrate how parameters combine, adding practical meaning beyond the schema's isolated field descriptions.
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 and resource: 'Search Austrian state ordinance gazettes (Verordnungsblaetter der Laender).' It also clarifies the scope (state/provincial ordinances) and distinguishes from generic law searches by focusing on ordinance gazettes, though it doesn't explicitly name a sibling alternative.
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 usage instructions via example queries and notes that only Tirol data is available, implying when the tool is applicable. However, it does not explicitly contrast with sibling tools like ris_landesgesetzblatt or ris_landesrecht, leaving the 'when-not-to-use' guidance implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
11 tool updates
v1.8.2- Changed
ris_bezirke1 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1-2k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)."New value: +"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)."
- Changed
ris_bundesgesetzblatt1 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1-2k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)."New value: +"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)."
- Changed
ris_bundesrecht1 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1-2k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)."New value: +"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)."
- Changed
ris_gemeinden1 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1-2k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)."New value: +"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)."
- Changed
ris_history1 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1-2k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)."New value: +"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)."
- Changed
ris_judikatur1 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1-2k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)."New value: +"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)."
- Changed
ris_landesgesetzblatt1 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1-2k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)."New value: +"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)."
- Changed
ris_landesrecht1 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1-2k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)."New value: +"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)."
- Changed
ris_regierungsvorlagen1 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1-2k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)."New value: +"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)."
- Changed
ris_sonstige1 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1-2k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)."New value: +"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)."
- Changed
ris_verordnungen1 field changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1-2k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)."New value: +"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)."
11 tool updates
v1.8.0- Changed
ris_bezirke6 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page: 10, 20, 50, or 100 (default: 20)"New value: +"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1-2k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)." - removed
Output schema / properties / documents / items / properties / citation / properties / kurztitelRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / content_urls / properties / rtfRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / content_urls / properties / xmlRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / kurztitelRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - added
Output schema / properties / noticeAdded value: +{ + "description": "Present when the page was delivered at a smaller size than requested to fit the payload budget — page, page_size and query already describe the delivered page; page with query.limit", + "type": "string" +}
- Changed
ris_bundesgesetzblatt6 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page: 10, 20, 50, or 100 (default: 20)"New value: +"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1-2k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)." - removed
Output schema / properties / documents / items / properties / citation / properties / kurztitelRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / content_urls / properties / rtfRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / content_urls / properties / xmlRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / kurztitelRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - added
Output schema / properties / noticeAdded value: +{ + "description": "Present when the page was delivered at a smaller size than requested to fit the payload budget — page, page_size and query already describe the delivered page; page with query.limit", + "type": "string" +}
- Changed
ris_bundesrecht6 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page: 10, 20, 50, or 100 (default: 20)"New value: +"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1-2k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)." - removed
Output schema / properties / documents / items / properties / citation / properties / kurztitelRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / content_urls / properties / rtfRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / content_urls / properties / xmlRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / kurztitelRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - added
Output schema / properties / noticeAdded value: +{ + "description": "Present when the page was delivered at a smaller size than requested to fit the payload budget — page, page_size and query already describe the delivered page; page with query.limit", + "type": "string" +}
- Changed
ris_gemeinden6 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page: 10, 20, 50, or 100 (default: 20)"New value: +"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1-2k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)." - removed
Output schema / properties / documents / items / properties / citation / properties / kurztitelRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / content_urls / properties / rtfRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / content_urls / properties / xmlRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / kurztitelRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - added
Output schema / properties / noticeAdded value: +{ + "description": "Present when the page was delivered at a smaller size than requested to fit the payload budget — page, page_size and query already describe the delivered page; page with query.limit", + "type": "string" +}
- Changed
ris_history6 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page: 10, 20, 50, or 100 (default: 20)"New value: +"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1-2k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)." - removed
Output schema / properties / documents / items / properties / citation / properties / kurztitelRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / content_urls / properties / rtfRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / content_urls / properties / xmlRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / kurztitelRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - added
Output schema / properties / noticeAdded value: +{ + "description": "Present when the page was delivered at a smaller size than requested to fit the payload budget — page, page_size and query already describe the delivered page; page with query.limit", + "type": "string" +}
- Changed
ris_judikatur6 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page: 10, 20, 50, or 100 (default: 20)"New value: +"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1-2k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)." - removed
Output schema / properties / documents / items / properties / citation / properties / kurztitelRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / content_urls / properties / rtfRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / content_urls / properties / xmlRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / kurztitelRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - added
Output schema / properties / noticeAdded value: +{ + "description": "Present when the page was delivered at a smaller size than requested to fit the payload budget — page, page_size and query already describe the delivered page; page with query.limit", + "type": "string" +}
- Changed
ris_landesgesetzblatt6 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page: 10, 20, 50, or 100 (default: 20)"New value: +"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1-2k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)." - removed
Output schema / properties / documents / items / properties / citation / properties / kurztitelRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / content_urls / properties / rtfRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / content_urls / properties / xmlRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / kurztitelRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - added
Output schema / properties / noticeAdded value: +{ + "description": "Present when the page was delivered at a smaller size than requested to fit the payload budget — page, page_size and query already describe the delivered page; page with query.limit", + "type": "string" +}
- Changed
ris_landesrecht6 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page: 10, 20, 50, or 100 (default: 20)"New value: +"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1-2k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)." - removed
Output schema / properties / documents / items / properties / citation / properties / kurztitelRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / content_urls / properties / rtfRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / content_urls / properties / xmlRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / kurztitelRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - added
Output schema / properties / noticeAdded value: +{ + "description": "Present when the page was delivered at a smaller size than requested to fit the payload budget — page, page_size and query already describe the delivered page; page with query.limit", + "type": "string" +}
- Changed
ris_regierungsvorlagen6 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page: 10, 20, 50, or 100 (default: 20)"New value: +"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1-2k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)." - removed
Output schema / properties / documents / items / properties / citation / properties / kurztitelRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / content_urls / properties / rtfRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / content_urls / properties / xmlRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / kurztitelRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - added
Output schema / properties / noticeAdded value: +{ + "description": "Present when the page was delivered at a smaller size than requested to fit the payload budget — page, page_size and query already describe the delivered page; page with query.limit", + "type": "string" +}
- Changed
ris_sonstige6 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page: 10, 20, 50, or 100 (default: 20)"New value: +"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1-2k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)." - removed
Output schema / properties / documents / items / properties / citation / properties / kurztitelRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / content_urls / properties / rtfRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / content_urls / properties / xmlRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / kurztitelRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - added
Output schema / properties / noticeAdded value: +{ + "description": "Present when the page was delivered at a smaller size than requested to fit the payload budget — page, page_size and query already describe the delivered page; page with query.limit", + "type": "string" +}
- Changed
ris_verordnungen6 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page: 10, 20, 50, or 100 (default: 20)"New value: +"Results per page: 10, 20, 50 or 100 (default: 20). Every hit costs about 1-2k characters of structured payload, so prefer 20 for browsing and 50 for a broad survey; a page that would exceed the payload budget is delivered at the next smaller page size and says so (page_size, query.limit and notice)." - removed
Output schema / properties / documents / items / properties / citation / properties / kurztitelRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / content_urls / properties / rtfRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / content_urls / properties / xmlRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / documents / items / properties / kurztitelRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] -} - added
Output schema / properties / noticeAdded value: +{ + "description": "Present when the page was delivered at a smaller size than requested to fit the payload budget — page, page_size and query already describe the delivered page; page with query.limit", + "type": "string" +}
13 tool updates
v1.6.1- Changed
ris_bezirke1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "documents": { + "description": "The documents on this page", + "items": { + "additionalProperties": false, + "properties": { + "applikation": { + "type": "string" + }, + "citation": { + "additionalProperties": false, + "properties": { + "ausserkrafttreten": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "eli": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "inkrafttreten": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "kundmachungsorgan": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "kurztitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "langtitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "paragraph": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "citation_display": { + "description": "Preformatted citation line as shown in the text output", + "type": "string" + }, + "content_urls": { + "additionalProperties": false, + "properties": { + "html": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "pdf": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rtf": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "xml": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "dokument_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "dokumentnummer": { + "type": "string" + }, + "entscheidungsdatum": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Decision date as YYYY-MM-DD (Judikatur documents only)" + }, + "gericht": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Deciding court or authority (Judikatur documents only)" + }, + "gesamte_rechtsvorschrift_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "geschaeftszahl": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Case number(s), semicolon-separated when several (Judikatur documents only)" + }, + "kurztitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rechtssatznummer": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Rechtssatz number, e.g. \"RS0018547\" (Judikatur Rechtssatz documents only)" + }, + "titel": { + "type": "string" + } + }, + "required": [ + "dokumentnummer", + "applikation", + "titel", + "citation", + "citation_display", + "content_urls" + ], + "type": "object" + }, + "type": "array" + }, + "has_more": { + "description": "Whether further result pages are available", + "type": "boolean" + }, + "page": { + "description": "Page number of this result set (1-based)", + "type": "number" + }, + "page_size": { + "description": "Number of documents per page", + "type": "number" + }, + "query": { + "additionalProperties": {}, + "description": "Echo of the validated search parameters alongside the tool name — re-issue the call with an incremented \"seite\" for the next page", + "properties": { + "tool": { + "description": "Name of the tool that produced this result — call it again to paginate", + "type": "string" + } + }, + "required": [ + "tool" + ], + "type": "object" + }, + "total_hits": { + "description": "Total number of documents in RIS matching the search", + "type": "number" + } + }, + "required": [ + "total_hits", + "page", + "page_size", + "has_more", + "documents" + ], + "type": "object" +}
- Changed
ris_bundesgesetzblatt1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "documents": { + "description": "The documents on this page", + "items": { + "additionalProperties": false, + "properties": { + "applikation": { + "type": "string" + }, + "citation": { + "additionalProperties": false, + "properties": { + "ausserkrafttreten": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "eli": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "inkrafttreten": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "kundmachungsorgan": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "kurztitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "langtitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "paragraph": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "citation_display": { + "description": "Preformatted citation line as shown in the text output", + "type": "string" + }, + "content_urls": { + "additionalProperties": false, + "properties": { + "html": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "pdf": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rtf": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "xml": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "dokument_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "dokumentnummer": { + "type": "string" + }, + "entscheidungsdatum": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Decision date as YYYY-MM-DD (Judikatur documents only)" + }, + "gericht": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Deciding court or authority (Judikatur documents only)" + }, + "gesamte_rechtsvorschrift_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "geschaeftszahl": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Case number(s), semicolon-separated when several (Judikatur documents only)" + }, + "kurztitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rechtssatznummer": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Rechtssatz number, e.g. \"RS0018547\" (Judikatur Rechtssatz documents only)" + }, + "titel": { + "type": "string" + } + }, + "required": [ + "dokumentnummer", + "applikation", + "titel", + "citation", + "citation_display", + "content_urls" + ], + "type": "object" + }, + "type": "array" + }, + "has_more": { + "description": "Whether further result pages are available", + "type": "boolean" + }, + "page": { + "description": "Page number of this result set (1-based)", + "type": "number" + }, + "page_size": { + "description": "Number of documents per page", + "type": "number" + }, + "query": { + "additionalProperties": {}, + "description": "Echo of the validated search parameters alongside the tool name — re-issue the call with an incremented \"seite\" for the next page", + "properties": { + "tool": { + "description": "Name of the tool that produced this result — call it again to paginate", + "type": "string" + } + }, + "required": [ + "tool" + ], + "type": "object" + }, + "total_hits": { + "description": "Total number of documents in RIS matching the search", + "type": "number" + } + }, + "required": [ + "total_hits", + "page", + "page_size", + "has_more", + "documents" + ], + "type": "object" +}
- Changed
ris_bundesrecht2 fields changed- changed
Input schema / properties / suchworte / descriptionPrevious value: -"Full-text search terms (e.g., \"Mietrecht\", \"Schadenersatz\")"New value: +"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." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "documents": { + "description": "The documents on this page", + "items": { + "additionalProperties": false, + "properties": { + "applikation": { + "type": "string" + }, + "citation": { + "additionalProperties": false, + "properties": { + "ausserkrafttreten": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "eli": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "inkrafttreten": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "kundmachungsorgan": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "kurztitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "langtitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "paragraph": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "citation_display": { + "description": "Preformatted citation line as shown in the text output", + "type": "string" + }, + "content_urls": { + "additionalProperties": false, + "properties": { + "html": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "pdf": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rtf": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "xml": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "dokument_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "dokumentnummer": { + "type": "string" + }, + "entscheidungsdatum": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Decision date as YYYY-MM-DD (Judikatur documents only)" + }, + "gericht": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Deciding court or authority (Judikatur documents only)" + }, + "gesamte_rechtsvorschrift_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "geschaeftszahl": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Case number(s), semicolon-separated when several (Judikatur documents only)" + }, + "kurztitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rechtssatznummer": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Rechtssatz number, e.g. \"RS0018547\" (Judikatur Rechtssatz documents only)" + }, + "titel": { + "type": "string" + } + }, + "required": [ + "dokumentnummer", + "applikation", + "titel", + "citation", + "citation_display", + "content_urls" + ], + "type": "object" + }, + "type": "array" + }, + "has_more": { + "description": "Whether further result pages are available", + "type": "boolean" + }, + "page": { + "description": "Page number of this result set (1-based)", + "type": "number" + }, + "page_size": { + "description": "Number of documents per page", + "type": "number" + }, + "query": { + "additionalProperties": {}, + "description": "Echo of the validated search parameters alongside the tool name — re-issue the call with an incremented \"seite\" for the next page", + "properties": { + "tool": { + "description": "Name of the tool that produced this result — call it again to paginate", + "type": "string" + } + }, + "required": [ + "tool" + ], + "type": "object" + }, + "total_hits": { + "description": "Total number of documents in RIS matching the search", + "type": "number" + } + }, + "required": [ + "total_hits", + "page", + "page_size", + "has_more", + "documents" + ], + "type": "object" +}
- Changed
ris_dokument1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "dokumentnummer": { + "description": "RIS document number of this document, echoed from the request", + "type": "string" + }, + "outline": { + "description": "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", + "items": { + "additionalProperties": false, + "properties": { + "label": { + "description": "Heading text", + "type": "string" + }, + "level": { + "description": "Heading level 1-6 as marked up in the RIS source", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "offset": { + "description": "Character offset of the heading in the document text", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "span": { + "description": "Characters up to the next heading, or to the end of the text — tells a one-line metadata field from a real section", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "level", + "label", + "offset", + "span" + ], + "type": "object" + }, + "type": "array" + }, + "source_url": { + "description": "RIS URL the document text was rendered from", + "type": "string" + }, + "text": { + "description": "The document text, identical to the text content block — truncated at 25000 characters with a German notice when the document is longer", + "type": "string" + }, + "total_length": { + "description": "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", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "text", + "total_length" + ], + "type": "object" +}
- Added
ris_dokument_abschnitt - Changed
ris_gemeinden1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "documents": { + "description": "The documents on this page", + "items": { + "additionalProperties": false, + "properties": { + "applikation": { + "type": "string" + }, + "citation": { + "additionalProperties": false, + "properties": { + "ausserkrafttreten": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "eli": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "inkrafttreten": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "kundmachungsorgan": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "kurztitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "langtitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "paragraph": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "citation_display": { + "description": "Preformatted citation line as shown in the text output", + "type": "string" + }, + "content_urls": { + "additionalProperties": false, + "properties": { + "html": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "pdf": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rtf": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "xml": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "dokument_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "dokumentnummer": { + "type": "string" + }, + "entscheidungsdatum": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Decision date as YYYY-MM-DD (Judikatur documents only)" + }, + "gericht": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Deciding court or authority (Judikatur documents only)" + }, + "gesamte_rechtsvorschrift_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "geschaeftszahl": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Case number(s), semicolon-separated when several (Judikatur documents only)" + }, + "kurztitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rechtssatznummer": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Rechtssatz number, e.g. \"RS0018547\" (Judikatur Rechtssatz documents only)" + }, + "titel": { + "type": "string" + } + }, + "required": [ + "dokumentnummer", + "applikation", + "titel", + "citation", + "citation_display", + "content_urls" + ], + "type": "object" + }, + "type": "array" + }, + "has_more": { + "description": "Whether further result pages are available", + "type": "boolean" + }, + "page": { + "description": "Page number of this result set (1-based)", + "type": "number" + }, + "page_size": { + "description": "Number of documents per page", + "type": "number" + }, + "query": { + "additionalProperties": {}, + "description": "Echo of the validated search parameters alongside the tool name — re-issue the call with an incremented \"seite\" for the next page", + "properties": { + "tool": { + "description": "Name of the tool that produced this result — call it again to paginate", + "type": "string" + } + }, + "required": [ + "tool" + ], + "type": "object" + }, + "total_hits": { + "description": "Total number of documents in RIS matching the search", + "type": "number" + } + }, + "required": [ + "total_hits", + "page", + "page_size", + "has_more", + "documents" + ], + "type": "object" +}
- Changed
ris_history1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "documents": { + "description": "The documents on this page", + "items": { + "additionalProperties": false, + "properties": { + "applikation": { + "type": "string" + }, + "citation": { + "additionalProperties": false, + "properties": { + "ausserkrafttreten": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "eli": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "inkrafttreten": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "kundmachungsorgan": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "kurztitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "langtitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "paragraph": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "citation_display": { + "description": "Preformatted citation line as shown in the text output", + "type": "string" + }, + "content_urls": { + "additionalProperties": false, + "properties": { + "html": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "pdf": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rtf": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "xml": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "dokument_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "dokumentnummer": { + "type": "string" + }, + "entscheidungsdatum": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Decision date as YYYY-MM-DD (Judikatur documents only)" + }, + "gericht": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Deciding court or authority (Judikatur documents only)" + }, + "gesamte_rechtsvorschrift_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "geschaeftszahl": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Case number(s), semicolon-separated when several (Judikatur documents only)" + }, + "kurztitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rechtssatznummer": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Rechtssatz number, e.g. \"RS0018547\" (Judikatur Rechtssatz documents only)" + }, + "titel": { + "type": "string" + } + }, + "required": [ + "dokumentnummer", + "applikation", + "titel", + "citation", + "citation_display", + "content_urls" + ], + "type": "object" + }, + "type": "array" + }, + "has_more": { + "description": "Whether further result pages are available", + "type": "boolean" + }, + "page": { + "description": "Page number of this result set (1-based)", + "type": "number" + }, + "page_size": { + "description": "Number of documents per page", + "type": "number" + }, + "query": { + "additionalProperties": {}, + "description": "Echo of the validated search parameters alongside the tool name — re-issue the call with an incremented \"seite\" for the next page", + "properties": { + "tool": { + "description": "Name of the tool that produced this result — call it again to paginate", + "type": "string" + } + }, + "required": [ + "tool" + ], + "type": "object" + }, + "total_hits": { + "description": "Total number of documents in RIS matching the search", + "type": "number" + } + }, + "required": [ + "total_hits", + "page", + "page_size", + "has_more", + "documents" + ], + "type": "object" +}
- Changed
ris_judikatur1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "documents": { + "description": "The documents on this page", + "items": { + "additionalProperties": false, + "properties": { + "applikation": { + "type": "string" + }, + "citation": { + "additionalProperties": false, + "properties": { + "ausserkrafttreten": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "eli": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "inkrafttreten": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "kundmachungsorgan": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "kurztitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "langtitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "paragraph": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "citation_display": { + "description": "Preformatted citation line as shown in the text output", + "type": "string" + }, + "content_urls": { + "additionalProperties": false, + "properties": { + "html": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "pdf": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rtf": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "xml": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "dokument_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "dokumentnummer": { + "type": "string" + }, + "entscheidungsdatum": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Decision date as YYYY-MM-DD (Judikatur documents only)" + }, + "gericht": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Deciding court or authority (Judikatur documents only)" + }, + "gesamte_rechtsvorschrift_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "geschaeftszahl": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Case number(s), semicolon-separated when several (Judikatur documents only)" + }, + "kurztitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rechtssatznummer": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Rechtssatz number, e.g. \"RS0018547\" (Judikatur Rechtssatz documents only)" + }, + "titel": { + "type": "string" + } + }, + "required": [ + "dokumentnummer", + "applikation", + "titel", + "citation", + "citation_display", + "content_urls" + ], + "type": "object" + }, + "type": "array" + }, + "has_more": { + "description": "Whether further result pages are available", + "type": "boolean" + }, + "page": { + "description": "Page number of this result set (1-based)", + "type": "number" + }, + "page_size": { + "description": "Number of documents per page", + "type": "number" + }, + "query": { + "additionalProperties": {}, + "description": "Echo of the validated search parameters alongside the tool name — re-issue the call with an incremented \"seite\" for the next page", + "properties": { + "tool": { + "description": "Name of the tool that produced this result — call it again to paginate", + "type": "string" + } + }, + "required": [ + "tool" + ], + "type": "object" + }, + "total_hits": { + "description": "Total number of documents in RIS matching the search", + "type": "number" + } + }, + "required": [ + "total_hits", + "page", + "page_size", + "has_more", + "documents" + ], + "type": "object" +}
- Changed
ris_landesgesetzblatt1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "documents": { + "description": "The documents on this page", + "items": { + "additionalProperties": false, + "properties": { + "applikation": { + "type": "string" + }, + "citation": { + "additionalProperties": false, + "properties": { + "ausserkrafttreten": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "eli": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "inkrafttreten": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "kundmachungsorgan": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "kurztitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "langtitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "paragraph": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "citation_display": { + "description": "Preformatted citation line as shown in the text output", + "type": "string" + }, + "content_urls": { + "additionalProperties": false, + "properties": { + "html": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "pdf": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rtf": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "xml": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "dokument_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "dokumentnummer": { + "type": "string" + }, + "entscheidungsdatum": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Decision date as YYYY-MM-DD (Judikatur documents only)" + }, + "gericht": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Deciding court or authority (Judikatur documents only)" + }, + "gesamte_rechtsvorschrift_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "geschaeftszahl": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Case number(s), semicolon-separated when several (Judikatur documents only)" + }, + "kurztitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rechtssatznummer": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Rechtssatz number, e.g. \"RS0018547\" (Judikatur Rechtssatz documents only)" + }, + "titel": { + "type": "string" + } + }, + "required": [ + "dokumentnummer", + "applikation", + "titel", + "citation", + "citation_display", + "content_urls" + ], + "type": "object" + }, + "type": "array" + }, + "has_more": { + "description": "Whether further result pages are available", + "type": "boolean" + }, + "page": { + "description": "Page number of this result set (1-based)", + "type": "number" + }, + "page_size": { + "description": "Number of documents per page", + "type": "number" + }, + "query": { + "additionalProperties": {}, + "description": "Echo of the validated search parameters alongside the tool name — re-issue the call with an incremented \"seite\" for the next page", + "properties": { + "tool": { + "description": "Name of the tool that produced this result — call it again to paginate", + "type": "string" + } + }, + "required": [ + "tool" + ], + "type": "object" + }, + "total_hits": { + "description": "Total number of documents in RIS matching the search", + "type": "number" + } + }, + "required": [ + "total_hits", + "page", + "page_size", + "has_more", + "documents" + ], + "type": "object" +}
- Changed
ris_landesrecht2 fields changed- changed
Input schema / properties / suchworte / descriptionPrevious value: -"Full-text search terms"New value: +"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." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "documents": { + "description": "The documents on this page", + "items": { + "additionalProperties": false, + "properties": { + "applikation": { + "type": "string" + }, + "citation": { + "additionalProperties": false, + "properties": { + "ausserkrafttreten": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "eli": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "inkrafttreten": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "kundmachungsorgan": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "kurztitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "langtitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "paragraph": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "citation_display": { + "description": "Preformatted citation line as shown in the text output", + "type": "string" + }, + "content_urls": { + "additionalProperties": false, + "properties": { + "html": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "pdf": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rtf": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "xml": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "dokument_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "dokumentnummer": { + "type": "string" + }, + "entscheidungsdatum": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Decision date as YYYY-MM-DD (Judikatur documents only)" + }, + "gericht": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Deciding court or authority (Judikatur documents only)" + }, + "gesamte_rechtsvorschrift_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "geschaeftszahl": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Case number(s), semicolon-separated when several (Judikatur documents only)" + }, + "kurztitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rechtssatznummer": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Rechtssatz number, e.g. \"RS0018547\" (Judikatur Rechtssatz documents only)" + }, + "titel": { + "type": "string" + } + }, + "required": [ + "dokumentnummer", + "applikation", + "titel", + "citation", + "citation_display", + "content_urls" + ], + "type": "object" + }, + "type": "array" + }, + "has_more": { + "description": "Whether further result pages are available", + "type": "boolean" + }, + "page": { + "description": "Page number of this result set (1-based)", + "type": "number" + }, + "page_size": { + "description": "Number of documents per page", + "type": "number" + }, + "query": { + "additionalProperties": {}, + "description": "Echo of the validated search parameters alongside the tool name — re-issue the call with an incremented \"seite\" for the next page", + "properties": { + "tool": { + "description": "Name of the tool that produced this result — call it again to paginate", + "type": "string" + } + }, + "required": [ + "tool" + ], + "type": "object" + }, + "total_hits": { + "description": "Total number of documents in RIS matching the search", + "type": "number" + } + }, + "required": [ + "total_hits", + "page", + "page_size", + "has_more", + "documents" + ], + "type": "object" +}
- Changed
ris_regierungsvorlagen1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "documents": { + "description": "The documents on this page", + "items": { + "additionalProperties": false, + "properties": { + "applikation": { + "type": "string" + }, + "citation": { + "additionalProperties": false, + "properties": { + "ausserkrafttreten": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "eli": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "inkrafttreten": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "kundmachungsorgan": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "kurztitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "langtitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "paragraph": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "citation_display": { + "description": "Preformatted citation line as shown in the text output", + "type": "string" + }, + "content_urls": { + "additionalProperties": false, + "properties": { + "html": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "pdf": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rtf": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "xml": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "dokument_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "dokumentnummer": { + "type": "string" + }, + "entscheidungsdatum": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Decision date as YYYY-MM-DD (Judikatur documents only)" + }, + "gericht": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Deciding court or authority (Judikatur documents only)" + }, + "gesamte_rechtsvorschrift_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "geschaeftszahl": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Case number(s), semicolon-separated when several (Judikatur documents only)" + }, + "kurztitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rechtssatznummer": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Rechtssatz number, e.g. \"RS0018547\" (Judikatur Rechtssatz documents only)" + }, + "titel": { + "type": "string" + } + }, + "required": [ + "dokumentnummer", + "applikation", + "titel", + "citation", + "citation_display", + "content_urls" + ], + "type": "object" + }, + "type": "array" + }, + "has_more": { + "description": "Whether further result pages are available", + "type": "boolean" + }, + "page": { + "description": "Page number of this result set (1-based)", + "type": "number" + }, + "page_size": { + "description": "Number of documents per page", + "type": "number" + }, + "query": { + "additionalProperties": {}, + "description": "Echo of the validated search parameters alongside the tool name — re-issue the call with an incremented \"seite\" for the next page", + "properties": { + "tool": { + "description": "Name of the tool that produced this result — call it again to paginate", + "type": "string" + } + }, + "required": [ + "tool" + ], + "type": "object" + }, + "total_hits": { + "description": "Total number of documents in RIS matching the search", + "type": "number" + } + }, + "required": [ + "total_hits", + "page", + "page_size", + "has_more", + "documents" + ], + "type": "object" +}
- Changed
ris_sonstige1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "documents": { + "description": "The documents on this page", + "items": { + "additionalProperties": false, + "properties": { + "applikation": { + "type": "string" + }, + "citation": { + "additionalProperties": false, + "properties": { + "ausserkrafttreten": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "eli": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "inkrafttreten": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "kundmachungsorgan": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "kurztitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "langtitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "paragraph": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "citation_display": { + "description": "Preformatted citation line as shown in the text output", + "type": "string" + }, + "content_urls": { + "additionalProperties": false, + "properties": { + "html": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "pdf": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rtf": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "xml": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "dokument_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "dokumentnummer": { + "type": "string" + }, + "entscheidungsdatum": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Decision date as YYYY-MM-DD (Judikatur documents only)" + }, + "gericht": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Deciding court or authority (Judikatur documents only)" + }, + "gesamte_rechtsvorschrift_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "geschaeftszahl": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Case number(s), semicolon-separated when several (Judikatur documents only)" + }, + "kurztitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rechtssatznummer": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Rechtssatz number, e.g. \"RS0018547\" (Judikatur Rechtssatz documents only)" + }, + "titel": { + "type": "string" + } + }, + "required": [ + "dokumentnummer", + "applikation", + "titel", + "citation", + "citation_display", + "content_urls" + ], + "type": "object" + }, + "type": "array" + }, + "has_more": { + "description": "Whether further result pages are available", + "type": "boolean" + }, + "page": { + "description": "Page number of this result set (1-based)", + "type": "number" + }, + "page_size": { + "description": "Number of documents per page", + "type": "number" + }, + "query": { + "additionalProperties": {}, + "description": "Echo of the validated search parameters alongside the tool name — re-issue the call with an incremented \"seite\" for the next page", + "properties": { + "tool": { + "description": "Name of the tool that produced this result — call it again to paginate", + "type": "string" + } + }, + "required": [ + "tool" + ], + "type": "object" + }, + "total_hits": { + "description": "Total number of documents in RIS matching the search", + "type": "number" + } + }, + "required": [ + "total_hits", + "page", + "page_size", + "has_more", + "documents" + ], + "type": "object" +}
- Changed
ris_verordnungen1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "documents": { + "description": "The documents on this page", + "items": { + "additionalProperties": false, + "properties": { + "applikation": { + "type": "string" + }, + "citation": { + "additionalProperties": false, + "properties": { + "ausserkrafttreten": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "eli": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "inkrafttreten": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "kundmachungsorgan": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "kurztitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "langtitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "paragraph": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "citation_display": { + "description": "Preformatted citation line as shown in the text output", + "type": "string" + }, + "content_urls": { + "additionalProperties": false, + "properties": { + "html": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "pdf": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rtf": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "xml": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "dokument_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "dokumentnummer": { + "type": "string" + }, + "entscheidungsdatum": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Decision date as YYYY-MM-DD (Judikatur documents only)" + }, + "gericht": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Deciding court or authority (Judikatur documents only)" + }, + "gesamte_rechtsvorschrift_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "geschaeftszahl": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Case number(s), semicolon-separated when several (Judikatur documents only)" + }, + "kurztitel": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rechtssatznummer": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Rechtssatz number, e.g. \"RS0018547\" (Judikatur Rechtssatz documents only)" + }, + "titel": { + "type": "string" + } + }, + "required": [ + "dokumentnummer", + "applikation", + "titel", + "citation", + "citation_display", + "content_urls" + ], + "type": "object" + }, + "type": "array" + }, + "has_more": { + "description": "Whether further result pages are available", + "type": "boolean" + }, + "page": { + "description": "Page number of this result set (1-based)", + "type": "number" + }, + "page_size": { + "description": "Number of documents per page", + "type": "number" + }, + "query": { + "additionalProperties": {}, + "description": "Echo of the validated search parameters alongside the tool name — re-issue the call with an incremented \"seite\" for the next page", + "properties": { + "tool": { + "description": "Name of the tool that produced this result — call it again to paginate", + "type": "string" + } + }, + "required": [ + "tool" + ], + "type": "object" + }, + "total_hits": { + "description": "Total number of documents in RIS matching the search", + "type": "number" + } + }, + "required": [ + "total_hits", + "page", + "page_size", + "has_more", + "documents" + ], + "type": "object" +}
11 tool updates
v1.2.4- Changed
ris_bezirke6 fields changed- added
Input schema / properties / limit / anyOfAdded value: +[ + { + "const": 10, + "type": "number" + }, + { + "const": 20, + "type": "number" + }, + { + "const": 50, + "type": "number" + }, + { + "const": 100, + "type": "number" + } +] - changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page 10/20/50/100 (default: 20)"New value: +"Results per page: 10, 20, 50, or 100 (default: 20)" - removed
Input schema / properties / limit / typeRemoved value: -"number" - added
Input schema / properties / seite / maximumAdded value: +9007199254740991 - added
Input schema / properties / seite / minimumAdded value: +1 - changed
Input schema / properties / seite / typePrevious value: -"number"New value: +"integer"
- Changed
ris_bundesgesetzblatt6 fields changed- added
Input schema / properties / limit / anyOfAdded value: +[ + { + "const": 10, + "type": "number" + }, + { + "const": 20, + "type": "number" + }, + { + "const": 50, + "type": "number" + }, + { + "const": 100, + "type": "number" + } +] - changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page 10/20/50/100 (default: 20)"New value: +"Results per page: 10, 20, 50, or 100 (default: 20)" - removed
Input schema / properties / limit / typeRemoved value: -"number" - added
Input schema / properties / seite / maximumAdded value: +9007199254740991 - added
Input schema / properties / seite / minimumAdded value: +1 - changed
Input schema / properties / seite / typePrevious value: -"number"New value: +"integer"
- Changed
ris_bundesrecht10 fields changed- added
Input schema / properties / abschnitt_typAdded value: +{ + "default": "Paragraph", + "description": "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\".", + "enum": [ + "Paragraph", + "Artikel", + "Anlage" + ], + "type": "string" +} - changed
Input schema / properties / applikation / descriptionPrevious value: -"Data source - \"BrKons\" (consolidated, default), \"Begut\" (drafts), \"BgblAuth\" (gazette), \"Erv\" (English)"New value: +"Data source - \"BrKons\" (consolidated, default), \"Begut\" (drafts), \"BgblAuth\" (gazette), \"Erv\" (English translations)" - changed
Input schema / properties / fassung_vom / descriptionPrevious value: -"Date for historical version (YYYY-MM-DD)"New value: +"Consolidated version as of this date (YYYY-MM-DD) — retrieves the law text as it stood on that day. Not supported for \"Erv\"." - added
Input schema / properties / limit / anyOfAdded value: +[ + { + "const": 10, + "type": "number" + }, + { + "const": 20, + "type": "number" + }, + { + "const": 50, + "type": "number" + }, + { + "const": 100, + "type": "number" + } +] - changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page 10/20/50/100 (default: 20)"New value: +"Results per page: 10, 20, 50, or 100 (default: 20)" - removed
Input schema / properties / limit / typeRemoved value: -"number" - changed
Input schema / properties / paragraph / descriptionPrevious value: -"Paragraph number to search for (e.g., \"1295\" for §1295)"New value: +"Section number to search for (e.g., \"1295\" for §1295, \"7\" for Art 7)" - added
Input schema / properties / seite / maximumAdded value: +9007199254740991 - added
Input schema / properties / seite / minimumAdded value: +1 - changed
Input schema / properties / seite / typePrevious value: -"number"New value: +"integer"
- Changed
ris_gemeinden6 fields changed- added
Input schema / properties / limit / anyOfAdded value: +[ + { + "const": 10, + "type": "number" + }, + { + "const": 20, + "type": "number" + }, + { + "const": 50, + "type": "number" + }, + { + "const": 100, + "type": "number" + } +] - changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page 10/20/50/100 (default: 20)"New value: +"Results per page: 10, 20, 50, or 100 (default: 20)" - removed
Input schema / properties / limit / typeRemoved value: -"number" - added
Input schema / properties / seite / maximumAdded value: +9007199254740991 - added
Input schema / properties / seite / minimumAdded value: +1 - changed
Input schema / properties / seite / typePrevious value: -"number"New value: +"integer"
- Changed
ris_history7 fields changed- changed
Input schema / properties / applikation / enumPrevious value: -[ - "Bundesnormen", - "Landesnormen", - "Justiz", - "Vfgh", - "Vwgh", - "Bvwg", - "Lvwg", - "BgblAuth", - "BgblAlt", - "BgblPdf", - "LgblAuth", - "Lgbl", - "LgblNO", - "Gemeinderecht", - "GemeinderechtAuth", - "Bvb", - "Vbl", - "RegV", - "Mrp", - "Erlaesse", - "PruefGewO", - "Avsv", - "Spg", - "KmGer", - "Dsk", - "Gbk", - "Dok", - "Pvak", - "Normenliste", - "AsylGH" -]New value: +[ + "Bundesnormen", + "Landesnormen", + "Justiz", + "Vfgh", + "Vwgh", + "Bvwg", + "Lvwg", + "BgblAuth", + "BgblAlt", + "BgblPdf", + "LgblAuth", + "Lgbl", + "LgblNO", + "Gemeinderecht", + "GemeinderechtAuth", + "Bvb", + "Vbl", + "RegV", + "Mrp", + "Erlaesse", + "PruefGewO", + "Avsv", + "Spg", + "KmGer", + "Dsk", + "Gbk", + "Dok", + "Pvak", + "Normenliste", + "AsylGH", + "Verg", + "Upts", + "Uvs", + "Ubas", + "Umse", + "Bks" +] - added
Input schema / properties / limit / anyOfAdded value: +[ + { + "const": 10, + "type": "number" + }, + { + "const": 20, + "type": "number" + }, + { + "const": 50, + "type": "number" + }, + { + "const": 100, + "type": "number" + } +] - changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page 10/20/50/100 (default: 20)"New value: +"Results per page: 10, 20, 50, or 100 (default: 20)" - removed
Input schema / properties / limit / typeRemoved value: -"number" - added
Input schema / properties / seite / maximumAdded value: +9007199254740991 - added
Input schema / properties / seite / minimumAdded value: +1 - changed
Input schema / properties / seite / typePrevious value: -"number"New value: +"integer"
- Changed
ris_judikatur17 fields changed- added
Input schema / properties / dokumenttypAdded value: +{ + "default": "beide", + "description": "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.", + "enum": [ + "rechtssatz", + "entscheidungstext", + "beide" + ], + "type": "string" +} - added
Input schema / properties / entscheidungsartAdded value: +{ + "description": "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)\".", + "maxLength": 100, + "type": "string" +} - added
Input schema / properties / fachgebietAdded value: +{ + "description": "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\").", + "enum": [ + "Amtsdelikte/Korruption", + "Amtshaftung inkl. StEG", + "Anfechtungsrecht", + "Arbeitsrecht", + "Bestandrecht", + "Datenschutzrecht", + "Erbrecht und Verlassenschaftsverfahren", + "Erwachsenenschutzrecht", + "Exekutionsrecht", + "Familienrecht (ohne Unterhalt)", + "Finanzstrafsachen", + "Gewerblicher Rechtsschutz", + "Grundbuchsrecht", + "Grundrechte", + "Insolvenzrecht", + "Internationales Privat- und Zivilverfahrensrecht", + "Jugendstrafsachen", + "Kartellrecht", + "Klauselentscheidungen", + "Konsumentenschutz und Produkthaftung", + "Medienrecht", + "Persönlichkeitsschutzrecht", + "Schadenersatz nach Verkehrsunfall", + "Schlepperei/FPG", + "Schiedsverfahrensrecht", + "Sexualdelikte", + "Sozialrecht", + "Suchtgiftdelikte", + "Transportrecht", + "Unionsrecht", + "Unterbringungs- und Heimaufenthaltsrecht", + "Unterhaltsrecht inkl. UVG", + "Unternehmens-, Gesellschafts- und Wertpapierrecht", + "Urheberrecht", + "Versicherungsvertragsrecht", + "Wirtschaftsstrafsachen", + "Wohnungseigentumsrecht", + "Zivilverfahrensrecht" + ], + "type": "string" +} - removed
Input schema / properties / gericht / defaultRemoved value: -"Justiz" - changed
Input schema / properties / gericht / descriptionPrevious value: -"Court - \"Justiz\" (OGH/OLG/LG, default), \"Vfgh\" (Constitutional), \"Vwgh\" (Administrative), \"Bvwg\", \"Lvwg\", \"Dsk\" (Data Protection), \"AsylGH\" (historical), \"Normenliste\", \"Pvak\", \"Gbk\", \"Dok\""New value: +"Filter by the actual court within the jurisdiction (e.g., \"OGH\", \"OLG Wien\"). Applies to gerichtsbarkeit=\"Justiz\"." - removed
Input schema / properties / gericht / enumRemoved value: -[ - "Justiz", - "Vfgh", - "Vwgh", - "Bvwg", - "Lvwg", - "Dsk", - "AsylGH", - "Normenliste", - "Pvak", - "Gbk", - "Dok" -] - added
Input schema / properties / gericht / maxLengthAdded value: +100 - added
Input schema / properties / gerichtsbarkeitAdded value: +{ + "default": "Justiz", + "description": "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\"", + "enum": [ + "Justiz", + "Vfgh", + "Vwgh", + "Bvwg", + "Lvwg", + "Dsk", + "AsylGH", + "Normenliste", + "Pvak", + "Gbk", + "Dok", + "Verg", + "Uvs", + "Ubas", + "Umse", + "Bks" + ], + "type": "string" +} - added
Input schema / properties / limit / anyOfAdded value: +[ + { + "const": 10, + "type": "number" + }, + { + "const": 20, + "type": "number" + }, + { + "const": 50, + "type": "number" + }, + { + "const": 100, + "type": "number" + } +] - changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page"New value: +"Results per page: 10, 20, 50, or 100 (default: 20)" - removed
Input schema / properties / limit / typeRemoved value: -"number" - added
Input schema / properties / rechtsgebietAdded value: +{ + "description": "Broad legal area: \"Zivilrecht\" or \"Strafrecht\". Applies to gerichtsbarkeit=\"Justiz\".", + "enum": [ + "Zivilrecht", + "Strafrecht" + ], + "type": "string" +} - added
Input schema / properties / sammlungsnummerAdded value: +{ + "description": "Collection number: VfSlg (gerichtsbarkeit=\"Vfgh\") or VwSlg (gerichtsbarkeit=\"Vwgh\").", + "maxLength": 100, + "type": "string" +} - added
Input schema / properties / seite / maximumAdded value: +9007199254740991 - added
Input schema / properties / seite / minimumAdded value: +1 - changed
Input schema / properties / seite / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / sortierungAdded value: +{ + "description": "Sort by decision date: \"datum_auf\" (oldest first) or \"datum_ab\" (newest first).", + "enum": [ + "datum_auf", + "datum_ab" + ], + "type": "string" +}
- Changed
ris_landesgesetzblatt6 fields changed- added
Input schema / properties / limit / anyOfAdded value: +[ + { + "const": 10, + "type": "number" + }, + { + "const": 20, + "type": "number" + }, + { + "const": 50, + "type": "number" + }, + { + "const": 100, + "type": "number" + } +] - changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page 10/20/50/100 (default: 20)"New value: +"Results per page: 10, 20, 50, or 100 (default: 20)" - removed
Input schema / properties / limit / typeRemoved value: -"number" - added
Input schema / properties / seite / maximumAdded value: +9007199254740991 - added
Input schema / properties / seite / minimumAdded value: +1 - changed
Input schema / properties / seite / typePrevious value: -"number"New value: +"integer"
- Changed
ris_landesrecht10 fields changed- added
Input schema / properties / abschnitt_typAdded value: +{ + "default": "Paragraph", + "description": "Type of section that \"paragraph\" refers to: \"Paragraph\" (default), \"Artikel\", or \"Anlage\" (annex).", + "enum": [ + "Paragraph", + "Artikel", + "Anlage" + ], + "type": "string" +} - added
Input schema / properties / fassung_vomAdded value: +{ + "description": "Consolidated version as of this date (YYYY-MM-DD) — retrieves the law text as it stood on that day.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +} - added
Input schema / properties / gesetzesnummerAdded value: +{ + "description": "Exact law number (Gesetzesnummer) for a specific state law", + "maxLength": 100, + "type": "string" +} - added
Input schema / properties / limit / anyOfAdded value: +[ + { + "const": 10, + "type": "number" + }, + { + "const": 20, + "type": "number" + }, + { + "const": 50, + "type": "number" + }, + { + "const": 100, + "type": "number" + } +] - changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page"New value: +"Results per page: 10, 20, 50, or 100 (default: 20)" - removed
Input schema / properties / limit / typeRemoved value: -"number" - added
Input schema / properties / paragraphAdded value: +{ + "description": "Section number to search for (e.g., \"1\" for §1, \"7\" for Art 7)", + "maxLength": 100, + "type": "string" +} - added
Input schema / properties / seite / maximumAdded value: +9007199254740991 - added
Input schema / properties / seite / minimumAdded value: +1 - changed
Input schema / properties / seite / typePrevious value: -"number"New value: +"integer"
- Changed
ris_regierungsvorlagen6 fields changed- added
Input schema / properties / limit / anyOfAdded value: +[ + { + "const": 10, + "type": "number" + }, + { + "const": 20, + "type": "number" + }, + { + "const": 50, + "type": "number" + }, + { + "const": 100, + "type": "number" + } +] - changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page 10/20/50/100 (default: 20)"New value: +"Results per page: 10, 20, 50, or 100 (default: 20)" - removed
Input schema / properties / limit / typeRemoved value: -"number" - added
Input schema / properties / seite / maximumAdded value: +9007199254740991 - added
Input schema / properties / seite / minimumAdded value: +1 - changed
Input schema / properties / seite / typePrevious value: -"number"New value: +"integer"
- Changed
ris_sonstige6 fields changed- added
Input schema / properties / limit / anyOfAdded value: +[ + { + "const": 10, + "type": "number" + }, + { + "const": 20, + "type": "number" + }, + { + "const": 50, + "type": "number" + }, + { + "const": 100, + "type": "number" + } +] - changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page 10/20/50/100 (default: 20)"New value: +"Results per page: 10, 20, 50, or 100 (default: 20)" - removed
Input schema / properties / limit / typeRemoved value: -"number" - added
Input schema / properties / seite / maximumAdded value: +9007199254740991 - added
Input schema / properties / seite / minimumAdded value: +1 - changed
Input schema / properties / seite / typePrevious value: -"number"New value: +"integer"
- Changed
ris_verordnungen6 fields changed- added
Input schema / properties / limit / anyOfAdded value: +[ + { + "const": 10, + "type": "number" + }, + { + "const": 20, + "type": "number" + }, + { + "const": 50, + "type": "number" + }, + { + "const": 100, + "type": "number" + } +] - changed
Input schema / properties / limit / descriptionPrevious value: -"Results per page 10/20/50/100 (default: 20)"New value: +"Results per page: 10, 20, 50, or 100 (default: 20)" - removed
Input schema / properties / limit / typeRemoved value: -"number" - added
Input schema / properties / seite / maximumAdded value: +9007199254740991 - added
Input schema / properties / seite / minimumAdded value: +1 - changed
Input schema / properties / seite / typePrevious value: -"number"New value: +"integer"
12 tool updates
v1.1.3- First observed
ris_bezirke - First observed
ris_bundesgesetzblatt - First observed
ris_bundesrecht - First observed
ris_dokument - First observed
ris_gemeinden - First observed
ris_history - First observed
ris_judikatur - First observed
ris_landesgesetzblatt - First observed
ris_landesrecht - First observed
ris_regierungsvorlagen - First observed
ris_sonstige - First observed
ris_verordnungen
TDQS
Scored across 13 tools
Each tool targets a distinct Austrian legal source, and the document/history tools are clearly separated from the search tools. The only mild risk is the cluster of state-level gazette/ordinance tools (ris_landesgesetzblatt, ris_verordnungen, ris_landesrecht), but their descriptions clarify the differences.
All tools consistently use the ris_ prefix followed by the legal collection or resource (dokument, bundesrecht, judikatur, etc.). The one compound name, ris_dokument_abschnitt, follows naturally from ris_dokument and does not break the pattern.
13 tools maps cleanly to the major databases in the Austrian RIS and is within a well-scoped range. Each tool covers a distinct source type, and none feel redundant or ceremonial.
The surface covers search and retrieval across federal/state law, court decisions, gazettes, bills, municipal/district instruments, miscellaneous collections, and change history. For a read-only legal research domain this is comprehensive; the main document workflow has no dead ends.
Maintenance
Related MCP Connectors
Search Austrian federal and state law, court decisions, and the authentic Bundesgesetzblatt (RIS).
An MCP server that provides congressional transcripts
Search German and EU law from official sources with your AI assistant. PRIMAMCP provides citable legal texts via MCP, with daily updates and hosting in Germany.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceAn MCP server that provides comprehensive US legislation.13 npm38MIT
- FlicenseNot gradedqualityDmaintenanceMCP server that exposes Austrian federal law (Bundesrecht) to LLMs, enabling full-text search, paragraph retrieval, historical versions, statute lookup, BGBl lookups, amendment timelines, and citation searches via the public RIS OGD API.-
- 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