@dizzlkheinz/ynab-mcpb 0.18.3 → 0.19.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 (346) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/CLAUDE.md +87 -8
  3. package/bin/ynab-mcp-server.cjs +2 -2
  4. package/bin/ynab-mcp-server.js +3 -3
  5. package/biome.json +39 -0
  6. package/dist/bundle/index.cjs +67 -67
  7. package/dist/index.d.ts +1 -1
  8. package/dist/index.js +27 -27
  9. package/dist/server/YNABMCPServer.d.ts +3 -4
  10. package/dist/server/YNABMCPServer.js +111 -116
  11. package/dist/server/budgetResolver.d.ts +6 -5
  12. package/dist/server/budgetResolver.js +46 -36
  13. package/dist/server/cacheKeys.js +6 -6
  14. package/dist/server/cacheManager.js +14 -11
  15. package/dist/server/completions.d.ts +2 -2
  16. package/dist/server/completions.js +20 -15
  17. package/dist/server/config.d.ts +10 -5
  18. package/dist/server/config.js +24 -7
  19. package/dist/server/deltaCache.d.ts +2 -2
  20. package/dist/server/deltaCache.js +22 -16
  21. package/dist/server/deltaCache.merge.d.ts +2 -2
  22. package/dist/server/diagnostics.d.ts +4 -4
  23. package/dist/server/diagnostics.js +38 -32
  24. package/dist/server/errorHandler.d.ts +5 -12
  25. package/dist/server/errorHandler.js +219 -217
  26. package/dist/server/prompts.d.ts +2 -2
  27. package/dist/server/prompts.js +45 -45
  28. package/dist/server/rateLimiter.js +4 -4
  29. package/dist/server/requestLogger.d.ts +1 -1
  30. package/dist/server/requestLogger.js +40 -35
  31. package/dist/server/resources.d.ts +3 -3
  32. package/dist/server/resources.js +55 -52
  33. package/dist/server/responseFormatter.js +6 -6
  34. package/dist/server/securityMiddleware.d.ts +2 -2
  35. package/dist/server/securityMiddleware.js +22 -20
  36. package/dist/server/serverKnowledgeStore.js +1 -1
  37. package/dist/server/toolRegistry.d.ts +3 -3
  38. package/dist/server/toolRegistry.js +47 -40
  39. package/dist/tools/__tests__/deltaTestUtils.d.ts +3 -3
  40. package/dist/tools/__tests__/deltaTestUtils.js +2 -2
  41. package/dist/tools/accountTools.d.ts +9 -8
  42. package/dist/tools/accountTools.js +47 -47
  43. package/dist/tools/adapters.d.ts +13 -8
  44. package/dist/tools/adapters.js +21 -11
  45. package/dist/tools/budgetTools.d.ts +8 -7
  46. package/dist/tools/budgetTools.js +22 -22
  47. package/dist/tools/categoryTools.d.ts +9 -8
  48. package/dist/tools/categoryTools.js +68 -59
  49. package/dist/tools/compareTransactions/formatter.d.ts +3 -3
  50. package/dist/tools/compareTransactions/formatter.js +9 -9
  51. package/dist/tools/compareTransactions/index.d.ts +6 -6
  52. package/dist/tools/compareTransactions/index.js +58 -43
  53. package/dist/tools/compareTransactions/matcher.d.ts +1 -1
  54. package/dist/tools/compareTransactions/matcher.js +28 -15
  55. package/dist/tools/compareTransactions/parser.d.ts +2 -2
  56. package/dist/tools/compareTransactions/parser.js +144 -138
  57. package/dist/tools/compareTransactions/types.d.ts +4 -4
  58. package/dist/tools/compareTransactions.d.ts +1 -1
  59. package/dist/tools/compareTransactions.js +1 -1
  60. package/dist/tools/deltaFetcher.d.ts +2 -2
  61. package/dist/tools/deltaFetcher.js +16 -15
  62. package/dist/tools/deltaSupport.d.ts +4 -4
  63. package/dist/tools/deltaSupport.js +35 -41
  64. package/dist/tools/exportTransactions.d.ts +5 -4
  65. package/dist/tools/exportTransactions.js +61 -59
  66. package/dist/tools/monthTools.d.ts +7 -6
  67. package/dist/tools/monthTools.js +31 -29
  68. package/dist/tools/payeeTools.d.ts +7 -6
  69. package/dist/tools/payeeTools.js +28 -28
  70. package/dist/tools/reconcileAdapter.d.ts +2 -2
  71. package/dist/tools/reconcileAdapter.js +21 -11
  72. package/dist/tools/reconciliation/analyzer.d.ts +4 -4
  73. package/dist/tools/reconciliation/analyzer.js +136 -57
  74. package/dist/tools/reconciliation/csvParser.d.ts +3 -3
  75. package/dist/tools/reconciliation/csvParser.js +128 -104
  76. package/dist/tools/reconciliation/executor.d.ts +4 -4
  77. package/dist/tools/reconciliation/executor.js +148 -109
  78. package/dist/tools/reconciliation/index.d.ts +10 -10
  79. package/dist/tools/reconciliation/index.js +96 -83
  80. package/dist/tools/reconciliation/matcher.d.ts +3 -3
  81. package/dist/tools/reconciliation/matcher.js +17 -16
  82. package/dist/tools/reconciliation/payeeNormalizer.js +19 -8
  83. package/dist/tools/reconciliation/recommendationEngine.d.ts +1 -1
  84. package/dist/tools/reconciliation/recommendationEngine.js +40 -40
  85. package/dist/tools/reconciliation/reportFormatter.d.ts +2 -2
  86. package/dist/tools/reconciliation/reportFormatter.js +79 -54
  87. package/dist/tools/reconciliation/signDetector.d.ts +1 -1
  88. package/dist/tools/reconciliation/types.d.ts +19 -16
  89. package/dist/tools/reconciliation/ynabAdapter.d.ts +2 -2
  90. package/dist/tools/schemas/common.d.ts +1 -1
  91. package/dist/tools/schemas/common.js +1 -1
  92. package/dist/tools/schemas/outputs/accountOutputs.d.ts +1 -1
  93. package/dist/tools/schemas/outputs/accountOutputs.js +24 -18
  94. package/dist/tools/schemas/outputs/budgetOutputs.d.ts +1 -1
  95. package/dist/tools/schemas/outputs/budgetOutputs.js +14 -11
  96. package/dist/tools/schemas/outputs/categoryOutputs.d.ts +1 -1
  97. package/dist/tools/schemas/outputs/categoryOutputs.js +49 -29
  98. package/dist/tools/schemas/outputs/comparisonOutputs.d.ts +1 -1
  99. package/dist/tools/schemas/outputs/comparisonOutputs.js +12 -12
  100. package/dist/tools/schemas/outputs/index.d.ts +14 -14
  101. package/dist/tools/schemas/outputs/index.js +14 -14
  102. package/dist/tools/schemas/outputs/monthOutputs.d.ts +1 -1
  103. package/dist/tools/schemas/outputs/monthOutputs.js +56 -41
  104. package/dist/tools/schemas/outputs/payeeOutputs.d.ts +1 -1
  105. package/dist/tools/schemas/outputs/payeeOutputs.js +10 -10
  106. package/dist/tools/schemas/outputs/reconciliationOutputs.d.ts +2 -2
  107. package/dist/tools/schemas/outputs/reconciliationOutputs.js +45 -45
  108. package/dist/tools/schemas/outputs/transactionMutationOutputs.d.ts +1 -1
  109. package/dist/tools/schemas/outputs/transactionMutationOutputs.js +28 -22
  110. package/dist/tools/schemas/outputs/transactionOutputs.d.ts +1 -1
  111. package/dist/tools/schemas/outputs/transactionOutputs.js +43 -35
  112. package/dist/tools/schemas/outputs/utilityOutputs.d.ts +1 -1
  113. package/dist/tools/schemas/outputs/utilityOutputs.js +5 -3
  114. package/dist/tools/schemas/shared/commonOutputs.d.ts +1 -1
  115. package/dist/tools/schemas/shared/commonOutputs.js +15 -9
  116. package/dist/tools/transactionReadTools.d.ts +11 -0
  117. package/dist/tools/transactionReadTools.js +202 -0
  118. package/dist/tools/transactionSchemas.d.ts +309 -0
  119. package/dist/tools/transactionSchemas.js +235 -0
  120. package/dist/tools/transactionTools.d.ts +6 -302
  121. package/dist/tools/transactionTools.js +7 -2054
  122. package/dist/tools/transactionUtils.d.ts +31 -0
  123. package/dist/tools/transactionUtils.js +364 -0
  124. package/dist/tools/transactionWriteTools.d.ts +20 -0
  125. package/dist/tools/transactionWriteTools.js +1342 -0
  126. package/dist/tools/utilityTools.d.ts +5 -4
  127. package/dist/tools/utilityTools.js +11 -11
  128. package/dist/types/index.d.ts +7 -7
  129. package/dist/types/index.js +6 -6
  130. package/dist/types/reconciliation.d.ts +1 -1
  131. package/dist/types/toolRegistration.d.ts +14 -12
  132. package/dist/utils/amountUtils.js +1 -1
  133. package/dist/utils/dateUtils.js +4 -4
  134. package/dist/utils/errors.d.ts +3 -3
  135. package/dist/utils/errors.js +4 -4
  136. package/dist/utils/money.d.ts +2 -2
  137. package/dist/utils/money.js +8 -8
  138. package/dist/utils/validationError.d.ts +1 -1
  139. package/dist/utils/validationError.js +1 -1
  140. package/docs/assets/examples/reconciliation-with-recommendations.json +66 -66
  141. package/docs/assets/schemas/reconciliation-v2.json +360 -336
  142. package/docs/plans/2025-12-25-transaction-tools-refactor-design.md +211 -0
  143. package/docs/plans/2025-12-25-transaction-tools-refactor.md +905 -0
  144. package/esbuild.config.mjs +53 -50
  145. package/meta.json +12548 -12548
  146. package/package.json +98 -109
  147. package/scripts/analyze-bundle.mjs +33 -30
  148. package/scripts/create-pr-description.js +169 -120
  149. package/scripts/run-all-tests.js +205 -0
  150. package/scripts/run-domain-integration-tests.js +28 -18
  151. package/scripts/run-generate-mcpb.js +19 -17
  152. package/scripts/run-throttled-integration-tests.js +92 -83
  153. package/scripts/test-delta-params.mjs +149 -120
  154. package/scripts/test-recommendations.ts +36 -32
  155. package/scripts/tmpTransaction.ts +80 -43
  156. package/scripts/validate-env.js +98 -91
  157. package/scripts/verify-build.js +78 -76
  158. package/src/__tests__/comprehensive.integration.test.ts +1281 -1154
  159. package/src/__tests__/performance.test.ts +723 -671
  160. package/src/__tests__/setup.ts +442 -395
  161. package/src/__tests__/smoke.e2e.test.ts +41 -39
  162. package/src/__tests__/testRunner.ts +314 -295
  163. package/src/__tests__/testUtils.ts +456 -364
  164. package/src/__tests__/tools/reconciliation/csvParser.integration.test.ts +109 -107
  165. package/src/__tests__/tools/reconciliation/real-world.integration.test.ts +41 -41
  166. package/src/index.ts +68 -59
  167. package/src/server/CLAUDE.md +480 -0
  168. package/src/server/YNABMCPServer.ts +821 -794
  169. package/src/server/__tests__/YNABMCPServer.integration.test.ts +929 -893
  170. package/src/server/__tests__/YNABMCPServer.test.ts +903 -899
  171. package/src/server/__tests__/budgetResolver.test.ts +466 -423
  172. package/src/server/__tests__/cacheManager.test.ts +891 -874
  173. package/src/server/__tests__/completions.integration.test.ts +115 -106
  174. package/src/server/__tests__/completions.test.ts +334 -313
  175. package/src/server/__tests__/config.test.ts +98 -86
  176. package/src/server/__tests__/deltaCache.merge.test.ts +774 -703
  177. package/src/server/__tests__/deltaCache.swr.test.ts +198 -153
  178. package/src/server/__tests__/deltaCache.test.ts +946 -759
  179. package/src/server/__tests__/diagnostics.test.ts +825 -792
  180. package/src/server/__tests__/errorHandler.integration.test.ts +512 -462
  181. package/src/server/__tests__/errorHandler.test.ts +402 -397
  182. package/src/server/__tests__/prompts.test.ts +424 -347
  183. package/src/server/__tests__/rateLimiter.test.ts +313 -309
  184. package/src/server/__tests__/requestLogger.test.ts +443 -403
  185. package/src/server/__tests__/resources.template.test.ts +196 -185
  186. package/src/server/__tests__/resources.test.ts +294 -288
  187. package/src/server/__tests__/security.integration.test.ts +487 -421
  188. package/src/server/__tests__/securityMiddleware.test.ts +519 -444
  189. package/src/server/__tests__/server-startup.integration.test.ts +509 -490
  190. package/src/server/__tests__/serverKnowledgeStore.test.ts +174 -173
  191. package/src/server/__tests__/toolRegistration.test.ts +239 -210
  192. package/src/server/__tests__/toolRegistry.test.ts +907 -845
  193. package/src/server/budgetResolver.ts +221 -181
  194. package/src/server/cacheKeys.ts +6 -6
  195. package/src/server/cacheManager.ts +498 -484
  196. package/src/server/completions.ts +267 -243
  197. package/src/server/config.ts +35 -14
  198. package/src/server/deltaCache.merge.ts +146 -128
  199. package/src/server/deltaCache.ts +352 -309
  200. package/src/server/diagnostics.ts +257 -242
  201. package/src/server/errorHandler.ts +747 -744
  202. package/src/server/prompts.ts +181 -176
  203. package/src/server/rateLimiter.ts +131 -129
  204. package/src/server/requestLogger.ts +350 -322
  205. package/src/server/resources.ts +442 -374
  206. package/src/server/responseFormatter.ts +41 -37
  207. package/src/server/securityMiddleware.ts +223 -205
  208. package/src/server/serverKnowledgeStore.ts +67 -67
  209. package/src/server/toolRegistry.ts +508 -474
  210. package/src/tools/CLAUDE.md +604 -0
  211. package/src/tools/__tests__/accountTools.delta.integration.test.ts +128 -111
  212. package/src/tools/__tests__/accountTools.integration.test.ts +129 -111
  213. package/src/tools/__tests__/accountTools.test.ts +685 -638
  214. package/src/tools/__tests__/adapters.test.ts +142 -108
  215. package/src/tools/__tests__/budgetTools.delta.integration.test.ts +73 -73
  216. package/src/tools/__tests__/budgetTools.integration.test.ts +132 -124
  217. package/src/tools/__tests__/budgetTools.test.ts +442 -413
  218. package/src/tools/__tests__/categoryTools.delta.integration.test.ts +76 -68
  219. package/src/tools/__tests__/categoryTools.integration.test.ts +314 -288
  220. package/src/tools/__tests__/categoryTools.test.ts +656 -625
  221. package/src/tools/__tests__/compareTransactions/formatter.test.ts +535 -462
  222. package/src/tools/__tests__/compareTransactions/index.test.ts +378 -358
  223. package/src/tools/__tests__/compareTransactions/matcher.test.ts +497 -398
  224. package/src/tools/__tests__/compareTransactions/parser.test.ts +765 -747
  225. package/src/tools/__tests__/compareTransactions.test.ts +352 -332
  226. package/src/tools/__tests__/compareTransactions.window.test.ts +150 -146
  227. package/src/tools/__tests__/deltaFetcher.scheduled.integration.test.ts +69 -65
  228. package/src/tools/__tests__/deltaFetcher.test.ts +325 -265
  229. package/src/tools/__tests__/deltaSupport.test.ts +211 -184
  230. package/src/tools/__tests__/deltaTestUtils.ts +37 -33
  231. package/src/tools/__tests__/exportTransactions.test.ts +205 -200
  232. package/src/tools/__tests__/monthTools.delta.integration.test.ts +68 -68
  233. package/src/tools/__tests__/monthTools.integration.test.ts +178 -166
  234. package/src/tools/__tests__/monthTools.test.ts +561 -512
  235. package/src/tools/__tests__/payeeTools.delta.integration.test.ts +68 -68
  236. package/src/tools/__tests__/payeeTools.integration.test.ts +158 -142
  237. package/src/tools/__tests__/payeeTools.test.ts +486 -434
  238. package/src/tools/__tests__/transactionSchemas.test.ts +1204 -0
  239. package/src/tools/__tests__/transactionTools.integration.test.ts +875 -825
  240. package/src/tools/__tests__/transactionTools.test.ts +4923 -4366
  241. package/src/tools/__tests__/transactionUtils.test.ts +1016 -0
  242. package/src/tools/__tests__/utilityTools.integration.test.ts +32 -32
  243. package/src/tools/__tests__/utilityTools.test.ts +68 -58
  244. package/src/tools/accountTools.ts +293 -271
  245. package/src/tools/adapters.ts +120 -63
  246. package/src/tools/budgetTools.ts +121 -116
  247. package/src/tools/categoryTools.ts +379 -339
  248. package/src/tools/compareTransactions/formatter.ts +131 -119
  249. package/src/tools/compareTransactions/index.ts +249 -214
  250. package/src/tools/compareTransactions/matcher.ts +259 -209
  251. package/src/tools/compareTransactions/parser.ts +517 -487
  252. package/src/tools/compareTransactions/types.ts +38 -38
  253. package/src/tools/compareTransactions.ts +1 -1
  254. package/src/tools/deltaFetcher.ts +281 -260
  255. package/src/tools/deltaSupport.ts +264 -259
  256. package/src/tools/exportTransactions.ts +230 -218
  257. package/src/tools/monthTools.ts +180 -165
  258. package/src/tools/payeeTools.ts +152 -140
  259. package/src/tools/reconcileAdapter.ts +297 -246
  260. package/src/tools/reconciliation/CLAUDE.md +506 -0
  261. package/src/tools/reconciliation/__tests__/adapter.causes.test.ts +135 -112
  262. package/src/tools/reconciliation/__tests__/adapter.test.ts +249 -227
  263. package/src/tools/reconciliation/__tests__/analyzer.test.ts +408 -335
  264. package/src/tools/reconciliation/__tests__/csvParser.test.ts +71 -69
  265. package/src/tools/reconciliation/__tests__/executor.integration.test.ts +348 -323
  266. package/src/tools/reconciliation/__tests__/executor.progress.test.ts +503 -457
  267. package/src/tools/reconciliation/__tests__/executor.test.ts +898 -831
  268. package/src/tools/reconciliation/__tests__/matcher.test.ts +667 -663
  269. package/src/tools/reconciliation/__tests__/payeeNormalizer.test.ts +296 -276
  270. package/src/tools/reconciliation/__tests__/recommendationEngine.integration.test.ts +692 -624
  271. package/src/tools/reconciliation/__tests__/recommendationEngine.test.ts +1008 -986
  272. package/src/tools/reconciliation/__tests__/reconciliation.delta.integration.test.ts +187 -146
  273. package/src/tools/reconciliation/__tests__/reportFormatter.test.ts +583 -530
  274. package/src/tools/reconciliation/__tests__/scenarios/adapterCurrency.scenario.test.ts +75 -71
  275. package/src/tools/reconciliation/__tests__/scenarios/extremes.scenario.test.ts +70 -58
  276. package/src/tools/reconciliation/__tests__/scenarios/repeatAmount.scenario.test.ts +102 -88
  277. package/src/tools/reconciliation/__tests__/schemaUrl.test.ts +58 -43
  278. package/src/tools/reconciliation/__tests__/signDetector.test.ts +209 -206
  279. package/src/tools/reconciliation/__tests__/ynabAdapter.test.ts +66 -60
  280. package/src/tools/reconciliation/analyzer.ts +582 -406
  281. package/src/tools/reconciliation/csvParser.ts +656 -609
  282. package/src/tools/reconciliation/executor.ts +1290 -1128
  283. package/src/tools/reconciliation/index.ts +580 -528
  284. package/src/tools/reconciliation/matcher.ts +256 -240
  285. package/src/tools/reconciliation/payeeNormalizer.ts +92 -78
  286. package/src/tools/reconciliation/recommendationEngine.ts +357 -345
  287. package/src/tools/reconciliation/reportFormatter.ts +349 -276
  288. package/src/tools/reconciliation/signDetector.ts +89 -83
  289. package/src/tools/reconciliation/types.ts +164 -153
  290. package/src/tools/reconciliation/ynabAdapter.ts +17 -15
  291. package/src/tools/schemas/CLAUDE.md +546 -0
  292. package/src/tools/schemas/common.ts +1 -1
  293. package/src/tools/schemas/outputs/__tests__/accountOutputs.test.ts +410 -409
  294. package/src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts +305 -299
  295. package/src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts +431 -430
  296. package/src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts +510 -495
  297. package/src/tools/schemas/outputs/__tests__/dateValidation.test.ts +179 -153
  298. package/src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts +293 -254
  299. package/src/tools/schemas/outputs/__tests__/monthOutputs.test.ts +457 -457
  300. package/src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts +362 -356
  301. package/src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts +402 -399
  302. package/src/tools/schemas/outputs/__tests__/transactionMutationSchemas.test.ts +225 -211
  303. package/src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts +457 -454
  304. package/src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts +316 -315
  305. package/src/tools/schemas/outputs/accountOutputs.ts +40 -34
  306. package/src/tools/schemas/outputs/budgetOutputs.ts +24 -19
  307. package/src/tools/schemas/outputs/categoryOutputs.ts +76 -56
  308. package/src/tools/schemas/outputs/comparisonOutputs.ts +192 -169
  309. package/src/tools/schemas/outputs/index.ts +163 -163
  310. package/src/tools/schemas/outputs/monthOutputs.ts +95 -80
  311. package/src/tools/schemas/outputs/payeeOutputs.ts +18 -18
  312. package/src/tools/schemas/outputs/reconciliationOutputs.ts +386 -373
  313. package/src/tools/schemas/outputs/transactionMutationOutputs.ts +259 -231
  314. package/src/tools/schemas/outputs/transactionOutputs.ts +81 -71
  315. package/src/tools/schemas/outputs/utilityOutputs.ts +90 -84
  316. package/src/tools/schemas/shared/commonOutputs.ts +27 -19
  317. package/src/tools/toolCategories.ts +114 -114
  318. package/src/tools/transactionReadTools.ts +327 -0
  319. package/src/tools/transactionSchemas.ts +484 -0
  320. package/src/tools/transactionTools.ts +107 -2990
  321. package/src/tools/transactionUtils.ts +621 -0
  322. package/src/tools/transactionWriteTools.ts +2110 -0
  323. package/src/tools/utilityTools.ts +46 -41
  324. package/src/types/CLAUDE.md +477 -0
  325. package/src/types/__tests__/index.test.ts +51 -51
  326. package/src/types/index.ts +43 -39
  327. package/src/types/integration-tests.d.ts +26 -26
  328. package/src/types/reconciliation.ts +29 -29
  329. package/src/types/toolAnnotations.ts +30 -30
  330. package/src/types/toolRegistration.ts +43 -32
  331. package/src/utils/CLAUDE.md +508 -0
  332. package/src/utils/__tests__/dateUtils.test.ts +174 -168
  333. package/src/utils/__tests__/money.test.ts +193 -187
  334. package/src/utils/amountUtils.ts +5 -5
  335. package/src/utils/baseError.ts +5 -5
  336. package/src/utils/dateUtils.ts +29 -26
  337. package/src/utils/errors.ts +14 -14
  338. package/src/utils/money.ts +66 -52
  339. package/src/utils/validationError.ts +1 -1
  340. package/tsconfig.json +29 -29
  341. package/tsconfig.prod.json +16 -16
  342. package/vitest-reporters/split-json-reporter.ts +247 -204
  343. package/vitest.config.ts +99 -95
  344. package/.prettierignore +0 -10
  345. package/.prettierrc.json +0 -10
  346. package/eslint.config.js +0 -49
@@ -89,8 +89,8 @@
89
89
  * ```
90
90
  */
91
91
 
92
- import { z } from 'zod/v4';
93
- import { CacheMetadataSchema } from '../shared/commonOutputs.js';
92
+ import { z } from "zod/v4";
93
+ import { CacheMetadataSchema } from "../shared/commonOutputs.js";
94
94
 
95
95
  /**
96
96
  * Schema for a complete transaction object.
@@ -98,59 +98,65 @@ import { CacheMetadataSchema } from '../shared/commonOutputs.js';
98
98
  * Represents full transaction data with amounts in dollars (converted from YNAB milliunits).
99
99
  */
100
100
  export const TransactionSchema = z.object({
101
- /** Unique identifier for the transaction */
102
- id: z.string().describe('Transaction ID'),
101
+ /** Unique identifier for the transaction */
102
+ id: z.string().describe("Transaction ID"),
103
103
 
104
- /** Transaction date (YYYY-MM-DD format) */
105
- date: z.string().describe('Transaction date'),
104
+ /** Transaction date (YYYY-MM-DD format) */
105
+ date: z.string().describe("Transaction date"),
106
106
 
107
- /** Transaction amount in dollars (negative for outflows, positive for inflows) */
108
- amount: z.number().describe('Transaction amount in dollars'),
107
+ /** Transaction amount in dollars (negative for outflows, positive for inflows) */
108
+ amount: z.number().describe("Transaction amount in dollars"),
109
109
 
110
- /** Optional transaction memo */
111
- memo: z.string().optional().describe('Transaction memo'),
110
+ /** Optional transaction memo */
111
+ memo: z.string().optional().describe("Transaction memo"),
112
112
 
113
- /** Cleared status (uncleared, cleared, reconciled) */
114
- cleared: z.string().describe('Cleared status'),
113
+ /** Cleared status (uncleared, cleared, reconciled) */
114
+ cleared: z.string().describe("Cleared status"),
115
115
 
116
- /** Whether transaction is approved */
117
- approved: z.boolean().describe('Approved flag'),
116
+ /** Whether transaction is approved */
117
+ approved: z.boolean().describe("Approved flag"),
118
118
 
119
- /** Optional flag color */
120
- flag_color: z.string().optional().describe('Flag color'),
119
+ /** Optional flag color */
120
+ flag_color: z.string().optional().describe("Flag color"),
121
121
 
122
- /** Account ID for this transaction */
123
- account_id: z.string().describe('Account ID'),
122
+ /** Account ID for this transaction */
123
+ account_id: z.string().describe("Account ID"),
124
124
 
125
- /** Optional payee ID */
126
- payee_id: z.string().nullish().describe('Payee ID'),
125
+ /** Optional payee ID */
126
+ payee_id: z.string().nullish().describe("Payee ID"),
127
127
 
128
- /** Optional category ID */
129
- category_id: z.string().nullish().describe('Category ID'),
128
+ /** Optional category ID */
129
+ category_id: z.string().nullish().describe("Category ID"),
130
130
 
131
- /** Optional transfer account ID (for transfer transactions) */
132
- transfer_account_id: z.string().nullish().describe('Transfer account ID'),
131
+ /** Optional transfer account ID (for transfer transactions) */
132
+ transfer_account_id: z.string().nullish().describe("Transfer account ID"),
133
133
 
134
- /** Optional transfer transaction ID (for transfer transactions) */
135
- transfer_transaction_id: z.string().nullish().describe('Transfer transaction ID'),
134
+ /** Optional transfer transaction ID (for transfer transactions) */
135
+ transfer_transaction_id: z
136
+ .string()
137
+ .nullish()
138
+ .describe("Transfer transaction ID"),
136
139
 
137
- /** Optional matched transaction ID (for imported transactions) */
138
- matched_transaction_id: z.string().nullish().describe('Matched transaction ID'),
140
+ /** Optional matched transaction ID (for imported transactions) */
141
+ matched_transaction_id: z
142
+ .string()
143
+ .nullish()
144
+ .describe("Matched transaction ID"),
139
145
 
140
- /** Optional import ID */
141
- import_id: z.string().optional().describe('Import ID'),
146
+ /** Optional import ID */
147
+ import_id: z.string().optional().describe("Import ID"),
142
148
 
143
- /** Whether transaction is deleted */
144
- deleted: z.boolean().describe('Deleted flag'),
149
+ /** Whether transaction is deleted */
150
+ deleted: z.boolean().describe("Deleted flag"),
145
151
 
146
- /** Account name (enriched field, optional) */
147
- account_name: z.string().optional().describe('Account name'),
152
+ /** Account name (enriched field, optional) */
153
+ account_name: z.string().optional().describe("Account name"),
148
154
 
149
- /** Payee name (enriched field, optional) */
150
- payee_name: z.string().optional().describe('Payee name'),
155
+ /** Payee name (enriched field, optional) */
156
+ payee_name: z.string().optional().describe("Payee name"),
151
157
 
152
- /** Category name (enriched field, optional) */
153
- category_name: z.string().optional().describe('Category name'),
158
+ /** Category name (enriched field, optional) */
159
+ category_name: z.string().optional().describe("Category name"),
154
160
  });
155
161
 
156
162
  /**
@@ -159,23 +165,23 @@ export const TransactionSchema = z.object({
159
165
  * Subset of transaction fields shown in preview mode for large result sets.
160
166
  */
161
167
  export const TransactionPreviewSchema = z.object({
162
- /** Unique identifier for the transaction */
163
- id: z.string().describe('Transaction ID'),
168
+ /** Unique identifier for the transaction */
169
+ id: z.string().describe("Transaction ID"),
164
170
 
165
- /** Transaction date (YYYY-MM-DD format) */
166
- date: z.string().describe('Transaction date'),
171
+ /** Transaction date (YYYY-MM-DD format) */
172
+ date: z.string().describe("Transaction date"),
167
173
 
168
- /** Transaction amount in dollars */
169
- amount: z.number().describe('Transaction amount in dollars'),
174
+ /** Transaction amount in dollars */
175
+ amount: z.number().describe("Transaction amount in dollars"),
170
176
 
171
- /** Optional transaction memo */
172
- memo: z.string().optional().describe('Transaction memo'),
177
+ /** Optional transaction memo */
178
+ memo: z.string().optional().describe("Transaction memo"),
173
179
 
174
- /** Payee name (enriched field, optional) */
175
- payee_name: z.string().optional().describe('Payee name'),
180
+ /** Payee name (enriched field, optional) */
181
+ payee_name: z.string().optional().describe("Payee name"),
176
182
 
177
- /** Category name (enriched field, optional) */
178
- category_name: z.string().optional().describe('Category name'),
183
+ /** Category name (enriched field, optional) */
184
+ category_name: z.string().optional().describe("Category name"),
179
185
  });
180
186
 
181
187
  /**
@@ -184,11 +190,11 @@ export const TransactionPreviewSchema = z.object({
184
190
  * Returns all transactions when count <= 100.
185
191
  */
186
192
  const ListTransactionsNormalSchema = CacheMetadataSchema.extend({
187
- /** Total number of transactions */
188
- total_count: z.number().int().describe('Total transaction count'),
193
+ /** Total number of transactions */
194
+ total_count: z.number().int().describe("Total transaction count"),
189
195
 
190
- /** Array of complete transaction objects */
191
- transactions: z.array(TransactionSchema).describe('List of transactions'),
196
+ /** Array of complete transaction objects */
197
+ transactions: z.array(TransactionSchema).describe("List of transactions"),
192
198
  });
193
199
 
194
200
  /**
@@ -197,23 +203,25 @@ const ListTransactionsNormalSchema = CacheMetadataSchema.extend({
197
203
  * Returns a preview when count > 100 to avoid overwhelming responses.
198
204
  */
199
205
  const ListTransactionsPreviewSchema = z.object({
200
- /** Message explaining large result set */
201
- message: z.string().describe('Large result set message'),
206
+ /** Message explaining large result set */
207
+ message: z.string().describe("Large result set message"),
202
208
 
203
- /** Suggestion to narrow results */
204
- suggestion: z.string().describe('Suggestion to narrow results'),
209
+ /** Suggestion to narrow results */
210
+ suggestion: z.string().describe("Suggestion to narrow results"),
205
211
 
206
- /** Human-readable summary of transactions shown in preview (e.g., "First 50 transactions:") */
207
- showing: z.string().describe('Human-readable summary of transactions shown'),
212
+ /** Human-readable summary of transactions shown in preview (e.g., "First 50 transactions:") */
213
+ showing: z.string().describe("Human-readable summary of transactions shown"),
208
214
 
209
- /** Total number of transactions */
210
- total_count: z.number().int().describe('Total transaction count'),
215
+ /** Total number of transactions */
216
+ total_count: z.number().int().describe("Total transaction count"),
211
217
 
212
- /** Estimated response size in KB if all transactions returned */
213
- estimated_size_kb: z.number().describe('Estimated response size in KB'),
218
+ /** Estimated response size in KB if all transactions returned */
219
+ estimated_size_kb: z.number().describe("Estimated response size in KB"),
214
220
 
215
- /** Array of preview transaction objects */
216
- preview_transactions: z.array(TransactionPreviewSchema).describe('Preview transactions'),
221
+ /** Array of preview transaction objects */
222
+ preview_transactions: z
223
+ .array(TransactionPreviewSchema)
224
+ .describe("Preview transactions"),
217
225
  });
218
226
 
219
227
  /**
@@ -222,8 +230,8 @@ const ListTransactionsPreviewSchema = z.object({
222
230
  * Discriminated union supporting both normal and preview response modes.
223
231
  */
224
232
  export const ListTransactionsOutputSchema = z.union([
225
- ListTransactionsNormalSchema,
226
- ListTransactionsPreviewSchema,
233
+ ListTransactionsNormalSchema,
234
+ ListTransactionsPreviewSchema,
227
235
  ]);
228
236
 
229
237
  /**
@@ -232,12 +240,14 @@ export const ListTransactionsOutputSchema = z.union([
232
240
  * Returns a single transaction by ID with cache metadata.
233
241
  */
234
242
  export const GetTransactionOutputSchema = CacheMetadataSchema.extend({
235
- /** Single transaction object */
236
- transaction: TransactionSchema.describe('Transaction details'),
243
+ /** Single transaction object */
244
+ transaction: TransactionSchema.describe("Transaction details"),
237
245
  });
238
246
 
239
247
  // Export inferred TypeScript types
240
248
  export type Transaction = z.infer<typeof TransactionSchema>;
241
249
  export type TransactionPreview = z.infer<typeof TransactionPreviewSchema>;
242
- export type ListTransactionsOutput = z.infer<typeof ListTransactionsOutputSchema>;
250
+ export type ListTransactionsOutput = z.infer<
251
+ typeof ListTransactionsOutputSchema
252
+ >;
243
253
  export type GetTransactionOutput = z.infer<typeof GetTransactionOutputSchema>;
@@ -10,8 +10,8 @@
10
10
  * exact response shape details.
11
11
  */
12
12
 
13
- import { z } from 'zod/v4';
14
- import { SuccessResponseSchema } from '../shared/commonOutputs.js';
13
+ import { z } from "zod/v4";
14
+ import { SuccessResponseSchema } from "../shared/commonOutputs.js";
15
15
 
16
16
  // ============================================================================
17
17
  // GET USER OUTPUT
@@ -23,7 +23,7 @@ import { SuccessResponseSchema } from '../shared/commonOutputs.js';
23
23
  * Represents the authenticated user's information from YNAB API.
24
24
  */
25
25
  export const UserSchema = z.object({
26
- id: z.string(),
26
+ id: z.string(),
27
27
  });
28
28
 
29
29
  /**
@@ -41,7 +41,7 @@ export const UserSchema = z.object({
41
41
  * ```
42
42
  */
43
43
  export const GetUserOutputSchema = z.object({
44
- user: UserSchema,
44
+ user: UserSchema,
45
45
  });
46
46
 
47
47
  export type GetUserOutput = z.infer<typeof GetUserOutputSchema>;
@@ -67,12 +67,14 @@ export type GetUserOutput = z.infer<typeof GetUserOutputSchema>;
67
67
  * ```
68
68
  */
69
69
  export const GetDefaultBudgetOutputSchema = z.object({
70
- default_budget_id: z.string().nullable(),
71
- has_default: z.boolean(),
72
- message: z.string(),
70
+ default_budget_id: z.string().nullable(),
71
+ has_default: z.boolean(),
72
+ message: z.string(),
73
73
  });
74
74
 
75
- export type GetDefaultBudgetOutput = z.infer<typeof GetDefaultBudgetOutputSchema>;
75
+ export type GetDefaultBudgetOutput = z.infer<
76
+ typeof GetDefaultBudgetOutputSchema
77
+ >;
76
78
 
77
79
  // ============================================================================
78
80
  // SET DEFAULT BUDGET OUTPUT
@@ -96,11 +98,13 @@ export type GetDefaultBudgetOutput = z.infer<typeof GetDefaultBudgetOutputSchema
96
98
  * ```
97
99
  */
98
100
  export const SetDefaultBudgetOutputSchema = SuccessResponseSchema.extend({
99
- default_budget_id: z.string(),
100
- cache_warm_started: z.boolean(),
101
+ default_budget_id: z.string(),
102
+ cache_warm_started: z.boolean(),
101
103
  });
102
104
 
103
- export type SetDefaultBudgetOutput = z.infer<typeof SetDefaultBudgetOutputSchema>;
105
+ export type SetDefaultBudgetOutput = z.infer<
106
+ typeof SetDefaultBudgetOutputSchema
107
+ >;
104
108
 
105
109
  // ============================================================================
106
110
  // CLEAR CACHE OUTPUT
@@ -120,7 +124,9 @@ export type SetDefaultBudgetOutput = z.infer<typeof SetDefaultBudgetOutputSchema
120
124
  * };
121
125
  * ```
122
126
  */
123
- export const ClearCacheOutputSchema = SuccessResponseSchema.pick({ success: true });
127
+ export const ClearCacheOutputSchema = SuccessResponseSchema.pick({
128
+ success: true,
129
+ });
124
130
 
125
131
  export type ClearCacheOutput = z.infer<typeof ClearCacheOutputSchema>;
126
132
 
@@ -145,10 +151,10 @@ export type ClearCacheOutput = z.infer<typeof ClearCacheOutputSchema>;
145
151
  * ```
146
152
  */
147
153
  export const SetOutputFormatOutputSchema = SuccessResponseSchema.extend({
148
- options: z.object({
149
- defaultMinify: z.boolean().optional(),
150
- prettySpaces: z.number().optional(),
151
- }),
154
+ options: z.object({
155
+ defaultMinify: z.boolean().optional(),
156
+ prettySpaces: z.number().optional(),
157
+ }),
152
158
  });
153
159
 
154
160
  export type SetOutputFormatOutput = z.infer<typeof SetOutputFormatOutputSchema>;
@@ -163,15 +169,15 @@ export type SetOutputFormatOutput = z.infer<typeof SetOutputFormatOutputSchema>;
163
169
  * Contains runtime information about the MCP server process.
164
170
  */
165
171
  export const ServerInfoSchema = z.object({
166
- name: z.string(),
167
- version: z.string(),
168
- node_version: z.string(),
169
- platform: z.string(),
170
- arch: z.string(),
171
- pid: z.number(),
172
- uptime_ms: z.number(),
173
- uptime_readable: z.string(),
174
- env: z.record(z.string(), z.unknown()),
172
+ name: z.string(),
173
+ version: z.string(),
174
+ node_version: z.string(),
175
+ platform: z.string(),
176
+ arch: z.string(),
177
+ pid: z.number(),
178
+ uptime_ms: z.number(),
179
+ uptime_readable: z.string(),
180
+ env: z.record(z.string(), z.unknown()),
175
181
  });
176
182
 
177
183
  /**
@@ -180,12 +186,12 @@ export const ServerInfoSchema = z.object({
180
186
  * Reports memory consumption of the MCP server process.
181
187
  */
182
188
  export const MemoryInfoSchema = z.object({
183
- rss_mb: z.number(),
184
- heap_used_mb: z.number(),
185
- heap_total_mb: z.number(),
186
- external_mb: z.number(),
187
- array_buffers_mb: z.number(),
188
- description: z.record(z.string(), z.string()),
189
+ rss_mb: z.number(),
190
+ heap_used_mb: z.number(),
191
+ heap_total_mb: z.number(),
192
+ external_mb: z.number(),
193
+ array_buffers_mb: z.number(),
194
+ description: z.record(z.string(), z.string()),
189
195
  });
190
196
 
191
197
  /**
@@ -194,11 +200,11 @@ export const MemoryInfoSchema = z.object({
194
200
  * Shows environment variable configuration status.
195
201
  */
196
202
  export const EnvironmentInfoSchema = z.object({
197
- token_present: z.boolean(),
198
- token_length: z.number(),
199
- token_preview: z.string().nullable(),
200
- ynab_env_keys_present: z.array(z.string()),
201
- working_directory: z.string(),
203
+ token_present: z.boolean(),
204
+ token_length: z.number(),
205
+ token_preview: z.string().nullable(),
206
+ ynab_env_keys_present: z.array(z.string()),
207
+ working_directory: z.string(),
202
208
  });
203
209
 
204
210
  /**
@@ -207,17 +213,17 @@ export const EnvironmentInfoSchema = z.object({
207
213
  * Reports cache status and performance metrics.
208
214
  */
209
215
  export const CacheInfoSchema = z.object({
210
- entries: z.number(),
211
- estimated_size_kb: z.number(),
212
- keys: z.array(z.string()),
213
- // Optional performance metrics
214
- hits: z.number().optional(),
215
- misses: z.number().optional(),
216
- evictions: z.number().optional(),
217
- lastCleanup: z.string().nullable().optional(),
218
- maxEntries: z.number().optional(),
219
- hitRate: z.string().optional(),
220
- performance_summary: z.string().optional(),
216
+ entries: z.number(),
217
+ estimated_size_kb: z.number(),
218
+ keys: z.array(z.string()),
219
+ // Optional performance metrics
220
+ hits: z.number().optional(),
221
+ misses: z.number().optional(),
222
+ evictions: z.number().optional(),
223
+ lastCleanup: z.string().nullable().optional(),
224
+ maxEntries: z.number().optional(),
225
+ hitRate: z.string().optional(),
226
+ performance_summary: z.string().optional(),
221
227
  });
222
228
 
223
229
  /**
@@ -226,15 +232,15 @@ export const CacheInfoSchema = z.object({
226
232
  * Reports status of delta request feature and knowledge base.
227
233
  */
228
234
  export const DeltaInfoSchema = z.object({
229
- enabled: z.boolean(),
230
- knowledge_entries: z.number(),
231
- knowledge_stats: z.record(z.string(), z.unknown()),
232
- feature_flag: z.string(),
233
- delta_hits: z.number(),
234
- delta_misses: z.number(),
235
- delta_hit_rate: z.number(),
236
- merge_operations: z.number(),
237
- knowledge_gap_events: z.number(),
235
+ enabled: z.boolean(),
236
+ knowledge_entries: z.number(),
237
+ knowledge_stats: z.record(z.string(), z.unknown()),
238
+ feature_flag: z.string(),
239
+ delta_hits: z.number(),
240
+ delta_misses: z.number(),
241
+ delta_hit_rate: z.number(),
242
+ merge_operations: z.number(),
243
+ knowledge_gap_events: z.number(),
238
244
  });
239
245
 
240
246
  /**
@@ -266,12 +272,12 @@ export const DeltaInfoSchema = z.object({
266
272
  * ```
267
273
  */
268
274
  export const DiagnosticInfoOutputSchema = z.object({
269
- timestamp: z.string(),
270
- server: ServerInfoSchema.optional(),
271
- memory: MemoryInfoSchema.optional(),
272
- environment: EnvironmentInfoSchema.optional(),
273
- cache: CacheInfoSchema.optional(),
274
- delta: DeltaInfoSchema.optional(),
275
+ timestamp: z.string(),
276
+ server: ServerInfoSchema.optional(),
277
+ memory: MemoryInfoSchema.optional(),
278
+ environment: EnvironmentInfoSchema.optional(),
279
+ cache: CacheInfoSchema.optional(),
280
+ delta: DeltaInfoSchema.optional(),
275
281
  });
276
282
 
277
283
  export type DiagnosticInfoOutput = z.infer<typeof DiagnosticInfoOutputSchema>;
@@ -286,7 +292,7 @@ export type DiagnosticInfoOutput = z.infer<typeof DiagnosticInfoOutputSchema>;
286
292
  * Represents how dates are formatted in the YNAB budget.
287
293
  */
288
294
  export const DateFormatSchema = z.object({
289
- format: z.string(),
295
+ format: z.string(),
290
296
  });
291
297
 
292
298
  /**
@@ -295,14 +301,14 @@ export const DateFormatSchema = z.object({
295
301
  * Represents how currency values are formatted in the YNAB budget.
296
302
  */
297
303
  export const CurrencyFormatSchema = z.object({
298
- iso_code: z.string(),
299
- example_format: z.string(),
300
- decimal_digits: z.number(),
301
- decimal_separator: z.string().optional(),
302
- symbol_first: z.boolean().optional(),
303
- group_separator: z.string().optional(),
304
- currency_symbol: z.string().optional(),
305
- display_symbol: z.boolean().optional(),
304
+ iso_code: z.string(),
305
+ example_format: z.string(),
306
+ decimal_digits: z.number(),
307
+ decimal_separator: z.string().optional(),
308
+ symbol_first: z.boolean().optional(),
309
+ group_separator: z.string().optional(),
310
+ currency_symbol: z.string().optional(),
311
+ display_symbol: z.boolean().optional(),
306
312
  });
307
313
 
308
314
  /**
@@ -312,18 +318,18 @@ export const CurrencyFormatSchema = z.object({
312
318
  * format settings and entity counts.
313
319
  */
314
320
  export const BudgetDetailSchema = z.object({
315
- id: z.string(),
316
- name: z.string(),
317
- last_modified_on: z.string().optional(),
318
- first_month: z.string().optional(),
319
- last_month: z.string().optional(),
320
- date_format: DateFormatSchema.optional(),
321
- currency_format: CurrencyFormatSchema.optional(),
322
- accounts_count: z.number(),
323
- categories_count: z.number(),
324
- payees_count: z.number(),
325
- months_count: z.number(),
326
- message: z.string(),
321
+ id: z.string(),
322
+ name: z.string(),
323
+ last_modified_on: z.string().optional(),
324
+ first_month: z.string().optional(),
325
+ last_month: z.string().optional(),
326
+ date_format: DateFormatSchema.optional(),
327
+ currency_format: CurrencyFormatSchema.optional(),
328
+ accounts_count: z.number(),
329
+ categories_count: z.number(),
330
+ payees_count: z.number(),
331
+ months_count: z.number(),
332
+ message: z.string(),
327
333
  });
328
334
 
329
335
  /**
@@ -364,7 +370,7 @@ export const BudgetDetailSchema = z.object({
364
370
  * ```
365
371
  */
366
372
  export const GetBudgetOutputSchema = z.object({
367
- budget: BudgetDetailSchema,
373
+ budget: BudgetDetailSchema,
368
374
  });
369
375
 
370
376
  export type GetBudgetOutput = z.infer<typeof GetBudgetOutputSchema>;
@@ -12,7 +12,7 @@
12
12
  * - Success response patterns: src/server/YNABMCPServer.ts (lines 456-460)
13
13
  */
14
14
 
15
- import { z } from 'zod/v4';
15
+ import { z } from "zod/v4";
16
16
 
17
17
  /**
18
18
  * CacheMetadataSchema
@@ -37,15 +37,20 @@ import { z } from 'zod/v4';
37
37
  * ```
38
38
  */
39
39
  export const CacheMetadataSchema = z.object({
40
- cached: z.boolean().optional().describe('Indicates if data was served from cache'),
41
- cache_info: z
42
- .string()
43
- .optional()
44
- .describe('Human-readable cache status message (e.g., "Cache hit", "Cache miss")'),
45
- usedDelta: z
46
- .boolean()
47
- .optional()
48
- .describe('Indicates if delta merge optimization was applied for budgets'),
40
+ cached: z
41
+ .boolean()
42
+ .optional()
43
+ .describe("Indicates if data was served from cache"),
44
+ cache_info: z
45
+ .string()
46
+ .optional()
47
+ .describe(
48
+ 'Human-readable cache status message (e.g., "Cache hit", "Cache miss")',
49
+ ),
50
+ usedDelta: z
51
+ .boolean()
52
+ .optional()
53
+ .describe("Indicates if delta merge optimization was applied for budgets"),
49
54
  });
50
55
 
51
56
  export type CacheMetadata = z.infer<typeof CacheMetadataSchema>;
@@ -70,8 +75,8 @@ export type CacheMetadata = z.infer<typeof CacheMetadataSchema>;
70
75
  * ```
71
76
  */
72
77
  export const SuccessResponseSchema = z.object({
73
- success: z.boolean().describe('Indicates operation success'),
74
- message: z.string().describe('Human-readable success message'),
78
+ success: z.boolean().describe("Indicates operation success"),
79
+ message: z.string().describe("Human-readable success message"),
75
80
  });
76
81
 
77
82
  export type SuccessResponse = z.infer<typeof SuccessResponseSchema>;
@@ -101,10 +106,10 @@ export type SuccessResponse = z.infer<typeof SuccessResponseSchema>;
101
106
  * ```
102
107
  */
103
108
  export const ConfirmationResponseSchema = SuccessResponseSchema.extend({
104
- details: z
105
- .record(z.string(), z.unknown())
106
- .optional()
107
- .describe('Additional confirmation details as key-value pairs'),
109
+ details: z
110
+ .record(z.string(), z.unknown())
111
+ .optional()
112
+ .describe("Additional confirmation details as key-value pairs"),
108
113
  });
109
114
 
110
115
  export type ConfirmationResponse = z.infer<typeof ConfirmationResponseSchema>;
@@ -132,9 +137,12 @@ export type ConfirmationResponse = z.infer<typeof ConfirmationResponseSchema>;
132
137
  * ```
133
138
  */
134
139
  export const ErrorDetailsSchema = z.object({
135
- error: z.string().describe('Error message'),
136
- code: z.string().optional().describe('Error code for categorization'),
137
- details: z.string().optional().describe('Additional error context or details'),
140
+ error: z.string().describe("Error message"),
141
+ code: z.string().optional().describe("Error code for categorization"),
142
+ details: z
143
+ .string()
144
+ .optional()
145
+ .describe("Additional error context or details"),
138
146
  });
139
147
 
140
148
  export type ErrorDetails = z.infer<typeof ErrorDetailsSchema>;