ris-austria-mcp-server
이 MCP로 할 수 있는 일
Searches, resolves, retrieves, and monitors Austrian legislation, gazettes, case law, official announcements, drafts, and RIS document changes.
도구
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'format': {'enum': ['markdown', 'html', 'xml', 'urls_only'], 'type': 'string', 'default': 'markdown', 'description': 'markdown (default â\x80\x94 the HTML rendition converted to markdown, and the format for reading), html (raw HTML rendition), xml (RIS Nutzdaten schema), or urls_only (no fetch â\x80\x94 all rendition URLs incl. the authentic PDF). html and xml over 40,000 bytes return kind: link with no text â\x80\x94 nearly every html rendition does, since each carries a 40â\x80\x9370 KB stylesheet â\x80\x94 so fetch content_urls.html or content_urls.xml for the whole artifact.'}, 'sections': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Entry names to retrieve, each copied verbatim from a prior outline response (kind: outline) â\x80\x94 §/Artikel/Anlage section names, or window names of the form "Part 2 of 6". Omit for the full document, which returns an outline instead when the markdown overflows the 40,000-byte budget. A name that matches no entry is never silently ignored: a total miss returns the outline (kind: outline) with a notice, a partial miss returns the matched entries with a notice naming others to pick from. Applies to markdown only. html and xml are never sliced â\x80\x94 the selector is ignored with a notice, and they return whole under the 40,000-byte budget and as kind: link over it; urls_only carries no text to select from.'}, 'application': {'enum': ['BrKons', 'BgblAuth', 'BgblPdf', 'BgblAlt', 'Begut', 'RegV', 'Erv', 'LrKons', 'LgblAuth', 'Lgbl', 'LgblNO', 'Vbl', 'Bvb', 'Gr', 'GrA', 'Vfgh', 'Vwgh', 'Normenliste', 'Justiz', 'Bvwg', 'Lvwg', 'Dsk', 'Dok', 'Pvak', 'Gbk', 'Uvs', 'AsylGH', 'Ubas', 'Umse', 'Bks', 'Verg', 'PruefGewO', 'Avsv', 'Spg', 'Avn', 'KmGer', 'Upts', 'Mrp', 'Erlaesse'], 'type': 'string', 'description': 'RIS application the document belongs to (e.g. BrKons, Dsk, BgblAuth) â\x80\x94 copy verbatim from the same result. Required with document_number. Codes and coverage: ris_list_reference topic applications.'}, 'document_url': {'type': 'string', 'description': 'A /Dokumente/â\x80¦ rendition URL on https://www.ris.bka.gv.at or https://ogd.ris.bka.gv.at, passed exactly as a resultâ\x80\x99s content_urls returned it â\x80\x94 the alternative to document_number + application. Also the only way to read a draftâ\x80\x99s companion documents: pass a ris_search_drafts recordâ\x80\x99s materials[].url (the Erläuterungen, Textgegenüberstellung, WFA, cover letter, or annex), whose filenames are opaque and per-record and so cannot be reached through document_number. Every companion filename RIS publishes is accepted, whichever shape it carries. The URLâ\x80\x99s own extension is only checked against the rendition extensions RIS uses and is then discarded â\x80\x94 format selects which rendition is returned, for a companion exactly as for a main document. A filename that is neither this documentâ\x80\x99s own rendition nor one of its companions is rejected; companion filenames cannot be composed by hand, so copy one verbatim.'}, 'document_number': {'type': 'string', 'description': 'Technical RIS document number (Technisch.ID), e.g. NOR40262691, JJT_â\x80¦, BGBLA_2026_II_171 â\x80\x94 copy verbatim from a ris_search_* or ris_lookup_citation result. Requires application; mutually exclusive with document_url.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['format', 'kind', 'binding_status', 'content_urls', 'document_number', 'application']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'kind': {'enum': ['full', 'outline', 'link'], 'type': 'string', 'description': 'full â\x80\x94 the complete response (document text, selected entries, or rendition URLs). outline â\x80\x94 sections lists the retrievable entries instead of the text, either because the markdown overflowed the byte budget or because a sections:[â\x80¦] selector matched nothing; re-call with sections:[â\x80¦] naming entries from it. link â\x80\x94 an html or xml rendition over the 40,000-byte budget: no text, only byte_size and content_urls, whose entry for the requested format fetches the whole artifact in one GET; re-call with format: markdown to read it.'}, 'text': {'type': 'string', 'description': 'The document text in the requested format. Absent for urls_only, when the application carries no text rendition (see the notice), for an outline (kind: outline), and for an html or xml rendition over the 40,000-byte budget (kind: link).'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['invalid_addressing', 'unsupported_url', 'document_not_found', 'upstream_error', 'upstream_timeout'], 'description': 'Machine-readable failure mode. Declared by this tool: `invalid_addressing`: Neither or both addressing modes were provided, document_number was given without application, or the document_number/application pairing is not a valid RIS document â\x80\x94 thrown locally before any fetch. `unsupported_url`: document_url fails the origin + /Dokumente/ path-prefix allowlist (exactly https://www.ris.bka.gv.at and https://ogd.ris.bka.gv.at), its path segment is not a recognized RIS application, or its trailing filename addresses neither the documentâ\x80\x99s own rendition nor one of its companion documents â\x80\x94 thrown locally, nothing fetched. `document_not_found`: The constructed or passed content URL returned 404. `upstream_error`: The RIS content host was unreachable or returned a server error. `upstream_timeout`: The content host did not return the rendition within the fetch deadline â\x80\x94 typically a cold render, which it performs on first request before caching the result. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'format': {'enum': ['markdown', 'html', 'xml', 'urls_only'], 'type': 'string', 'description': 'The format served â\x80\x94 echoes the requested format.'}, 'notice': {'type': 'string', 'description': 'Present when the requested text format is unavailable for this application (names why and the usable URL), when the document overflowed to a section outline (names how to retrieve sections), when an html or xml rendition overflowed to a link (names content_urls.<format> and format: markdown), or when a sections:[â\x80¦] entry matched no section or was ignored (names the unmatched entries).'}, 'sections': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'bytes'], 'properties': {'name': {'type': 'string', 'description': 'Section identifier â\x80\x94 pass in `sections` to retrieve it'}, 'bytes': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Serialized byte size of the section'}}, 'description': 'A retrievable entry â\x80\x94 a §/Artikel/Anlage section or a Part n of N byte window, with its UTF-8 byte size.', 'additionalProperties': False}, 'description': 'Present when kind = outline: the documentâ\x80\x99s addressable entries, each with its UTF-8 byte size â\x80\x94 §/Artikel/Anlage sections listed largest first, or, when the markdown carries no such headings, Part n of N byte windows listed in document order and summing to byte_size. Copy names into the sections input verbatim to retrieve them; naming several in one call returns their text concatenated in document order, with nothing inserted between them.'}, 'byte_size': {'type': 'number', 'description': 'Full UTF-8 byte size of the document text. Present when text was fetched â\x80\x94 for an overflowed document (kind: outline) or an over-budget html/xml rendition (kind: link) this reports the full textâ\x80\x99s size, not the returned payloadâ\x80\x99s.'}, 'truncated': {'type': 'boolean', 'description': 'Present and true when the full text isnâ\x80\x99t inline. kind: outline â\x80\x94 the markdown overflowed the byte budget or a sections:[â\x80¦] selector matched nothing (the notice names which); retrieve entries via the sections input. kind: link â\x80\x94 an html or xml rendition overflowed the budget; fetch content_urls.html or content_urls.xml for the whole artifact, or re-call with format: markdown.'}, 'application': {'type': 'string', 'description': 'RIS application the document belongs to (echoed).'}, 'content_urls': {'type': 'object', 'properties': {'pdf': {'type': 'string', 'description': 'PDF rendition URL.'}, 'rtf': {'type': 'string', 'description': 'RTF rendition URL.'}, 'xml': {'type': 'string', 'description': 'XML rendition URL (RIS Nutzdaten schema).'}, 'html': {'type': 'string', 'description': 'HTML rendition URL.'}}, 'description': 'Constructed rendition URLs. Empty for authentic-PDF-only (Bvb/GrA/KmGer) and metadata-only (BgblAlt) applications â\x80\x94 see authentic_pdf_url and the notice. For a companion document (a draftâ\x80\x99s Erläuterungen, Textgegenüberstellung, WFA, cover letter, or annex) these are the companionâ\x80\x99s own XML/HTML/PDF, not the parent documentâ\x80\x99s â\x80\x94 constructed rather than read back from RIS, so for the roughly one companion in eight that RIS files as a PDF only, xml and html return 404 and pdf is the one that resolves.', 'additionalProperties': False}, 'binding_status': {'enum': ['authentic', 'consolidated_informational', 'historical_record', 'decision', 'preparatory', 'administrative_directive', 'translation'], 'type': 'string', 'description': 'Legal binding status: authentic (amtssigniert, legally binding), consolidated_informational (consolidated view â\x80\x94 not binding), historical_record (superseded/pre-e-Recht promulgation), decision (court/tribunal ruling), preparatory (draft/bill/minutes), administrative_directive (binds the administration, not citizens), or translation (unofficial English).'}, 'document_number': {'type': 'string', 'description': 'Technical RIS document number (echoed).'}, 'authentic_pdf_url': {'type': 'string', 'description': 'The amtssigniert authentic PDF (.pdfsig, Authentisch DataType) â\x80\x94 the legally binding artifact â\x80\x94 where the application publishes one.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['topic'], 'properties': {'topic': {'enum': ['applications', 'courts', 'states', 'decision_types', 'decision_kinds', 'issuing_bodies', 'ministries', 'collections', 'stages', 'changed_since_intervals', 'section_types', 'gazette_parts', 'law_types', 'district_authorities', 'justiz_subject_areas', 'search_syntax', 'citation_formats'], 'type': 'string', 'description': 'Which reference table to return. Pick the topic named in the error recovery hint or zero-hit notice that sent you here.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['topic', 'summary', 'entries', 'notes']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'description': 'Machine-readable failure mode.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'notes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Topic-level caveats and usage guidance. Empty when none apply.'}, 'topic': {'type': 'string', 'description': 'The requested topic, echoed back.'}, 'entries': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'label', 'details'], 'properties': {'label': {'type': 'string', 'description': 'Concise human-readable label or gloss for the value.'}, 'value': {'type': 'string', 'description': 'The reference value â\x80\x94 an enum value, application code, exact filter string, or syntax element, depending on the topic.'}, 'details': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'value'], 'properties': {'key': {'type': 'string', 'description': 'Attribute name.'}, 'value': {'type': 'string', 'description': 'Attribute value.'}}, 'description': 'One keyâ\x80\x93value attribute pair.', 'additionalProperties': False}, 'description': 'Additional attributes as keyâ\x80\x93value pairs; keys vary by topic (coverage windows, upstream spellings, examples, notes).'}}, 'description': 'One reference entry: a value, its label, and its attributes.', 'additionalProperties': False}, 'description': 'Reference entries for the topic.'}, 'summary': {'type': 'string', 'description': 'What this topic covers and which tool parameters consume its values.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['citation'], 'properties': {'kind': {'enum': ['auto', 'norm', 'gazette', 'case_number', 'collection_number'], 'type': 'string', 'default': 'auto', 'description': 'Force a route, or auto (default) to classify by shape. Set explicitly when the citation shape is ambiguous.'}, 'court': {'enum': ['vfgh', 'vwgh', 'justiz', 'bvwg', 'lvwg', 'dsk', 'dok', 'pvak', 'gbk', 'uvs', 'asylgh', 'ubas', 'umse', 'bks', 'verg', 'upts'], 'type': 'string', 'description': 'Court hint for a case number â\x80\x94 short-circuits court detection to this court. Codes: ris_list_reference topic courts, minus normenliste (a norm index, which carries no case numbers).'}, 'state': {'enum': ['burgenland', 'kaernten', 'niederoesterreich', 'oberoesterreich', 'salzburg', 'steiermark', 'tirol', 'vorarlberg', 'wien'], 'type': 'string', 'description': 'Bundesland hint â\x80\x94 routes a norm to that stateâ\x80\x99s consolidated law (LrKons) and an LGBl. gazette to that stateâ\x80\x99s Landesgesetzblatt (LgblAuth, then the legacy Lgbl series for a citation predating the stateâ\x80\x99s e-Recht switch).'}, 'citation': {'type': 'string', 'description': 'The legal citation to resolve, e.g. "§ 6 DSG" or "DSG §1", "Art 10 B-VG", "BGBl. I Nr. 165/1999", "Ro 2026/03/0016", or "VfSlg 19.632/2012".'}, 'in_force_as_of': {'type': 'string', 'pattern': '^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])$', 'description': 'For a norm, resolve the version in force on this date (YYYY-MM-DD). Defaults to today in Austria.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['found', 'kind']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'kind': {'enum': ['unknown', 'norm', 'gazette', 'case_number', 'collection_number'], 'type': 'string', 'description': 'What the citation parsed as â\x80\x94 "unknown" when it did not classify into any route.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['upstream_error', 'upstream_timeout'], 'description': 'Machine-readable failure mode. Declared by this tool: `upstream_error`: A routed RIS search was unreachable, returned a server error, or served an HTML error page. An unparseable or unresolvable citation is NOT this error â\x80\x94 it returns found: false. `upstream_timeout`: A routed RIS search did not answer within the request deadline. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'found': {'type': 'boolean', 'description': 'True when the citation resolved to a single best-matching document.'}, 'record': {'type': 'object', 'properties': {}, 'description': 'The resolved document, in the same normalized shape the corresponding search tool returns â\x80\x94 ris_search_legislation for a norm, ris_search_case_law for a case or collection number, ris_search_gazette for a gazette. Present when found is true.', 'additionalProperties': {}}, 'guidance': {'type': 'string', 'description': 'Next-step guidance naming a concrete tool. Present when found is false.'}, 'resolution_note': {'type': 'string', 'description': 'Which application and filter resolved the citation. Present when found is true.'}, 'alternatives_count': {'type': 'number', 'description': 'Documents that also matched beyond the one returned â\x80\x94 present only when more than one matched. List them all with the search tool named in resolution_note.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['collection'], 'properties': {'norm': {'type': 'string', 'pattern': '\\S', 'description': 'Cited-provision filter (Norm) â\x80\x94 "DSG §1", "DSGVO Art32" style. veterinary and ministerial_decrees only ("decrees citing the DSG"). Omit to leave unfiltered; a blank value is rejected.'}, 'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': '1-based result page. Default 1.'}, 'type': {'type': 'string', 'pattern': '\\S', 'description': 'Document type (Typ) â\x80\x94 trade_exam_rules (Befaehigungspruefungsordnung | Meisterpruefungsordnung), court_rules (Geschaeftsordnung | Geschaeftsverteilung), veterinary (Kundmachungen | VeroeffentlichungenAufGrundVEVO | SonstigeVeroeffentlichungen). Omit to leave unfiltered; a blank value is rejected.'}, 'query': {'type': 'string', 'pattern': '\\S', 'description': 'Full-text search (Suchworte). Boolean operators UND/ODER/NICHT or AND/OR/NOT, parentheses, quoted phrases; wildcard * is trailing-only. Valid for all collections. Omit to leave unfiltered; a blank value is rejected.'}, 'title': {'type': 'string', 'pattern': '\\S', 'description': 'Title search (Titel) â\x80\x94 phrase field. Valid for all collections except council_minutes. Omit to leave unfiltered; a blank value is rejected.'}, 'issuer': {'type': 'string', 'pattern': '\\S', 'description': 'Issuing body â\x80\x94 social_insurance (Urheber: a carrier abbreviation such as Ã\x96GK, DVSV, SVS, BVAEB, AUVA, or PVA is expanded to its full designation; a full designation or a "<ABBR> Gesamtvertrag" series is sent as written), ministerial_decrees (Bundesministerium) or council_minutes (Einbringer) â\x80\x94 a ministry abbreviation such as "BMF" is expanded, a full designation is sent as written. Values: ris_list_reference topic issuing_bodies or ministries. Omit to leave unfiltered; a blank value is rejected.'}, 'number': {'type': 'string', 'pattern': '\\S', 'description': 'Serial number (Avsvnummer / Avnnummer / Spgnummer) â\x80\x94 social_insurance, veterinary, health_structure_plans. Omit to leave unfiltered; a blank value is rejected.'}, 'sort_by': {'enum': ['published', 'number'], 'type': 'string', 'description': 'Sort column: published or number, where the collection has the column. Default: upstream order.'}, 'page_size': {'enum': [10, 20], 'type': 'number', 'description': 'Documents per page: 10 or 20 (default 20). For more results, keep the size and raise page.'}, 'plan_type': {'enum': ['all', 'expert_opinion', 'regulation'], 'type': 'string', 'description': 'health_structure_plans only. Plan kind â\x80\x94 all (default), expert_opinion (Gutachten), or regulation (Verordnungen). Searches the federal Ã\x96SG unless plan_state is set.'}, 'collection': {'enum': ['social_insurance', 'veterinary', 'court_rules', 'trade_exam_rules', 'health_structure_plans', 'ministerial_decrees', 'council_minutes'], 'type': 'string', 'description': 'Which collection to search â\x80\x94 one per call. social_insurance | veterinary | court_rules | trade_exam_rules | health_structure_plans | ministerial_decrees | council_minutes. Per-collection filter matrix: ris_list_reference topic collections.'}, 'department': {'type': 'string', 'pattern': '\\S', 'description': 'Ministry department (Abteilung) â\x80\x94 ministerial_decrees only. Omit to leave unfiltered; a blank value is rejected.'}, 'plan_state': {'enum': ['burgenland', 'kaernten', 'niederoesterreich', 'oberoesterreich', 'salzburg', 'steiermark', 'tirol', 'vorarlberg', 'wien'], 'type': 'string', 'description': 'health_structure_plans only. Restrict to one Bundeslandâ\x80\x99s regional health-structure plan (RSG) â\x80\x94 setting it switches the search from the federal Ã\x96SG to that stateâ\x80\x99s RSG.'}, 'case_number': {'type': 'string', 'pattern': '\\S', 'description': 'Business reference number (Geschäftszahl) â\x80\x94 veterinary and ministerial_decrees only. Omit to leave unfiltered; a blank value is rejected.'}, 'legislature': {'type': 'string', 'pattern': '\\S', 'description': 'Legislative period (Gesetzgebungsperiode, e.g. "XXVII") â\x80\x94 council_minutes only. Omit to leave unfiltered; a blank value is rejected.'}, 'published_to': {'type': 'string', 'pattern': '^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])$', 'description': 'Latest publication/session date (YYYY-MM-DD).'}, 'changed_since': {'enum': ['one_week', 'two_weeks', 'one_month', 'three_months', 'six_months', 'one_year'], 'type': 'string', 'description': 'Coarse recency filter â\x80\x94 documents changed in RIS within the interval. Every collection except social_insurance and veterinary, where RIS ignores it: use published_from there, or ris_track_changes for changes. For exact windows use ris_track_changes.'}, 'in_force_as_of': {'type': 'string', 'pattern': '^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])$', 'description': 'Version in force on this date (YYYY-MM-DD) â\x80\x94 veterinary, court_rules, trade_exam_rules, health_structure_plans, ministerial_decrees (the consolidated-ish collections).'}, 'published_from': {'type': 'string', 'pattern': '^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])$', 'description': 'Earliest publication/session date (YYYY-MM-DD). All collections except ministerial_decrees (decrees date by force â\x80\x94 use in_force_as_of / entered_force_from/to).'}, 'session_number': {'type': 'string', 'pattern': '\\S', 'description': 'Council session number (Sitzungsnummer) â\x80\x94 council_minutes only. Omit to leave unfiltered; a blank value is rejected.'}, 'sort_direction': {'enum': ['ascending', 'descending'], 'type': 'string', 'description': 'Sort direction; applies with sort_by.'}, 'entered_force_to': {'type': 'string', 'pattern': '^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])$', 'description': 'Provisions that entered force on/before this date (YYYY-MM-DD) â\x80\x94 ministerial_decrees only.'}, 'entered_force_from': {'type': 'string', 'pattern': '^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])$', 'description': 'Provisions that entered force on/after this date (YYYY-MM-DD) â\x80\x94 ministerial_decrees only.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['results', 'totalCount', 'page', 'pageSize']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'number', 'description': '1-based page number RIS served.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['collection_filter_mismatch', 'unresolved_ministry', 'invalid_query', 'upstream_error', 'upstream_timeout'], 'description': 'Machine-readable failure mode. Declared by this tool: `collection_filter_mismatch`: A parameter was combined with a collection that does not accept it â\x80\x94 rejected locally before any upstream call; the message names the offending parameter and lists the collectionâ\x80\x99s valid parameters. Includes changed_since on social_insurance or veterinary, where RIS ignores the recency filter and would return the whole collection; that rejectionâ\x80\x99s recovery names the replacement calls. `unresolved_ministry`: A ministerial_decrees or council_minutes issuer did not resolve â\x80\x94 an abbreviation-shaped value matching no row of the RIS ministries table (the message names the closest matches), a ministry the table lists only for another issuer parameter (the message names the parameters that accept it), or an abbreviation carrying several designations this collection cannot tell apart (the message lists them). Rejected locally before any upstream call; a value the table does not know that contains a space is sent to RIS as written instead. `invalid_query`: A page past the last page of results; or a parameter value rejected locally â\x80\x94 a plan_state outside regional health-structure plans, or a sort_by value this collection has no column for, in which case the message names the values it does sort by; or RIS rejecting a value in-band (the Client error message is passed through verbatim, in German, and it does not name the page). `upstream_error`: RIS is unreachable, returned a server error, or served an HTML error page. `upstream_timeout`: RIS did not answer the search within the request deadline. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'notice': {'type': 'string', 'description': 'Zero-hit guidance â\x80\x94 names the likely cause and the concrete next call.'}, 'results': {'type': 'array', 'items': {'type': 'object', 'required': ['document_number', 'collection', 'issuers', 'norms_cited', 'binding', 'content_urls'], 'properties': {'title': {'type': 'string', 'description': 'Full document title, HTML markup stripped.'}, 'number': {'type': 'string', 'description': 'Serial number within the collection (Avsvnummer / Avnnummer / Spgnummer), where assigned.'}, 'binding': {'enum': ['authentic', 'administrative_directive', 'preparatory'], 'type': 'string', 'description': 'Legal binding status: authentic (amtssigniert, legally binding â\x80\x94 social insurance, veterinary, court rules, trade-exam rules, health-structure plans), administrative_directive (binds the administration, not citizens â\x80\x94 ministerial decrees), or preparatory (council minutes).'}, 'issuers': {'type': 'array', 'items': {'type': 'string', 'description': 'One issuing body.'}, 'description': 'Issuing bodies (Urheber / Bundesministerium / Einbringer) â\x80\x94 a council minute can carry several. Empty when none.'}, 'summary': {'type': 'string', 'description': 'Short summary (Kurzinformation), where present.'}, 'published': {'type': 'string', 'description': 'Promulgation / publication date (Kundmachungsdatum).'}, 'collection': {'type': 'string', 'description': 'The collection the record belongs to (the requested collection value).'}, 'norms_cited': {'type': 'array', 'items': {'type': 'string', 'description': 'One cited norm in RIS format, e.g. "DSG §1".'}, 'description': 'Norms the document cites (veterinary notices and decrees) â\x80\x94 copy an entry verbatim into a norm filter to find siblings. Empty when none.'}, 'content_urls': {'type': 'object', 'properties': {'pdf': {'type': 'string', 'description': 'PDF rendition URL (the only rendition for council minutes).'}, 'rtf': {'type': 'string', 'description': 'RTF rendition URL.'}, 'xml': {'type': 'string', 'description': 'XML rendition URL (RIS Nutzdaten schema).'}, 'html': {'type': 'string', 'description': 'HTML rendition URL.'}}, 'description': 'Rendition URLs of the main document. Court rules publish the authentic PDF only; council minutes are plain PDF only (see authentic_pdf_url).', 'additionalProperties': False}, 'document_url': {'type': 'string', 'description': 'RIS web view of the document (DokumentUrl) â\x80\x94 for humans. The only browsable surface for council minutes (PDF-only) and ministerial decrees.'}, 'session_date': {'type': 'string', 'description': 'Council session date (Sitzungsdatum) â\x80\x94 council_minutes only.'}, 'document_number': {'type': 'string', 'description': 'Technical RIS document number (e.g. AVSV_2026_0040, AVN_â\x80¦, KMGER_â\x80¦, PRUEF_â\x80¦, SPG_â\x80¦, ERL_BMJ_â\x80¦, MRP_20260701_59) â\x80\x94 pass together with the collectionâ\x80\x99s application to ris_get_document.'}, 'authentic_pdf_url': {'type': 'string', 'description': 'The amtssigniert authentic PDF (.pdfsig, Authentisch DataType) â\x80\x94 the legally binding artifact â\x80\x94 where the collection publishes one.'}}, 'description': 'One sectoral announcement or executive document.', 'additionalProperties': False}, 'description': 'Matching documents for the requested page. Totals and paging in enrichment.'}, 'pageSize': {'type': 'number', 'description': 'Page size RIS applied.'}, 'truncated': {'type': 'boolean', 'description': 'Present and true when more pages exist beyond this one â\x80\x94 raise page to continue.'}, 'totalCount': {'type': 'number', 'description': 'Total matching documents across all pages.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['court'], 'properties': {'norm': {'type': 'string', 'pattern': '\\S', 'description': 'Cited-provision filter (Norm) â\x80\x94 "DSG §1", "DSGVO Art32", "GewO 1994 §129", matching the format returned in norms_cited. The highest-value case-law filter. Omit to leave unfiltered; a blank value is rejected.'}, 'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': '1-based result page. Default 1.'}, 'court': {'enum': ['vfgh', 'vwgh', 'justiz', 'bvwg', 'lvwg', 'dsk', 'normenliste', 'dok', 'pvak', 'gbk', 'uvs', 'asylgh', 'ubas', 'umse', 'bks', 'verg', 'upts'], 'type': 'string', 'description': 'Which court/tribunal application to search â\x80\x94 one per call. Codes, coverage windows, and successor mapping: ris_list_reference topic courts.'}, 'party': {'type': 'string', 'pattern': '\\S', 'description': 'Political party the decision concerns (upts only). Documented values: Ã\x96VP, SPÃ\x96, FPÃ\x96, KPÃ\x96, BZÃ\x96, Team Stronach â\x80\x94 the filter is full-text, and further party names appear in live data (e.g. "Wandel"). Omit to leave unfiltered; a blank value is rejected.'}, 'query': {'type': 'string', 'pattern': '\\S', 'description': 'Full-text search over decisions (Suchworte). Boolean UND/ODER/NICHT or AND/OR/NOT, quoted phrases, trailing-only * wildcard. Omit to leave unfiltered; a blank value is rejected.'}, 'state': {'enum': ['burgenland', 'kaernten', 'niederoesterreich', 'oberoesterreich', 'salzburg', 'steiermark', 'tirol', 'vorarlberg', 'wien'], 'type': 'string', 'description': 'Which of the nine state administrative courts/senates to search (lvwg and uvs only).'}, 'senate': {'enum': ['I', 'II', 'III'], 'type': 'string', 'description': 'Commission senate (gbk only).'}, 'sort_by': {'enum': ['decision_date', 'case_number'], 'type': 'string', 'description': 'Sort column. Default: upstream order. Not available for court: normenliste, which indexes laws rather than decisions.'}, 'page_size': {'enum': [10, 20], 'type': 'number', 'description': 'Documents per page: 10 or 20 (default 20). For more results, keep the size and raise page.'}, 'commission': {'enum': ['federal', 'general'], 'type': 'string', 'description': 'Equal-treatment commission (gbk only): federal (Bundes-Gleichbehandlungskommission) or general (Gleichbehandlungskommission).'}, 'court_name': {'type': 'string', 'pattern': '\\S', 'description': 'Filter within the ordinary courts (justiz only) â\x80\x94 "OGH", "OLG Wien", "LG Linz". Omit to leave unfiltered; a blank value is rejected.'}, 'decided_to': {'type': 'string', 'pattern': '^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])$', 'description': 'Latest decision date (YYYY-MM-DD).'}, 'legal_area': {'enum': ['civil', 'criminal'], 'type': 'string', 'description': 'Legal area (Rechtsgebiet, justiz only): civil (Zivilrecht) or criminal (Strafrecht).'}, 'case_number': {'type': 'string', 'pattern': '\\S', 'description': 'Exact Geschäftszahl â\x80\x94 returns that decisionâ\x80\x99s documents. Formats differ per court (examples: ris_list_reference topic courts). Not available for normenliste. Omit to leave unfiltered; a blank value is rejected.'}, 'subject_law': {'type': 'string', 'pattern': '\\S', 'description': 'Media statute the case concerns (Bereich, bks only) â\x80\x94 e.g. "ORF-Gesetz", "Privatradiogesetz". Omit to leave unfiltered; a blank value is rejected.'}, 'decided_from': {'type': 'string', 'pattern': '^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])$', 'description': 'Earliest decision date (YYYY-MM-DD). Not available for normenliste.'}, 'issuing_body': {'type': 'string', 'pattern': '\\S', 'description': 'Deciding body (EntscheidendeBehoerde) â\x80\x94 dsk, dok, pvak, and verg only. dsk: Datenschutzbehoerde (2014+) or Datenschutzkommission (up to 2013). Full value lists: ris_list_reference topic issuing_bodies. Omit to leave unfiltered; a blank value is rejected.'}, 'subject_area': {'type': 'string', 'pattern': '\\S', 'description': 'Subject-area taxonomy filter (Fachgebiet, justiz only) â\x80\x94 39 exact German values like "Datenschutzrecht", validated locally: ris_list_reference topic justiz_subject_areas. The corpus carries no tagged documents yet (every value returns 0 hits, verified 2026-07-05) â\x80\x94 filter with query or norm instead until RIS populates the tags. Omit to leave unfiltered; a blank value is rejected.'}, 'changed_since': {'enum': ['one_week', 'two_weeks', 'one_month', 'three_months', 'six_months', 'one_year'], 'type': 'string', 'description': 'Coarse recency filter â\x80\x94 decisions changed in RIS within the interval. For exact windows use ris_track_changes.'}, 'decision_kind': {'type': 'string', 'pattern': '\\S', 'description': 'Decision kind (Entscheidungsart) â\x80\x94 per-court value sets, validated locally: ris_list_reference topic decision_kinds. No such parameter exists for normenliste, dok, pvak, umse, bks, or upts. For justiz the four documented values are not yet populated in the corpus (every value returns 0 hits, verified 2026-07-05) â\x80\x94 filter justiz with query or norm instead. Omit to leave unfiltered; a blank value is rejected.'}, 'decision_type': {'enum': ['headnote', 'full_text', 'all'], 'type': 'string', 'default': 'all', 'description': 'Search headnotes (Rechtssätze), full decision texts (Entscheidungstexte), or both (all, the default). Not available for gbk, upts, or normenliste.'}, 'sort_direction': {'enum': ['ascending', 'descending'], 'type': 'string', 'description': 'Sort direction; applies with sort_by.'}, 'collection_number': {'type': 'string', 'pattern': '\\S', 'description': 'Official collection number (Sammlungsnummer). vfgh, vwgh, and uvs only, and the accepted form differs: vfgh and uvs store the bare number and match it dotted or undotted ("19632", "19.632"), while vwgh stores the full labelled undotted cite â\x80\x94 pass "VwSlg 18000 A/2010", or the space-anchored prefix "VwSlg 18000 *" when the part letter or year is unknown. A bare or dotted number matches nothing under vwgh. Omit to leave unfiltered; a blank value is rejected.'}, 'discrimination_ground': {'enum': ['Alter', 'EthnischeZugehoerigkeit', 'Geschlecht', 'Mehrfachdiskriminierung', 'Religion', 'SexuelleOrientierung', 'Weltanschauung'], 'type': 'string', 'description': 'Discrimination ground (gbk only): Alter (age), EthnischeZugehoerigkeit (ethnic origin), Geschlecht (gender/sex), Mehrfachdiskriminierung (multiple grounds), Religion (religion), SexuelleOrientierung (sexual orientation), Weltanschauung (worldview/belief). Upstream German enum values, sent verbatim.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['results', 'totalCount', 'page', 'pageSize']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'number', 'description': '1-based page number RIS served.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['court_filter_mismatch', 'invalid_query', 'upstream_error', 'upstream_timeout'], 'description': 'Machine-readable failure mode. Declared by this tool: `court_filter_mismatch`: A court-conditional filter was sent with the wrong court, or case_number/dates/decision_type were sent with normenliste (a norm index, not decisions) â\x80\x94 rejected locally before any upstream call; the message names the offending pair. `invalid_query`: A page past the last page of results, or a parameter value that failed validation â\x80\x94 decision_kind/subject_area checked locally against the reference tables, sort_by rejected locally because court normenliste indexes laws rather than decisions, or RIS rejected the value in-band (message passed through verbatim, in German, and it does not name the page). `upstream_error`: RIS is unreachable, returned a server error, or served an HTML error page. `upstream_timeout`: RIS did not answer the search within the request deadline. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'notice': {'type': 'string', 'description': 'Zero-hit guidance â\x80\x94 names the likely cause and the concrete next call.'}, 'results': {'type': 'array', 'items': {'type': 'object', 'required': ['document_number', 'court', 'case_numbers', 'norms_cited', 'indexes', 'content_urls'], 'properties': {'ecli': {'type': 'string', 'description': 'European Case Law Identifier, where assigned.'}, 'note': {'type': 'string', 'description': 'Annotation (Anmerkung) â\x80\x94 a renaming or lifecycle note on a normenliste law, an editorial note on a justiz or dsk decision.'}, 'court': {'type': 'string', 'description': 'RIS application code of the deciding body (e.g. Vfgh, Justiz, Upts) â\x80\x94 use as the application argument of ris_get_document.'}, 'organ': {'type': 'string', 'description': 'Issuing body name (Organ), e.g. "Verfassungsgerichtshof".'}, 'party': {'type': 'string', 'description': 'Political party the decision concerns (upts decisions only).'}, 'state': {'type': 'string', 'description': 'Bundesland whose administrative court decided (lvwg and uvs records) â\x80\x94 the German name, e.g. "Tirol".'}, 'indexes': {'type': 'array', 'items': {'type': 'string', 'description': 'One Systematik index entry, e.g. "10/10 Datenschutz".'}, 'description': 'Systematik classification entries (Indizes) â\x80\x94 the same taxonomy ris_search_legislation filters on, so an entry copied here finds the consolidated law around the decision. Carried by vfgh, vwgh, lvwg, uvs, umse, and normenliste; empty for the rest.'}, 'summary': {'type': 'string', 'description': 'Short summary (Kurzinformation), where present.'}, 'keywords': {'type': 'string', 'description': 'Keywords (Schlagworte), where present.'}, 'norm_index': {'type': 'object', 'properties': {'type': {'type': 'string', 'description': 'Norm type code (BG, V, K, â\x80¦) â\x80\x94 glossary: ris_list_reference topic law_types.'}, 'title': {'type': 'string', 'description': 'Full title of the law as the index records it (Titel) â\x80\x94 often several lines, carrying the parliamentary references and originating gazette.'}, 'reference': {'type': 'string', 'description': 'Promulgation reference of the law (Fundstelle), e.g. "BGBl I 165/1999" â\x80\x94 resolve it with ris_search_gazette or ris_lookup_citation.'}, 'abbreviation': {'type': 'string', 'description': 'Citable short form the VwGH uses for the law, e.g. "DSG 2000", "HlG 1989", "KFGNov 21te".'}}, 'description': 'The law this record indexes. Present only for court normenliste (the VwGH norm index); absent for the sixteen deciding courts, whose records describe a decision instead.', 'additionalProperties': False}, 'norms_cited': {'type': 'array', 'items': {'type': 'string', 'description': 'One cited norm in RIS format, e.g. "DSG §1".'}, 'description': 'Norms the decision cites â\x80\x94 copy an entry verbatim into the norm filter to find sibling case law.'}, 'case_numbers': {'type': 'array', 'items': {'type': 'string', 'description': 'One Geschäftszahl.'}, 'description': 'Case numbers (Geschäftszahl) â\x80\x94 a decision can carry several.'}, 'content_urls': {'type': 'object', 'properties': {'pdf': {'type': 'string', 'description': 'PDF rendition URL (the only rendition for upts).'}, 'rtf': {'type': 'string', 'description': 'RTF rendition URL.'}, 'xml': {'type': 'string', 'description': 'XML rendition URL.'}, 'html': {'type': 'string', 'description': 'HTML rendition URL.'}}, 'description': 'Rendition URLs of the main document.', 'additionalProperties': False}, 'decision_url': {'type': 'string', 'description': 'RIS web view of the complete decision (GesamteEntscheidungUrl).'}, 'decision_date': {'type': 'string', 'description': 'Decision date (Entscheidungsdatum).'}, 'decision_kind': {'type': 'string', 'description': 'Decision kind (Entscheidungsart â\x80\x94 Erkenntnis, Beschluss, â\x80¦), where tagged.'}, 'decision_type': {'type': 'string', 'description': "Document kind: 'Rechtssatz' (headnote) or 'Text' (full decision text). One decision may appear as several headnote documents plus one text document sharing a Geschäftszahl."}, 'headnotes_url': {'type': 'string', 'description': 'RIS web view of the decisionâ\x80\x99s headnotes (RechtssaetzeUrl).'}, 'document_number': {'type': 'string', 'description': 'Technical RIS document number (e.g. JFT_â\x80¦, DSBT_20251114_â\x80¦, UPTS_â\x80¦) â\x80\x94 pass together with the court value (as application) to ris_get_document.'}, 'legal_force_note': {'type': 'string', 'description': 'Challenge / legal-force note (Anfechtung), where present.'}, 'collection_number': {'type': 'string', 'description': 'Official collection number (VfSlg/VwSlg/UVS Sammlungsnummer), where assigned.'}, 'guiding_principle': {'type': 'string', 'description': 'Guiding legal principle / headnote (Leitsatz) â\x80\x94 the abstracted rule the decision establishes. Present chiefly on Rechtssatz (headnote) documents, mostly VfGH.'}}, 'description': 'One document from the selected court â\x80\x94 a decision (headnote or full text), or, under court normenliste, one law of the VwGH norm index (see norm_index).', 'additionalProperties': False}, 'description': 'Matching documents for the requested page â\x80\x94 decisions, or indexed laws under court normenliste. Totals and paging in enrichment.'}, 'pageSize': {'type': 'number', 'description': 'Page size RIS applied.'}, 'truncated': {'type': 'boolean', 'description': 'Present and true when more pages exist beyond this one â\x80\x94 raise page to continue.'}, 'totalCount': {'type': 'number', 'description': 'Total matching documents across all pages.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['stage'], 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': '1-based result page. Default 1.'}, 'query': {'type': 'string', 'pattern': '\\S', 'description': 'Full-text search (Suchworte). Boolean operators UND/ODER/NICHT or AND/OR/NOT, parentheses, quoted phrases; wildcard * is trailing-only. Omit to leave unfiltered; a blank value is rejected.'}, 'stage': {'enum': ['review_drafts', 'government_bills'], 'type': 'string', 'description': 'Which pipeline stage to search â\x80\x94 one per call. review_drafts (Begut, ministerial review) or government_bills (RegV, council-adopted bills). Details: ris_list_reference topic stages.'}, 'title': {'type': 'string', 'pattern': '\\S', 'description': 'Title search (Titel) â\x80\x94 phrase field: * allowed leading or trailing with â\x89¥2 characters beside it. Omit to leave unfiltered; a blank value is rejected.'}, 'sort_by': {'enum': ['date', 'ministry', 'title'], 'type': 'string', 'description': 'Sort column: date (review deadline or adoption date per stage), ministry, or title. Default: upstream order.'}, 'ministry': {'type': 'string', 'pattern': '\\S', 'description': 'Submitting ministry (EinbringendeStelle). Accepts an abbreviation ("BMF", "BMWET") or a full designation; use the ministryâ\x80\x99s name at the time of submission. An abbreviation missing from the table is rejected; a full designation missing from it is sent as written. Table: ris_list_reference topic ministries. Omit to leave unfiltered; a blank value is rejected.'}, 'page_size': {'enum': [10, 20], 'type': 'number', 'description': 'Documents per page: 10 or 20 (default 20). For more results, keep the size and raise page.'}, 'decided_to': {'type': 'string', 'pattern': '^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])$', 'description': 'government_bills only. Latest adoption date (YYYY-MM-DD).'}, 'decided_from': {'type': 'string', 'pattern': '^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])$', 'description': 'government_bills only. Earliest council-of-ministers adoption date (YYYY-MM-DD).'}, 'in_review_on': {'type': 'string', 'pattern': '^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])$', 'description': 'review_drafts only. Drafts whose public-review window covers this date (YYYY-MM-DD). Today = drafts currently in Begutachtung.'}, 'changed_since': {'enum': ['one_week', 'two_weeks', 'one_month', 'three_months', 'six_months', 'one_year'], 'type': 'string', 'description': 'Coarse recency filter â\x80\x94 documents changed in RIS within the interval. For exact windows use ris_track_changes.'}, 'sort_direction': {'enum': ['ascending', 'descending'], 'type': 'string', 'description': 'Sort direction; applies with sort_by.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['results', 'totalCount', 'page', 'pageSize']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'number', 'description': '1-based page number RIS served.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['stage_filter_mismatch', 'unresolved_ministry', 'invalid_query', 'upstream_error', 'upstream_timeout'], 'description': 'Machine-readable failure mode. Declared by this tool: `stage_filter_mismatch`: in_review_on was combined with stage: government_bills, or decided_from/to with stage: review_drafts â\x80\x94 rejected locally before any upstream call; the message names the offending pair. `unresolved_ministry`: ministry is an abbreviation-shaped value matching no row of the RIS ministries table (the message names the closest matches), or a ministry the table lists only for another issuer parameter (the message names the parameters that accept it) â\x80\x94 rejected locally before any upstream call. A value the table does not know that contains a space is sent to RIS as written instead. `invalid_query`: A page past the last page of results; or RIS rejecting a value in-band (the Client error message is passed through verbatim, in German, and it does not name the page). `upstream_error`: RIS is unreachable, returned a server error, or served an HTML error page. `upstream_timeout`: RIS did not answer the search within the request deadline. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'notice': {'type': 'string', 'description': 'Zero-hit guidance â\x80\x94 names the likely cause and the concrete next call.'}, 'results': {'type': 'array', 'items': {'type': 'object', 'required': ['document_number', 'stage', 'materials', 'content_urls'], 'properties': {'stage': {'type': 'string', 'description': 'Pipeline stage the record belongs to: review_drafts (Begut) or government_bills (RegV).'}, 'title': {'type': 'string', 'description': 'Full document title, HTML markup stripped.'}, 'decided': {'type': 'string', 'description': 'Council-of-ministers adoption date (Beschlussdatum) â\x80\x94 government_bills only.'}, 'ministry': {'type': 'string', 'description': 'Submitting ministry (EinbringendeStelle / Organ), where the record carries one.'}, 'materials': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'url'], 'properties': {'url': {'type': 'string', 'description': 'One rendition URL for this companion â\x80\x94 its HTML rendition, or its PDF where RIS files no HTML one (roughly one companion in eight, nearly all of them review-draft covering letters). Pass it to ris_get_document as document_url: the extension is discarded there and format selects what comes back (markdown, html, or the RIS Nutzdaten xml of this companion, plus the companionâ\x80\x99s own rendition URLs under urls_only), so this one URL reaches every text rendition the companion has. A PDF-only companion has none, and the URL is a direct download. The filename is opaque and per-record, so no document number reaches it.'}, 'name': {'type': 'string', 'description': 'RIS-supplied label, as filed. Unstable across records â\x80\x94 the same content appears as "Vorblatt und WFA", "Vorblatt+WFA", or "WFA"; "Textgegenüberstellung" or "TGÃ\x9c". Read type, not this, to classify.'}, 'type': {'type': 'string', 'description': 'Content type â\x80\x94 Material (Erläuterungen, Textgegenüberstellung, Vorblatt/WFA), Letter (the Begleitschreiben covering the review draft), or Attachment (annex texts, e.g. treaty translations). The reliable discriminator: name is free text and varies per record.'}}, 'description': 'One companion document filed alongside the draft.', 'additionalProperties': False}, 'description': 'Companion documents filed with the draft â\x80\x94 the Erläuterungen (explanatory notes, carrying the reasoning the bill text omits), Textgegenüberstellung (redline against the current law), Vorblatt/WFA (impact assessment), the covering letter, and any annexes. Read one by passing its url to ris_get_document as document_url. Empty when the ministry filed none; coverage is uneven by design.'}, 'short_title': {'type': 'string', 'description': 'Short title (Kurztitel), where assigned.'}, 'content_urls': {'type': 'object', 'properties': {'pdf': {'type': 'string', 'description': 'PDF rendition URL.'}, 'rtf': {'type': 'string', 'description': 'RTF rendition URL.'}, 'xml': {'type': 'string', 'description': 'XML rendition URL (RIS Nutzdaten schema).'}, 'html': {'type': 'string', 'description': 'HTML rendition URL.'}}, 'description': 'Rendition URLs of the main document (companion documents ride in materials).', 'additionalProperties': False}, 'document_url': {'type': 'string', 'description': 'RIS web view of the draft document (DokumentUrl) â\x80\x94 for humans.'}, 'document_number': {'type': 'string', 'description': 'Technical RIS document number (BEGUT_â\x80¦ or REGV_-prefixed) â\x80\x94 pass together with the stageâ\x80\x99s application to ris_get_document.'}, 'review_deadline': {'type': 'string', 'description': 'End of the public review window (Ende der Begutachtungsfrist) â\x80\x94 review_drafts only.'}}, 'description': 'One pipeline document â\x80\x94 a review draft or a government bill.', 'additionalProperties': False}, 'description': 'Matching pipeline documents for the requested page. Totals and paging in enrichment.'}, 'pageSize': {'type': 'number', 'description': 'Page size RIS applied.'}, 'truncated': {'type': 'boolean', 'description': 'Present and true when more pages exist beyond this one â\x80\x94 raise page to continue.'}, 'totalCount': {'type': 'number', 'description': 'Total matching documents across all pages.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': '1-based result page. Default 1.'}, 'part': {'enum': ['part1', 'part2', 'part3', 'pre_1997'], 'type': 'string', 'description': 'Federal only. part1 (Gesetze) | part2 (Verordnungen) | part3 (Staatsverträge) â\x80\x94 parts exist from 1997; pre_1997 searches the older partless BGBl (routes to the 1945â\x80\x932003 tier). Semantics: ris_list_reference topic gazette_parts.'}, 'type': {'enum': ['laws', 'regulations', 'announcements', 'other'], 'type': 'string', 'description': 'Document-type filter (Typ) for federal and state law gazettes: laws (Gesetze) | regulations (Verordnungen) | announcements (Kundmachungen) | other (Sonstiges).'}, 'query': {'type': 'string', 'pattern': '\\S', 'description': 'Full-text search (Suchworte). Boolean operators UND/ODER/NICHT or AND/OR/NOT, parentheses, quoted phrases; wildcard * is trailing-only. Syntax: ris_list_reference topic search_syntax. Omit to leave unfiltered; a blank value is rejected.'}, 'scope': {'enum': ['federal', 'burgenland', 'kaernten', 'niederoesterreich', 'oberoesterreich', 'salzburg', 'steiermark', 'tirol', 'vorarlberg', 'wien', 'district', 'municipal'], 'type': 'string', 'default': 'federal', 'description': 'Jurisdiction level: federal (default â\x80\x94 the Bundesgesetzblatt, era tier auto-routed), a Bundesland (burgenland â\x80¦ wien, its Landesgesetzblatt), district (Bezirke promulgations), or municipal (Gemeinde promulgations).'}, 'title': {'type': 'string', 'pattern': '\\S', 'description': 'Title search (Titel) â\x80\x94 phrase field: * allowed leading or trailing with â\x89¥2 characters beside it. Omit to leave unfiltered; a blank value is rejected.'}, 'issuer': {'type': 'string', 'pattern': '\\S', 'description': 'Issuing body â\x80\x94 federal (EinbringendeStelle: a ministry abbreviation such as "BMF" or a full designation; an abbreviation missing from ris_list_reference topic ministries is rejected, a full designation missing from it is sent as written) or ordinance gazettes (Vbl Einbringer, exact match with no wildcards: Landeshauptmann/frau, Landesregierung, Amt der Landesregierung, Sonstige Landesbehörden) only. Omit to leave unfiltered; a blank value is rejected.'}, 'number': {'type': 'string', 'pattern': '\\S', 'description': 'Gazette number, e.g. "171/2026" or "BGBl. II Nr. 171/2026" (federal), "61/2026" (state), a Kundmachungsnummer (district/municipal). A trailing year routes a federal query to the right era tier; a bare number searches the current tier. Omit to leave unfiltered; a blank value is rejected.'}, 'series': {'enum': ['law_gazette', 'ordinance_gazette'], 'type': 'string', 'description': 'State scopes only. law_gazette (default when omitted) searches the authentic Landesgesetzblatt; ordinance_gazette searches the Verordnungsblätter (Vbl â\x80\x94 currently Tirol only, 2022+).'}, 'sort_by': {'enum': ['published', 'number'], 'type': 'string', 'description': 'Sort column: published (Kundmachungsdatum) or number. Availability varies by tier; default: upstream order.'}, 'page_size': {'enum': [10, 20], 'type': 'number', 'description': 'Documents per page: 10 or 20 (default 20). For more results, keep the size and raise page.'}, 'state_era': {'enum': ['current', 'legacy'], 'type': 'string', 'description': 'State scopes only. current (default when omitted) searches the authentic Landesgesetzblatt; legacy searches the stateâ\x80\x99s earlier non-authentic series â\x80\x94 Niederösterreichâ\x80\x99s systematic LgblNO collection, or the historical Lgbl for the other Bundesländer (Wien carries neither).'}, 'municipality': {'type': 'string', 'pattern': '\\S', 'description': 'Municipal only. Exact municipality name (Gemeinde), RISâ\x80\x99s spelling. Omit to leave unfiltered; a blank value is rejected.'}, 'published_to': {'type': 'string', 'pattern': '^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])$', 'description': 'Latest promulgation date (YYYY-MM-DD). Federal: the interval must stay inside one era tier, so pair it with published_from â\x80\x94 an interval crossing 2004-01-01 or 1945-01-01 is rejected with the boundaries to split at.'}, 'published_from': {'type': 'string', 'pattern': '^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])$', 'description': 'Earliest promulgation date (YYYY-MM-DD). A pre-2004 range routes a federal query to an earlier era tier. Federal: the interval must stay inside one tier â\x80\x94 set published_to as well, since a one-sided bound is open into every tier beyond it.'}, 'sort_direction': {'enum': ['ascending', 'descending'], 'type': 'string', 'description': 'Sort direction; applies with sort_by.'}, 'district_authority': {'type': 'string', 'pattern': '\\S', 'description': 'District only. Bezirksverwaltungsbehörde name, e.g. "Bezirkshauptmannschaft Liezen" â\x80\x94 full list: ris_list_reference topic district_authorities. Omit to leave unfiltered; a blank value is rejected.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['results', 'totalCount', 'page', 'pageSize', 'servedApplication']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'number', 'description': '1-based page number RIS served.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['scope_filter_mismatch', 'cross_tier_range', 'unresolved_ministry', 'invalid_query', 'upstream_error', 'upstream_timeout'], 'description': 'Machine-readable failure mode. Declared by this tool: `scope_filter_mismatch`: A filter was combined with a scope that does not support it (part off federal; series/state_era off a state scope; district_authority off district; municipality off municipal; issuer outside federal/ordinance gazettes), or series: ordinance_gazette was combined with state_era: legacy (ordinance gazettes have no legacy counterpart) â\x80\x94 rejected locally before any upstream call; the message names the offending pair. `cross_tier_range`: A federal published_from/published_to interval overlaps more than one Bundesgesetzblatt era tier (BgblAuth 2004+, BgblPdf 1945â\x80\x932003, BgblAlt 1848â\x80\x931940) â\x80\x94 including a one-sided bound, which is open into every tier beyond it. Rejected locally before any upstream call: one call serves exactly one application, so a spanning range would return the records of a single tier and silently omit the rest of the interval. A year-bearing number or part: pre_1997 names the tier outright and is never rejected. `unresolved_ministry`: A federal issuer is an abbreviation-shaped value matching no row of the RIS ministries table (the message names the closest matches), or a ministry the table lists only for another issuer parameter (the message names the parameters that accept it) â\x80\x94 rejected locally before any upstream call. A value the table does not know that contains a space is sent to RIS as written instead. `invalid_query`: A page past the last page of results; or a parameter the resolved gazette does not carry â\x80\x94 sort_by, number, type, part, issuer, or a state absent from the historical Lgbl series â\x80\x94 rejected locally before any upstream call, naming the field and the gazette that rejected it (by scope/series/state_era, or for a federal era tier by its window and the input that routed there); or RIS rejecting a value in-band (the Client error message is passed through verbatim, in German, and it does not name the page). `upstream_error`: RIS is unreachable, returned a server error, or served an HTML error page. `upstream_timeout`: RIS did not answer the search within the request deadline. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'notice': {'type': 'string', 'description': 'Zero-hit guidance â\x80\x94 names the likely cause and the concrete next call.'}, 'results': {'type': 'array', 'items': {'type': 'object', 'required': ['document_number', 'binding', 'content_urls'], 'properties': {'eli': {'type': 'string', 'description': 'European Legislation Identifier, where assigned (federal coverage is best).'}, 'part': {'type': 'string', 'description': 'Federal gazette part (Teil â\x80\x94 I / II / III), where the tier carries a part split.'}, 'type': {'type': 'string', 'description': 'Norm/document type (Typ â\x80\x94 Gesetz, Verordnung, â\x80¦) â\x80\x94 glossary: ris_list_reference topic law_types.'}, 'title': {'type': 'string', 'description': 'Full document title, HTML markup stripped.'}, 'issuer': {'type': 'string', 'description': 'Issuing body (Einbringer / Organ), where the record carries one.'}, 'binding': {'enum': ['authentic', 'consolidated_informational', 'historical_record'], 'type': 'string', 'description': 'Legal binding status: authentic (amtssigniert, legally binding â\x80\x94 BgblAuth/LgblAuth/Vbl/Bvb/GrA), historical_record (superseded/pre-e-Recht promulgation â\x80\x94 BgblPdf/BgblAlt/Lgbl), or consolidated_informational (NÃ\x96 systematic collection â\x80\x94 LgblNO).'}, 'alex_url': {'type': 'string', 'description': 'Ã\x96NB ALEX scan of the gazette issue (AlexUrl) â\x80\x94 the fetchable document for the metadata-only imperial/interwar tier (BgblAlt, 1848â\x80\x931940), which carries no content_urls.'}, 'published': {'type': 'string', 'description': 'Promulgation / publication date (Kundmachungsdatum / Ausgabedatum).'}, 'short_title': {'type': 'string', 'description': 'Short title (Kurztitel), where assigned.'}, 'content_urls': {'type': 'object', 'properties': {'pdf': {'type': 'string', 'description': 'PDF rendition URL.'}, 'rtf': {'type': 'string', 'description': 'RTF rendition URL.'}, 'xml': {'type': 'string', 'description': 'XML rendition URL (RIS Nutzdaten schema).'}, 'html': {'type': 'string', 'description': 'HTML rendition URL.'}}, 'description': 'Rendition URLs of the main document. BgblAlt carries none (metadata-only, Ã\x96NB scans); district/municipal gazettes publish the authentic PDF only (see authentic_pdf_url).', 'additionalProperties': False}, 'document_url': {'type': 'string', 'description': 'RIS web view of the gazette document (DokumentUrl) â\x80\x94 for humans.'}, 'municipality': {'type': 'string', 'description': 'Municipality the promulgation belongs to (Gemeinde) â\x80\x94 municipal gazettes only.'}, 'gazette_number': {'type': 'string', 'description': 'Gazette number (Bgblnummer / Lgblnummer / Kundmachungsnummer / BgblAlt Fundstelle), where assigned.'}, 'document_number': {'type': 'string', 'description': 'Technical RIS document number (e.g. BGBLA_2026_II_171, 1961_194_0, rgb1902_â\x80¦, LGBLA_SA_â\x80¦, VBL_TI_â\x80¦, BVB_ST_â\x80¦, GEMREA_OB_â\x80¦) â\x80\x94 pass together with the served application to ris_get_document.'}, 'authentic_pdf_url': {'type': 'string', 'description': 'The amtssigniert authentic PDF (.pdfsig, Authentisch DataType) â\x80\x94 the legally binding artifact â\x80\x94 where the gazette publishes one.'}, 'district_authority': {'type': 'string', 'description': 'District administrative authority (Bezirksverwaltungsbehörde) â\x80\x94 district gazettes only.'}}, 'description': 'One gazette entry from the resolved application.', 'additionalProperties': False}, 'description': 'Matching gazette entries for the requested page. Totals, paging, and the served application in enrichment.'}, 'pageSize': {'type': 'number', 'description': 'Page size RIS applied.'}, 'truncated': {'type': 'boolean', 'description': 'Present and true when more pages exist beyond this one â\x80\x94 raise page to continue.'}, 'totalCount': {'type': 'number', 'description': 'Total matching entries across all pages.'}, 'servedApplication': {'type': 'string', 'description': 'The RIS application that served the query â\x80\x94 for federal, the single era tier auto-routed from the numberâ\x80\x99s year or the publication-date interval (BgblAuth 2004+, BgblPdf 1945â\x80\x932003, BgblAlt 1848â\x80\x931940); otherwise the resolved state/district/municipal application.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': '1-based result page. Default 1.'}, 'index': {'type': 'string', 'pattern': '\\S', 'description': 'Systematik classification filter (e.g. "10/10 Datenschutz"). Federal/state consolidated law only. Omit to leave unfiltered; a blank value is rejected.'}, 'query': {'type': 'string', 'pattern': '\\S', 'description': 'Full-text search (Suchworte). Boolean operators UND/ODER/NICHT or AND/OR/NOT, parentheses, quoted phrases; wildcard * is trailing-only ("Datenschutz*", never "*schutz"). Syntax: ris_list_reference topic search_syntax. Omit to leave unfiltered; a blank value is rejected.'}, 'scope': {'enum': ['federal', 'burgenland', 'kaernten', 'niederoesterreich', 'oberoesterreich', 'salzburg', 'steiermark', 'tirol', 'vorarlberg', 'wien'], 'type': 'string', 'default': 'federal', 'description': 'Jurisdiction: federal (default) searches consolidated federal law; a Bundesland searches that stateâ\x80\x99s consolidated law (or, with municipality set, its municipal law).'}, 'title': {'type': 'string', 'pattern': '\\S', 'description': 'Title search (Titel) â\x80\x94 matches title, short title, and official abbreviation ("ABGB", "DSG"). Phrase field: * allowed leading or trailing with â\x89¥2 characters beside it. Omit to leave unfiltered; a blank value is rejected.'}, 'law_id': {'type': 'string', 'pattern': '\\S', 'description': 'Law-level grouping key (Gesetzesnummer, e.g. 10001597 = DSG) â\x80\x94 exact match; returns every section of that law. Federal/state consolidated law only. Omit to leave unfiltered; a blank value is rejected.'}, 'sort_by': {'enum': ['section', 'in_force_date'], 'type': 'string', 'description': 'Sort column: section (§/Artikel/Anlage label) or in_force_date. Default: upstream order. Federal/state consolidated law only.'}, 'language': {'enum': ['german', 'english'], 'type': 'string', 'default': 'german', 'description': 'german (default) searches the authoritative German corpus; english searches the ~138 unofficial English translations of selected federal laws (requires scope: federal; combines only with query and title).'}, 'page_size': {'enum': [10, 20], 'type': 'number', 'description': 'Documents per page: 10 or 20 (default 20). For more results, keep the size and raise page.'}, 'section_to': {'type': 'string', 'pattern': '\\S', 'description': 'End of the section range. Equal to section_from for a single section. Omit to leave unfiltered; a blank value is rejected.'}, 'municipality': {'type': 'string', 'pattern': '\\S', 'description': 'Municipality name for municipal law (e.g. "Graz" â\x80\x94 RISâ\x80\x99s spelling, not "Stadt Graz"). Requires a state scope; combines only with query, title, and in_force_as_of. Coverage is selected norms in 6 Bundesländer (no Burgenland/Tirol/Vorarlberg). Omit to search consolidated law; a blank value is rejected.'}, 'section_from': {'type': 'string', 'pattern': '\\S', 'description': 'Start of a § / Artikel / Anlage number range, digits with optional letter ("6", "1a"). Federal/state consolidated law only. Omit to leave unfiltered; a blank value is rejected.'}, 'section_type': {'enum': ['Alle', 'Artikel', 'Paragraph', 'Anlage'], 'type': 'string', 'description': 'Which section kind the range addresses. Defaults to Paragraph when a section range is set. Values: ris_list_reference topic section_types.'}, 'changed_since': {'enum': ['one_week', 'two_weeks', 'one_month', 'three_months', 'six_months', 'one_year'], 'type': 'string', 'description': 'Coarse recency filter â\x80\x94 documents changed in RIS within the interval. For exact windows and deletions use ris_track_changes.'}, 'left_force_to': {'type': 'string', 'pattern': '^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])$', 'description': 'Provisions that left force on/before this date (YYYY-MM-DD).'}, 'in_force_as_of': {'type': 'string', 'pattern': '^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])$', 'description': 'Return only the version in force on this date (YYYY-MM-DD). DEFAULTS TO TODAY in Austria â\x80\x94 omitting it never searches all historical versions; opt into that with include_all_versions.'}, 'sort_direction': {'enum': ['ascending', 'descending'], 'type': 'string', 'description': 'Sort direction; applies with sort_by.'}, 'left_force_from': {'type': 'string', 'pattern': '^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])$', 'description': 'Provisions that left force on/after this date (YYYY-MM-DD) â\x80\x94 repeal tracking. Same exclusivity as entered_force_from.'}, 'entered_force_to': {'type': 'string', 'pattern': '^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])$', 'description': 'Provisions that entered force on/before this date (YYYY-MM-DD).'}, 'entered_force_from': {'type': 'string', 'pattern': '^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])$', 'description': 'Provisions that entered force on/after this date (YYYY-MM-DD) â\x80\x94 new-law tracking. Federal/state consolidated law only; mutually exclusive with in_force_as_of and include_all_versions.'}, 'include_all_versions': {'type': 'boolean', 'description': 'true searches every historical version (no in-force date filter) â\x80\x94 version-history research. Overrides in_force_as_of; mutually exclusive with the force-window filters.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['results', 'totalCount', 'page', 'pageSize']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'number', 'description': '1-based page number RIS served.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['scope_filter_mismatch', 'invalid_query', 'upstream_error', 'upstream_timeout'], 'description': 'Machine-readable failure mode. Declared by this tool: `scope_filter_mismatch`: A filter was combined with a scope, municipality, or language that does not support it, or mutually exclusive version filters were combined â\x80\x94 rejected locally before any upstream call; the message names the offending pair. `invalid_query`: A page past the last page of results, or RIS rejecting a parameter value in-band â\x80\x94 the Client error message is passed through verbatim, in German. It names the invalid element and its valid values, except for a page past the end, which names no parameter at all. Unsupported filter combinations are caught earlier as scope_filter_mismatch. `upstream_error`: RIS is unreachable, returned a server error, or served an HTML error page. `upstream_timeout`: RIS did not answer the search within the request deadline. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'notice': {'type': 'string', 'description': 'Zero-hit guidance â\x80\x94 names the likely cause and the concrete next call.'}, 'results': {'type': 'array', 'items': {'type': 'object', 'required': ['document_number', 'application', 'indexes', 'celex_references', 'content_urls'], 'properties': {'eli': {'type': 'string', 'description': 'European Legislation Identifier, where assigned (federal coverage is best).'}, 'type': {'type': 'string', 'description': 'Norm type code (BG, V, K, â\x80¦) â\x80\x94 glossary: ris_list_reference topic law_types.'}, 'title': {'type': 'string', 'description': 'Full document title, HTML markup stripped.'}, 'law_id': {'type': 'string', 'description': 'Law-level grouping key (Gesetzesnummer) â\x80\x94 filter by law_id to fetch every section of the same law.'}, 'indexes': {'type': 'array', 'items': {'type': 'string', 'description': 'One Systematik index entry, e.g. "10/10 Datenschutz".'}, 'description': 'Systematik classification entries (Index). Empty when unclassified.'}, 'law_url': {'type': 'string', 'description': 'RIS web view of the whole law (GesamteRechtsvorschriftUrl) â\x80\x94 for humans.'}, 'application': {'type': 'string', 'description': 'RIS application the record belongs to: BrKons (federal), LrKons (state), Gr (municipal), or Erv (English translation).'}, 'short_title': {'type': 'string', 'description': 'Short title (Kurztitel), where assigned.'}, 'translation': {'type': 'object', 'properties': {'author': {'type': 'string', 'description': 'Body that produced the translation, e.g. "Federal Chancellery".'}, 'source': {'type': 'string', 'description': 'Which German version this translation renders, as RIS states it â\x80\x94 the originating gazette, the last amendment applied, and the date of the version, one per line.'}}, 'description': 'Provenance of an unofficial English translation. Present only on Erv records (language: english), which carry no in_force_from, promulgation, or eli of their own â\x80\x94 this is the only statement of which German version the text corresponds to, and how old it is.', 'additionalProperties': False}, 'abbreviation': {'type': 'string', 'description': 'Official abbreviation, where the record carries one.'}, 'content_urls': {'type': 'object', 'properties': {'pdf': {'type': 'string', 'description': 'PDF rendition URL.'}, 'rtf': {'type': 'string', 'description': 'RTF rendition URL.'}, 'xml': {'type': 'string', 'description': 'XML rendition URL (RIS Nutzdaten schema).'}, 'html': {'type': 'string', 'description': 'HTML rendition URL.'}}, 'description': 'Rendition URLs of the main document. Municipal and translation hits may be sparse.', 'additionalProperties': False}, 'municipality': {'type': 'string', 'description': 'Municipality the norm belongs to (municipal law only).'}, 'promulgation': {'type': 'string', 'description': 'Promulgation reference (Kundmachungsorgan), e.g. "BGBl. I Nr. 165/1999".'}, 'in_force_from': {'type': 'string', 'description': 'Date this version entered force (Inkrafttretensdatum).'}, 'section_label': {'type': 'string', 'description': '§ / Artikel / Anlage label of this document (ArtikelParagraphAnlage).'}, 'in_force_until': {'type': 'string', 'description': 'Date this version left force (Ausserkrafttretensdatum). Absent while in force.'}, 'document_number': {'type': 'string', 'description': 'Technical RIS document number (e.g. NOR40262691, GEMRE_WI_â\x80¦, ERV_1999_1_165) â\x80\x94 pass together with application to ris_get_document.'}, 'celex_references': {'type': 'array', 'items': {'type': 'string', 'description': 'One CELEX number of a transposed EU act.'}, 'description': 'CELEX numbers parsed from the record â\x80\x94 the EU-transposition hook for eur-lex chaining. Empty when none.'}}, 'description': 'One consolidated-law document â\x80\x94 one § / Artikel / Anlage â\x80\x94 or one translation.', 'additionalProperties': False}, 'description': 'Matching documents for the requested page. Totals and paging in enrichment.'}, 'pageSize': {'type': 'number', 'description': 'Page size RIS applied.'}, 'truncated': {'type': 'boolean', 'description': 'Present and true when more pages exist beyond this one â\x80\x94 raise page to continue.'}, 'totalCount': {'type': 'number', 'description': 'Total matching documents across all pages.'}, 'appliedInForceAsOf': {'type': 'string', 'description': 'The in-force date the server actually applied (defaulted to today in Austria when omitted). Absent when include_all_versions, a force-window, or language: english searched without a date filter.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['application'], 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': '1-based result page. Default 1.'}, 'page_size': {'enum': [10, 20], 'type': 'number', 'description': 'Documents per page: 10 or 20 (default 20). For more results, keep the size and raise page.'}, 'changed_to': {'type': 'string', 'pattern': '^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])$', 'description': 'Include documents changed on/before this date (YYYY-MM-DD, AenderungenBis).'}, 'application': {'enum': ['BrKons', 'BgblAuth', 'BgblPdf', 'BgblAlt', 'Begut', 'RegV', 'Erv', 'LrKons', 'LgblAuth', 'Lgbl', 'LgblNO', 'Vbl', 'Bvb', 'Gr', 'GrA', 'Vfgh', 'Vwgh', 'Normenliste', 'Justiz', 'Bvwg', 'Lvwg', 'Dsk', 'Dok', 'Pvak', 'Gbk', 'Uvs', 'AsylGH', 'Ubas', 'Umse', 'Bks', 'Verg', 'PruefGewO', 'Avsv', 'Spg', 'Avn', 'KmGer', 'Upts', 'Mrp', 'Erlaesse'], 'type': 'string', 'description': 'RIS application whose change feed to read, e.g. BrKons, LrKons, Dsk, or BgblAuth. All supported codes: ris_list_reference topic applications.'}, 'changed_from': {'type': 'string', 'pattern': '^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])$', 'description': 'Include documents changed on/after this date (YYYY-MM-DD, AenderungenVon). Exact date, not a coarse interval.'}, 'include_deleted': {'type': 'boolean', 'description': 'true also returns documents removed from RIS in the window, as deleted records â\x80\x94 the only way to observe deletions.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['results', 'totalCount', 'page', 'pageSize', 'application']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'number', 'description': '1-based page number RIS served.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['invalid_query', 'upstream_error', 'upstream_timeout'], 'description': 'Machine-readable failure mode. Declared by this tool: `invalid_query`: RIS rejected a parameter value in-band â\x80\x94 its Client error message is passed through verbatim and names the offending element (e.g. a page past the last page of the change window). `upstream_error`: RIS is unreachable, returned a server error, or served an HTML error page. `upstream_timeout`: RIS did not answer the change feed within the request deadline. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'notice': {'type': 'string', 'description': 'Zero-hit guidance â\x80\x94 names the likely cause and the concrete next call.'}, 'results': {'type': 'array', 'items': {'type': 'object', 'required': ['document_number', 'binding_status', 'deleted', 'content_urls'], 'properties': {'organ': {'type': 'string', 'description': 'Issuing body (Organ) of the document, where the record carries one.'}, 'title': {'type': 'string', 'description': 'Document title, HTML markup stripped, where present.'}, 'changed': {'type': 'string', 'description': 'Date this document last changed in RIS (Allgemein.Geaendert).'}, 'deleted': {'type': 'boolean', 'description': 'True when this record marks a document removed from RIS (include_deleted only).'}, 'published': {'type': 'string', 'description': 'Date this document was first published in RIS (Allgemein.Veroeffentlicht).'}, 'deleted_at': {'type': 'string', 'description': 'Deletion import timestamp (ImportTimestamp) â\x80\x94 deletion records only.'}, 'short_title': {'type': 'string', 'description': 'Short title (Kurztitel), where assigned.'}, 'content_urls': {'type': 'object', 'properties': {'pdf': {'type': 'string', 'description': 'PDF rendition URL.'}, 'rtf': {'type': 'string', 'description': 'RTF rendition URL.'}, 'xml': {'type': 'string', 'description': 'XML rendition URL (RIS Nutzdaten schema).'}, 'html': {'type': 'string', 'description': 'HTML rendition URL.'}}, 'description': 'Rendition URLs of the changed document. Empty for a deletion record.', 'additionalProperties': False}, 'document_url': {'type': 'string', 'description': 'RIS web view of the document (Allgemein.DokumentUrl) â\x80\x94 for humans.'}, 'binding_status': {'enum': ['authentic', 'consolidated_informational', 'historical_record', 'decision', 'preparatory', 'administrative_directive', 'translation'], 'type': 'string', 'description': 'Legal binding status of the queried application â\x80\x94 authentic (amtssigniert, legally binding), consolidated_informational, historical_record, decision, preparatory, administrative_directive, or translation.'}, 'document_number': {'type': 'string', 'description': 'Technical RIS document number (Technisch.ID) â\x80\x94 pass with application to ris_get_document.'}, 'authentic_pdf_url': {'type': 'string', 'description': 'The amtssigniert authentic PDF (.pdfsig, Authentisch DataType), where the changed document publishes one.'}}, 'description': 'One change-feed entry â\x80\x94 a changed document, or a deletion record.', 'additionalProperties': False}, 'description': 'Change-feed entries for the requested page. Totals, paging, and the applied window in enrichment.'}, 'pageSize': {'type': 'number', 'description': 'Page size RIS applied.'}, 'changedTo': {'type': 'string', 'description': 'The changed_to bound the server applied (echo), when set.'}, 'truncated': {'type': 'boolean', 'description': 'Present and true when more pages exist beyond this one â\x80\x94 raise page to continue.'}, 'totalCount': {'type': 'number', 'description': 'Total change-feed entries across all pages.'}, 'application': {'type': 'string', 'description': 'The application whose change feed was read.'}, 'changedFrom': {'type': 'string', 'description': 'The changed_from bound the server applied (echo), when set.'}}, 'additionalProperties': False}
최근 도구 변경
유사한 MCP 서버
BNM Data Shop
Sells access to cached official reports, enforcement orders, regulatory documents, inspection records, and other public-source te…
OpenHelvetia Gateway
Provides sourced access to Swiss federal legislation and political data, including law metadata, versions, amendments, citations,…
Court Listener
Searches and retrieves US court opinions, case citations, federal docket filings, and related legal documents.
Gov Uk Content
Searches and retrieves GOV.UK content, government organisations, and HMRC manuals, sections, and revision histories.
Eur Lex
Searches and retrieves EU legislation and CJEU judgments with article-level text, metadata, CELEX identifiers, and citations.
Openparliament Ca
Provides searchable Canadian Parliament data on bills, politicians, committees, meetings, and recorded votes.
Govinfo
Searches and retrieves metadata and document content from US government publications, including bills, regulations, court materia…
Dailymed
Retrieves FDA DailyMed structured drug labels, label histories and diffs, drug classes, recent updates, and label references by d…