@thalovant/mcp-server 0.6.3 → 0.6.5
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/CHANGELOG.md +12 -0
- package/README.md +7 -5
- package/dist/index.js +9 -9
- package/package.json +2 -2
- package/server.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.6.5 - 2026-10-23
|
|
4
|
+
|
|
5
|
+
- Lock the runtime transitive dependency `ip-address` to 10.7.4, fixing the IPv6 zone-identifier parsing denial of service (CVE-2026-111997). The MCP and Thalovant SDK versions, tool schemas, and protocol behavior are unchanged.
|
|
6
|
+
- Update development dependencies Vite to 8.3.3 and Vitest with its matching packages to 4.1.12, fixing CVE-2026-112942, CVE-2026-112949, and CVE-2026-112950. Neither Vite nor Vitest is included in the production OCI runtime.
|
|
7
|
+
- Align `package.json`, `server.json`, the OCI label, and the README at 0.6.5. Existing release security checks and published-artifact smoke checks remain unchanged.
|
|
8
|
+
|
|
9
|
+
## 0.6.4 — 2026-10-19
|
|
10
|
+
|
|
11
|
+
- **Descriptions that say what a runtime tool changes.** `thalovant_send_action`, `thalovant_send_code` and `thalovant_wait_for_event` had one-line descriptions that didn't say whether the tool changes anything. A scanner that reads only names and descriptions rated all three as high-risk tools that execute, `thalovant_wait_for_event` included, though it was already annotated `readOnlyHint: true`. `thalovant_send_action` now says the hub routes its payload like a spoken request, so a skill may act on it. `thalovant_send_code` says the hub receives its value as an exact utterance, and both say they return without waiting for a reply and that `THALOVANT_MCP_READONLY` leaves them out. `thalovant_wait_for_event` says it only listens and sends the hub nothing, and that `sessionId`, `requestId` and `context` filter which events count. `payload`, `title`, `value`, `kind`, `label` and `eventName` now have their own descriptions. Schemas, annotations and behaviour are unchanged.
|
|
12
|
+
- The Claude Desktop and Codex examples start the published package with `npx -y @thalovant/mcp-server`. They used to point at a path on one developer's machine.
|
|
13
|
+
- `package.json`, `server.json`, the OCI label, the README and this file move to 0.6.4 together.
|
|
14
|
+
|
|
3
15
|
## 0.6.3 — 2026-10-11
|
|
4
16
|
|
|
5
17
|
- **Sentences in the language the hub answers in.** `thalovant_intent_inventory` takes `@thalovant/sdk` 0.9.9, which lists a language the hub never loaded in one of the hub's own languages: the same language in another region first, then the hub's own language, then the one with the most sentences. A hub loads its `lang` and `secondary_langs` and lists nothing under any other tag, so on 2026-10-11 a ja-JP, es-ES or de-DE request came back empty on every public hub, even though the hub answers those people. The output's `listed_in` names the language each requested language was listed in. `examples` are now rendered from that language (they used to be rendered from the requested tag and came back empty). `presentation.notes` says when the sentences are in another language, so an agent can tell the user.
|
package/README.md
CHANGED
|
@@ -24,6 +24,8 @@ Thalovant publishes SDKs for Python, Node.js, Go, and Rust. This server uses Nod
|
|
|
24
24
|
|
|
25
25
|
## Install
|
|
26
26
|
|
|
27
|
+
Run the published package with `npx -y @thalovant/mcp-server`, or build it from a checkout:
|
|
28
|
+
|
|
27
29
|
```bash
|
|
28
30
|
npm install
|
|
29
31
|
npm run build
|
|
@@ -308,8 +310,8 @@ Recommended: authenticate with a scoped API token so the MCP config never contai
|
|
|
308
310
|
{
|
|
309
311
|
"mcpServers": {
|
|
310
312
|
"thalovant": {
|
|
311
|
-
"command": "
|
|
312
|
-
"args": ["/
|
|
313
|
+
"command": "npx",
|
|
314
|
+
"args": ["-y", "@thalovant/mcp-server"],
|
|
313
315
|
"env": {
|
|
314
316
|
"THALOVANT_API_TOKEN": "tvpat_...",
|
|
315
317
|
"THALOVANT_PROFILE": "prod"
|
|
@@ -327,8 +329,8 @@ Use the same stdio command in your MCP client config:
|
|
|
327
329
|
{
|
|
328
330
|
"mcpServers": {
|
|
329
331
|
"thalovant": {
|
|
330
|
-
"command": "
|
|
331
|
-
"args": ["/
|
|
332
|
+
"command": "npx",
|
|
333
|
+
"args": ["-y", "@thalovant/mcp-server"],
|
|
332
334
|
"env": {
|
|
333
335
|
"THALOVANT_API_TOKEN": "tvpat_...",
|
|
334
336
|
"THALOVANT_PROFILE": "prod"
|
|
@@ -538,7 +540,7 @@ Runtime calls sharing the same hub client identity run sequentially within one
|
|
|
538
540
|
MCP process. Use a distinct client identity for each independently running MCP
|
|
539
541
|
server so the hub can keep their sessions separate.
|
|
540
542
|
|
|
541
|
-
Version 0.6.
|
|
543
|
+
Version 0.6.5 requires `@thalovant/sdk` `^0.9.9` (0.9.9 through versions below 0.10.0). Since 0.5.1 the server enforces
|
|
542
544
|
secure effective MQTT URLs and carries a single connection deadline through
|
|
543
545
|
MQTT setup and HTTP failure cleanup. Runtime tools support
|
|
544
546
|
HiveMind v3 Noise over WSS, HTTPS and MQTT over TLS. `thalovant_healthcheck`
|
package/dist/index.js
CHANGED
|
@@ -1717,11 +1717,11 @@ export function createServer() {
|
|
|
1717
1717
|
});
|
|
1718
1718
|
registerThalovantTool(server, "thalovant_send_action", {
|
|
1719
1719
|
title: "Send Action",
|
|
1720
|
-
description: "Send
|
|
1720
|
+
description: "Send one action to a Thalovant hub using a saved identity, the way a button or a shortcut would. The hub routes payload like a spoken request, so the skill that takes it can change things: switch a light, start a timer, play music. Returns once the action is sent, without waiting for the reply; use thalovant_ask to read the answer. THALOVANT_MCP_READONLY leaves this tool out.",
|
|
1721
1721
|
inputSchema: {
|
|
1722
1722
|
...runtimeAuthSchema,
|
|
1723
|
-
payload: z.string().min(1).max(20_000),
|
|
1724
|
-
title: z.string().min(1).max(512).optional(),
|
|
1723
|
+
payload: z.string().min(1).max(20_000).describe("The request the hub routes, in words, such as \"turn on the kitchen light\"."),
|
|
1724
|
+
title: z.string().min(1).max(512).optional().describe("A label carried with the action in its context (input.title)."),
|
|
1725
1725
|
lang: z.string().min(1).optional(),
|
|
1726
1726
|
sessionId: z.string().min(1).optional(),
|
|
1727
1727
|
requestId: z.string().min(1).optional(),
|
|
@@ -1749,12 +1749,12 @@ export function createServer() {
|
|
|
1749
1749
|
});
|
|
1750
1750
|
registerThalovantTool(server, "thalovant_send_code", {
|
|
1751
1751
|
title: "Send Code",
|
|
1752
|
-
description: "Send
|
|
1752
|
+
description: "Send one exact value to a Thalovant hub using a saved identity: something typed, scanned, a barcode, a QR code or a serial number. The hub receives it as an utterance whose input is marked exact, and a skill that recognizes the value may act on it. Returns once the value is sent, without waiting for a reply. THALOVANT_MCP_READONLY leaves this tool out.",
|
|
1753
1753
|
inputSchema: {
|
|
1754
1754
|
...runtimeAuthSchema,
|
|
1755
|
-
value: z.string().min(1).max(20_000),
|
|
1756
|
-
kind: z.string().min(1).max(64).optional(),
|
|
1757
|
-
label: z.string().min(1).max(128).optional(),
|
|
1755
|
+
value: z.string().min(1).max(20_000).describe("The value exactly as read; only leading and trailing spaces are trimmed."),
|
|
1756
|
+
kind: z.string().min(1).max(64).optional().describe("What the value is, such as barcode, qr or serial. Defaults to code."),
|
|
1757
|
+
label: z.string().min(1).max(128).optional().describe("A label carried with the value in its context (input.label)."),
|
|
1758
1758
|
lang: z.string().min(1).optional(),
|
|
1759
1759
|
sessionId: z.string().min(1).optional(),
|
|
1760
1760
|
requestId: z.string().min(1).optional(),
|
|
@@ -1806,10 +1806,10 @@ export function createServer() {
|
|
|
1806
1806
|
});
|
|
1807
1807
|
registerThalovantTool(server, "thalovant_wait_for_event", {
|
|
1808
1808
|
title: "Wait For Event",
|
|
1809
|
-
description: "Wait for one named hub event using a saved identity.",
|
|
1809
|
+
description: "Wait for one named hub event using a saved identity and return it: the first eventName the hub sends once the connection is made, or a timeout error after timeoutMs. sessionId, requestId and context narrow it to events carrying the same values. Listens only: it opens the connection and sends the hub no message, so it changes nothing.",
|
|
1810
1810
|
inputSchema: {
|
|
1811
1811
|
...runtimeAuthSchema,
|
|
1812
|
-
eventName: z.string().min(1).max(256),
|
|
1812
|
+
eventName: z.string().min(1).max(256).describe("The bus message type to wait for, such as speak or recognizer_loop:utterance."),
|
|
1813
1813
|
timeoutMs: z.number().int().min(1_000).max(MAX_TIMEOUT_MS).default(DEFAULT_TIMEOUT_MS),
|
|
1814
1814
|
sessionId: z.string().min(1).optional(),
|
|
1815
1815
|
requestId: z.string().min(1).optional(),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thalovant/mcp-server",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.5",
|
|
4
4
|
"description": "Stdio and Streamable HTTP MCP server for Thalovant control-plane and hub runtime APIs.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -74,6 +74,6 @@
|
|
|
74
74
|
"devDependencies": {
|
|
75
75
|
"@types/node": "^22.18.12",
|
|
76
76
|
"typescript": "^5.9.3",
|
|
77
|
-
"vitest": "^4.1.
|
|
77
|
+
"vitest": "^4.1.12"
|
|
78
78
|
}
|
|
79
79
|
}
|
package/server.json
CHANGED
|
@@ -7,19 +7,19 @@
|
|
|
7
7
|
"url": "https://github.com/thalovant/thalovant-mcp",
|
|
8
8
|
"source": "github"
|
|
9
9
|
},
|
|
10
|
-
"version": "0.6.
|
|
10
|
+
"version": "0.6.5",
|
|
11
11
|
"packages": [
|
|
12
12
|
{
|
|
13
13
|
"registryType": "npm",
|
|
14
14
|
"identifier": "@thalovant/mcp-server",
|
|
15
|
-
"version": "0.6.
|
|
15
|
+
"version": "0.6.5",
|
|
16
16
|
"transport": {
|
|
17
17
|
"type": "stdio"
|
|
18
18
|
}
|
|
19
19
|
},
|
|
20
20
|
{
|
|
21
21
|
"registryType": "oci",
|
|
22
|
-
"identifier": "ghcr.io/thalovant/thalovant-mcp:0.6.
|
|
22
|
+
"identifier": "ghcr.io/thalovant/thalovant-mcp:0.6.5",
|
|
23
23
|
"transport": {
|
|
24
24
|
"type": "streamable-http",
|
|
25
25
|
"url": "http://127.0.0.1:3000/mcp"
|