MCP Server for Austrian Legal Information System (RIS) - TypeScript
13 tools with minimal descriptions (all ~20-30 chars, below baseline 194 chars) and severely underdeveloped schemas. All tools accept only a single 'query' string parameter with no enums, ranges, or validation constraints. No output schemas documented. Descriptions lack WHEN/WHY context, prerequisites, or recovery guidance. No error handling patterns visible. Tool names use 'ris_' prefix (domain-specific) rather than action verbs (search_, get_), reducing clarity for LLM selection. No tool annotations (readOnlyHint, etc.). Composition is repetitive: 11 of 13 tools are search variants with identical structure, violating single-responsibility principle.
Search district administrative authorities (Bezirke)
Search federal gazette (Bundesgesetzblatt)
Search federal law (Bundesrecht)
Retrieve full document text by Dokumentnummer or URL
Retrieve a section of a document by character offset for pagination
Search municipal law (Gemeinden)
Search document change history (History)
Search case law/jurisprudence (Judikatur)
11 of 13 tools are search variants with identical single-parameter schema (query: string). Violates single-responsibility and composition patterns. LLM cannot distinguish when to use ris_bundesrecht vs ris_landesrecht vs ris_judikatur without domain expertise.
All tool descriptions are 20 - 30 characters (e.g., 'Search federal law (Bundesrecht)'). Baseline is 194 chars. Descriptions lack WHEN to use, prerequisites, expected output structure, and recovery guidance. LLMs cannot determine tool selection confidence.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 35 | 2025-06-18+ | v2 |
Search state gazette (Landesgesetzblatt)
Search state/provincial law (Landesrecht)
Search government proposals (Regierungsvorlagen)
Search miscellaneous legal collections (Sonstige)
Search ordinances/regulations (Verordnungen)
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields. Pagination, result limits, and field structure are invisible.
Tool names use domain prefix 'ris_' instead of action verbs (search_, get_, list_). Baseline: 90% of A+ tools start with action verb. Names do not convey intent; LLM must read descriptions to understand what each tool does.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. All tools are READ_ONLY but this is not declared in schema. Agents cannot infer safety properties.