@cyanheads/ris-austria-mcp-server 0.1.7 → 0.2.1
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.
- package/AGENTS.md +3 -3
- package/CLAUDE.md +3 -3
- package/Dockerfile +1 -1
- package/README.md +2 -2
- package/changelog/0.2.x/0.2.0.md +17 -0
- package/changelog/0.2.x/0.2.1.md +25 -0
- package/dist/mcp-server/resources/definitions/ris-document.resource.d.ts +6 -0
- package/dist/mcp-server/resources/definitions/ris-document.resource.d.ts.map +1 -1
- package/dist/mcp-server/resources/definitions/ris-document.resource.js +15 -0
- package/dist/mcp-server/resources/definitions/ris-document.resource.js.map +1 -1
- package/dist/mcp-server/tools/definitions/_shared.d.ts +25 -1
- package/dist/mcp-server/tools/definitions/_shared.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/_shared.js +36 -1
- package/dist/mcp-server/tools/definitions/_shared.js.map +1 -1
- package/dist/mcp-server/tools/definitions/ris-get-document.tool.d.ts +11 -5
- package/dist/mcp-server/tools/definitions/ris-get-document.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/ris-get-document.tool.js +15 -0
- package/dist/mcp-server/tools/definitions/ris-get-document.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/ris-list-reference.tool.d.ts +11 -11
- package/dist/mcp-server/tools/definitions/ris-lookup-citation.tool.d.ts +26 -19
- package/dist/mcp-server/tools/definitions/ris-lookup-citation.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/ris-lookup-citation.tool.js +25 -9
- package/dist/mcp-server/tools/definitions/ris-lookup-citation.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/ris-search-announcements.tool.d.ts +17 -11
- package/dist/mcp-server/tools/definitions/ris-search-announcements.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/ris-search-announcements.tool.js +14 -13
- package/dist/mcp-server/tools/definitions/ris-search-announcements.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/ris-search-case-law.tool.d.ts +24 -18
- package/dist/mcp-server/tools/definitions/ris-search-case-law.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/ris-search-case-law.tool.js +14 -13
- package/dist/mcp-server/tools/definitions/ris-search-case-law.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/ris-search-drafts.tool.d.ts +14 -8
- package/dist/mcp-server/tools/definitions/ris-search-drafts.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/ris-search-drafts.tool.js +14 -13
- package/dist/mcp-server/tools/definitions/ris-search-drafts.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/ris-search-gazette.tool.d.ts +23 -12
- package/dist/mcp-server/tools/definitions/ris-search-gazette.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/ris-search-gazette.tool.js +32 -26
- package/dist/mcp-server/tools/definitions/ris-search-gazette.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/ris-search-legislation.tool.d.ts +15 -9
- package/dist/mcp-server/tools/definitions/ris-search-legislation.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/ris-search-legislation.tool.js +14 -13
- package/dist/mcp-server/tools/definitions/ris-search-legislation.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/ris-track-changes.tool.d.ts +11 -5
- package/dist/mcp-server/tools/definitions/ris-track-changes.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/ris-track-changes.tool.js +14 -13
- package/dist/mcp-server/tools/definitions/ris-track-changes.tool.js.map +1 -1
- package/dist/services/ris/reference/applications.d.ts +407 -407
- package/dist/services/ris/reference/applications.d.ts.map +1 -1
- package/dist/services/ris/reference/changed-since-intervals.d.ts +18 -18
- package/dist/services/ris/reference/changed-since-intervals.d.ts.map +1 -1
- package/dist/services/ris/reference/citation-formats.d.ts +12 -12
- package/dist/services/ris/reference/citation-formats.d.ts.map +1 -1
- package/dist/services/ris/reference/collections.d.ts +32 -32
- package/dist/services/ris/reference/collections.d.ts.map +1 -1
- package/dist/services/ris/reference/courts.d.ts +135 -135
- package/dist/services/ris/reference/courts.d.ts.map +1 -1
- package/dist/services/ris/reference/decision-kinds.d.ts +26 -26
- package/dist/services/ris/reference/decision-kinds.d.ts.map +1 -1
- package/dist/services/ris/reference/decision-types.d.ts +12 -12
- package/dist/services/ris/reference/decision-types.d.ts.map +1 -1
- package/dist/services/ris/reference/district-authorities.d.ts +222 -222
- package/dist/services/ris/reference/district-authorities.d.ts.map +1 -1
- package/dist/services/ris/reference/gazette-parts.d.ts +28 -28
- package/dist/services/ris/reference/gazette-parts.d.ts.map +1 -1
- package/dist/services/ris/reference/issuing-bodies.d.ts +380 -380
- package/dist/services/ris/reference/issuing-bodies.d.ts.map +1 -1
- package/dist/services/ris/reference/justiz-subject-areas.d.ts +78 -78
- package/dist/services/ris/reference/justiz-subject-areas.d.ts.map +1 -1
- package/dist/services/ris/reference/law-types.d.ts +16 -16
- package/dist/services/ris/reference/law-types.d.ts.map +1 -1
- package/dist/services/ris/reference/ministries.d.ts +151 -151
- package/dist/services/ris/reference/ministries.d.ts.map +1 -1
- package/dist/services/ris/reference/search-syntax.d.ts +36 -36
- package/dist/services/ris/reference/search-syntax.d.ts.map +1 -1
- package/dist/services/ris/reference/section-types.d.ts +10 -10
- package/dist/services/ris/reference/section-types.d.ts.map +1 -1
- package/dist/services/ris/reference/stages.d.ts +12 -12
- package/dist/services/ris/reference/stages.d.ts.map +1 -1
- package/dist/services/ris/reference/states.d.ts +45 -45
- package/dist/services/ris/reference/states.d.ts.map +1 -1
- package/dist/services/ris/ris-service.d.ts +5 -2
- package/dist/services/ris/ris-service.d.ts.map +1 -1
- package/dist/services/ris/ris-service.js +56 -7
- package/dist/services/ris/ris-service.js.map +1 -1
- package/package.json +6 -6
- package/server.json +3 -3
|
@@ -14,20 +14,20 @@ export interface SectionType {
|
|
|
14
14
|
}
|
|
15
15
|
/** All four section types. */
|
|
16
16
|
export declare const RIS_SECTION_TYPES: readonly [{
|
|
17
|
-
readonly value:
|
|
18
|
-
readonly english:
|
|
17
|
+
readonly value: 'Alle';
|
|
18
|
+
readonly english: 'All section kinds';
|
|
19
19
|
readonly note: null;
|
|
20
20
|
}, {
|
|
21
|
-
readonly value:
|
|
22
|
-
readonly english:
|
|
23
|
-
readonly note:
|
|
21
|
+
readonly value: 'Artikel';
|
|
22
|
+
readonly english: 'Article (Artikel)';
|
|
23
|
+
readonly note: 'Used by constitutional laws and treaties (e.g. "Art 10 B-VG").';
|
|
24
24
|
}, {
|
|
25
|
-
readonly value:
|
|
26
|
-
readonly english:
|
|
27
|
-
readonly note:
|
|
25
|
+
readonly value: 'Paragraph';
|
|
26
|
+
readonly english: 'Paragraph (§)';
|
|
27
|
+
readonly note: 'The default when a section range is given without a type — most laws are §-numbered.';
|
|
28
28
|
}, {
|
|
29
|
-
readonly value:
|
|
30
|
-
readonly english:
|
|
29
|
+
readonly value: 'Anlage';
|
|
30
|
+
readonly english: 'Annex (Anlage)';
|
|
31
31
|
readonly note: null;
|
|
32
32
|
}];
|
|
33
33
|
//# sourceMappingURL=section-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"section-types.d.ts","sourceRoot":"","sources":["../../../../src/services/ris/reference/section-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wBAAwB;AACxB,MAAM,WAAW,WAAW;IAC1B,uBAAuB;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,kBAAkB;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,8BAA8B;AAC9B,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"section-types.d.ts","sourceRoot":"","sources":["../../../../src/services/ris/reference/section-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wBAAwB;AACxB,MAAM,WAAW,WAAW;IAC1B,uBAAuB;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,kBAAkB;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,8BAA8B;AAC9B,eAAO,MAAM,iBAAiB;oBAEnB,MAAM;sBACJ,mBAAmB;;;oBAIrB,SAAS;sBACP,mBAAmB;mBACtB,gEAAgE;;oBAG/D,WAAW;sBACT,eAAe;mBAClB,sFAAsF;;oBAGrF,QAAQ;sBACN,gBAAgB;;EAGc,CAAC"}
|
|
@@ -22,20 +22,20 @@ export interface PipelineStage {
|
|
|
22
22
|
}
|
|
23
23
|
/** Both pipeline stages. */
|
|
24
24
|
export declare const RIS_STAGES: readonly [{
|
|
25
|
-
readonly code:
|
|
26
|
-
readonly application:
|
|
27
|
-
readonly name:
|
|
28
|
-
readonly germanName:
|
|
29
|
-
readonly description:
|
|
25
|
+
readonly code: 'review_drafts';
|
|
26
|
+
readonly application: 'Begut';
|
|
27
|
+
readonly name: 'Ministerial review drafts';
|
|
28
|
+
readonly germanName: 'Begutachtungsentwürfe';
|
|
29
|
+
readonly description: 'Draft laws a ministry has put into public review (Begutachtung) — before any government bill exists.';
|
|
30
30
|
readonly stageParams: readonly ["in_review_on"];
|
|
31
|
-
readonly coverage:
|
|
31
|
+
readonly coverage: 'As made available by the ministries';
|
|
32
32
|
}, {
|
|
33
|
-
readonly code:
|
|
34
|
-
readonly application:
|
|
35
|
-
readonly name:
|
|
36
|
-
readonly germanName:
|
|
37
|
-
readonly description:
|
|
33
|
+
readonly code: 'government_bills';
|
|
34
|
+
readonly application: 'RegV';
|
|
35
|
+
readonly name: 'Government bills';
|
|
36
|
+
readonly germanName: 'Regierungsvorlagen';
|
|
37
|
+
readonly description: 'Bills adopted by the council of ministers and submitted to parliament.';
|
|
38
38
|
readonly stageParams: readonly ["decided_from", "decided_to"];
|
|
39
|
-
readonly coverage:
|
|
39
|
+
readonly coverage: '2004 and later';
|
|
40
40
|
}];
|
|
41
41
|
//# sourceMappingURL=stages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stages.d.ts","sourceRoot":"","sources":["../../../../src/services/ris/reference/stages.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,0BAA0B;AAC1B,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,kDAAkD;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wCAAwC;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,4BAA4B;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,mCAAmC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,oBAAoB;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED,4BAA4B;AAC5B,eAAO,MAAM,UAAU
|
|
1
|
+
{"version":3,"file":"stages.d.ts","sourceRoot":"","sources":["../../../../src/services/ris/reference/stages.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,0BAA0B;AAC1B,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,kDAAkD;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wCAAwC;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,4BAA4B;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,mCAAmC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,oBAAoB;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED,4BAA4B;AAC5B,eAAO,MAAM,UAAU;mBAEb,eAAe;0BACR,OAAO;mBACd,2BAA2B;yBACrB,uBAAuB;0BAEjC,sGAAsG;;uBAE9F,qCAAqC;;mBAGzC,kBAAkB;0BACX,MAAM;mBACb,kBAAkB;yBACZ,oBAAoB;0BACnB,wEAAwE;;uBAE3E,gBAAgB;EAEe,CAAC"}
|
|
@@ -24,67 +24,67 @@ export interface RisState {
|
|
|
24
24
|
}
|
|
25
25
|
/** All nine Bundesländer. */
|
|
26
26
|
export declare const RIS_STATES: readonly [{
|
|
27
|
-
readonly code:
|
|
28
|
-
readonly name:
|
|
29
|
-
readonly flagParam:
|
|
30
|
-
readonly flatAscii:
|
|
31
|
-
readonly flatUmlaut:
|
|
27
|
+
readonly code: 'burgenland';
|
|
28
|
+
readonly name: 'Burgenland';
|
|
29
|
+
readonly flagParam: 'SucheInBurgenland';
|
|
30
|
+
readonly flatAscii: 'Burgenland';
|
|
31
|
+
readonly flatUmlaut: 'Burgenland';
|
|
32
32
|
readonly inLgbl: true;
|
|
33
33
|
}, {
|
|
34
|
-
readonly code:
|
|
35
|
-
readonly name:
|
|
36
|
-
readonly flagParam:
|
|
37
|
-
readonly flatAscii:
|
|
38
|
-
readonly flatUmlaut:
|
|
34
|
+
readonly code: 'kaernten';
|
|
35
|
+
readonly name: 'Kärnten';
|
|
36
|
+
readonly flagParam: 'SucheInKaernten';
|
|
37
|
+
readonly flatAscii: 'Kaernten';
|
|
38
|
+
readonly flatUmlaut: 'Kärnten';
|
|
39
39
|
readonly inLgbl: true;
|
|
40
40
|
}, {
|
|
41
|
-
readonly code:
|
|
42
|
-
readonly name:
|
|
43
|
-
readonly flagParam:
|
|
44
|
-
readonly flatAscii:
|
|
45
|
-
readonly flatUmlaut:
|
|
41
|
+
readonly code: 'niederoesterreich';
|
|
42
|
+
readonly name: 'Niederösterreich';
|
|
43
|
+
readonly flagParam: 'SucheInNiederoesterreich';
|
|
44
|
+
readonly flatAscii: 'Niederoesterreich';
|
|
45
|
+
readonly flatUmlaut: 'Niederösterreich';
|
|
46
46
|
readonly inLgbl: false;
|
|
47
47
|
}, {
|
|
48
|
-
readonly code:
|
|
49
|
-
readonly name:
|
|
50
|
-
readonly flagParam:
|
|
51
|
-
readonly flatAscii:
|
|
52
|
-
readonly flatUmlaut:
|
|
48
|
+
readonly code: 'oberoesterreich';
|
|
49
|
+
readonly name: 'Oberösterreich';
|
|
50
|
+
readonly flagParam: 'SucheInOberoesterreich';
|
|
51
|
+
readonly flatAscii: 'Oberoesterreich';
|
|
52
|
+
readonly flatUmlaut: 'Oberösterreich';
|
|
53
53
|
readonly inLgbl: true;
|
|
54
54
|
}, {
|
|
55
|
-
readonly code:
|
|
56
|
-
readonly name:
|
|
57
|
-
readonly flagParam:
|
|
58
|
-
readonly flatAscii:
|
|
59
|
-
readonly flatUmlaut:
|
|
55
|
+
readonly code: 'salzburg';
|
|
56
|
+
readonly name: 'Salzburg';
|
|
57
|
+
readonly flagParam: 'SucheInSalzburg';
|
|
58
|
+
readonly flatAscii: 'Salzburg';
|
|
59
|
+
readonly flatUmlaut: 'Salzburg';
|
|
60
60
|
readonly inLgbl: true;
|
|
61
61
|
}, {
|
|
62
|
-
readonly code:
|
|
63
|
-
readonly name:
|
|
64
|
-
readonly flagParam:
|
|
65
|
-
readonly flatAscii:
|
|
66
|
-
readonly flatUmlaut:
|
|
62
|
+
readonly code: 'steiermark';
|
|
63
|
+
readonly name: 'Steiermark';
|
|
64
|
+
readonly flagParam: 'SucheInSteiermark';
|
|
65
|
+
readonly flatAscii: 'Steiermark';
|
|
66
|
+
readonly flatUmlaut: 'Steiermark';
|
|
67
67
|
readonly inLgbl: true;
|
|
68
68
|
}, {
|
|
69
|
-
readonly code:
|
|
70
|
-
readonly name:
|
|
71
|
-
readonly flagParam:
|
|
72
|
-
readonly flatAscii:
|
|
73
|
-
readonly flatUmlaut:
|
|
69
|
+
readonly code: 'tirol';
|
|
70
|
+
readonly name: 'Tirol';
|
|
71
|
+
readonly flagParam: 'SucheInTirol';
|
|
72
|
+
readonly flatAscii: 'Tirol';
|
|
73
|
+
readonly flatUmlaut: 'Tirol';
|
|
74
74
|
readonly inLgbl: true;
|
|
75
75
|
}, {
|
|
76
|
-
readonly code:
|
|
77
|
-
readonly name:
|
|
78
|
-
readonly flagParam:
|
|
79
|
-
readonly flatAscii:
|
|
80
|
-
readonly flatUmlaut:
|
|
76
|
+
readonly code: 'vorarlberg';
|
|
77
|
+
readonly name: 'Vorarlberg';
|
|
78
|
+
readonly flagParam: 'SucheInVorarlberg';
|
|
79
|
+
readonly flatAscii: 'Vorarlberg';
|
|
80
|
+
readonly flatUmlaut: 'Vorarlberg';
|
|
81
81
|
readonly inLgbl: true;
|
|
82
82
|
}, {
|
|
83
|
-
readonly code:
|
|
84
|
-
readonly name:
|
|
85
|
-
readonly flagParam:
|
|
86
|
-
readonly flatAscii:
|
|
87
|
-
readonly flatUmlaut:
|
|
83
|
+
readonly code: 'wien';
|
|
84
|
+
readonly name: 'Wien';
|
|
85
|
+
readonly flagParam: 'SucheInWien';
|
|
86
|
+
readonly flatAscii: 'Wien';
|
|
87
|
+
readonly flatUmlaut: 'Wien';
|
|
88
88
|
readonly inLgbl: false;
|
|
89
89
|
}];
|
|
90
90
|
//# sourceMappingURL=states.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"states.d.ts","sourceRoot":"","sources":["../../../../src/services/ris/reference/states.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,sDAAsD;AACtD,MAAM,WAAW,QAAQ;IACvB,sEAAsE;IACtE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,uFAAuF;IACvF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,0CAA0C;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,0BAA0B;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,6BAA6B;AAC7B,eAAO,MAAM,UAAU
|
|
1
|
+
{"version":3,"file":"states.d.ts","sourceRoot":"","sources":["../../../../src/services/ris/reference/states.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,sDAAsD;AACtD,MAAM,WAAW,QAAQ;IACvB,sEAAsE;IACtE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,uFAAuF;IACvF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,0CAA0C;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,0BAA0B;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,6BAA6B;AAC7B,eAAO,MAAM,UAAU;mBAEb,YAAY;mBACZ,YAAY;wBACP,mBAAmB;wBACnB,YAAY;yBACX,YAAY;;;mBAIlB,UAAU;mBACV,SAAS;wBACJ,iBAAiB;wBACjB,UAAU;yBACT,SAAS;;;mBAIf,mBAAmB;mBACnB,kBAAkB;wBACb,0BAA0B;wBAC1B,mBAAmB;yBAClB,kBAAkB;;;mBAIxB,iBAAiB;mBACjB,gBAAgB;wBACX,wBAAwB;wBACxB,iBAAiB;yBAChB,gBAAgB;;;mBAItB,UAAU;mBACV,UAAU;wBACL,iBAAiB;wBACjB,UAAU;yBACT,UAAU;;;mBAIhB,YAAY;mBACZ,YAAY;wBACP,mBAAmB;wBACnB,YAAY;yBACX,YAAY;;;mBAIlB,OAAO;mBACP,OAAO;wBACF,cAAc;wBACd,OAAO;yBACN,OAAO;;;mBAIb,YAAY;mBACZ,YAAY;wBACP,mBAAmB;wBACnB,YAAY;yBACX,YAAY;;;mBAIlB,MAAM;mBACN,MAAM;wBACD,aAAa;wBACb,MAAM;yBACL,MAAM;;EAGkB,CAAC"}
|
|
@@ -8,7 +8,10 @@
|
|
|
8
8
|
* non-JSON bodies classify as transient `ServiceUnavailable`, never `SerializationError`.
|
|
9
9
|
* RIS Client errors surface as `InvalidParams` (non-transient — not retried) whether they
|
|
10
10
|
* arrive in-band on a 200 or as the same envelope on a 500 error response, which
|
|
11
|
-
* `fetchJson` translates rather than letting the status decide.
|
|
11
|
+
* `fetchJson` translates rather than letting the status decide. An upstream 5xx carrying no
|
|
12
|
+
* such envelope is reclassified to `ServiceUnavailable` on both the search and content paths
|
|
13
|
+
* — 500/501 map to `InternalError`, a code no caller contract covers and `withRetry` never
|
|
14
|
+
* retries.
|
|
12
15
|
* Content fetches are allowlisted to the content host's `/Dokumente/` tree (SSRF guard).
|
|
13
16
|
* @module services/ris/ris-service
|
|
14
17
|
*/
|
|
@@ -17,7 +20,7 @@ import type { AppConfig } from '@cyanheads/mcp-ts-core/config';
|
|
|
17
20
|
import { type AnnouncementsSearchParams, type CaseLawSearchParams, type DraftsSearchParams, type GazetteSearchParams, type LegislationSearchParams, type TrackChangesParams } from './request-builder.js';
|
|
18
21
|
import type { RisChangeSet, RisDocumentContent, RisSearchResult } from './types.js';
|
|
19
22
|
/** Rendition formats a content URL can be constructed for. */
|
|
20
|
-
export declare const RIS_CONTENT_FORMATS: readonly [
|
|
23
|
+
export declare const RIS_CONTENT_FORMATS: readonly ['html', 'pdf', 'rtf', 'xml'];
|
|
21
24
|
export type RisContentFormat = (typeof RIS_CONTENT_FORMATS)[number];
|
|
22
25
|
/**
|
|
23
26
|
* Assert a caller-supplied document URL is fetchable: same origin as the configured
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ris-service.d.ts","sourceRoot":"","sources":["../../../src/services/ris/ris-service.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ris-service.d.ts","sourceRoot":"","sources":["../../../src/services/ris/ris-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAuB/D,OAAO,EACL,KAAK,yBAAyB,EAO9B,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAE5B,KAAK,kBAAkB,EACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA+CpF,8DAA8D;AAC9D,eAAO,MAAM,mBAAmB,YAAI,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;AAC1E,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AASpE;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,GAAG,CAenF;AAED;;;GAGG;AACH,qBAAa,UAAU;IAET,OAAO,CAAC,QAAQ,CAAC,QAAQ;IADrC,wEAAwE;IACxE,YAA6B,QAAQ,EAAE,MAAM,EAAI;IAEjD,OAAO,KAAK,MAAM,GAEjB;IAED,OAAO,CAAC,SAAS;IAKjB,2FAA2F;IAC3F,OAAO,CAAC,cAAc;IAatB,gFAAgF;IAC1E,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,CAE/F;IAED,mFAAmF;IAC7E,aAAa,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,CAEvF;IAED,6FAA6F;IACvF,aAAa,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,CAEvF;IAED,+EAA+E;IACzE,YAAY,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,CAErF;IAED,qEAAqE;IAC/D,mBAAmB,CACvB,MAAM,EAAE,yBAAyB,EACjC,GAAG,EAAE,OAAO,GACX,OAAO,CAAC,eAAe,CAAC,CAE1B;IAED,8EAA8E;IACxE,YAAY,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAYlF;IAED;;;OAGG;IACH,uBAAuB,CACrB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,gBAAgB,GACvB,MAAM,CAwBR;IAED,8EAA8E;IACxE,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAiCjF;IAED,kFAAkF;YACpE,MAAM;IAcpB,oFAAoF;YACtE,SAAS;CAyCxB;AAMD,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAEtD;AAED,uFAAuF;AACvF,wBAAgB,aAAa,IAAI,UAAU,CAK1C"}
|
|
@@ -8,19 +8,59 @@
|
|
|
8
8
|
* non-JSON bodies classify as transient `ServiceUnavailable`, never `SerializationError`.
|
|
9
9
|
* RIS Client errors surface as `InvalidParams` (non-transient — not retried) whether they
|
|
10
10
|
* arrive in-band on a 200 or as the same envelope on a 500 error response, which
|
|
11
|
-
* `fetchJson` translates rather than letting the status decide.
|
|
11
|
+
* `fetchJson` translates rather than letting the status decide. An upstream 5xx carrying no
|
|
12
|
+
* such envelope is reclassified to `ServiceUnavailable` on both the search and content paths
|
|
13
|
+
* — 500/501 map to `InternalError`, a code no caller contract covers and `withRetry` never
|
|
14
|
+
* retries.
|
|
12
15
|
* Content fetches are allowlisted to the content host's `/Dokumente/` tree (SSRF guard).
|
|
13
16
|
* @module services/ris/ris-service
|
|
14
17
|
*/
|
|
15
|
-
import { McpError, serviceUnavailable, validationError } from '@cyanheads/mcp-ts-core/errors';
|
|
18
|
+
import { JsonRpcErrorCode, McpError, serviceUnavailable, validationError, } from '@cyanheads/mcp-ts-core/errors';
|
|
16
19
|
import { fetchWithTimeout, requestContextService, withRetry, } from '@cyanheads/mcp-ts-core/utils';
|
|
17
20
|
import { getServerConfig } from '../../config/server-config.js';
|
|
18
21
|
import { errorFromResponseBody, isHtmlErrorPage, parseHistoryResponse, parseSearchResponse, } from './normalizer.js';
|
|
19
22
|
import { RIS_APPLICATIONS } from './reference/index.js';
|
|
20
23
|
import { buildAnnouncementsRequest, buildCaseLawRequest, buildDraftsRequest, buildGazetteRequest, buildLegislationRequest, buildTrackChangesRequest, } from './request-builder.js';
|
|
21
24
|
const SEARCH_TIMEOUT_MS = 15_000;
|
|
22
|
-
const CONTENT_TIMEOUT_MS = 20_000;
|
|
23
25
|
const RETRY_BASE_DELAY_MS = 1_500;
|
|
26
|
+
/**
|
|
27
|
+
* Content-fetch deadline and attempt budget, sized against the MCP request budget rather
|
|
28
|
+
* than the content host's cold-render tail.
|
|
29
|
+
*
|
|
30
|
+
* The host renders a document on first request and caches it (measured 2026-07-26: warm
|
|
31
|
+
* ≈0.6s, cold 7.8–91s across twelve renditions; the CDN itself returns 503 somewhere in the
|
|
32
|
+
* 44–91s band, so the slowest renders are unreachable at any client deadline). Waiting out
|
|
33
|
+
* the tail is therefore not an option: two attempts at 25s plus the jittered backoff caps a
|
|
34
|
+
* call at ~52s, inside the MCP SDK's 60s default request timeout. The previous 20s × 4
|
|
35
|
+
* attempts spent ~93s — past that deadline, so the caller saw a transport hang rather than
|
|
36
|
+
* this service's contract.
|
|
37
|
+
*
|
|
38
|
+
* Retrying is still worth an attempt rather than a wasted one — a render that finishes
|
|
39
|
+
* between the two attempts is served from cache on the second — but an aborted attempt does
|
|
40
|
+
* not reliably leave the rendition cached, so a repeated call can time out again. The
|
|
41
|
+
* `upstream_timeout` recovery hints say exactly that, and point at `format: urls_only` for a
|
|
42
|
+
* document this deadline cannot reach.
|
|
43
|
+
*/
|
|
44
|
+
const CONTENT_TIMEOUT_MS = 25_000;
|
|
45
|
+
const CONTENT_MAX_RETRIES = 1;
|
|
46
|
+
/**
|
|
47
|
+
* Reclassify an unclassified upstream 5xx as transient. `fetchWithTimeout` maps 500/501 to
|
|
48
|
+
* `InternalError` — a code no tool or resource contract declares and `withRetry` does not
|
|
49
|
+
* treat as transient — so a degraded RIS reached the wire as a bare -32603 with no reason,
|
|
50
|
+
* no retryable flag, and no recovery. Reads the canonical `status` field (0.10.15+), which
|
|
51
|
+
* also keeps an abort-sourced `InternalError` (no status) out of the reclassification.
|
|
52
|
+
*
|
|
53
|
+
* Runs only after the RIS error-envelope translation has had its chance: a 500 carrying an
|
|
54
|
+
* `OgdSearchResult.Error` is a rejected parameter, not a server fault.
|
|
55
|
+
*/
|
|
56
|
+
function reclassifyUpstreamServerError(error) {
|
|
57
|
+
if (!(error instanceof McpError) || error.code !== JsonRpcErrorCode.InternalError)
|
|
58
|
+
return error;
|
|
59
|
+
const status = error.data?.status;
|
|
60
|
+
if (typeof status !== 'number' || status < 500)
|
|
61
|
+
return error;
|
|
62
|
+
return serviceUnavailable(`RIS returned HTTP ${status} with no error envelope — the upstream is degraded.`, { status }, { cause: error });
|
|
63
|
+
}
|
|
24
64
|
/** Rendition formats a content URL can be constructed for. */
|
|
25
65
|
export const RIS_CONTENT_FORMATS = ['html', 'pdf', 'rtf', 'xml'];
|
|
26
66
|
/** Document numbers observed live use letters (incl. umlauts), digits, `_`, `.`, `~`, `-`. */
|
|
@@ -134,8 +174,14 @@ export class RisService {
|
|
|
134
174
|
const requestContext = this.requestContext('RisService.fetchDocumentContent', ctx);
|
|
135
175
|
return await withRetry(async () => {
|
|
136
176
|
const response = await fetchWithTimeout(target, CONTENT_TIMEOUT_MS, requestContext, {
|
|
177
|
+
// A mistyped document number is the most common caller error and renders as a
|
|
178
|
+
// plain 404 — an expected outcome mapped to `document_not_found`, not an
|
|
179
|
+
// operational fault worth an error-level line.
|
|
180
|
+
expectedStatuses: [404],
|
|
137
181
|
headers: { 'User-Agent': this.userAgent() },
|
|
138
182
|
signal: ctx.signal,
|
|
183
|
+
}).catch((error) => {
|
|
184
|
+
throw reclassifyUpstreamServerError(error);
|
|
139
185
|
});
|
|
140
186
|
const text = await response.text();
|
|
141
187
|
const contentType = response.headers.get('content-type');
|
|
@@ -149,6 +195,7 @@ export class RisService {
|
|
|
149
195
|
}, {
|
|
150
196
|
baseDelayMs: RETRY_BASE_DELAY_MS,
|
|
151
197
|
context: requestContext,
|
|
198
|
+
maxRetries: CONTENT_MAX_RETRIES,
|
|
152
199
|
operation: 'RisService.fetchDocumentContent',
|
|
153
200
|
signal: ctx.signal,
|
|
154
201
|
});
|
|
@@ -173,14 +220,16 @@ export class RisService {
|
|
|
173
220
|
signal: ctx.signal,
|
|
174
221
|
}).catch((error) => {
|
|
175
222
|
// RIS reports a rejected parameter as HTTP 500 carrying the in-band error envelope,
|
|
176
|
-
// which fetchWithTimeout captures as data.
|
|
177
|
-
//
|
|
223
|
+
// which fetchWithTimeout captures as data.body before the status maps to a generic
|
|
224
|
+
// InternalError. Translating it tells the caller which input RIS rejected. A 500
|
|
225
|
+
// without one is a genuine server fault — reclassify so it lands on the callers'
|
|
226
|
+
// declared upstream_error rather than an undeclared InternalError.
|
|
178
227
|
if (error instanceof McpError) {
|
|
179
|
-
const translated = errorFromResponseBody(error.data?.
|
|
228
|
+
const translated = errorFromResponseBody(error.data?.body, { cause: error });
|
|
180
229
|
if (translated)
|
|
181
230
|
throw translated;
|
|
182
231
|
}
|
|
183
|
-
throw error;
|
|
232
|
+
throw reclassifyUpstreamServerError(error);
|
|
184
233
|
});
|
|
185
234
|
const text = await response.text();
|
|
186
235
|
if (isHtmlErrorPage(text)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ris-service.js","sourceRoot":"","sources":["../../../src/services/ris/ris-service.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ris-service.js","sourceRoot":"","sources":["../../../src/services/ris/ris-service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/ris-austria-mcp-server",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"mcpName": "io.github.cyanheads/ris-austria-mcp-server",
|
|
5
5
|
"description": "Search Austrian consolidated federal & state law, court decisions, and the authentic Bundesgesetzblatt from the official RIS via MCP. Keyless. STDIO or Streamable HTTP.",
|
|
6
6
|
"type": "module",
|
|
@@ -90,19 +90,19 @@
|
|
|
90
90
|
},
|
|
91
91
|
"trustedDependencies": ["@socketsecurity/bun-security-scanner"],
|
|
92
92
|
"dependencies": {
|
|
93
|
-
"@cyanheads/mcp-ts-core": "^0.
|
|
93
|
+
"@cyanheads/mcp-ts-core": "^0.11.0",
|
|
94
94
|
"node-html-markdown": "^2.0.0",
|
|
95
95
|
"pino-pretty": "^13.1.3",
|
|
96
96
|
"zod": "^4.4.3"
|
|
97
97
|
},
|
|
98
98
|
"devDependencies": {
|
|
99
|
-
"@biomejs/biome": "2.5.
|
|
99
|
+
"@biomejs/biome": "2.5.5",
|
|
100
100
|
"@socketsecurity/bun-security-scanner": "^1.1.2",
|
|
101
101
|
"@types/node": "26.1.1",
|
|
102
102
|
"depcheck": "^1.4.7",
|
|
103
103
|
"ignore": "^7.0.6",
|
|
104
|
-
"tsc-alias": "^1.
|
|
105
|
-
"typescript": "^
|
|
106
|
-
"vitest": "^4.1.
|
|
104
|
+
"tsc-alias": "^1.9.1",
|
|
105
|
+
"typescript": "^7.0.2",
|
|
106
|
+
"vitest": "^4.1.10"
|
|
107
107
|
}
|
|
108
108
|
}
|
package/server.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"url": "https://github.com/cyanheads/ris-austria-mcp-server",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.1
|
|
9
|
+
"version": "0.2.1",
|
|
10
10
|
"remotes": [
|
|
11
11
|
{
|
|
12
12
|
"type": "streamable-http",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
20
20
|
"identifier": "@cyanheads/ris-austria-mcp-server",
|
|
21
21
|
"runtimeHint": "node",
|
|
22
|
-
"version": "0.1
|
|
22
|
+
"version": "0.2.1",
|
|
23
23
|
"packageArguments": [
|
|
24
24
|
{
|
|
25
25
|
"type": "positional",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
55
55
|
"identifier": "@cyanheads/ris-austria-mcp-server",
|
|
56
56
|
"runtimeHint": "node",
|
|
57
|
-
"version": "0.1
|
|
57
|
+
"version": "0.2.1",
|
|
58
58
|
"packageArguments": [
|
|
59
59
|
{
|
|
60
60
|
"type": "positional",
|