@cyanheads/ris-austria-mcp-server 0.2.2 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/AGENTS.md +1 -1
  2. package/CLAUDE.md +1 -1
  3. package/README.md +2 -2
  4. package/changelog/0.2.x/0.2.3.md +19 -0
  5. package/changelog/0.2.x/0.2.4.md +15 -0
  6. package/dist/mcp-server/tools/definitions/_shared.d.ts +10 -1
  7. package/dist/mcp-server/tools/definitions/_shared.d.ts.map +1 -1
  8. package/dist/mcp-server/tools/definitions/_shared.js +29 -2
  9. package/dist/mcp-server/tools/definitions/_shared.js.map +1 -1
  10. package/dist/mcp-server/tools/definitions/ris-lookup-citation.tool.d.ts.map +1 -1
  11. package/dist/mcp-server/tools/definitions/ris-lookup-citation.tool.js +35 -16
  12. package/dist/mcp-server/tools/definitions/ris-lookup-citation.tool.js.map +1 -1
  13. package/dist/mcp-server/tools/definitions/ris-search-case-law.tool.d.ts +18 -0
  14. package/dist/mcp-server/tools/definitions/ris-search-case-law.tool.d.ts.map +1 -1
  15. package/dist/mcp-server/tools/definitions/ris-search-case-law.tool.js +82 -3
  16. package/dist/mcp-server/tools/definitions/ris-search-case-law.tool.js.map +1 -1
  17. package/dist/mcp-server/tools/definitions/ris-search-legislation.tool.d.ts +8 -0
  18. package/dist/mcp-server/tools/definitions/ris-search-legislation.tool.d.ts.map +1 -1
  19. package/dist/mcp-server/tools/definitions/ris-search-legislation.tool.js +41 -0
  20. package/dist/mcp-server/tools/definitions/ris-search-legislation.tool.js.map +1 -1
  21. package/dist/services/ris/normalizer.d.ts +1 -1
  22. package/dist/services/ris/normalizer.d.ts.map +1 -1
  23. package/dist/services/ris/normalizer.js +13 -6
  24. package/dist/services/ris/normalizer.js.map +1 -1
  25. package/dist/services/ris/reference/citation-formats.d.ts +1 -1
  26. package/dist/services/ris/reference/citation-formats.js +1 -1
  27. package/dist/services/ris/reference/citation-formats.js.map +1 -1
  28. package/dist/services/ris/reference/courts.d.ts +7 -3
  29. package/dist/services/ris/reference/courts.d.ts.map +1 -1
  30. package/dist/services/ris/reference/courts.js +7 -3
  31. package/dist/services/ris/reference/courts.js.map +1 -1
  32. package/dist/services/ris/ris-service.d.ts +9 -1
  33. package/dist/services/ris/ris-service.d.ts.map +1 -1
  34. package/dist/services/ris/ris-service.js +58 -15
  35. package/dist/services/ris/ris-service.js.map +1 -1
  36. package/dist/services/ris/types.d.ts +7 -1
  37. package/dist/services/ris/types.d.ts.map +1 -1
  38. package/package.json +1 -1
  39. package/server.json +3 -3
package/AGENTS.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Developer Protocol
2
2
 
3
3
  **Server:** ris-austria-mcp-server
4
- **Version:** 0.2.2
4
+ **Version:** 0.2.4
5
5
  **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.11.0`
6
6
  **Engines:** Bun ≥1.3.0, Node ≥24.0.0
7
7
  **MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
package/CLAUDE.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Developer Protocol
2
2
 
3
3
  **Server:** ris-austria-mcp-server
4
- **Version:** 0.2.2
4
+ **Version:** 0.2.4
5
5
  **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.11.0`
6
6
  **Engines:** Bun ≥1.3.0, Node ≥24.0.0
7
7
  **MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
package/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  <div align="center">
9
9
 
10
- [![Version](https://img.shields.io/badge/Version-0.2.2-blue.svg?style=flat-square)](./CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED?style=flat-square&logo=docker&logoColor=white)](https://github.com/users/cyanheads/packages/container/package/ris-austria-mcp-server) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^1.29.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![npm](https://img.shields.io/npm/v/@cyanheads/ris-austria-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/ris-austria-mcp-server) [![TypeScript](https://img.shields.io/badge/TypeScript-^7.0.2-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-v1.3.2-blueviolet.svg?style=flat-square)](https://bun.sh/)
10
+ [![Version](https://img.shields.io/badge/Version-0.2.4-blue.svg?style=flat-square)](./CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED?style=flat-square&logo=docker&logoColor=white)](https://github.com/users/cyanheads/packages/container/package/ris-austria-mcp-server) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^1.29.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![npm](https://img.shields.io/npm/v/@cyanheads/ris-austria-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/ris-austria-mcp-server) [![TypeScript](https://img.shields.io/badge/TypeScript-^7.0.2-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-v1.3.2-blueviolet.svg?style=flat-square)](https://bun.sh/)
11
11
 
12
12
  </div>
13
13
 
@@ -108,7 +108,7 @@ Sectoral official gazettes and executive documents — seven collections, five o
108
108
 
109
109
  Citation-first resolution — how Austrian legal work actually starts.
110
110
 
111
- - Parses and routes four citation kinds: norm cites ("§ 6 DSG", "Art 10 B-VG"), gazette numbers across all three federal eras plus LGBl ("BGBl. I Nr. 165/1999", "BGBl. Nr. 194/1961", "RGBl. Nr. 189/1902"), case numbers ("Ra 2019/22/0184", "2025-0.934.677", "6Ob56/25k"), and collection numbers ("VfSlg 19.632/2012")
111
+ - Parses and routes four citation kinds: norm cites ("§ 6 DSG", "Art 10 B-VG"), gazette numbers across all three federal eras plus LGBl ("BGBl. I Nr. 165/1999", "BGBl. Nr. 194/1961", "RGBl. Nr. 189/1902"), case numbers ("Ro 2026/03/0016", "2025-0.934.677", "14Os49/26a"), and collection numbers ("VfSlg 19.632/2012")
112
112
  - Deterministic upstream filters (section + title, per-era number params, Geschäftszahl, Sammlungsnummer) — no keyword-search fuzziness
113
113
  - Returns `found: false` with structured guidance instead of throwing when nothing resolves
114
114
  - `court` and `state` hints short-circuit ambiguous formats
@@ -0,0 +1,19 @@
1
+ ---
2
+ summary: "ris_search_case_law surfaces normenliste law identity plus cross-court indexes/state/note, ris_search_legislation surfaces English-translation provenance, and the search retry budget no longer exceeds the client's request deadline on a slow upstream."
3
+ breaking: false
4
+ security: false
5
+ ---
6
+
7
+ # 0.2.3 — 2026-07-26
8
+
9
+ ## Added
10
+
11
+ - **`ris_search_case_law` `norm_index`** — optional object (`title`, `abbreviation`, `type`, `reference`) naming the law a `court: normenliste` record indexes; absent on the sixteen deciding courts. `abbreviation` prefers `AbkuerzungDesVerwaltungsgerichtshofes` over `Abkuerzung` — the citable form (`DSG 2000`, `HlG 1989`) rather than the often-repeated full title. ([#19](https://github.com/cyanheads/ris-austria-mcp-server/issues/19))
12
+ - **`ris_search_case_law` `indexes` / `state` / `note`** — flat fields on `CaseLawRecordSchema`: Systematik classification entries (vfgh, vwgh, lvwg, uvs, umse, normenliste), the deciding Bundesland (lvwg, uvs), and an Anmerkung (normenliste, justiz, dsk). ([#22](https://github.com/cyanheads/ris-austria-mcp-server/issues/22))
13
+ - **`ris_search_legislation` `translation`** — optional object (`source`, `author`) giving English-translation provenance on `Erv` records, which otherwise carry no `in_force_from`, `promulgation`, or `eli` to say which German version they correspond to. ([#22](https://github.com/cyanheads/ris-austria-mcp-server/issues/22))
14
+
15
+ ## Fixed
16
+
17
+ - **`stripHtmlRemnants`** — normalizes CRLF line endings before stripping `<br/>` markers. Normenliste `Titel`/`Fundstelle` are CRLF-delimited upstream and previously reached callers as escape noise. ([#19](https://github.com/cyanheads/ris-austria-mcp-server/issues/19))
18
+ - **`mapBundesrecht`** — `Erv.Author`/`Erv.Source` now run through the same HTML-stripping path as every other text field; both are `<br/>`-separated prose upstream (18 of 100 sampled `Author` values name an amending body). ([#22](https://github.com/cyanheads/ris-austria-mcp-server/issues/22))
19
+ - **`RisService` search retry budget** — `SEARCH_TIMEOUT_MS` 15s → 40s: a filtered search answers in 0.6–3s, but an unfiltered `bvwg` page costs 14.6–43s at `page_size` 50–100, which the old deadline could never complete. A new `SEARCH_BUDGET_MS` (48s) caps the whole retry sequence — each attempt gets whatever budget remains — so a slow-failing upstream can't multiply the deadline by the attempt count. A search deadline (`errorSource: 'FetchTimeout'`) is no longer retried, since a request that can't finish in 40s is an expensive scan, not a blip; an upstream 504 stays retryable. Worst case is now ≈55s, inside the MCP SDK's 60s default request timeout (previously ≈73s). `trackChanges()` shares the new budget via one `request()` helper. ([#23](https://github.com/cyanheads/ris-austria-mcp-server/issues/23))
@@ -0,0 +1,15 @@
1
+ ---
2
+ summary: "ris_lookup_citation rejects impossible calendar dates and the normenliste court hint as input errors instead of reporting them as citation misses, Artikel miss guidance now carries section_type into the retry recipe, and the vwgh/justiz Geschäftszahl reference examples are replaced with citations that resolve."
3
+ breaking: false
4
+ security: false
5
+ ---
6
+
7
+ # 0.2.4 — 2026-07-26
8
+
9
+ ## Fixed
10
+
11
+ - **`isoDateString`** — validates a real calendar date, not just the `YYYY-MM-DD` shape. The tightened pattern (`^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$`) reaches the advertised JSON Schema, so a schema-validating client rejects an impossible date like `2026-99-99` without a round trip; a `.refine()` catches the shape-valid impossibilities the pattern can't express (31 April, 29 February outside a leap year). Backs all 20 date parameters across 7 tools. `ris_lookup_citation` previously converted RIS's upstream rejection of an impossible date into `found: false`, misreporting bad input as an unresolved citation. ([#14](https://github.com/cyanheads/ris-austria-mcp-server/issues/14))
12
+ - **`ris_lookup_citation` `court`** — the enum drops `normenliste` (a norm index that carries no case numbers); the request builder rejected a Geschäftszahl filter there, and `runSearch()` turned that local rejection into the same `found: false` miss as an unresolved citation. ([#14](https://github.com/cyanheads/ris-austria-mcp-server/issues/14))
13
+ - **`normGuidance()`** — takes the full parsed citation instead of a loose abbreviation/section pair, so an Artikel miss labels the section `Art N` (not `§ N`) and carries `section_type: 'Artikel'` into the `ris_search_legislation` retry recipe. The prior recipe omitted it, defaulted to `Paragraph`, and returned zero hits for an Artikel that exists. ([#17](https://github.com/cyanheads/ris-austria-mcp-server/issues/17))
14
+ - **`RIS_COURTS` `gzExample`** — vwgh (`Ra 2019/22/0184` → `Ro 2026/03/0016`) and justiz (`6Ob56/25k` → `14Os49/26a`) replaced with citations confirmed against the live RIS corpus; the originals resolved zero hits. Updated across all six prose copies: the `ris_lookup_citation` tool and `citation` field descriptions, `unknownGuidance()`, the `ris_search_case_law` zero-hit notice, `RIS_CITATION_FORMATS`, and the README feature bullet. ([#18](https://github.com/cyanheads/ris-austria-mcp-server/issues/18))
15
+ - **`docs/design.md`** — the errors table now documents `upstream_timeout` (Timeout, retryable) alongside `upstream_error`; `ris_lookup_citation` has declared the distinct reason since before this release, but the doc still described only one.
@@ -5,7 +5,16 @@
5
5
  */
6
6
  import type { TypedFail, TypedRecoveryFor } from '@cyanheads/mcp-ts-core';
7
7
  import { z } from '@cyanheads/mcp-ts-core';
8
- /** An ISO calendar date (YYYY-MM-DD), validated client-side before any upstream call. */
8
+ /**
9
+ * An ISO calendar date (YYYY-MM-DD), validated client-side before any upstream call — an
10
+ * impossible date is an input error at every tool that takes one, never a silent upstream
11
+ * rejection reinterpreted downstream.
12
+ *
13
+ * The pattern bounds month and day because it is what reaches the advertised JSON Schema
14
+ * (`pattern`), so a schema-validating client rejects `2026-99-99` without a round trip; the
15
+ * refinement then catches the shape-valid impossibilities a pattern cannot express (31 April,
16
+ * 29 February outside a leap year) and does not serialize.
17
+ */
9
18
  export declare const isoDateString: z.ZodString;
10
19
  /**
11
20
  * The three reasons every search-family tool declares for a failure raised below the
@@ -1 +1 @@
1
- {"version":3,"file":"_shared.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/_shared.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAG3C,yFAAyF;AACzF,eAAO,MAAM,aAAa,aAEkD,CAAC;AAE7E;;;;;GAKG;AACH,KAAK,mBAAmB,GAAG,eAAe,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;AAEnF,kEAAkE;AAClE,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,mBAAmB,CAAC,CAAC;IAC9C,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;CAC7D;AAoBD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAMlF"}
1
+ {"version":3,"file":"_shared.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/_shared.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAsB3C;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,aAMwE,CAAC;AAEnG;;;;;GAKG;AACH,KAAK,mBAAmB,GAAG,eAAe,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;AAEnF,kEAAkE;AAClE,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,mBAAmB,CAAC,CAAC;IAC9C,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;CAC7D;AAoBD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAMlF"}
@@ -5,10 +5,37 @@
5
5
  */
6
6
  import { z } from '@cyanheads/mcp-ts-core';
7
7
  import { JsonRpcErrorCode, McpError } from '@cyanheads/mcp-ts-core/errors';
8
- /** An ISO calendar date (YYYY-MM-DD), validated client-side before any upstream call. */
8
+ /** Months with 30 days the only non-February lengths a day of 31 can overshoot. */
9
+ const THIRTY_DAY_MONTHS = new Set([4, 6, 9, 11]);
10
+ /**
11
+ * True when a shape-valid `YYYY-MM-DD` names a day the month actually has. {@link isoDateString}'s
12
+ * pattern already bounds month to 01–12 and day to 01–31, so only over-long months remain: the
13
+ * four 30-day months, and February's 28/29-day split by leap year.
14
+ */
15
+ function isRealCalendarDate(value) {
16
+ const year = Number(value.slice(0, 4));
17
+ const month = Number(value.slice(5, 7));
18
+ const day = Number(value.slice(8, 10));
19
+ if (month === 2) {
20
+ const leapYear = year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
21
+ return day <= (leapYear ? 29 : 28);
22
+ }
23
+ return day <= (THIRTY_DAY_MONTHS.has(month) ? 30 : 31);
24
+ }
25
+ /**
26
+ * An ISO calendar date (YYYY-MM-DD), validated client-side before any upstream call — an
27
+ * impossible date is an input error at every tool that takes one, never a silent upstream
28
+ * rejection reinterpreted downstream.
29
+ *
30
+ * The pattern bounds month and day because it is what reaches the advertised JSON Schema
31
+ * (`pattern`), so a schema-validating client rejects `2026-99-99` without a round trip; the
32
+ * refinement then catches the shape-valid impossibilities a pattern cannot express (31 April,
33
+ * 29 February outside a leap year) and does not serialize.
34
+ */
9
35
  export const isoDateString = z
10
36
  .string()
11
- .regex(/^\d{4}-\d{2}-\d{2}$/u, 'Expected an ISO date in YYYY-MM-DD form.');
37
+ .regex(/^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/u, 'Expected an ISO calendar date in YYYY-MM-DD form.')
38
+ .refine(isRealCalendarDate, 'No such calendar date — check the day against the month and year.');
12
39
  /**
13
40
  * Framework codes raised below the handler, mapped to the contract reason describing them.
14
41
  *
@@ -1 +1 @@
1
- {"version":3,"file":"_shared.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/_shared.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAE3E,yFAAyF;AACzF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KAC3B,MAAM,EAAE;KACR,KAAK,CAAC,sBAAsB,EAAE,0CAA0C,CAAC,CAAC;AAgB7E;;;;;;;;;;GAUG;AACH,MAAM,cAAc,GAAG,IAAI,GAAG,CAAwC;IACpE,CAAC,gBAAgB,CAAC,eAAe,EAAE,eAAe,CAAC;IACnD,CAAC,gBAAgB,CAAC,aAAa,EAAE,eAAe,CAAC;IACjD,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;IACvD,CAAC,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,CAAC;CAC/C,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc,EAAE,GAAyB;IACvE,IAAI,CAAC,CAAC,KAAK,YAAY,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/C,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9C,OAAO,MAAM,KAAK,SAAS;QACzB,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACtE,CAAC"}
1
+ {"version":3,"file":"_shared.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/_shared.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAE3E,qFAAqF;AACrF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAEjD;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,KAAa;IACvC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACvC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;QAC1E,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KAC3B,MAAM,EAAE;KACR,KAAK,CACJ,oDAAoD,EACpD,mDAAmD,CACpD;KACA,MAAM,CAAC,kBAAkB,EAAE,mEAAmE,CAAC,CAAC;AAgBnG;;;;;;;;;;GAUG;AACH,MAAM,cAAc,GAAG,IAAI,GAAG,CAAwC;IACpE,CAAC,gBAAgB,CAAC,eAAe,EAAE,eAAe,CAAC;IACnD,CAAC,gBAAgB,CAAC,aAAa,EAAE,eAAe,CAAC;IACjD,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;IACvD,CAAC,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,CAAC;CAC/C,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc,EAAE,GAAyB;IACvE,IAAI,CAAC,CAAC,KAAK,YAAY,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/C,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9C,OAAO,MAAM,KAAK,SAAS;QACzB,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACtE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ris-lookup-citation.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/ris-lookup-citation.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AA2V3E,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAgR5B,CAAC"}
1
+ {"version":3,"file":"ris-lookup-citation.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/ris-lookup-citation.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAiX3E,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAgR5B,CAAC"}
@@ -24,7 +24,14 @@ import { isoDateString } from './_shared.js';
24
24
  import { toRecord as toCaseLawRecord } from './ris-search-case-law.tool.js';
25
25
  import { toRecord as toGazetteRecord } from './ris-search-gazette.tool.js';
26
26
  import { toRecord as toLegislationRecord } from './ris-search-legislation.tool.js';
27
- const COURT_CODES = RIS_COURTS.map((c) => c.code);
27
+ /**
28
+ * Courts a Geschäftszahl can be looked up in. `normenliste` indexes norms rather than
29
+ * decisions, so the request builder rejects a case-number filter there — and that local
30
+ * rejection is one `runSearch` maps to a not-resolved `null`, which would report an
31
+ * impossible court hint as a citation miss. Rejecting it at the input schema instead keeps
32
+ * `found: false` meaning only "valid citation, no document".
33
+ */
34
+ const CASE_NUMBER_COURT_CODES = RIS_COURTS.filter((c) => c.code !== 'normenliste').map((c) => c.code);
28
35
  const STATE_CODES = RIS_STATES.map((s) => s.code);
29
36
  const COURT_APPLICATION = new Map(RIS_COURTS.map((c) => [c.code, c.application]));
30
37
  /** Resolve a court code to its RIS `Applikation` value (falls back to the code). */
@@ -37,6 +44,10 @@ const GAZETTE_PREFIX = /\b(?:BGBl|RGBl|StGBl|LGBl)\b|GBl[ÖO]/i;
37
44
  const NORM_EXPLICIT = /§|\bart(?:ikel)?\.?\s*\d/i;
38
45
  /** A bare law abbreviation (whole-law reference) — letters/hyphens, an optional trailing year. */
39
46
  const BARE_ABBREVIATION = /^[A-Za-zÄÖÜäöüß][A-Za-zÄÖÜäöüß.]*(?:[-\s][A-Za-zÄÖÜäöüß0-9]+)*$/;
47
+ /** The marker RIS cites a section with — "Art" for an Artikel, "§" otherwise. */
48
+ function sectionMarker(sectionType) {
49
+ return sectionType === 'Artikel' ? 'Art' : '§';
50
+ }
40
51
  /**
41
52
  * Parse a norm citation into an abbreviation and optional §/Artikel number. Handles both
42
53
  * orders: section-first ("§ 6 DSG", "Art 10 B-VG") and abbreviation-first ("DSG §1",
@@ -213,14 +224,22 @@ function classify(input, courtHint) {
213
224
  /* found: false guidance (verbatim per parse outcome — design.md) */
214
225
  /* ------------------------------------------------------------------------------------ */
215
226
  function unknownGuidance(input) {
216
- return `Could not classify '${input}'. Expected forms — norm: '§ 6 DSG' / 'Art 10 B-VG'; gazette: 'BGBl. I Nr. 165/1999' (also pre-2004 and RGBl/StGBl forms, and LGBl with a state hint); case number: 'Ra 2019/22/0184'; collection: 'VfSlg 19.632/2012'. Formats: ris_list_reference topic citation_formats. Or set kind explicitly; for keyword search use ris_search_legislation / ris_search_case_law.`;
227
+ return `Could not classify '${input}'. Expected forms — norm: '§ 6 DSG' / 'Art 10 B-VG'; gazette: 'BGBl. I Nr. 165/1999' (also pre-2004 and RGBl/StGBl forms, and LGBl with a state hint); case number: 'Ro 2026/03/0016'; collection: 'VfSlg 19.632/2012'. Formats: ris_list_reference topic citation_formats. Or set kind explicitly; for keyword search use ris_search_legislation / ris_search_case_law.`;
217
228
  }
218
- function normGuidance(abbreviation, section, date) {
229
+ /**
230
+ * Guidance for an unresolved norm citation. Takes the whole parse so the section type reaches
231
+ * both the label and the retry recipe: `section_type` defaults to Paragraph once a section range
232
+ * is set, so an Artikel recipe that omits it searches § N and returns zero even when the Artikel
233
+ * exists. It is emitted for both types — the recipe is meant to be run verbatim, so it states the
234
+ * filter rather than leaning on the default.
235
+ */
236
+ function normGuidance(parsed, date) {
237
+ const { abbreviation, section, sectionType } = parsed;
219
238
  const head = section !== undefined
220
- ? `No document for ${abbreviation} § ${section} in force on ${date}.`
239
+ ? `No document for ${abbreviation} ${sectionMarker(sectionType)} ${section} in force on ${date}.`
221
240
  : `No document for ${abbreviation} in force on ${date}.`;
222
241
  const retry = section !== undefined
223
- ? `retry ris_search_legislation with title: '${abbreviation}', section_from/to: '${section}', include_all_versions: true.`
242
+ ? `retry ris_search_legislation with title: '${abbreviation}', section_from/to: '${section}', section_type: '${sectionType ?? 'Paragraph'}', include_all_versions: true.`
224
243
  : `retry ris_search_legislation with title: '${abbreviation}', include_all_versions: true.`;
225
244
  return `${head} If the provision existed at another time, ${retry} If the abbreviation is uncertain, search ris_search_legislation title: '${abbreviation}*'. State law resolves only with an explicit state hint.`;
226
245
  }
@@ -305,20 +324,20 @@ function meaningful(value) {
305
324
  }
306
325
  export const risLookupCitation = tool('ris_lookup_citation', {
307
326
  title: 'Resolve Austrian Legal Citation',
308
- description: 'Resolve a single Austrian legal citation to its canonical RIS document deterministically — no keyword search. Four routes are auto-detected from the citation shape (or forced with kind): a norm citation — section-first ("§ 6 DSG", "Art 10 B-VG"), abbreviation-first ("DSG §1", "DSGVO Art32", the shape ris_search_case_law returns in norms_cited), or a bare abbreviation like "ABGB" — resolves through consolidated federal law, or a Bundesland with a state hint, as in force today or on in_force_as_of; a gazette citation ("BGBl. I Nr. 165/1999", pre-2004 "BGBl. Nr. 194/1961", imperial "RGBl. Nr. 189/1902", or "LGBl. Nr. 61/2026" with a state hint) routes to the right federal era tier by year or to a state Landesgesetzblatt; a case number ("Ra 2019/22/0184", "G 287/2022", "6Ob56/25k", "2025-0.934.677", "W256 …") is matched to its court — pass court to skip detection, and ambiguous formats probe up to two courts; a collection number ("VfSlg 19.632/2012", "VwSlg 18.000 A/2010") resolves through the VfGH/VwGH collection. Returns the single best-matching document in the same shape as the corresponding search tool, with alternatives_count when more than one matched. A citation that cannot be classified or resolved returns found: false with next-step guidance — it never throws for a miss; only an upstream RIS outage is an error. For keyword rather than citation lookup, use ris_search_legislation or ris_search_case_law.',
327
+ description: 'Resolve a single Austrian legal citation to its canonical RIS document deterministically — no keyword search. Four routes are auto-detected from the citation shape (or forced with kind): a norm citation — section-first ("§ 6 DSG", "Art 10 B-VG"), abbreviation-first ("DSG §1", "DSGVO Art32", the shape ris_search_case_law returns in norms_cited), or a bare abbreviation like "ABGB" — resolves through consolidated federal law, or a Bundesland with a state hint, as in force today or on in_force_as_of; a gazette citation ("BGBl. I Nr. 165/1999", pre-2004 "BGBl. Nr. 194/1961", imperial "RGBl. Nr. 189/1902", or "LGBl. Nr. 61/2026" with a state hint) routes to the right federal era tier by year or to a state Landesgesetzblatt; a case number ("Ro 2026/03/0016", "G 287/2022", "14Os49/26a", "2025-0.934.677", "W256 …") is matched to its court — pass court to skip detection, and ambiguous formats probe up to two courts; a collection number ("VfSlg 19.632/2012", "VwSlg 18.000 A/2010") resolves through the VfGH/VwGH collection. Returns the single best-matching document in the same shape as the corresponding search tool, with alternatives_count when more than one matched. A citation that cannot be classified or resolved returns found: false with next-step guidance — it never throws for a miss; only an upstream RIS outage is an error. For keyword rather than citation lookup, use ris_search_legislation or ris_search_case_law.',
309
328
  annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
310
329
  input: z.object({
311
330
  citation: z
312
331
  .string()
313
- .describe('The legal citation to resolve, e.g. "§ 6 DSG" or "DSG §1", "Art 10 B-VG", "BGBl. I Nr. 165/1999", "Ra 2019/22/0184", or "VfSlg 19.632/2012".'),
332
+ .describe('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".'),
314
333
  kind: z
315
334
  .enum(['auto', 'norm', 'gazette', 'case_number', 'collection_number'])
316
335
  .default('auto')
317
336
  .describe('Force a route, or auto (default) to classify by shape. Set explicitly when the citation shape is ambiguous.'),
318
337
  court: z
319
- .enum(COURT_CODES)
338
+ .enum(CASE_NUMBER_COURT_CODES)
320
339
  .optional()
321
- .describe('Court hint for a case number — short-circuits court detection to this court. Codes: ris_list_reference topic courts.'),
340
+ .describe('Court hint for a case number — short-circuits court detection to this court. Codes: ris_list_reference topic courts, minus normenliste (a norm index, which carries no case numbers).'),
322
341
  state: z
323
342
  .enum(STATE_CODES)
324
343
  .optional()
@@ -413,7 +432,11 @@ export const risLookupCitation = tool('ris_lookup_citation', {
413
432
  if (route === 'norm') {
414
433
  const parsed = parseNorm(citation);
415
434
  if (!parsed) {
416
- return { found: false, kind: 'norm', guidance: normGuidance(citation, undefined, asOf) };
435
+ return {
436
+ found: false,
437
+ kind: 'norm',
438
+ guidance: normGuidance({ abbreviation: citation }, asOf),
439
+ };
417
440
  }
418
441
  const application = stateHint !== undefined ? 'LrKons' : 'BrKons';
419
442
  const params = {
@@ -430,15 +453,11 @@ export const risLookupCitation = tool('ris_lookup_citation', {
430
453
  const result = await runSearch(() => getRisService().searchLegislation(params, ctx));
431
454
  const hit = result?.hits[0];
432
455
  if (!result || hit === undefined) {
433
- return {
434
- found: false,
435
- kind: 'norm',
436
- guidance: normGuidance(parsed.abbreviation, parsed.section, asOf),
437
- };
456
+ return { found: false, kind: 'norm', guidance: normGuidance(parsed, asOf) };
438
457
  }
439
458
  const alternatives = result.total > 1 ? result.total - 1 : undefined;
440
459
  const sectionPhrase = parsed.section !== undefined
441
- ? `, ${parsed.sectionType === 'Artikel' ? 'Art' : '§'} ${parsed.section}`
460
+ ? `, ${sectionMarker(parsed.sectionType)} ${parsed.section}`
442
461
  : '';
443
462
  ctx.log.info('Citation resolved', { kind: route, application, total: result.total });
444
463
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"ris-lookup-citation.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/ris-lookup-citation.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ris-lookup-citation.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/ris-lookup-citation.tool.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,15 @@ export declare const CaseLawRecordSchema: z.ZodObject<{
23
23
  guiding_principle: z.ZodOptional<z.ZodString>;
24
24
  norms_cited: z.ZodArray<z.ZodString>;
25
25
  keywords: z.ZodOptional<z.ZodString>;
26
+ indexes: z.ZodArray<z.ZodString>;
27
+ state: z.ZodOptional<z.ZodString>;
28
+ note: z.ZodOptional<z.ZodString>;
29
+ norm_index: z.ZodOptional<z.ZodObject<{
30
+ title: z.ZodOptional<z.ZodString>;
31
+ abbreviation: z.ZodOptional<z.ZodString>;
32
+ type: z.ZodOptional<z.ZodString>;
33
+ reference: z.ZodOptional<z.ZodString>;
34
+ }, z.core.$strip>>;
26
35
  collection_number: z.ZodOptional<z.ZodString>;
27
36
  ecli: z.ZodOptional<z.ZodString>;
28
37
  decision_url: z.ZodOptional<z.ZodString>;
@@ -140,6 +149,15 @@ export declare const risSearchCaseLaw: import("@cyanheads/mcp-ts-core").ToolDefi
140
149
  guiding_principle: z.ZodOptional<z.ZodString>;
141
150
  norms_cited: z.ZodArray<z.ZodString>;
142
151
  keywords: z.ZodOptional<z.ZodString>;
152
+ indexes: z.ZodArray<z.ZodString>;
153
+ state: z.ZodOptional<z.ZodString>;
154
+ note: z.ZodOptional<z.ZodString>;
155
+ norm_index: z.ZodOptional<z.ZodObject<{
156
+ title: z.ZodOptional<z.ZodString>;
157
+ abbreviation: z.ZodOptional<z.ZodString>;
158
+ type: z.ZodOptional<z.ZodString>;
159
+ reference: z.ZodOptional<z.ZodString>;
160
+ }, z.core.$strip>>;
143
161
  collection_number: z.ZodOptional<z.ZodString>;
144
162
  ecli: z.ZodOptional<z.ZodString>;
145
163
  decision_url: z.ZodOptional<z.ZodString>;
@@ -1 +1 @@
1
- {"version":3,"file":"ris-search-case-law.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/ris-search-case-law.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAkBjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAkCtD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;iBAkEqD,CAAC;AAEtF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAahE,6FAA6F;AAC7F,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,aAAa,CAwChF;AAED,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwa3B,CAAC"}
1
+ {"version":3,"file":"ris-search-case-law.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/ris-search-case-law.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAkBjE,OAAO,KAAK,EAAE,MAAM,EAAwB,MAAM,yBAAyB,CAAC;AAsE5E,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsF7B,CAAC;AAEJ,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AA2BhE,6FAA6F;AAC7F,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,aAAa,CA8ChF;AAED,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAub3B,CAAC"}
@@ -34,6 +34,33 @@ const ContentUrlsSchema = z
34
34
  rtf: z.string().optional().describe('RTF rendition URL.'),
35
35
  })
36
36
  .describe('Rendition URLs of the main document.');
37
+ /**
38
+ * The identity of a law, for the one court code that indexes laws rather than deciding
39
+ * cases. Grouped rather than flattened onto the record: these four fields exist only under
40
+ * `court: normenliste`, they would need a `norm_` prefix each to avoid reading as decision
41
+ * attributes (`type` beside `decision_type`, a `title` no decision has), and the object's
42
+ * presence is a single check that tells a caller which kind of record it holds.
43
+ */
44
+ const NormIndexSchema = z
45
+ .object({
46
+ title: z
47
+ .string()
48
+ .optional()
49
+ .describe('Full title of the law as the index records it (Titel) — often several lines, carrying the parliamentary references and originating gazette.'),
50
+ abbreviation: z
51
+ .string()
52
+ .optional()
53
+ .describe('Citable short form the VwGH uses for the law, e.g. "DSG 2000", "HlG 1989", "KFGNov 21te".'),
54
+ type: z
55
+ .string()
56
+ .optional()
57
+ .describe('Norm type code (BG, V, K, …) — glossary: ris_list_reference topic law_types.'),
58
+ reference: z
59
+ .string()
60
+ .optional()
61
+ .describe('Promulgation reference of the law (Fundstelle), e.g. "BGBl I 165/1999" — resolve it with ris_search_gazette or ris_lookup_citation.'),
62
+ })
63
+ .describe('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.');
37
64
  export const CaseLawRecordSchema = z
38
65
  .object({
39
66
  document_number: z
@@ -71,6 +98,18 @@ export const CaseLawRecordSchema = z
71
98
  .array(z.string().describe('One cited norm in RIS format, e.g. "DSG §1".'))
72
99
  .describe('Norms the decision cites — copy an entry verbatim into the norm filter to find sibling case law.'),
73
100
  keywords: z.string().optional().describe('Keywords (Schlagworte), where present.'),
101
+ indexes: z
102
+ .array(z.string().describe('One Systematik index entry, e.g. "10/10 Datenschutz".'))
103
+ .describe('Systematik classification entries (Indizes) — 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.'),
104
+ state: z
105
+ .string()
106
+ .optional()
107
+ .describe('Bundesland whose administrative court decided (lvwg and uvs records) — the German name, e.g. "Tirol".'),
108
+ note: z
109
+ .string()
110
+ .optional()
111
+ .describe('Annotation (Anmerkung) — a renaming or lifecycle note on a normenliste law, an editorial note on a justiz or dsk decision.'),
112
+ norm_index: NormIndexSchema.optional(),
74
113
  collection_number: z
75
114
  .string()
76
115
  .optional()
@@ -90,7 +129,7 @@ export const CaseLawRecordSchema = z
90
129
  .describe('Challenge / legal-force note (Anfechtung), where present.'),
91
130
  content_urls: ContentUrlsSchema,
92
131
  })
93
- .describe('One decision document (headnote or full text) from the selected court.');
132
+ .describe('One document from the selected court — a decision (headnote or full text), or, under court normenliste, one law of the VwGH norm index (see norm_index).');
94
133
  /** Pick the four core rendition URLs off a normalized hit. */
95
134
  function pickContentUrls(hit) {
96
135
  const { html, pdf, rtf, xml } = hit.contentUrls;
@@ -101,6 +140,19 @@ function pickContentUrls(hit) {
101
140
  ...(rtf !== undefined && { rtf }),
102
141
  };
103
142
  }
143
+ /**
144
+ * The law a Judikatur hit indexes, or `undefined` when the hit is a decision. Only the
145
+ * Normenliste node carries these four; every other court leaves all of them absent.
146
+ */
147
+ function pickNormIndex(md) {
148
+ const normIndex = {
149
+ ...(md.title !== undefined && { title: md.title }),
150
+ ...(md.abbreviation !== undefined && { abbreviation: md.abbreviation }),
151
+ ...(md.normType !== undefined && { type: md.normType }),
152
+ ...(md.reference !== undefined && { reference: md.reference }),
153
+ };
154
+ return Object.keys(normIndex).length > 0 ? normIndex : undefined;
155
+ }
104
156
  /** Map a normalized RIS hit (Judikatur, or Sonstige for upts) to the tool's record shape. */
105
157
  export function toRecord(hit, fallbackApplication) {
106
158
  const base = {
@@ -108,11 +160,13 @@ export function toRecord(hit, fallbackApplication) {
108
160
  content_urls: pickContentUrls(hit),
109
161
  court: hit.application ?? fallbackApplication,
110
162
  document_number: hit.documentNumber,
163
+ indexes: [],
111
164
  norms_cited: [],
112
165
  ...(hit.organ !== undefined && { organ: hit.organ }),
113
166
  };
114
167
  const md = hit.metadata;
115
168
  if (md.controller === 'Judikatur') {
169
+ const normIndex = pickNormIndex(md);
116
170
  return {
117
171
  ...base,
118
172
  case_numbers: [...md.caseNumbers],
@@ -123,9 +177,13 @@ export function toRecord(hit, fallbackApplication) {
123
177
  ...(md.decisionUrl !== undefined && { decision_url: md.decisionUrl }),
124
178
  ...(md.ecli !== undefined && { ecli: md.ecli }),
125
179
  ...(md.headnotesUrl !== undefined && { headnotes_url: md.headnotesUrl }),
180
+ indexes: [...md.indexes],
126
181
  ...(md.keywords !== undefined && { keywords: md.keywords }),
127
182
  ...(md.legalForceNote !== undefined && { legal_force_note: md.legalForceNote }),
183
+ ...(md.note !== undefined && { note: md.note }),
184
+ ...(normIndex !== undefined && { norm_index: normIndex }),
128
185
  norms_cited: [...md.normsCited],
186
+ ...(md.state !== undefined && { state: md.state }),
129
187
  ...(md.summary !== undefined && { summary: md.summary }),
130
188
  ...(md.guidingPrinciple !== undefined && { guiding_principle: md.guidingPrinciple }),
131
189
  };
@@ -245,7 +303,7 @@ export const risSearchCaseLaw = tool('ris_search_case_law', {
245
303
  output: z.object({
246
304
  results: z
247
305
  .array(CaseLawRecordSchema)
248
- .describe('Matching decision documents for the requested page. Totals and paging in enrichment.'),
306
+ .describe('Matching documents for the requested page — decisions, or indexed laws under court normenliste. Totals and paging in enrichment.'),
249
307
  }),
250
308
  enrichment: {
251
309
  totalCount: z.number().describe('Total matching documents across all pages.'),
@@ -407,7 +465,7 @@ export const risSearchCaseLaw = tool('ris_search_case_law', {
407
465
  `0 decisions in ${court}. Other courts are separate calls — repeat per court.`,
408
466
  ];
409
467
  if (caseNumber !== undefined) {
410
- fragments.push("Geschäftszahl formats differ per court ('Ra 2019/22/0184' = VwGH, 'G 287/2022' = VfGH, '6Ob56/25k' = OGH/justiz) — ris_lookup_citation auto-detects the court from the format; examples per court: ris_list_reference topic courts.");
468
+ fragments.push("Geschäftszahl formats differ per court ('Ro 2026/03/0016' = VwGH, 'G 287/2022' = VfGH, '14Os49/26a' = OGH/justiz) — ris_lookup_citation auto-detects the court from the format; examples per court: ris_list_reference topic courts.");
411
469
  }
412
470
  if (norm !== undefined) {
413
471
  fragments.push("norm must match RIS's cited-norm format ('DSG §1', 'DSGVO Art32' style as returned in norms_cited) — run a broader search first and copy the exact string from a result's norms_cited.");
@@ -446,6 +504,8 @@ export const risSearchCaseLaw = tool('ris_search_case_law', {
446
504
  const facts = [];
447
505
  if (r.organ !== undefined)
448
506
  facts.push(`**Organ:** ${r.organ}`);
507
+ if (r.state !== undefined)
508
+ facts.push(`**State:** ${r.state}`);
449
509
  if (r.decision_date !== undefined)
450
510
  facts.push(`**Decided:** ${r.decision_date}`);
451
511
  if (r.decision_type !== undefined)
@@ -454,6 +514,21 @@ export const risSearchCaseLaw = tool('ris_search_case_law', {
454
514
  facts.push(`**Kind:** ${r.decision_kind}`);
455
515
  if (facts.length > 0)
456
516
  lines.push(facts.join(' | '));
517
+ if (r.norm_index !== undefined) {
518
+ const norm = [];
519
+ if (r.norm_index.abbreviation !== undefined) {
520
+ norm.push(`**Norm:** ${r.norm_index.abbreviation}`);
521
+ }
522
+ if (r.norm_index.type !== undefined)
523
+ norm.push(`**Norm type:** ${r.norm_index.type}`);
524
+ if (r.norm_index.reference !== undefined) {
525
+ norm.push(`**Promulgated:** ${r.norm_index.reference}`);
526
+ }
527
+ if (norm.length > 0)
528
+ lines.push(norm.join(' | '));
529
+ if (r.norm_index.title !== undefined)
530
+ lines.push(`**Law:** ${r.norm_index.title}`);
531
+ }
457
532
  const identifiers = [];
458
533
  if (r.collection_number !== undefined) {
459
534
  identifiers.push(`**Collection:** ${r.collection_number}`);
@@ -471,8 +546,12 @@ export const risSearchCaseLaw = tool('ris_search_case_law', {
471
546
  }
472
547
  if (r.norms_cited.length > 0)
473
548
  lines.push(`**Norms:** ${r.norms_cited.join('; ')}`);
549
+ if (r.indexes.length > 0)
550
+ lines.push(`**Index:** ${r.indexes.join('; ')}`);
474
551
  if (r.keywords !== undefined)
475
552
  lines.push(`**Keywords:** ${r.keywords}`);
553
+ if (r.note !== undefined)
554
+ lines.push(`**Note:** ${r.note}`);
476
555
  if (r.legal_force_note !== undefined) {
477
556
  lines.push(`**Legal force:** ${r.legal_force_note}`);
478
557
  }