@coffeerunhobby/mcp-ha-connect 1.7.6 → 2.0.0

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 (294) hide show
  1. package/AGENTS.md +9 -9
  2. package/dist/config.js +10 -14
  3. package/dist/config.js.map +1 -1
  4. package/dist/resources/index.d.ts +1 -1
  5. package/dist/resources/index.js +6 -6
  6. package/dist/resources/index.js.map +1 -1
  7. package/dist/server/auth.d.ts +1 -1
  8. package/dist/server/chatFace.d.ts +1 -1
  9. package/dist/server/chatFace.js +21 -16
  10. package/dist/server/chatFace.js.map +1 -1
  11. package/dist/server/common.d.ts +17 -1
  12. package/dist/server/common.js +48 -1
  13. package/dist/server/common.js.map +1 -1
  14. package/dist/server/stdio.js +1 -1
  15. package/dist/server/stdio.js.map +1 -1
  16. package/dist/server/stream.d.ts +2 -2
  17. package/dist/server/stream.js +2 -2
  18. package/dist/server/stream.js.map +1 -1
  19. package/dist/tools/ai/analyzeSensors.d.ts +1 -1
  20. package/dist/tools/ai/analyzeSensors.js +1 -1
  21. package/dist/tools/ai/analyzeSensors.js.map +1 -1
  22. package/dist/tools/ai/index.d.ts +1 -1
  23. package/dist/tools/common.d.ts +113 -328
  24. package/dist/tools/common.js +6 -6
  25. package/dist/tools/common.js.map +1 -1
  26. package/dist/tools/homeassistant/automationControls.d.ts +1 -1
  27. package/dist/tools/homeassistant/automationControls.js +4 -4
  28. package/dist/tools/homeassistant/automationControls.js.map +1 -1
  29. package/dist/tools/homeassistant/calendar.d.ts +1 -1
  30. package/dist/tools/homeassistant/calendar.js +2 -2
  31. package/dist/tools/homeassistant/calendar.js.map +1 -1
  32. package/dist/tools/homeassistant/callService.d.ts +1 -1
  33. package/dist/tools/homeassistant/callService.js +1 -1
  34. package/dist/tools/homeassistant/callService.js.map +1 -1
  35. package/dist/tools/homeassistant/controlClimate.d.ts +1 -1
  36. package/dist/tools/homeassistant/controlClimate.js +1 -1
  37. package/dist/tools/homeassistant/controlClimate.js.map +1 -1
  38. package/dist/tools/homeassistant/controlCover.d.ts +1 -1
  39. package/dist/tools/homeassistant/controlCover.js +1 -1
  40. package/dist/tools/homeassistant/controlCover.js.map +1 -1
  41. package/dist/tools/homeassistant/controlFan.d.ts +1 -1
  42. package/dist/tools/homeassistant/controlFan.js +1 -1
  43. package/dist/tools/homeassistant/controlFan.js.map +1 -1
  44. package/dist/tools/homeassistant/controlLight.d.ts +1 -1
  45. package/dist/tools/homeassistant/controlLight.js +1 -1
  46. package/dist/tools/homeassistant/controlLight.js.map +1 -1
  47. package/dist/tools/homeassistant/controlMediaPlayer.d.ts +1 -1
  48. package/dist/tools/homeassistant/controlMediaPlayer.js +1 -1
  49. package/dist/tools/homeassistant/controlMediaPlayer.js.map +1 -1
  50. package/dist/tools/homeassistant/createAutomation.d.ts +1 -1
  51. package/dist/tools/homeassistant/createAutomation.js +1 -1
  52. package/dist/tools/homeassistant/createAutomation.js.map +1 -1
  53. package/dist/tools/homeassistant/deleteAutomation.d.ts +1 -1
  54. package/dist/tools/homeassistant/deleteAutomation.js +1 -1
  55. package/dist/tools/homeassistant/deleteAutomation.js.map +1 -1
  56. package/dist/tools/homeassistant/entityAction.d.ts +1 -1
  57. package/dist/tools/homeassistant/entityAction.js +1 -1
  58. package/dist/tools/homeassistant/entityAction.js.map +1 -1
  59. package/dist/tools/homeassistant/entityGuard.d.ts +1 -1
  60. package/dist/tools/homeassistant/getAllSensors.d.ts +1 -1
  61. package/dist/tools/homeassistant/getAllSensors.js +1 -1
  62. package/dist/tools/homeassistant/getAllSensors.js.map +1 -1
  63. package/dist/tools/homeassistant/getAutomationTrace.d.ts +1 -1
  64. package/dist/tools/homeassistant/getAutomationTrace.js +1 -1
  65. package/dist/tools/homeassistant/getAutomationTrace.js.map +1 -1
  66. package/dist/tools/homeassistant/getDomainSummary.d.ts +2 -2
  67. package/dist/tools/homeassistant/getDomainSummary.js +1 -1
  68. package/dist/tools/homeassistant/getDomainSummary.js.map +1 -1
  69. package/dist/tools/homeassistant/getEntitiesByDomain.d.ts +1 -1
  70. package/dist/tools/homeassistant/getEntitiesByDomain.js +1 -1
  71. package/dist/tools/homeassistant/getEntitiesByDomain.js.map +1 -1
  72. package/dist/tools/homeassistant/getHistory.d.ts +1 -1
  73. package/dist/tools/homeassistant/getHistory.js +1 -1
  74. package/dist/tools/homeassistant/getHistory.js.map +1 -1
  75. package/dist/tools/homeassistant/getState.d.ts +1 -1
  76. package/dist/tools/homeassistant/getState.js +1 -1
  77. package/dist/tools/homeassistant/getState.js.map +1 -1
  78. package/dist/tools/homeassistant/getStates.d.ts +1 -1
  79. package/dist/tools/homeassistant/getStates.js +1 -1
  80. package/dist/tools/homeassistant/getStates.js.map +1 -1
  81. package/dist/tools/homeassistant/getVersion.d.ts +1 -1
  82. package/dist/tools/homeassistant/getVersion.js +1 -1
  83. package/dist/tools/homeassistant/getVersion.js.map +1 -1
  84. package/dist/tools/homeassistant/index.d.ts +1 -1
  85. package/dist/tools/homeassistant/listAutomations.d.ts +2 -2
  86. package/dist/tools/homeassistant/listAutomations.js +1 -1
  87. package/dist/tools/homeassistant/listAutomations.js.map +1 -1
  88. package/dist/tools/homeassistant/listEntities.d.ts +1 -1
  89. package/dist/tools/homeassistant/listEntities.js +1 -1
  90. package/dist/tools/homeassistant/listEntities.js.map +1 -1
  91. package/dist/tools/homeassistant/listPersons.d.ts +1 -1
  92. package/dist/tools/homeassistant/listPersons.js +1 -1
  93. package/dist/tools/homeassistant/listPersons.js.map +1 -1
  94. package/dist/tools/homeassistant/sceneAndScript.d.ts +1 -1
  95. package/dist/tools/homeassistant/sceneAndScript.js +2 -2
  96. package/dist/tools/homeassistant/sceneAndScript.js.map +1 -1
  97. package/dist/tools/homeassistant/searchEntities.d.ts +1 -1
  98. package/dist/tools/homeassistant/searchEntities.js +1 -1
  99. package/dist/tools/homeassistant/searchEntities.js.map +1 -1
  100. package/dist/tools/homeassistant/sendNotification.d.ts +1 -1
  101. package/dist/tools/homeassistant/sendNotification.js +2 -2
  102. package/dist/tools/homeassistant/sendNotification.js.map +1 -1
  103. package/dist/tools/homeassistant/systemTools.d.ts +1 -1
  104. package/dist/tools/homeassistant/systemTools.js +3 -3
  105. package/dist/tools/homeassistant/systemTools.js.map +1 -1
  106. package/dist/tools/homeassistant/triggerAutomation.d.ts +1 -1
  107. package/dist/tools/homeassistant/triggerAutomation.js +1 -1
  108. package/dist/tools/homeassistant/triggerAutomation.js.map +1 -1
  109. package/dist/tools/index.d.ts +1 -1
  110. package/dist/tools/infra/index.d.ts +1 -1
  111. package/dist/tools/infra/index.js +1 -1
  112. package/dist/tools/infra/index.js.map +1 -1
  113. package/dist/tools/omada/blockClient.d.ts +1 -1
  114. package/dist/tools/omada/blockClient.js +1 -1
  115. package/dist/tools/omada/blockClient.js.map +1 -1
  116. package/dist/tools/omada/cyclePoePort.d.ts +1 -1
  117. package/dist/tools/omada/cyclePoePort.js +1 -1
  118. package/dist/tools/omada/cyclePoePort.js.map +1 -1
  119. package/dist/tools/omada/disableClientRateLimit.d.ts +1 -1
  120. package/dist/tools/omada/disableClientRateLimit.js +1 -1
  121. package/dist/tools/omada/disableClientRateLimit.js.map +1 -1
  122. package/dist/tools/omada/getClient.d.ts +1 -1
  123. package/dist/tools/omada/getClient.js +1 -1
  124. package/dist/tools/omada/getClient.js.map +1 -1
  125. package/dist/tools/omada/getDevice.d.ts +1 -1
  126. package/dist/tools/omada/getDevice.js +1 -1
  127. package/dist/tools/omada/getDevice.js.map +1 -1
  128. package/dist/tools/omada/getFirewallSetting.d.ts +1 -1
  129. package/dist/tools/omada/getFirewallSetting.js +1 -1
  130. package/dist/tools/omada/getFirewallSetting.js.map +1 -1
  131. package/dist/tools/omada/getInternetInfo.d.ts +1 -1
  132. package/dist/tools/omada/getInternetInfo.js +1 -1
  133. package/dist/tools/omada/getInternetInfo.js.map +1 -1
  134. package/dist/tools/omada/getLanNetworkList.d.ts +1 -1
  135. package/dist/tools/omada/getLanNetworkList.js +1 -1
  136. package/dist/tools/omada/getLanNetworkList.js.map +1 -1
  137. package/dist/tools/omada/getLanProfileList.d.ts +1 -1
  138. package/dist/tools/omada/getLanProfileList.js +1 -1
  139. package/dist/tools/omada/getLanProfileList.js.map +1 -1
  140. package/dist/tools/omada/getPortForwardingStatus.d.ts +1 -1
  141. package/dist/tools/omada/getPortForwardingStatus.js +1 -1
  142. package/dist/tools/omada/getPortForwardingStatus.js.map +1 -1
  143. package/dist/tools/omada/getRateLimitProfiles.d.ts +1 -1
  144. package/dist/tools/omada/getRateLimitProfiles.js +1 -1
  145. package/dist/tools/omada/getRateLimitProfiles.js.map +1 -1
  146. package/dist/tools/omada/getSsidDetail.d.ts +1 -1
  147. package/dist/tools/omada/getSsidDetail.js +1 -1
  148. package/dist/tools/omada/getSsidDetail.js.map +1 -1
  149. package/dist/tools/omada/getSsidList.d.ts +1 -1
  150. package/dist/tools/omada/getSsidList.js +1 -1
  151. package/dist/tools/omada/getSsidList.js.map +1 -1
  152. package/dist/tools/omada/getSwitchStackDetail.d.ts +1 -1
  153. package/dist/tools/omada/getSwitchStackDetail.js +1 -1
  154. package/dist/tools/omada/getSwitchStackDetail.js.map +1 -1
  155. package/dist/tools/omada/getThreatList.d.ts +1 -1
  156. package/dist/tools/omada/getThreatList.js +1 -1
  157. package/dist/tools/omada/getThreatList.js.map +1 -1
  158. package/dist/tools/omada/getWlanGroupList.d.ts +1 -1
  159. package/dist/tools/omada/getWlanGroupList.js +1 -1
  160. package/dist/tools/omada/getWlanGroupList.js.map +1 -1
  161. package/dist/tools/omada/graph.d.ts +7 -25
  162. package/dist/tools/omada/graph.js +3 -3
  163. package/dist/tools/omada/graph.js.map +1 -1
  164. package/dist/tools/omada/index.d.ts +1 -1
  165. package/dist/tools/omada/listClients.d.ts +1 -1
  166. package/dist/tools/omada/listClients.js +1 -1
  167. package/dist/tools/omada/listClients.js.map +1 -1
  168. package/dist/tools/omada/listClientsActivity.d.ts +1 -1
  169. package/dist/tools/omada/listClientsActivity.js +1 -1
  170. package/dist/tools/omada/listClientsActivity.js.map +1 -1
  171. package/dist/tools/omada/listClientsPastConnections.d.ts +1 -1
  172. package/dist/tools/omada/listClientsPastConnections.js +1 -1
  173. package/dist/tools/omada/listClientsPastConnections.js.map +1 -1
  174. package/dist/tools/omada/listDevices.d.ts +1 -1
  175. package/dist/tools/omada/listDevices.js +1 -1
  176. package/dist/tools/omada/listDevices.js.map +1 -1
  177. package/dist/tools/omada/listDevicesStats.d.ts +1 -1
  178. package/dist/tools/omada/listDevicesStats.js +1 -1
  179. package/dist/tools/omada/listDevicesStats.js.map +1 -1
  180. package/dist/tools/omada/listMostActiveClients.d.ts +1 -1
  181. package/dist/tools/omada/listMostActiveClients.js +1 -1
  182. package/dist/tools/omada/listMostActiveClients.js.map +1 -1
  183. package/dist/tools/omada/listSites.d.ts +1 -1
  184. package/dist/tools/omada/listSites.js +1 -1
  185. package/dist/tools/omada/listSites.js.map +1 -1
  186. package/dist/tools/omada/searchDevices.d.ts +1 -1
  187. package/dist/tools/omada/searchDevices.js +1 -1
  188. package/dist/tools/omada/searchDevices.js.map +1 -1
  189. package/dist/tools/omada/setClientRateLimit.d.ts +1 -1
  190. package/dist/tools/omada/setClientRateLimit.js +1 -1
  191. package/dist/tools/omada/setClientRateLimit.js.map +1 -1
  192. package/dist/tools/omada/setClientRateLimitProfile.d.ts +1 -1
  193. package/dist/tools/omada/setClientRateLimitProfile.js +1 -1
  194. package/dist/tools/omada/setClientRateLimitProfile.js.map +1 -1
  195. package/dist/tools/omada/setSsidEnabled.d.ts +3 -11
  196. package/dist/tools/omada/setSsidEnabled.js +1 -1
  197. package/dist/tools/omada/setSsidEnabled.js.map +1 -1
  198. package/dist/tools/omada/unblockClient.d.ts +1 -1
  199. package/dist/tools/omada/unblockClient.js +1 -1
  200. package/dist/tools/omada/unblockClient.js.map +1 -1
  201. package/dist/tools/types.d.ts +1 -1
  202. package/dist/version.d.ts +1 -1
  203. package/dist/version.js +1 -1
  204. package/docs/CHANGELOG.md +8 -0
  205. package/openapi.json +1 -1
  206. package/package.json +8 -5
  207. package/src/config.ts +10 -19
  208. package/src/resources/index.ts +7 -8
  209. package/src/server/auth.ts +1 -1
  210. package/src/server/chatFace.ts +27 -25
  211. package/src/server/common.ts +56 -1
  212. package/src/server/stdio.ts +1 -1
  213. package/src/server/stream.ts +3 -3
  214. package/src/tools/ai/analyzeSensors.ts +2 -2
  215. package/src/tools/ai/index.ts +1 -1
  216. package/src/tools/common.ts +8 -9
  217. package/src/tools/homeassistant/automationControls.ts +5 -5
  218. package/src/tools/homeassistant/calendar.ts +3 -3
  219. package/src/tools/homeassistant/callService.ts +2 -2
  220. package/src/tools/homeassistant/controlClimate.ts +2 -2
  221. package/src/tools/homeassistant/controlCover.ts +2 -2
  222. package/src/tools/homeassistant/controlFan.ts +2 -2
  223. package/src/tools/homeassistant/controlLight.ts +2 -2
  224. package/src/tools/homeassistant/controlMediaPlayer.ts +2 -2
  225. package/src/tools/homeassistant/createAutomation.ts +2 -2
  226. package/src/tools/homeassistant/deleteAutomation.ts +2 -2
  227. package/src/tools/homeassistant/entityAction.ts +2 -2
  228. package/src/tools/homeassistant/entityGuard.ts +1 -1
  229. package/src/tools/homeassistant/getAllSensors.ts +2 -2
  230. package/src/tools/homeassistant/getAutomationTrace.ts +2 -2
  231. package/src/tools/homeassistant/getDomainSummary.ts +2 -2
  232. package/src/tools/homeassistant/getEntitiesByDomain.ts +2 -2
  233. package/src/tools/homeassistant/getHistory.ts +2 -2
  234. package/src/tools/homeassistant/getState.ts +2 -2
  235. package/src/tools/homeassistant/getStates.ts +2 -2
  236. package/src/tools/homeassistant/getVersion.ts +2 -2
  237. package/src/tools/homeassistant/index.ts +1 -1
  238. package/src/tools/homeassistant/listAutomations.ts +2 -2
  239. package/src/tools/homeassistant/listEntities.ts +2 -2
  240. package/src/tools/homeassistant/listPersons.ts +2 -2
  241. package/src/tools/homeassistant/sceneAndScript.ts +3 -3
  242. package/src/tools/homeassistant/searchEntities.ts +2 -2
  243. package/src/tools/homeassistant/sendNotification.ts +3 -3
  244. package/src/tools/homeassistant/systemTools.ts +4 -4
  245. package/src/tools/homeassistant/triggerAutomation.ts +2 -2
  246. package/src/tools/index.ts +1 -1
  247. package/src/tools/infra/index.ts +2 -2
  248. package/src/tools/omada/blockClient.ts +2 -2
  249. package/src/tools/omada/cyclePoePort.ts +2 -2
  250. package/src/tools/omada/disableClientRateLimit.ts +2 -2
  251. package/src/tools/omada/getClient.ts +2 -3
  252. package/src/tools/omada/getDevice.ts +2 -3
  253. package/src/tools/omada/getFirewallSetting.ts +2 -3
  254. package/src/tools/omada/getInternetInfo.ts +2 -3
  255. package/src/tools/omada/getLanNetworkList.ts +2 -3
  256. package/src/tools/omada/getLanProfileList.ts +2 -3
  257. package/src/tools/omada/getPortForwardingStatus.ts +2 -2
  258. package/src/tools/omada/getRateLimitProfiles.ts +2 -3
  259. package/src/tools/omada/getSsidDetail.ts +2 -2
  260. package/src/tools/omada/getSsidList.ts +2 -2
  261. package/src/tools/omada/getSwitchStackDetail.ts +2 -3
  262. package/src/tools/omada/getThreatList.ts +2 -2
  263. package/src/tools/omada/getWlanGroupList.ts +2 -3
  264. package/src/tools/omada/graph.ts +4 -4
  265. package/src/tools/omada/index.ts +1 -1
  266. package/src/tools/omada/listClients.ts +2 -3
  267. package/src/tools/omada/listClientsActivity.ts +2 -2
  268. package/src/tools/omada/listClientsPastConnections.ts +2 -2
  269. package/src/tools/omada/listDevices.ts +2 -3
  270. package/src/tools/omada/listDevicesStats.ts +2 -2
  271. package/src/tools/omada/listMostActiveClients.ts +2 -3
  272. package/src/tools/omada/listSites.ts +2 -2
  273. package/src/tools/omada/searchDevices.ts +2 -2
  274. package/src/tools/omada/setClientRateLimit.ts +2 -2
  275. package/src/tools/omada/setClientRateLimitProfile.ts +2 -2
  276. package/src/tools/omada/setSsidEnabled.ts +2 -2
  277. package/src/tools/omada/unblockClient.ts +2 -2
  278. package/src/tools/types.ts +1 -1
  279. package/src/version.ts +1 -1
  280. package/tests/bench/hotpaths.bench.ts +68 -0
  281. package/tests/resources/index.test.ts +3 -3
  282. package/tests/security/dependencies.test.ts +6 -6
  283. package/tests/security/insecureDesign.test.ts +5 -6
  284. package/tests/server/memoizeJsonSchema.test.ts +71 -0
  285. package/tests/server/stdio.test.ts +2 -2
  286. package/tests/server/stream.test.ts +0 -1
  287. package/tests/server/toolVisibility.test.ts +1 -2
  288. package/tests/tools/ai/analyzeSensors.test.ts +3 -11
  289. package/tests/tools/common.test.ts +10 -12
  290. package/tests/tools/homeassistant/handlers.test.ts +1 -5
  291. package/tests/tools/infra/invokeAction.test.ts +3 -6
  292. package/tests/tools/omada/graph.test.ts +4 -4
  293. package/tests/tools/omada/handlers.test.ts +3 -12
  294. package/tests/tools/registry.test.ts +1 -1
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * AI tools index - registers all AI-powered MCP tools
3
3
  */
4
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
4
+ import type { McpServer } from '@modelcontextprotocol/server';
5
5
  import type { LocalAIClient } from '../../localAI/index.js';
6
6
  export declare function registerAITools(server: McpServer, aiClient?: LocalAIClient): number;
@@ -2,8 +2,7 @@
2
2
  * Common tool utilities
3
3
  * Shared helpers for all MCP tools
4
4
  */
5
- import type { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';
6
- import type { CallToolResult, ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types.js';
5
+ import type { CallToolResult, ServerContext } from '@modelcontextprotocol/server';
7
6
  import { z } from 'zod';
8
7
  import { Permission } from '../permissions/index.js';
9
8
  export { Permission };
@@ -12,7 +11,7 @@ export declare function setLocalFullTrust(enabled: boolean): void;
12
11
  * Extra context passed to tool handlers
13
12
  * Permissions are extracted from authInfo.extra.permissions (MCP SDK standard)
14
13
  */
15
- export type ToolExtra = RequestHandlerExtra<ServerRequest, ServerNotification>;
14
+ export type ToolExtra = ServerContext;
16
15
  /**
17
16
  * Resolve the caller's permission mask from the MCP SDK auth context.
18
17
  *
@@ -55,303 +54,181 @@ export declare function wrapToolHandler<T>(name: string, handler: (args: T, extr
55
54
  /**
56
55
  * Common Zod schemas for tool inputs
57
56
  */
58
- export declare const emptySchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
57
+ export declare const emptySchema: z.ZodObject<{}, z.core.$strip>;
59
58
  export declare const entityIdSchema: z.ZodObject<{
60
59
  entity_id: z.ZodString;
61
- }, "strip", z.ZodTypeAny, {
62
- entity_id: string;
63
- }, {
64
- entity_id: string;
65
- }>;
60
+ }, z.core.$strip>;
66
61
  export declare const domainSchema: z.ZodObject<{
67
62
  domain: z.ZodString;
68
- }, "strip", z.ZodTypeAny, {
69
- domain: string;
70
- }, {
71
- domain: string;
72
- }>;
63
+ }, z.core.$strip>;
73
64
  export declare const searchSchema: z.ZodObject<{
74
65
  query: z.ZodString;
75
- }, "strip", z.ZodTypeAny, {
76
- query: string;
77
- }, {
78
- query: string;
79
- }>;
66
+ }, z.core.$strip>;
80
67
  export declare const historySchema: z.ZodObject<{
81
68
  entity_id: z.ZodString;
82
69
  hours: z.ZodOptional<z.ZodNumber>;
83
- }, "strip", z.ZodTypeAny, {
84
- entity_id: string;
85
- hours?: number | undefined;
86
- }, {
87
- entity_id: string;
88
- hours?: number | undefined;
89
- }>;
70
+ }, z.core.$strip>;
90
71
  export declare const entityActionSchema: z.ZodObject<{
91
72
  entity_id: z.ZodString;
92
- action: z.ZodEnum<["turn_on", "turn_off", "toggle"]>;
93
- }, "strip", z.ZodTypeAny, {
94
- entity_id: string;
95
- action: "turn_on" | "turn_off" | "toggle";
96
- }, {
97
- entity_id: string;
98
- action: "turn_on" | "turn_off" | "toggle";
99
- }>;
73
+ action: z.ZodEnum<{
74
+ turn_on: "turn_on";
75
+ turn_off: "turn_off";
76
+ toggle: "toggle";
77
+ }>;
78
+ }, z.core.$strip>;
100
79
  export declare const listEntitiesSchema: z.ZodObject<{
101
80
  domain: z.ZodOptional<z.ZodString>;
102
81
  search: z.ZodOptional<z.ZodString>;
103
82
  state: z.ZodOptional<z.ZodString>;
104
83
  limit: z.ZodOptional<z.ZodNumber>;
105
- }, "strip", z.ZodTypeAny, {
106
- domain?: string | undefined;
107
- search?: string | undefined;
108
- limit?: number | undefined;
109
- state?: string | undefined;
110
- }, {
111
- domain?: string | undefined;
112
- search?: string | undefined;
113
- limit?: number | undefined;
114
- state?: string | undefined;
115
- }>;
84
+ }, z.core.$strip>;
116
85
  export declare const automationFilterSchema: z.ZodObject<{
117
- state: z.ZodOptional<z.ZodEnum<["on", "off"]>>;
118
- }, "strip", z.ZodTypeAny, {
119
- state?: "on" | "off" | undefined;
120
- }, {
121
- state?: "on" | "off" | undefined;
122
- }>;
86
+ state: z.ZodOptional<z.ZodEnum<{
87
+ on: "on";
88
+ off: "off";
89
+ }>>;
90
+ }, z.core.$strip>;
123
91
  export declare const systemLogSchema: z.ZodObject<{
124
92
  hours: z.ZodOptional<z.ZodNumber>;
125
93
  entity_id: z.ZodOptional<z.ZodString>;
126
94
  limit: z.ZodOptional<z.ZodNumber>;
127
- }, "strip", z.ZodTypeAny, {
128
- entity_id?: string | undefined;
129
- limit?: number | undefined;
130
- hours?: number | undefined;
131
- }, {
132
- entity_id?: string | undefined;
133
- limit?: number | undefined;
134
- hours?: number | undefined;
135
- }>;
95
+ }, z.core.$strip>;
136
96
  export declare const automationIdSchema: z.ZodObject<{
137
97
  automation_id: z.ZodString;
138
- }, "strip", z.ZodTypeAny, {
139
- automation_id: string;
140
- }, {
141
- automation_id: string;
142
- }>;
98
+ }, z.core.$strip>;
143
99
  export declare const serviceCallSchema: z.ZodObject<{
144
100
  domain: z.ZodString;
145
101
  service: z.ZodString;
146
102
  service_data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
147
103
  target: z.ZodOptional<z.ZodObject<{
148
- entity_id: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
149
- device_id: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
150
- area_id: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
151
- }, "strip", z.ZodTypeAny, {
152
- entity_id?: string | string[] | undefined;
153
- device_id?: string | string[] | undefined;
154
- area_id?: string | string[] | undefined;
155
- }, {
156
- entity_id?: string | string[] | undefined;
157
- device_id?: string | string[] | undefined;
158
- area_id?: string | string[] | undefined;
159
- }>>;
160
- }, "strip", z.ZodTypeAny, {
161
- service: string;
162
- domain: string;
163
- target?: {
164
- entity_id?: string | string[] | undefined;
165
- device_id?: string | string[] | undefined;
166
- area_id?: string | string[] | undefined;
167
- } | undefined;
168
- service_data?: Record<string, unknown> | undefined;
169
- }, {
170
- service: string;
171
- domain: string;
172
- target?: {
173
- entity_id?: string | string[] | undefined;
174
- device_id?: string | string[] | undefined;
175
- area_id?: string | string[] | undefined;
176
- } | undefined;
177
- service_data?: Record<string, unknown> | undefined;
178
- }>;
104
+ entity_id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
105
+ device_id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
106
+ area_id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
107
+ }, z.core.$strip>>;
108
+ }, z.core.$strip>;
179
109
  export declare const analyzeSensorsSchema: z.ZodObject<{
180
110
  sensors: z.ZodRecord<z.ZodString, z.ZodUnknown>;
181
- }, "strip", z.ZodTypeAny, {
182
- sensors: Record<string, unknown>;
183
- }, {
184
- sensors: Record<string, unknown>;
185
- }>;
111
+ }, z.core.$strip>;
186
112
  export declare const triggerAutomationSchema: z.ZodObject<{
187
113
  entity_id: z.ZodString;
188
114
  variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
189
- }, "strip", z.ZodTypeAny, {
190
- entity_id: string;
191
- variables?: Record<string, unknown> | undefined;
192
- }, {
193
- entity_id: string;
194
- variables?: Record<string, unknown> | undefined;
195
- }>;
115
+ }, z.core.$strip>;
196
116
  export declare const createAutomationSchema: z.ZodObject<{
197
117
  alias: z.ZodString;
198
118
  description: z.ZodOptional<z.ZodString>;
199
- mode: z.ZodOptional<z.ZodEnum<["single", "restart", "queued", "parallel"]>>;
119
+ mode: z.ZodOptional<z.ZodEnum<{
120
+ single: "single";
121
+ restart: "restart";
122
+ queued: "queued";
123
+ parallel: "parallel";
124
+ }>>;
200
125
  trigger: z.ZodUnknown;
201
126
  condition: z.ZodOptional<z.ZodUnknown>;
202
127
  action: z.ZodUnknown;
203
- }, "strip", z.ZodTypeAny, {
204
- alias: string;
205
- description?: string | undefined;
206
- condition?: unknown;
207
- mode?: "single" | "restart" | "queued" | "parallel" | undefined;
208
- trigger?: unknown;
209
- action?: unknown;
210
- }, {
211
- alias: string;
212
- description?: string | undefined;
213
- condition?: unknown;
214
- mode?: "single" | "restart" | "queued" | "parallel" | undefined;
215
- trigger?: unknown;
216
- action?: unknown;
217
- }>;
128
+ }, z.core.$strip>;
218
129
  export declare const controlLightSchema: z.ZodObject<{
219
130
  entity_id: z.ZodString;
220
- action: z.ZodEnum<["turn_on", "turn_off", "toggle"]>;
131
+ action: z.ZodEnum<{
132
+ turn_on: "turn_on";
133
+ turn_off: "turn_off";
134
+ toggle: "toggle";
135
+ }>;
221
136
  brightness_pct: z.ZodOptional<z.ZodNumber>;
222
137
  color_temp_kelvin: z.ZodOptional<z.ZodNumber>;
223
138
  rgb_color: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
224
139
  transition: z.ZodOptional<z.ZodNumber>;
225
- }, "strip", z.ZodTypeAny, {
226
- entity_id: string;
227
- action: "turn_on" | "turn_off" | "toggle";
228
- transition?: number | undefined;
229
- brightness_pct?: number | undefined;
230
- rgb_color?: [number, number, number] | undefined;
231
- color_temp_kelvin?: number | undefined;
232
- }, {
233
- entity_id: string;
234
- action: "turn_on" | "turn_off" | "toggle";
235
- transition?: number | undefined;
236
- brightness_pct?: number | undefined;
237
- rgb_color?: [number, number, number] | undefined;
238
- color_temp_kelvin?: number | undefined;
239
- }>;
140
+ }, z.core.$strip>;
240
141
  export declare const controlClimateSchema: z.ZodObject<{
241
142
  entity_id: z.ZodString;
242
143
  temperature: z.ZodOptional<z.ZodNumber>;
243
- hvac_mode: z.ZodOptional<z.ZodEnum<["off", "heat", "cool", "heat_cool", "auto", "dry", "fan_only"]>>;
144
+ hvac_mode: z.ZodOptional<z.ZodEnum<{
145
+ off: "off";
146
+ heat: "heat";
147
+ cool: "cool";
148
+ heat_cool: "heat_cool";
149
+ auto: "auto";
150
+ dry: "dry";
151
+ fan_only: "fan_only";
152
+ }>>;
244
153
  fan_mode: z.ZodOptional<z.ZodString>;
245
154
  preset_mode: z.ZodOptional<z.ZodString>;
246
- }, "strip", z.ZodTypeAny, {
247
- entity_id: string;
248
- temperature?: number | undefined;
249
- hvac_mode?: "off" | "heat" | "cool" | "heat_cool" | "auto" | "dry" | "fan_only" | undefined;
250
- fan_mode?: string | undefined;
251
- preset_mode?: string | undefined;
252
- }, {
253
- entity_id: string;
254
- temperature?: number | undefined;
255
- hvac_mode?: "off" | "heat" | "cool" | "heat_cool" | "auto" | "dry" | "fan_only" | undefined;
256
- fan_mode?: string | undefined;
257
- preset_mode?: string | undefined;
258
- }>;
155
+ }, z.core.$strip>;
259
156
  export declare const controlMediaPlayerSchema: z.ZodObject<{
260
157
  entity_id: z.ZodString;
261
- action: z.ZodEnum<["play", "pause", "stop", "next", "previous", "volume_set", "volume_mute"]>;
158
+ action: z.ZodEnum<{
159
+ play: "play";
160
+ next: "next";
161
+ volume_set: "volume_set";
162
+ volume_mute: "volume_mute";
163
+ stop: "stop";
164
+ pause: "pause";
165
+ previous: "previous";
166
+ }>;
262
167
  volume_level: z.ZodOptional<z.ZodNumber>;
263
168
  is_volume_muted: z.ZodOptional<z.ZodBoolean>;
264
- }, "strip", z.ZodTypeAny, {
265
- entity_id: string;
266
- action: "play" | "next" | "volume_set" | "volume_mute" | "stop" | "pause" | "previous";
267
- volume_level?: number | undefined;
268
- is_volume_muted?: boolean | undefined;
269
- }, {
270
- entity_id: string;
271
- action: "play" | "next" | "volume_set" | "volume_mute" | "stop" | "pause" | "previous";
272
- volume_level?: number | undefined;
273
- is_volume_muted?: boolean | undefined;
274
- }>;
169
+ }, z.core.$strip>;
275
170
  export declare const controlCoverSchema: z.ZodObject<{
276
171
  entity_id: z.ZodString;
277
- action: z.ZodEnum<["open", "close", "stop", "set_position", "set_tilt"]>;
172
+ action: z.ZodEnum<{
173
+ open: "open";
174
+ stop: "stop";
175
+ close: "close";
176
+ set_position: "set_position";
177
+ set_tilt: "set_tilt";
178
+ }>;
278
179
  position: z.ZodOptional<z.ZodNumber>;
279
180
  tilt_position: z.ZodOptional<z.ZodNumber>;
280
- }, "strip", z.ZodTypeAny, {
281
- entity_id: string;
282
- action: "open" | "stop" | "close" | "set_position" | "set_tilt";
283
- position?: number | undefined;
284
- tilt_position?: number | undefined;
285
- }, {
286
- entity_id: string;
287
- action: "open" | "stop" | "close" | "set_position" | "set_tilt";
288
- position?: number | undefined;
289
- tilt_position?: number | undefined;
290
- }>;
181
+ }, z.core.$strip>;
291
182
  export declare const controlFanSchema: z.ZodObject<{
292
183
  entity_id: z.ZodString;
293
- action: z.ZodEnum<["turn_on", "turn_off", "toggle", "set_speed", "oscillate", "set_direction"]>;
184
+ action: z.ZodEnum<{
185
+ turn_on: "turn_on";
186
+ turn_off: "turn_off";
187
+ toggle: "toggle";
188
+ oscillate: "oscillate";
189
+ set_direction: "set_direction";
190
+ set_speed: "set_speed";
191
+ }>;
294
192
  percentage: z.ZodOptional<z.ZodNumber>;
295
193
  oscillating: z.ZodOptional<z.ZodBoolean>;
296
- direction: z.ZodOptional<z.ZodEnum<["forward", "reverse"]>>;
297
- }, "strip", z.ZodTypeAny, {
298
- entity_id: string;
299
- action: "turn_on" | "turn_off" | "toggle" | "oscillate" | "set_direction" | "set_speed";
300
- percentage?: number | undefined;
301
- oscillating?: boolean | undefined;
302
- direction?: "reverse" | "forward" | undefined;
303
- }, {
304
- entity_id: string;
305
- action: "turn_on" | "turn_off" | "toggle" | "oscillate" | "set_direction" | "set_speed";
306
- percentage?: number | undefined;
307
- oscillating?: boolean | undefined;
308
- direction?: "reverse" | "forward" | undefined;
309
- }>;
194
+ direction: z.ZodOptional<z.ZodEnum<{
195
+ reverse: "reverse";
196
+ forward: "forward";
197
+ }>>;
198
+ }, z.core.$strip>;
310
199
  export declare const runScriptSchema: z.ZodObject<{
311
200
  entity_id: z.ZodString;
312
201
  variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
313
- }, "strip", z.ZodTypeAny, {
314
- entity_id: string;
315
- variables?: Record<string, unknown> | undefined;
316
- }, {
317
- entity_id: string;
318
- variables?: Record<string, unknown> | undefined;
319
- }>;
202
+ }, z.core.$strip>;
320
203
  export declare const notificationActionSchema: z.ZodObject<{
321
204
  action: z.ZodString;
322
205
  title: z.ZodString;
323
206
  uri: z.ZodOptional<z.ZodString>;
324
- }, "strip", z.ZodTypeAny, {
325
- action: string;
326
- title: string;
327
- uri?: string | undefined;
328
- }, {
329
- action: string;
330
- title: string;
331
- uri?: string | undefined;
332
- }>;
207
+ }, z.core.$strip>;
333
208
  export declare const sendNotificationSchema: z.ZodObject<{
334
209
  message: z.ZodString;
335
210
  title: z.ZodOptional<z.ZodString>;
336
211
  target: z.ZodOptional<z.ZodString>;
337
212
  tag: z.ZodOptional<z.ZodString>;
338
213
  group: z.ZodOptional<z.ZodString>;
339
- priority: z.ZodOptional<z.ZodEnum<["high", "normal", "low", "min"]>>;
340
- importance: z.ZodOptional<z.ZodEnum<["high", "default", "low", "min"]>>;
214
+ priority: z.ZodOptional<z.ZodEnum<{
215
+ high: "high";
216
+ low: "low";
217
+ normal: "normal";
218
+ min: "min";
219
+ }>>;
220
+ importance: z.ZodOptional<z.ZodEnum<{
221
+ default: "default";
222
+ high: "high";
223
+ low: "low";
224
+ min: "min";
225
+ }>>;
341
226
  ttl: z.ZodOptional<z.ZodNumber>;
342
227
  actions: z.ZodOptional<z.ZodArray<z.ZodObject<{
343
228
  action: z.ZodString;
344
229
  title: z.ZodString;
345
230
  uri: z.ZodOptional<z.ZodString>;
346
- }, "strip", z.ZodTypeAny, {
347
- action: string;
348
- title: string;
349
- uri?: string | undefined;
350
- }, {
351
- action: string;
352
- title: string;
353
- uri?: string | undefined;
354
- }>, "many">>;
231
+ }, z.core.$strip>>>;
355
232
  image: z.ZodOptional<z.ZodString>;
356
233
  video: z.ZodOptional<z.ZodString>;
357
234
  icon_url: z.ZodOptional<z.ZodString>;
@@ -359,125 +236,41 @@ export declare const sendNotificationSchema: z.ZodObject<{
359
236
  persistent: z.ZodOptional<z.ZodBoolean>;
360
237
  clickAction: z.ZodOptional<z.ZodString>;
361
238
  channel: z.ZodOptional<z.ZodString>;
362
- vibrationPattern: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
239
+ vibrationPattern: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
363
240
  ledColor: z.ZodOptional<z.ZodString>;
364
241
  sound: z.ZodOptional<z.ZodString>;
365
242
  badge: z.ZodOptional<z.ZodNumber>;
366
- interruptionLevel: z.ZodOptional<z.ZodEnum<["passive", "active", "time-sensitive", "critical"]>>;
243
+ interruptionLevel: z.ZodOptional<z.ZodEnum<{
244
+ critical: "critical";
245
+ passive: "passive";
246
+ active: "active";
247
+ "time-sensitive": "time-sensitive";
248
+ }>>;
367
249
  data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
368
- }, "strip", z.ZodTypeAny, {
369
- message: string;
370
- target?: string | undefined;
371
- data?: Record<string, unknown> | undefined;
372
- tag?: string | undefined;
373
- title?: string | undefined;
374
- ttl?: number | undefined;
375
- priority?: "high" | "low" | "normal" | "min" | undefined;
376
- image?: string | undefined;
377
- group?: string | undefined;
378
- importance?: "default" | "high" | "low" | "min" | undefined;
379
- actions?: {
380
- action: string;
381
- title: string;
382
- uri?: string | undefined;
383
- }[] | undefined;
384
- video?: string | undefined;
385
- icon_url?: string | undefined;
386
- sticky?: boolean | undefined;
387
- persistent?: boolean | undefined;
388
- clickAction?: string | undefined;
389
- channel?: string | undefined;
390
- vibrationPattern?: number[] | undefined;
391
- ledColor?: string | undefined;
392
- sound?: string | undefined;
393
- badge?: number | undefined;
394
- interruptionLevel?: "critical" | "passive" | "active" | "time-sensitive" | undefined;
395
- }, {
396
- message: string;
397
- target?: string | undefined;
398
- data?: Record<string, unknown> | undefined;
399
- tag?: string | undefined;
400
- title?: string | undefined;
401
- ttl?: number | undefined;
402
- priority?: "high" | "low" | "normal" | "min" | undefined;
403
- image?: string | undefined;
404
- group?: string | undefined;
405
- importance?: "default" | "high" | "low" | "min" | undefined;
406
- actions?: {
407
- action: string;
408
- title: string;
409
- uri?: string | undefined;
410
- }[] | undefined;
411
- video?: string | undefined;
412
- icon_url?: string | undefined;
413
- sticky?: boolean | undefined;
414
- persistent?: boolean | undefined;
415
- clickAction?: string | undefined;
416
- channel?: string | undefined;
417
- vibrationPattern?: number[] | undefined;
418
- ledColor?: string | undefined;
419
- sound?: string | undefined;
420
- badge?: number | undefined;
421
- interruptionLevel?: "critical" | "passive" | "active" | "time-sensitive" | undefined;
422
- }>;
423
- export declare const listNotificationTargetsSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
424
- export declare const listCalendarsSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
250
+ }, z.core.$strip>;
251
+ export declare const listNotificationTargetsSchema: z.ZodObject<{}, z.core.$strip>;
252
+ export declare const listCalendarsSchema: z.ZodObject<{}, z.core.$strip>;
425
253
  export declare const getCalendarEventsSchema: z.ZodObject<{
426
254
  entity_id: z.ZodOptional<z.ZodString>;
427
255
  start_date: z.ZodOptional<z.ZodString>;
428
256
  end_date: z.ZodOptional<z.ZodString>;
429
257
  days: z.ZodOptional<z.ZodNumber>;
430
- }, "strip", z.ZodTypeAny, {
431
- entity_id?: string | undefined;
432
- start_date?: string | undefined;
433
- end_date?: string | undefined;
434
- days?: number | undefined;
435
- }, {
436
- entity_id?: string | undefined;
437
- start_date?: string | undefined;
438
- end_date?: string | undefined;
439
- days?: number | undefined;
440
- }>;
258
+ }, z.core.$strip>;
441
259
  export declare const siteInputSchema: z.ZodObject<{
442
260
  siteId: z.ZodOptional<z.ZodString>;
443
- }, "strip", z.ZodTypeAny, {
444
- siteId?: string | undefined;
445
- }, {
446
- siteId?: string | undefined;
447
- }>;
261
+ }, z.core.$strip>;
448
262
  export declare const clientIdSchema: z.ZodObject<{
449
263
  siteId: z.ZodOptional<z.ZodString>;
450
- } & {
451
264
  clientId: z.ZodString;
452
- }, "strip", z.ZodTypeAny, {
453
- clientId: string;
454
- siteId?: string | undefined;
455
- }, {
456
- clientId: string;
457
- siteId?: string | undefined;
458
- }>;
265
+ }, z.core.$strip>;
459
266
  export declare const deviceIdSchema: z.ZodObject<{
460
267
  siteId: z.ZodOptional<z.ZodString>;
461
- } & {
462
268
  deviceId: z.ZodString;
463
- }, "strip", z.ZodTypeAny, {
464
- deviceId: string;
465
- siteId?: string | undefined;
466
- }, {
467
- deviceId: string;
468
- siteId?: string | undefined;
469
- }>;
269
+ }, z.core.$strip>;
470
270
  export declare const stackIdSchema: z.ZodObject<{
471
271
  siteId: z.ZodOptional<z.ZodString>;
472
- } & {
473
272
  stackId: z.ZodString;
474
- }, "strip", z.ZodTypeAny, {
475
- stackId: string;
476
- siteId?: string | undefined;
477
- }, {
478
- stackId: string;
479
- siteId?: string | undefined;
480
- }>;
273
+ }, z.core.$strip>;
481
274
  /**
482
275
  * Pagination schema for Home Assistant entity queries.
483
276
  * Reduces response size by returning paginated, lightweight entities by default.
@@ -486,15 +279,7 @@ export declare const haPaginationSchema: z.ZodObject<{
486
279
  page: z.ZodDefault<z.ZodNumber>;
487
280
  pageSize: z.ZodDefault<z.ZodNumber>;
488
281
  includeAttributes: z.ZodDefault<z.ZodBoolean>;
489
- }, "strip", z.ZodTypeAny, {
490
- page: number;
491
- pageSize: number;
492
- includeAttributes: boolean;
493
- }, {
494
- page?: number | undefined;
495
- pageSize?: number | undefined;
496
- includeAttributes?: boolean | undefined;
497
- }>;
282
+ }, z.core.$strip>;
498
283
  /**
499
284
  * Pagination parameters interface for Home Assistant queries.
500
285
  */
@@ -35,7 +35,7 @@ export function setLocalFullTrust(enabled) {
35
35
  * semantics as `wrapToolHandler`, instead of re-reading `authInfo` ad hoc.
36
36
  */
37
37
  export function getCallerPermissions(extra) {
38
- return extra.authInfo?.extra?.permissions ?? (localFullTrust ? 0xFF : 0);
38
+ return extra.http?.authInfo?.extra?.permissions ?? (localFullTrust ? 0xFF : 0);
39
39
  }
40
40
  /**
41
41
  * Convert any value to a CallToolResult
@@ -193,7 +193,7 @@ export const automationIdSchema = z.object({
193
193
  export const serviceCallSchema = z.object({
194
194
  domain: z.string().describe('Service domain (e.g., "light", "switch", "climate", "notify")'),
195
195
  service: z.string().describe('Service name (e.g., "turn_on", "turn_off", "set_temperature")'),
196
- service_data: z.record(z.unknown()).optional().describe('Optional service data'),
196
+ service_data: z.record(z.string(), z.unknown()).optional().describe('Optional service data'),
197
197
  target: z.object({
198
198
  entity_id: z.union([z.string(), z.array(z.string())]).optional(),
199
199
  device_id: z.union([z.string(), z.array(z.string())]).optional(),
@@ -202,12 +202,12 @@ export const serviceCallSchema = z.object({
202
202
  });
203
203
  // Analyze sensors schema
204
204
  export const analyzeSensorsSchema = z.object({
205
- sensors: z.record(z.unknown()).describe('Sensor data to analyze. Object with entity_id keys and {state, unit, attributes} values.'),
205
+ sensors: z.record(z.string(), z.unknown()).describe('Sensor data to analyze. Object with entity_id keys and {state, unit, attributes} values.'),
206
206
  });
207
207
  // Trigger automation schema
208
208
  export const triggerAutomationSchema = z.object({
209
209
  entity_id: z.string().describe('The automation entity ID (e.g., "automation.turn_on_lights")'),
210
- variables: z.record(z.unknown()).optional().describe('Optional variables to pass to the automation'),
210
+ variables: z.record(z.string(), z.unknown()).optional().describe('Optional variables to pass to the automation'),
211
211
  });
212
212
  // Create automation schema
213
213
  export const createAutomationSchema = z.object({
@@ -260,7 +260,7 @@ export const controlFanSchema = z.object({
260
260
  // Run script schema
261
261
  export const runScriptSchema = z.object({
262
262
  entity_id: z.string().describe('The script entity ID (e.g., "script.morning_routine")'),
263
- variables: z.record(z.unknown()).optional().describe('Optional variables to pass to the script'),
263
+ variables: z.record(z.string(), z.unknown()).optional().describe('Optional variables to pass to the script'),
264
264
  });
265
265
  // Notification action schema for actionable notifications
266
266
  export const notificationActionSchema = z.object({
@@ -298,7 +298,7 @@ export const sendNotificationSchema = z.object({
298
298
  badge: z.number().optional().describe('App badge count (iOS)'),
299
299
  interruptionLevel: z.enum(['passive', 'active', 'time-sensitive', 'critical']).optional().describe('iOS interruption level'),
300
300
  // Raw data passthrough for advanced use
301
- data: z.record(z.unknown()).optional().describe('Additional raw data to pass to notification service'),
301
+ data: z.record(z.string(), z.unknown()).optional().describe('Additional raw data to pass to notification service'),
302
302
  });
303
303
  // List notification targets schema (empty - no params needed)
304
304
  export const listNotificationTargetsSchema = z.object({});