@cyanheads/ris-austria-mcp-server 0.4.3 → 0.4.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 (40) hide show
  1. package/AGENTS.md +32 -8
  2. package/CLAUDE.md +32 -8
  3. package/README.md +70 -67
  4. package/changelog/0.4.x/0.4.4.md +30 -0
  5. package/changelog/template.md +7 -7
  6. package/dist/index.js +3 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/mcp-server/tools/definitions/ris-list-reference.tool.d.ts.map +1 -1
  9. package/dist/mcp-server/tools/definitions/ris-list-reference.tool.js +9 -2
  10. package/dist/mcp-server/tools/definitions/ris-list-reference.tool.js.map +1 -1
  11. package/dist/mcp-server/tools/definitions/ris-search-announcements.tool.d.ts +3 -0
  12. package/dist/mcp-server/tools/definitions/ris-search-announcements.tool.d.ts.map +1 -1
  13. package/dist/mcp-server/tools/definitions/ris-search-announcements.tool.js +3 -0
  14. package/dist/mcp-server/tools/definitions/ris-search-announcements.tool.js.map +1 -1
  15. package/dist/mcp-server/tools/definitions/ris-search-case-law.tool.d.ts +2 -0
  16. package/dist/mcp-server/tools/definitions/ris-search-case-law.tool.d.ts.map +1 -1
  17. package/dist/mcp-server/tools/definitions/ris-search-case-law.tool.js +2 -0
  18. package/dist/mcp-server/tools/definitions/ris-search-case-law.tool.js.map +1 -1
  19. package/dist/mcp-server/tools/definitions/ris-search-drafts.tool.d.ts +3 -0
  20. package/dist/mcp-server/tools/definitions/ris-search-drafts.tool.d.ts.map +1 -1
  21. package/dist/mcp-server/tools/definitions/ris-search-drafts.tool.js +3 -0
  22. package/dist/mcp-server/tools/definitions/ris-search-drafts.tool.js.map +1 -1
  23. package/dist/mcp-server/tools/definitions/ris-search-gazette.tool.d.ts +3 -0
  24. package/dist/mcp-server/tools/definitions/ris-search-gazette.tool.d.ts.map +1 -1
  25. package/dist/mcp-server/tools/definitions/ris-search-gazette.tool.js +3 -0
  26. package/dist/mcp-server/tools/definitions/ris-search-gazette.tool.js.map +1 -1
  27. package/dist/mcp-server/tools/definitions/ris-search-legislation.tool.d.ts +3 -0
  28. package/dist/mcp-server/tools/definitions/ris-search-legislation.tool.d.ts.map +1 -1
  29. package/dist/mcp-server/tools/definitions/ris-search-legislation.tool.js +3 -0
  30. package/dist/mcp-server/tools/definitions/ris-search-legislation.tool.js.map +1 -1
  31. package/dist/mcp-server/tools/definitions/ris-track-changes.tool.d.ts +3 -0
  32. package/dist/mcp-server/tools/definitions/ris-track-changes.tool.d.ts.map +1 -1
  33. package/dist/mcp-server/tools/definitions/ris-track-changes.tool.js +3 -0
  34. package/dist/mcp-server/tools/definitions/ris-track-changes.tool.js.map +1 -1
  35. package/dist/services/ris/ris-service.d.ts +7 -3
  36. package/dist/services/ris/ris-service.d.ts.map +1 -1
  37. package/dist/services/ris/ris-service.js +17 -14
  38. package/dist/services/ris/ris-service.js.map +1 -1
  39. package/package.json +7 -7
  40. package/server.json +3 -3
package/AGENTS.md CHANGED
@@ -1,11 +1,11 @@
1
1
  # Developer Protocol
2
2
 
3
3
  **Server:** ris-austria-mcp-server
4
- **Version:** 0.4.3
5
- **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.13.0`
4
+ **Version:** 0.4.4
5
+ **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.13.6`
6
6
  **Engines:** Bun ≥1.4.0, Node ≥24.0.0
7
7
  **MCP SDK:** `@modelcontextprotocol/server` ^2.0.0
8
- **Zod:** ^4.6.1
8
+ **Zod:** ^4.6.5
9
9
 
10
10
  > **Read the framework docs first:** `node_modules/@cyanheads/mcp-ts-core/CLAUDE.md` contains the full API reference — builders, Context, error codes, exports, patterns. This file covers server-specific conventions only.
11
11
 
@@ -146,6 +146,7 @@ The entry point pins the machine identity and immutable public catalog cache hin
146
146
  await createApp({
147
147
  name: 'ris-austria-mcp-server',
148
148
  title: 'ris-austria-mcp-server',
149
+ sessionMode: 'stateless',
149
150
  cacheHints: {
150
151
  'tools/list': { ttlMs: 3_600_000, cacheScope: 'public' },
151
152
  'resources/list': { ttlMs: 3_600_000, cacheScope: 'public' },
@@ -162,6 +163,23 @@ await createApp({
162
163
 
163
164
  `package.json` is the canonical description source; do not duplicate it into `createApp()`.
164
165
 
166
+ ### Session posture and shutdown
167
+
168
+ `sessionMode` declares the HTTP session posture in `src/` instead of leaving it to a
169
+ deployment's `MCP_SESSION_MODE`, which still wins whenever it carries a meaningful value (an
170
+ empty string and an unsubstituted `${…}` placeholder read as unset and fall through to the
171
+ option). Every RIS tool answers from the request it was given, so `stateless` is the honest
172
+ declaration here. Add `require: 'stateful'` only if a tool ever asks the caller for input
173
+ mid-handler via `ctx.requestInput`: startup then fails with a `ConfigurationError` rather than
174
+ serving a mode in which a 2025-era client can never answer the prompt. Stdio is never refused.
175
+
176
+ `teardown(core)` is the `setup()` counterpart — release a watcher, socket, or non-`unref()`'d
177
+ timer there. It runs after the transport stops and before the logger closes, on every shutdown
178
+ path, and a signal-triggered shutdown then exits the process explicitly (0, or 1 if a step
179
+ never settles within the framework's 10 s ceiling). `RisService` holds nothing across requests
180
+ — every fetch is bounded by the caller's signal and the retry deadline — so this server
181
+ declares no `teardown`.
182
+
165
183
  ---
166
184
 
167
185
  ## Context
@@ -279,9 +297,9 @@ Available skills:
279
297
  | `security-pass` | Audit server for MCP-flavored security gaps: output injection, scope blast radius, input sinks, tenant isolation |
280
298
  | `code-simplifier` | Post-session cleanup against `git diff` — modernize syntax, consolidate duplication, align with the codebase |
281
299
  | `polish-docs-meta` | Finalize docs, README, metadata, and agent protocol for shipping |
282
- | `git-wrapup` | Version bump, changelog, verification, and commit stack; leaves tagging to release-and-publish |
283
- | `release-and-publish` | Tag, push, npm, MCP Registry, GitHub Release, and Docker publication after git-wrapup |
284
- | `release-pr-review` | Review an opt-in gated release PR before publishing |
300
+ | `git-wrapup` | Land working-tree changes as a commit stack — version bump, changelog, verify, commit by concern, release commit on top. No tag, no push to main; opens the release PR when the project declares release PR mode |
301
+ | `release-pr-review` | Review pass on an open release PR — simplifier + correctness review, fixes as ordinary commits on top of the stack, PR body kept in sync. Release PR mode only |
302
+ | `release-and-publish` | Fast-forward merge (release PR mode) + tag + push + npm + MCP Registry + GH Release + Docker. Picks up from `git-wrapup` |
285
303
  | `maintenance` | Investigate changelogs, adopt upstream changes, sync skills to agent dirs |
286
304
  | `orchestrations` | Chain task skills into a gated multi-phase pipeline — build-out, QA-fix, update-ship — when you can spawn sub-agents |
287
305
  | `report-issue-framework` | File a bug or feature request against `@cyanheads/mcp-ts-core` via `gh` CLI |
@@ -316,8 +334,8 @@ When you complete a skill's checklist, check the boxes and add a completion time
316
334
  | `bun run rebuild` | Clean + build |
317
335
  | `bun run clean` | Remove build artifacts |
318
336
  | `bun run devcheck` | Lint + format + typecheck + security + changelog sync |
319
- | `bun run audit:fix` | Run `bun audit fix` to upgrade vulnerable packages within existing ranges. First response to a transitive advisory; then `bun update <name>`, then `bun dedupe`. |
320
- | `bun run audit:refresh` | Delete `bun.lock` and reinstall. Last resort after targeted fixes; every ranged dependency re-resolves. |
337
+ | `bun run audit:fix` | `bun audit fix` — upgrade vulnerable packages to the lowest safe version within existing ranges (`--dry-run` previews, `--latest` rewrites ranges). First response when `devcheck` flags a transitive advisory; then `bun update <name>`, then `bun dedupe` |
338
+ | `bun run audit:refresh` | Delete `bun.lock` and reinstall. Last resort after `audit:fix`, `bun update <name>`, and `bun dedupe` — re-resolves every ranged dep (the framework pin included) and rewrites the lockfile as `lockfileVersion: 2` |
321
339
  | `bun run lint:mcp` | Run the MCP definition linter standalone (rule catalog: `api-linter` skill) |
322
340
  | `bun run lint:packaging` | Packaging surface checks — `server.json`/`manifest.json` env-var parity (run by devcheck) |
323
341
  | `bun run list-skills` | Print the skill registry |
@@ -370,6 +388,12 @@ security: false # optional — true ONLY for a source
370
388
 
371
389
  ---
372
390
 
391
+ ## Publishing
392
+
393
+ **Every release goes through a release PR, straight-through** — `git-wrapup`'s "Release PR mode", mode `straight-through`. One run: `git-wrapup` lands the commit stack on `release/<version>`, pushes it, and opens the PR (title = the release commit subject, body = the changelog entry plus a gates section); `release-and-publish` then fast-forwards `main` locally with `git merge --ff-only`, creates the tag on `main`'s tip, pushes `main` and the tag, deletes the branch, and publishes. A caller's brief may run a given release as `gated` instead — a `release-pr-review` pass on the open PR before `release-and-publish`. **Never merge through the GitHub UI or `gh pr merge`**: squash and rebase-merge are disabled in the repo settings because both rewrite the stack (rebase-merge also strips the SSH signatures), and a merge commit breaks the linear history.
394
+
395
+ ---
396
+
373
397
  ## Imports
374
398
 
375
399
  ```ts
package/CLAUDE.md CHANGED
@@ -1,11 +1,11 @@
1
1
  # Developer Protocol
2
2
 
3
3
  **Server:** ris-austria-mcp-server
4
- **Version:** 0.4.3
5
- **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.13.0`
4
+ **Version:** 0.4.4
5
+ **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.13.6`
6
6
  **Engines:** Bun ≥1.4.0, Node ≥24.0.0
7
7
  **MCP SDK:** `@modelcontextprotocol/server` ^2.0.0
8
- **Zod:** ^4.6.1
8
+ **Zod:** ^4.6.5
9
9
 
10
10
  > **Read the framework docs first:** `node_modules/@cyanheads/mcp-ts-core/CLAUDE.md` contains the full API reference — builders, Context, error codes, exports, patterns. This file covers server-specific conventions only.
11
11
 
@@ -146,6 +146,7 @@ The entry point pins the machine identity and immutable public catalog cache hin
146
146
  await createApp({
147
147
  name: 'ris-austria-mcp-server',
148
148
  title: 'ris-austria-mcp-server',
149
+ sessionMode: 'stateless',
149
150
  cacheHints: {
150
151
  'tools/list': { ttlMs: 3_600_000, cacheScope: 'public' },
151
152
  'resources/list': { ttlMs: 3_600_000, cacheScope: 'public' },
@@ -162,6 +163,23 @@ await createApp({
162
163
 
163
164
  `package.json` is the canonical description source; do not duplicate it into `createApp()`.
164
165
 
166
+ ### Session posture and shutdown
167
+
168
+ `sessionMode` declares the HTTP session posture in `src/` instead of leaving it to a
169
+ deployment's `MCP_SESSION_MODE`, which still wins whenever it carries a meaningful value (an
170
+ empty string and an unsubstituted `${…}` placeholder read as unset and fall through to the
171
+ option). Every RIS tool answers from the request it was given, so `stateless` is the honest
172
+ declaration here. Add `require: 'stateful'` only if a tool ever asks the caller for input
173
+ mid-handler via `ctx.requestInput`: startup then fails with a `ConfigurationError` rather than
174
+ serving a mode in which a 2025-era client can never answer the prompt. Stdio is never refused.
175
+
176
+ `teardown(core)` is the `setup()` counterpart — release a watcher, socket, or non-`unref()`'d
177
+ timer there. It runs after the transport stops and before the logger closes, on every shutdown
178
+ path, and a signal-triggered shutdown then exits the process explicitly (0, or 1 if a step
179
+ never settles within the framework's 10 s ceiling). `RisService` holds nothing across requests
180
+ — every fetch is bounded by the caller's signal and the retry deadline — so this server
181
+ declares no `teardown`.
182
+
165
183
  ---
166
184
 
167
185
  ## Context
@@ -279,9 +297,9 @@ Available skills:
279
297
  | `security-pass` | Audit server for MCP-flavored security gaps: output injection, scope blast radius, input sinks, tenant isolation |
280
298
  | `code-simplifier` | Post-session cleanup against `git diff` — modernize syntax, consolidate duplication, align with the codebase |
281
299
  | `polish-docs-meta` | Finalize docs, README, metadata, and agent protocol for shipping |
282
- | `git-wrapup` | Version bump, changelog, verification, and commit stack; leaves tagging to release-and-publish |
283
- | `release-and-publish` | Tag, push, npm, MCP Registry, GitHub Release, and Docker publication after git-wrapup |
284
- | `release-pr-review` | Review an opt-in gated release PR before publishing |
300
+ | `git-wrapup` | Land working-tree changes as a commit stack — version bump, changelog, verify, commit by concern, release commit on top. No tag, no push to main; opens the release PR when the project declares release PR mode |
301
+ | `release-pr-review` | Review pass on an open release PR — simplifier + correctness review, fixes as ordinary commits on top of the stack, PR body kept in sync. Release PR mode only |
302
+ | `release-and-publish` | Fast-forward merge (release PR mode) + tag + push + npm + MCP Registry + GH Release + Docker. Picks up from `git-wrapup` |
285
303
  | `maintenance` | Investigate changelogs, adopt upstream changes, sync skills to agent dirs |
286
304
  | `orchestrations` | Chain task skills into a gated multi-phase pipeline — build-out, QA-fix, update-ship — when you can spawn sub-agents |
287
305
  | `report-issue-framework` | File a bug or feature request against `@cyanheads/mcp-ts-core` via `gh` CLI |
@@ -316,8 +334,8 @@ When you complete a skill's checklist, check the boxes and add a completion time
316
334
  | `bun run rebuild` | Clean + build |
317
335
  | `bun run clean` | Remove build artifacts |
318
336
  | `bun run devcheck` | Lint + format + typecheck + security + changelog sync |
319
- | `bun run audit:fix` | Run `bun audit fix` to upgrade vulnerable packages within existing ranges. First response to a transitive advisory; then `bun update <name>`, then `bun dedupe`. |
320
- | `bun run audit:refresh` | Delete `bun.lock` and reinstall. Last resort after targeted fixes; every ranged dependency re-resolves. |
337
+ | `bun run audit:fix` | `bun audit fix` — upgrade vulnerable packages to the lowest safe version within existing ranges (`--dry-run` previews, `--latest` rewrites ranges). First response when `devcheck` flags a transitive advisory; then `bun update <name>`, then `bun dedupe` |
338
+ | `bun run audit:refresh` | Delete `bun.lock` and reinstall. Last resort after `audit:fix`, `bun update <name>`, and `bun dedupe` — re-resolves every ranged dep (the framework pin included) and rewrites the lockfile as `lockfileVersion: 2` |
321
339
  | `bun run lint:mcp` | Run the MCP definition linter standalone (rule catalog: `api-linter` skill) |
322
340
  | `bun run lint:packaging` | Packaging surface checks — `server.json`/`manifest.json` env-var parity (run by devcheck) |
323
341
  | `bun run list-skills` | Print the skill registry |
@@ -370,6 +388,12 @@ security: false # optional — true ONLY for a source
370
388
 
371
389
  ---
372
390
 
391
+ ## Publishing
392
+
393
+ **Every release goes through a release PR, straight-through** — `git-wrapup`'s "Release PR mode", mode `straight-through`. One run: `git-wrapup` lands the commit stack on `release/<version>`, pushes it, and opens the PR (title = the release commit subject, body = the changelog entry plus a gates section); `release-and-publish` then fast-forwards `main` locally with `git merge --ff-only`, creates the tag on `main`'s tip, pushes `main` and the tag, deletes the branch, and publishes. A caller's brief may run a given release as `gated` instead — a `release-pr-review` pass on the open PR before `release-and-publish`. **Never merge through the GitHub UI or `gh pr merge`**: squash and rebase-merge are disabled in the repo settings because both rewrite the stack (rebase-merge also strips the SSH signatures), and a merge commit breaks the linear history.
394
+
395
+ ---
396
+
373
397
  ## Imports
374
398
 
375
399
  ```ts
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.4.3-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-^2.0.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.4.0-blueviolet.svg?style=flat-square)](https://bun.sh/)
10
+ [![Version](https://img.shields.io/badge/Version-0.4.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-^2.0.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.4.0-blueviolet.svg?style=flat-square)](https://bun.sh/)
11
11
 
12
12
  </div>
13
13
 
@@ -27,13 +27,11 @@
27
27
 
28
28
  ---
29
29
 
30
- [RIS](https://www.ris.bka.gv.at/) (Rechtsinformationssystem des Bundes) is the Austrian government's official legal database: consolidated federal, state, and municipal law, case law from every Austrian court and tribunal, the authentic gazettes whose promulgated text is binding under Austrian law, the pre-parliamentary lawmaking pipeline, and ministerial decrees.
30
+ ## Overview
31
31
 
32
- This server wraps the keyless RIS OGD REST API (v2.6, CC BY 4.0) for MCP agents, covering all 39 OGD applications and reaching back to the Reichsgesetzblatt of 1848. Every response labels the document's binding status, since only the amtssignierte gazette wording is legally binding.
32
+ [RIS](https://www.ris.bka.gv.at/) is the Austrian government's official legal database: consolidated federal, state, and municipal law, case law from every Austrian court and tribunal, the authentic gazettes whose promulgated text is binding under Austrian law, the pre-parliamentary lawmaking pipeline, and ministerial decrees. This server wraps the keyless RIS OGD REST API (v2.6, CC BY 4.0), covering all 39 OGD applications and reaching back to the Reichsgesetzblatt of 1848; every response labels the document's binding status, since only the amtssignierte gazette wording is legally binding. Runs as a stdio process, a local Streamable HTTP server, or the public hosted endpoint above.
33
33
 
34
- ## Tools
35
-
36
- Five search tools split by document class, plus a citation resolver, document retrieval, a change feed, and an offline vocabulary reference:
34
+ ### Tools
37
35
 
38
36
  | Tool | Description |
39
37
  |:---|:---|
@@ -47,13 +45,21 @@ Five search tools split by document class, plus a citation resolver, document re
47
45
  | `ris_track_changes` | Per-application change feed: every document added or changed in a date window, deletions included. |
48
46
  | `ris_list_reference` | Ground the domain vocabulary offline: applications and coverage windows, court codes, Bundesländer, decision kinds, ministries, district authorities, gazette eras and parts, citation formats, search syntax. |
49
47
 
50
- ### `ris_search_legislation`
48
+ ### Resources
49
+
50
+ | Resource | Description |
51
+ |:---|:---|
52
+ | `ris://document/{application}/{documentNumber}` | Markdown text of one RIS document — injectable twin of `ris_get_document` |
51
53
 
52
- Search consolidated law: BrKons (federal), LrKons (state), Gr (municipal).
54
+ All resource data is also reachable via tools — clients without resource support use `ris_get_document`.
55
+
56
+ ## Capability reference
57
+
58
+ ### `ris_search_legislation` <sub>tool</sub>
53
59
 
54
60
  - Full-text `query` using RIS boolean grammar: `UND`/`ODER`/`NICHT` or `AND`/`OR`/`NOT`, parentheses, quoted phrases
55
61
  - `title` matches the title, short title, or abbreviation ("DSG", "ABGB")
56
- - `scope` routes to federal law or one of the nine Bundesländer; `municipality` narrows a state scope to municipal law (selected norms, six Bundesländer)
62
+ - `scope` routes to one of three applications — BrKons (federal), LrKons (state), Gr (municipal); `municipality` narrows a state scope to municipal law (selected norms, six Bundesländer)
57
63
  - `language: english` serves the Erv collection of selected English translations
58
64
  - `in_force_as_of` defaults to today. Omitting the date upstream silently searches all historical versions, so `include_all_versions` is the explicit opt-in and the applied date is echoed in every response
59
65
  - Force-window filters (`entered_force_from/to`, `left_force_from/to`) track provisions entering or leaving force in a date range
@@ -63,9 +69,7 @@ Search consolidated law: BrKons (federal), LrKons (state), Gr (municipal).
63
69
 
64
70
  ---
65
71
 
66
- ### `ris_search_case_law`
67
-
68
- Search decisions and headnotes across 17 court and tribunal applications.
72
+ ### `ris_search_case_law` <sub>tool</sub>
69
73
 
70
74
  - `court` is required and takes one application per call: `vfgh`, `vwgh`, `justiz`, `bvwg`, `lvwg`, `dsk`, `upts` (party-transparency senate), plus ten historical and specialized tribunals. Cross-court research fans out one call per court
71
75
  - Filter by cited provision (`norm`, e.g. "DSG §1", "DSGVO Art32"), exact case number (`case_number`, Geschäftszahl), decision date range, decision kind (Erkenntnis/Beschluss/…), and full-text query
@@ -75,9 +79,7 @@ Search decisions and headnotes across 17 court and tribunal applications.
75
79
 
76
80
  ---
77
81
 
78
- ### `ris_search_gazette`
79
-
80
- Browse the promulgation record at every level of government. For a single known gazette number, `ris_lookup_citation` is the direct route.
82
+ ### `ris_search_gazette` <sub>tool</sub>
81
83
 
82
84
  - `scope`: federal, one of the nine Bundesländer, `district` (Bezirksverwaltungsbehörden), or `municipal` (authentic municipal promulgations)
83
85
  - Federal history is one logical series auto-routed across three era tiers: BgblAuth (2004+, authentic), BgblPdf (Staats- und Bundesgesetzblatt 1945–2003), and BgblAlt (Reichs-, Staats- und Bundesgesetzblatt 1848–1940, metadata plus ÖNB-hosted scans). Each response names the tier that served it
@@ -86,12 +88,11 @@ Browse the promulgation record at every level of government. For a single known
86
88
  - State scopes serve the authentic Landesgesetzblätter by default. `series: ordinance_gazette` switches to the Verordnungsblätter; `state_era: legacy` selects the state's earlier non-authentic series (Niederösterreich's systematic LgblNO, or the historical Lgbl elsewhere)
87
89
  - Point lookup by gazette number ("BGBl. II Nr. 171/2026" or "171/2026")
88
90
  - Every record carries a binding label (`authentic`, `historical_record`, or `consolidated_informational`) and the amtssigniert PDF URL when present. The metadata-only 1848–1940 gazettes link to their ÖNB ALEX scan
91
+ - For a single known gazette number, `ris_lookup_citation` is the more direct route
89
92
 
90
93
  ---
91
94
 
92
- ### `ris_search_drafts`
93
-
94
- Search federal law before it is enacted.
95
+ ### `ris_search_drafts` <sub>tool</sub>
95
96
 
96
97
  - `stage: review_drafts` covers ministerial drafts in public review (Begutachtungsentwürfe). `in_review_on` answers what is in review on a given date
97
98
  - `stage: government_bills` covers bills adopted by the council of ministers (Regierungsvorlagen, 2004+), filtered by adoption date
@@ -101,20 +102,16 @@ Search federal law before it is enacted.
101
102
 
102
103
  ---
103
104
 
104
- ### `ris_search_announcements`
105
-
106
- Sectoral official gazettes and executive documents: seven collections, five of them legally binding authentic publications.
105
+ ### `ris_search_announcements` <sub>tool</sub>
107
106
 
108
- - `collection`: `social_insurance` (Avsv), `veterinary` (Avn), `court_rules` (KmGer), `trade_exam_rules` (PruefGewO), `health_structure_plans` (Spg, ÖSG/RSG), `ministerial_decrees` (Erlässe), `council_minutes` (Ministerratsprotokolle)
107
+ - `collection`: `social_insurance` (Avsv), `veterinary` (Avn), `court_rules` (KmGer), `trade_exam_rules` (PruefGewO), `health_structure_plans` (Spg, ÖSG/RSG), `ministerial_decrees` (Erlässe), `council_minutes` (Ministerratsprotokolle) — five of the seven are authentic publications
109
108
  - Collection-aware filters: issue numbers, issuers (insurance carriers, ministries), cited norm ("decrees citing the DSG"), in-force date for the consolidated collections, plan type and state for health plans, session number and legislature for council minutes
110
109
  - Binding labels per collection: `authentic`, `administrative_directive` (decrees bind the administration, not citizens), or `preparatory` (council minutes)
111
110
  - Every record carries the RIS web view — the only browsable surface for the PDF-only council minutes and for ministerial decrees
112
111
 
113
112
  ---
114
113
 
115
- ### `ris_lookup_citation`
116
-
117
- Resolve a citation to its canonical document.
114
+ ### `ris_lookup_citation` <sub>tool</sub>
118
115
 
119
116
  - 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")
120
117
  - Routes to deterministic upstream filters (section plus title, per-era number params, Geschäftszahl, Sammlungsnummer) rather than keyword search
@@ -124,9 +121,7 @@ Resolve a citation to its canonical document.
124
121
 
125
122
  ---
126
123
 
127
- ### `ris_get_document`
128
-
129
- Read and export a single document.
124
+ ### `ris_get_document` <sub>tool</sub>
130
125
 
131
126
  - Addresses documents by `document_number` plus `application` (from any search or lookup result), or by a passed-through `ris.bka.gv.at` document URL (host and path allowlisted) — including a draft's companion documents from a `ris_search_drafts` record's `materials[].url`, which nothing else can reach. `format` selects the rendition for a companion exactly as for a main document
132
127
  - `format`: `markdown` (default, boilerplate stripped), raw `html`, RIS `xml`, or `urls_only`
@@ -138,46 +133,47 @@ Read and export a single document.
138
133
 
139
134
  ---
140
135
 
141
- ### `ris_track_changes`
142
-
143
- Exact-dated per-application change feed.
136
+ ### `ris_track_changes` <sub>tool</sub>
144
137
 
145
138
  - `application` plus `changed_from`/`changed_to` returns every document added or changed in the window. A typical two-week federal-law window carries 1,400+ changes
146
139
  - `include_deleted` surfaces removals, which no other RIS surface exposes
147
140
  - The search tools' `changed_since` interval filters are the coarser alternative
148
141
 
149
- ## Resource
142
+ ---
150
143
 
151
- | Type | Name | Description |
152
- |:---|:---|:---|
153
- | Resource | `ris://document/{application}/{documentNumber}` | Markdown text of one RIS document — injectable twin of `ris_get_document` |
144
+ ### `ris_list_reference` <sub>tool</sub>
154
145
 
155
- All resource data is also reachable via tools — clients without resource support use `ris_get_document`.
146
+ - Returns one static RIS vocabulary table per call — no upstream request, no network dependency
147
+ - `topic` selects the table: applications, courts, states, decision types/kinds, issuing bodies, ministries, collections, stages, changed-since intervals, section types, gazette parts, law types, district authorities, justiz subject areas, search syntax, or citation formats
148
+ - The other `ris_*` tools' recovery hints and zero-hit notices route callers back here by topic
156
149
 
157
- ## Features
150
+ ---
151
+
152
+ ### `ris://document/{application}/{documentNumber}` <sub>resource</sub>
158
153
 
159
- Built on [`@cyanheads/mcp-ts-core`](https://www.npmjs.com/package/@cyanheads/mcp-ts-core):
154
+ - Markdown only (`text/markdown`) — the injectable twin of `ris_get_document` with `format: markdown`
155
+ - Addressed by `application` + `documentNumber`, copied verbatim from a search or `ris_lookup_citation` result
156
+ - Applications with no text rendition (district/municipal promulgations, court rules, party-transparency decisions, council minutes, the 1848–1940 imperial gazettes) return a short note pointing at the authentic PDF or scan instead
157
+ - Oversized text degrades to the same section/window outline as `ris_get_document`, but carries no `sections` selector — re-fetch via the tool to pull a specific one
160
158
 
161
- - Declarative tool and resource definitions — single file per primitive, framework handles registration and validation
162
- - Unified error handling — handlers throw, framework catches, classifies, and formats
163
- - Pluggable auth (`none`, `jwt`, `oauth`)
164
- - Structured logging with optional OpenTelemetry tracing
165
- - STDIO and Streamable HTTP transports
159
+ ## Features
160
+
161
+ Built on [`@cyanheads/mcp-ts-core`](https://github.com/cyanheads/mcp-ts-core): stdio and Streamable HTTP transports, pluggable auth (`none` / `jwt` / `oauth`), swappable storage (`in-memory`, `filesystem`, `Supabase`, `Cloudflare KV/R2/D1`), structured logging with optional OpenTelemetry tracing.
166
162
 
167
163
  RIS-specific:
168
164
 
169
165
  - All 39 OGD applications across every controller, from consolidated law and the four levels of authentic gazette to the 17 court and tribunal collections
170
- - Strict parameter allowlist. RIS silently ignores unknown query params, so a typo returns plausible but unfiltered results; only live-confirmed spellings are sent upstream
171
- - Normalizer for RIS's JSON-serialized-XML envelope: object-or-array coercion, in-band error detection, six per-controller metadata classes, `<br/>` cleanup, CELEX reference parsing, ministry-abbreviation expansion
172
- - English tool surface over RIS's German API. Austrian legal terms (Geschäftszahl, Rechtssatz, Bundesgesetzblatt) stay as domain vocabulary and are glossed in the descriptions
166
+ - Citation engine parses and routes four Austrian citation kinds (norm, gazette number, case number, collection number) to deterministic upstream filters rather than keyword search
167
+ - Strict parameter allowlist and JSON-serialized-XML normalizer — RIS silently ignores unknown params, so only live-confirmed spellings are sent upstream; the normalizer handles object-or-array coercion, in-band error detection, six per-controller metadata classes, CELEX reference parsing, and ministry-abbreviation expansion
168
+ - Retries with a 1.5s base delay calibrated for RIS's rate-limited API; an HTML response in place of JSON is treated as a throttle/degradation signal
169
+ - English tool surface over RIS's German API — Austrian legal terms (Geschäftszahl, Rechtssatz, Bundesgesetzblatt) stay as domain vocabulary and are glossed in the descriptions
173
170
 
174
171
  Agent-friendly output:
175
172
 
176
- - Error hints, zero-hit notices, format-unavailable notices, and `found: false` guidance each name the concrete next call: a `ris_list_reference` topic, the right search tool, or `ris_lookup_citation`
177
- - Conditional-parameter misuse is caught locally before any upstream call: a court-specific filter with the wrong court, `part` outside federal scope, a collection filter on the wrong collection, bad addressing
178
- - Zero hits return success plus a composed notice rather than an error
179
- - Applied filters are echoed back, so the `in_force_as_of` default stays visible to the calling agent
180
- - Upstream schema-validation messages pass through. RIS enumerates valid values, which lets agents self-correct
173
+ - Discriminated output contracts — every document carries a typed binding status (`authentic`, `historical_record`, `consolidated_informational`, `decision`, `preparatory`, `administrative_directive`, `translation`) so callers branch on data, not string parsing
174
+ - Provenance — responses echo applied filters (e.g. the resolved `in_force_as_of` date) and, for gazettes, which era tier served the result
175
+ - Actionable recovery — typed error reasons (`court_filter_mismatch`, `invalid_query`, `document_not_found`, …) and zero-hit notices each name the concrete next call: a `ris_list_reference` topic, the right search tool, or `ris_lookup_citation`
176
+ - Response shaping — court- and collection-conditional filter misuse is rejected locally before any upstream call, since RIS silently ignores unknown parameters rather than erroring
181
177
 
182
178
  ## Localization
183
179
 
@@ -185,8 +181,6 @@ Tool and parameter descriptions are English-only today. German (`de-AT`) descrip
185
181
 
186
182
  ## Getting started
187
183
 
188
- The one-click badges above (Claude Desktop, Cursor, VS Code) are the fastest path. To configure a client manually, the server runs straight from npm — no clone or build required.
189
-
190
184
  ### Public Hosted Instance
191
185
 
192
186
  A public instance is available at `https://ris-austria.caseyjhand.com/mcp` — no installation required. Point any MCP client at it via Streamable HTTP:
@@ -202,12 +196,7 @@ A public instance is available at `https://ris-austria.caseyjhand.com/mcp` — n
202
196
  }
203
197
  ```
204
198
 
205
- ### Prerequisites
206
-
207
- - [Bun v1.3](https://bun.sh/) or higher, or Node.js v24+ (needed for `npx`/`bunx`)
208
- - No API key — the RIS OGD API is keyless
209
-
210
- ### Self-hosted / local
199
+ ### Self-Hosted / Local
211
200
 
212
201
  Add the server to your MCP client configuration with Bun:
213
202
 
@@ -258,7 +247,19 @@ Or with Docker:
258
247
  Add any [configuration](#configuration) variables under an `"env"` key for bunx/npx, or as
259
248
  additional `-e NAME=value` arguments for Docker.
260
249
 
261
- ### Install from source
250
+ For Streamable HTTP, set the transport and start the server:
251
+
252
+ ```sh
253
+ MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
254
+ # Server listens at http://localhost:3010/mcp
255
+ ```
256
+
257
+ ### Prerequisites
258
+
259
+ - [Bun v1.3](https://bun.sh/) or higher, or Node.js v24+ (needed for `npx`/`bunx`)
260
+ - No API key — the RIS OGD API is keyless
261
+
262
+ ### Installation
262
263
 
263
264
  For local development or to run a pinned build:
264
265
 
@@ -299,13 +300,6 @@ bun run rebuild
299
300
  }
300
301
  ```
301
302
 
302
- For Streamable HTTP, set the transport and start the server:
303
-
304
- ```sh
305
- MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
306
- # Server listens at http://localhost:3010/mcp
307
- ```
308
-
309
303
  ## Configuration
310
304
 
311
305
  | Variable | Description | Default |
@@ -380,6 +374,15 @@ See [`CLAUDE.md`](./CLAUDE.md) / [`AGENTS.md`](./AGENTS.md) for development guid
380
374
  - Register new tools and resources via `createApp()` in `src/index.ts`
381
375
  - Wrap the RIS API: validate raw → normalize to domain type → return output schema; never fabricate missing fields
382
376
 
377
+ ## Contributing
378
+
379
+ Issues are welcome. Run checks and tests before submitting:
380
+
381
+ ```sh
382
+ bun run devcheck
383
+ bun run test
384
+ ```
385
+
383
386
  ## License
384
387
 
385
388
  Apache-2.0 — see [LICENSE](./LICENSE) for details.
@@ -0,0 +1,30 @@
1
+ ---
2
+ summary: "ris_list_reference escapes backslashes before table pipes, a CodeQL workflow runs on every push and PR, and the server adopts mcp-ts-core 0.13.6's session-mode and retry-budget APIs."
3
+ breaking: false
4
+ security: false
5
+ ---
6
+
7
+ # 0.4.4 — 2026-09-19
8
+
9
+ ## Added
10
+
11
+ - **CodeQL static analysis workflow** (`.github/workflows/codeql.yml`) runs on push/PR to `main` and weekly, analyzing JavaScript/TypeScript and Actions.
12
+
13
+ ## Changed
14
+
15
+ - **`sessionMode: 'stateless'` is now declared in `src/index.ts`** instead of left to the deployment's `MCP_SESSION_MODE` default — every RIS tool answers from the request it's given, so no handler needs a stateful session.
16
+ - **The search retry budget is `withRetry`'s `deadlineMs`** (mcp-ts-core 0.13.x) — each attempt bounds its own fetch at whatever remains of the 48s budget, and an expiry aborts the in-flight request rather than sleeping past it; a budget-exhausted call now reports `data.reason: 'retry_deadline_exceeded'`.
17
+ - **`lint:packaging` now checks the README `Version-` badge against `package.json`** (mcp-ts-core 0.13.x) — a stale badge fails `devcheck`.
18
+
19
+ ## Fixed
20
+
21
+ - **`ris_list_reference`'s `cell()` escapes backslashes before pipes** — an unescaped backslash preceding table punctuation was silently dropped by markdown rendering, corrupting cell values containing `\|`, `\*`, or a Windows path ([#41](https://github.com/cyanheads/ris-austria-mcp-server/issues/41)).
22
+
23
+ ## Dependencies
24
+
25
+ - `@cyanheads/mcp-ts-core` ^0.13.0 → ^0.13.6
26
+ - `zod` ^4.6.1 → ^4.6.5
27
+ - `@biomejs/biome` 2.5.13 → 2.5.14
28
+ - `@types/node` 26.5.1 → 26.6.1
29
+ - `tsc-alias` ^1.9.4 → ^1.9.5
30
+ - `vitest` ^5.0.0 → ^5.0.1
@@ -6,8 +6,8 @@
6
6
 
7
7
  # Required. One-line GitHub Release-style headline. 350 character cap — a
8
8
  # ceiling, not a target. Default short and scannable. Don't pad, don't stitch
9
- # unrelated changes with commas/semicolons into an inventory — pick the
10
- # headline, like a tag's theme line. Quotes required: unquoted YAML treats
9
+ # unrelated changes with commas/semicolons into an inventory — pick the one
10
+ # headline the release is about. Quotes required: unquoted YAML treats
11
11
  # `: ` inside the value as a key separator and fails GitHub's strict parser.
12
12
  summary: ""
13
13
 
@@ -119,11 +119,11 @@ security: false
119
119
  TAG ANNOTATIONS — the annotated tag body renders as the GitHub Release body
120
120
  via `gh release create --notes-from-tag`. It is a condensed digest of this
121
121
  entry, never a copy, and its format is owned by the `release-and-publish`
122
- skill (step 4, "Create the annotated tag"): the entry's `summary:` as the
123
- theme line without the version, flat headline bullets — no Keep-a-Changelog
124
- section headers, no gates line — at most one deps line, issue backlinks,
125
- and the changelog link last. In release-PR mode the `git-wrapup` skill
126
- authors that digest as the PR body's `## Changes` and the tag copies it.
122
+ skill (step 4, "Create the annotated tag"): a short subject line without the
123
+ version, flat headline bullets — no Keep-a-Changelog section headers, no
124
+ gates line — at most one deps line, issue backlinks, and the changelog link
125
+ last. In release-PR mode the `git-wrapup` skill authors those bullets as the
126
+ PR body's `## Changes` and the tag copies them.
127
127
  -->
128
128
 
129
129
  ## Added
package/dist/index.js CHANGED
@@ -18,6 +18,9 @@ import { initRisService } from './services/ris/ris-service.js';
18
18
  await createApp({
19
19
  name: 'ris-austria-mcp-server',
20
20
  title: 'ris-austria-mcp-server',
21
+ // Every tool answers from the request it was given — no handler gates on ctx.requestInput —
22
+ // so HTTP sessions buy nothing here. MCP_SESSION_MODE still overrides when set.
23
+ sessionMode: 'stateless',
21
24
  cacheHints: {
22
25
  'tools/list': { ttlMs: 3_600_000, cacheScope: 'public' },
23
26
  'resources/list': { ttlMs: 3_600_000, cacheScope: 'public' },
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6DAA6D,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,yDAAyD,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,4DAA4D,CAAC;AAC/F,OAAO,EAAE,sBAAsB,EAAE,MAAM,iEAAiE,CAAC;AACzG,OAAO,EAAE,gBAAgB,EAAE,MAAM,4DAA4D,CAAC;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,0DAA0D,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAC7F,OAAO,EAAE,oBAAoB,EAAE,MAAM,+DAA+D,CAAC;AACrG,OAAO,EAAE,eAAe,EAAE,MAAM,0DAA0D,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,MAAM,SAAS,CAAC;IACd,IAAI,EAAE,wBAAwB;IAC9B,KAAK,EAAE,wBAAwB;IAC/B,UAAU,EAAE;QACV,YAAY,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE;QACxD,gBAAgB,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE;QAC5D,0BAA0B,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE;QACtE,iBAAiB,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE;KAC9D;IACD,KAAK,EAAE;QACL,oBAAoB;QACpB,gBAAgB;QAChB,gBAAgB;QAChB,eAAe;QACf,sBAAsB;QACtB,iBAAiB;QACjB,cAAc;QACd,eAAe;QACf,gBAAgB;KACjB;IACD,SAAS,EAAE,CAAC,mBAAmB,CAAC;IAChC,KAAK,CAAC,IAAI;QACR,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6DAA6D,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,yDAAyD,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,4DAA4D,CAAC;AAC/F,OAAO,EAAE,sBAAsB,EAAE,MAAM,iEAAiE,CAAC;AACzG,OAAO,EAAE,gBAAgB,EAAE,MAAM,4DAA4D,CAAC;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,0DAA0D,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAC7F,OAAO,EAAE,oBAAoB,EAAE,MAAM,+DAA+D,CAAC;AACrG,OAAO,EAAE,eAAe,EAAE,MAAM,0DAA0D,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,MAAM,SAAS,CAAC;IACd,IAAI,EAAE,wBAAwB;IAC9B,KAAK,EAAE,wBAAwB;IAC/B,4FAA4F;IAC5F,gFAAgF;IAChF,WAAW,EAAE,WAAW;IACxB,UAAU,EAAE;QACV,YAAY,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE;QACxD,gBAAgB,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE;QAC5D,0BAA0B,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE;QACtE,iBAAiB,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE;KAC9D;IACD,KAAK,EAAE;QACL,oBAAoB;QACpB,gBAAgB;QAChB,gBAAgB;QAChB,eAAe;QACf,sBAAsB;QACtB,iBAAiB;QACjB,cAAc;QACd,eAAe;QACf,gBAAgB;KACjB;IACD,SAAS,EAAE,CAAC,mBAAmB,CAAC;IAChC,KAAK,CAAC,IAAI;QACR,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;CACF,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ris-list-reference.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/ris-list-reference.tool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAgVjD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCA8E3B,CAAC"}
1
+ {"version":3,"file":"ris-list-reference.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/ris-list-reference.tool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAuVjD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCA8E3B,CAAC"}
@@ -243,9 +243,16 @@ const TOPIC_BUILDERS = {
243
243
  ],
244
244
  }),
245
245
  };
246
- /** Escape a string for use inside a markdown table cell. */
246
+ /**
247
+ * Escape a string for use inside a markdown table cell.
248
+ *
249
+ * Backslashes are doubled before pipes are escaped, so a backslash already in the value
250
+ * survives rendering instead of being consumed as an escape of whatever punctuation follows
251
+ * it. The order is load-bearing: escaping pipes first would re-escape the backslash that
252
+ * escape had just introduced, emitting a literal `\|` where the cell delimiter was meant.
253
+ */
247
254
  function cell(text) {
248
- return text.replace(/\|/g, '\\|').replace(/\r?\n/g, ' ');
255
+ return text.replace(/\\/g, '\\\\').replace(/\|/g, '\\|').replace(/\r?\n/g, ' ');
249
256
  }
250
257
  export const risListReference = tool('ris_list_reference', {
251
258
  title: 'RIS Reference Lists',
@@ -1 +1 @@
1
- {"version":3,"file":"ris-list-reference.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/ris-list-reference.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ris-list-reference.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/ris-list-reference.tool.ts"],"names":[],"mappings":"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"}