@dizzlkheinz/ynab-mcpb 0.18.4 → 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 (343) hide show
  1. package/CLAUDE.md +87 -8
  2. package/bin/ynab-mcp-server.cjs +2 -2
  3. package/bin/ynab-mcp-server.js +3 -3
  4. package/biome.json +39 -0
  5. package/dist/bundle/index.cjs +67 -67
  6. package/dist/index.d.ts +1 -1
  7. package/dist/index.js +27 -27
  8. package/dist/server/YNABMCPServer.d.ts +3 -4
  9. package/dist/server/YNABMCPServer.js +111 -116
  10. package/dist/server/budgetResolver.d.ts +6 -5
  11. package/dist/server/budgetResolver.js +46 -36
  12. package/dist/server/cacheKeys.js +6 -6
  13. package/dist/server/cacheManager.js +14 -11
  14. package/dist/server/completions.d.ts +2 -2
  15. package/dist/server/completions.js +20 -15
  16. package/dist/server/config.d.ts +10 -5
  17. package/dist/server/config.js +24 -7
  18. package/dist/server/deltaCache.d.ts +2 -2
  19. package/dist/server/deltaCache.js +22 -16
  20. package/dist/server/deltaCache.merge.d.ts +2 -2
  21. package/dist/server/diagnostics.d.ts +4 -4
  22. package/dist/server/diagnostics.js +38 -32
  23. package/dist/server/errorHandler.d.ts +5 -12
  24. package/dist/server/errorHandler.js +219 -217
  25. package/dist/server/prompts.d.ts +2 -2
  26. package/dist/server/prompts.js +45 -45
  27. package/dist/server/rateLimiter.js +4 -4
  28. package/dist/server/requestLogger.d.ts +1 -1
  29. package/dist/server/requestLogger.js +40 -35
  30. package/dist/server/resources.d.ts +3 -3
  31. package/dist/server/resources.js +55 -52
  32. package/dist/server/responseFormatter.js +6 -6
  33. package/dist/server/securityMiddleware.d.ts +2 -2
  34. package/dist/server/securityMiddleware.js +22 -20
  35. package/dist/server/serverKnowledgeStore.js +1 -1
  36. package/dist/server/toolRegistry.d.ts +3 -3
  37. package/dist/server/toolRegistry.js +47 -40
  38. package/dist/tools/__tests__/deltaTestUtils.d.ts +3 -3
  39. package/dist/tools/__tests__/deltaTestUtils.js +2 -2
  40. package/dist/tools/accountTools.d.ts +9 -8
  41. package/dist/tools/accountTools.js +47 -47
  42. package/dist/tools/adapters.d.ts +13 -8
  43. package/dist/tools/adapters.js +21 -11
  44. package/dist/tools/budgetTools.d.ts +8 -7
  45. package/dist/tools/budgetTools.js +22 -22
  46. package/dist/tools/categoryTools.d.ts +9 -8
  47. package/dist/tools/categoryTools.js +68 -59
  48. package/dist/tools/compareTransactions/formatter.d.ts +3 -3
  49. package/dist/tools/compareTransactions/formatter.js +9 -9
  50. package/dist/tools/compareTransactions/index.d.ts +6 -6
  51. package/dist/tools/compareTransactions/index.js +58 -43
  52. package/dist/tools/compareTransactions/matcher.d.ts +1 -1
  53. package/dist/tools/compareTransactions/matcher.js +28 -15
  54. package/dist/tools/compareTransactions/parser.d.ts +2 -2
  55. package/dist/tools/compareTransactions/parser.js +144 -138
  56. package/dist/tools/compareTransactions/types.d.ts +4 -4
  57. package/dist/tools/compareTransactions.d.ts +1 -1
  58. package/dist/tools/compareTransactions.js +1 -1
  59. package/dist/tools/deltaFetcher.d.ts +2 -2
  60. package/dist/tools/deltaFetcher.js +16 -15
  61. package/dist/tools/deltaSupport.d.ts +4 -4
  62. package/dist/tools/deltaSupport.js +35 -41
  63. package/dist/tools/exportTransactions.d.ts +5 -4
  64. package/dist/tools/exportTransactions.js +61 -59
  65. package/dist/tools/monthTools.d.ts +7 -6
  66. package/dist/tools/monthTools.js +31 -29
  67. package/dist/tools/payeeTools.d.ts +7 -6
  68. package/dist/tools/payeeTools.js +28 -28
  69. package/dist/tools/reconcileAdapter.d.ts +2 -2
  70. package/dist/tools/reconcileAdapter.js +19 -12
  71. package/dist/tools/reconciliation/analyzer.d.ts +4 -4
  72. package/dist/tools/reconciliation/analyzer.js +73 -59
  73. package/dist/tools/reconciliation/csvParser.d.ts +3 -3
  74. package/dist/tools/reconciliation/csvParser.js +128 -104
  75. package/dist/tools/reconciliation/executor.d.ts +4 -4
  76. package/dist/tools/reconciliation/executor.js +148 -109
  77. package/dist/tools/reconciliation/index.d.ts +10 -10
  78. package/dist/tools/reconciliation/index.js +96 -83
  79. package/dist/tools/reconciliation/matcher.d.ts +3 -3
  80. package/dist/tools/reconciliation/matcher.js +17 -16
  81. package/dist/tools/reconciliation/payeeNormalizer.js +19 -8
  82. package/dist/tools/reconciliation/recommendationEngine.d.ts +1 -1
  83. package/dist/tools/reconciliation/recommendationEngine.js +40 -40
  84. package/dist/tools/reconciliation/reportFormatter.d.ts +2 -2
  85. package/dist/tools/reconciliation/reportFormatter.js +59 -58
  86. package/dist/tools/reconciliation/signDetector.d.ts +1 -1
  87. package/dist/tools/reconciliation/types.d.ts +16 -16
  88. package/dist/tools/reconciliation/ynabAdapter.d.ts +2 -2
  89. package/dist/tools/schemas/common.d.ts +1 -1
  90. package/dist/tools/schemas/common.js +1 -1
  91. package/dist/tools/schemas/outputs/accountOutputs.d.ts +1 -1
  92. package/dist/tools/schemas/outputs/accountOutputs.js +24 -18
  93. package/dist/tools/schemas/outputs/budgetOutputs.d.ts +1 -1
  94. package/dist/tools/schemas/outputs/budgetOutputs.js +14 -11
  95. package/dist/tools/schemas/outputs/categoryOutputs.d.ts +1 -1
  96. package/dist/tools/schemas/outputs/categoryOutputs.js +49 -29
  97. package/dist/tools/schemas/outputs/comparisonOutputs.d.ts +1 -1
  98. package/dist/tools/schemas/outputs/comparisonOutputs.js +12 -12
  99. package/dist/tools/schemas/outputs/index.d.ts +14 -14
  100. package/dist/tools/schemas/outputs/index.js +14 -14
  101. package/dist/tools/schemas/outputs/monthOutputs.d.ts +1 -1
  102. package/dist/tools/schemas/outputs/monthOutputs.js +56 -41
  103. package/dist/tools/schemas/outputs/payeeOutputs.d.ts +1 -1
  104. package/dist/tools/schemas/outputs/payeeOutputs.js +10 -10
  105. package/dist/tools/schemas/outputs/reconciliationOutputs.d.ts +2 -2
  106. package/dist/tools/schemas/outputs/reconciliationOutputs.js +45 -45
  107. package/dist/tools/schemas/outputs/transactionMutationOutputs.d.ts +1 -1
  108. package/dist/tools/schemas/outputs/transactionMutationOutputs.js +28 -22
  109. package/dist/tools/schemas/outputs/transactionOutputs.d.ts +1 -1
  110. package/dist/tools/schemas/outputs/transactionOutputs.js +43 -35
  111. package/dist/tools/schemas/outputs/utilityOutputs.d.ts +1 -1
  112. package/dist/tools/schemas/outputs/utilityOutputs.js +5 -3
  113. package/dist/tools/schemas/shared/commonOutputs.d.ts +1 -1
  114. package/dist/tools/schemas/shared/commonOutputs.js +15 -9
  115. package/dist/tools/transactionReadTools.d.ts +11 -0
  116. package/dist/tools/transactionReadTools.js +202 -0
  117. package/dist/tools/transactionSchemas.d.ts +7 -7
  118. package/dist/tools/transactionSchemas.js +77 -57
  119. package/dist/tools/transactionTools.d.ts +6 -24
  120. package/dist/tools/transactionTools.js +7 -1499
  121. package/dist/tools/transactionUtils.d.ts +6 -6
  122. package/dist/tools/transactionUtils.js +78 -63
  123. package/dist/tools/transactionWriteTools.d.ts +20 -0
  124. package/dist/tools/transactionWriteTools.js +1342 -0
  125. package/dist/tools/utilityTools.d.ts +5 -4
  126. package/dist/tools/utilityTools.js +11 -11
  127. package/dist/types/index.d.ts +7 -7
  128. package/dist/types/index.js +6 -6
  129. package/dist/types/reconciliation.d.ts +1 -1
  130. package/dist/types/toolRegistration.d.ts +14 -12
  131. package/dist/utils/amountUtils.js +1 -1
  132. package/dist/utils/dateUtils.js +4 -4
  133. package/dist/utils/errors.d.ts +3 -3
  134. package/dist/utils/errors.js +4 -4
  135. package/dist/utils/money.d.ts +2 -2
  136. package/dist/utils/money.js +8 -8
  137. package/dist/utils/validationError.d.ts +1 -1
  138. package/dist/utils/validationError.js +1 -1
  139. package/docs/assets/examples/reconciliation-with-recommendations.json +66 -66
  140. package/docs/assets/schemas/reconciliation-v2.json +360 -336
  141. package/esbuild.config.mjs +53 -50
  142. package/meta.json +12548 -12548
  143. package/package.json +98 -111
  144. package/scripts/analyze-bundle.mjs +33 -30
  145. package/scripts/create-pr-description.js +169 -120
  146. package/scripts/run-all-tests.js +178 -169
  147. package/scripts/run-domain-integration-tests.js +28 -18
  148. package/scripts/run-generate-mcpb.js +19 -17
  149. package/scripts/run-throttled-integration-tests.js +92 -83
  150. package/scripts/test-delta-params.mjs +149 -120
  151. package/scripts/test-recommendations.ts +36 -32
  152. package/scripts/tmpTransaction.ts +80 -43
  153. package/scripts/validate-env.js +98 -91
  154. package/scripts/verify-build.js +78 -76
  155. package/src/__tests__/comprehensive.integration.test.ts +1281 -1154
  156. package/src/__tests__/performance.test.ts +723 -671
  157. package/src/__tests__/setup.ts +442 -395
  158. package/src/__tests__/smoke.e2e.test.ts +41 -39
  159. package/src/__tests__/testRunner.ts +314 -295
  160. package/src/__tests__/testUtils.ts +456 -364
  161. package/src/__tests__/tools/reconciliation/csvParser.integration.test.ts +109 -107
  162. package/src/__tests__/tools/reconciliation/real-world.integration.test.ts +41 -41
  163. package/src/index.ts +68 -59
  164. package/src/server/CLAUDE.md +480 -0
  165. package/src/server/YNABMCPServer.ts +821 -794
  166. package/src/server/__tests__/YNABMCPServer.integration.test.ts +929 -893
  167. package/src/server/__tests__/YNABMCPServer.test.ts +903 -899
  168. package/src/server/__tests__/budgetResolver.test.ts +466 -423
  169. package/src/server/__tests__/cacheManager.test.ts +891 -874
  170. package/src/server/__tests__/completions.integration.test.ts +115 -106
  171. package/src/server/__tests__/completions.test.ts +334 -313
  172. package/src/server/__tests__/config.test.ts +98 -86
  173. package/src/server/__tests__/deltaCache.merge.test.ts +774 -703
  174. package/src/server/__tests__/deltaCache.swr.test.ts +198 -153
  175. package/src/server/__tests__/deltaCache.test.ts +946 -759
  176. package/src/server/__tests__/diagnostics.test.ts +825 -792
  177. package/src/server/__tests__/errorHandler.integration.test.ts +512 -462
  178. package/src/server/__tests__/errorHandler.test.ts +402 -397
  179. package/src/server/__tests__/prompts.test.ts +424 -347
  180. package/src/server/__tests__/rateLimiter.test.ts +313 -309
  181. package/src/server/__tests__/requestLogger.test.ts +443 -403
  182. package/src/server/__tests__/resources.template.test.ts +196 -185
  183. package/src/server/__tests__/resources.test.ts +294 -288
  184. package/src/server/__tests__/security.integration.test.ts +487 -421
  185. package/src/server/__tests__/securityMiddleware.test.ts +519 -444
  186. package/src/server/__tests__/server-startup.integration.test.ts +509 -490
  187. package/src/server/__tests__/serverKnowledgeStore.test.ts +174 -173
  188. package/src/server/__tests__/toolRegistration.test.ts +239 -210
  189. package/src/server/__tests__/toolRegistry.test.ts +907 -845
  190. package/src/server/budgetResolver.ts +221 -181
  191. package/src/server/cacheKeys.ts +6 -6
  192. package/src/server/cacheManager.ts +498 -484
  193. package/src/server/completions.ts +267 -243
  194. package/src/server/config.ts +35 -14
  195. package/src/server/deltaCache.merge.ts +146 -128
  196. package/src/server/deltaCache.ts +352 -309
  197. package/src/server/diagnostics.ts +257 -242
  198. package/src/server/errorHandler.ts +747 -744
  199. package/src/server/prompts.ts +181 -176
  200. package/src/server/rateLimiter.ts +131 -129
  201. package/src/server/requestLogger.ts +350 -322
  202. package/src/server/resources.ts +442 -374
  203. package/src/server/responseFormatter.ts +41 -37
  204. package/src/server/securityMiddleware.ts +223 -205
  205. package/src/server/serverKnowledgeStore.ts +67 -67
  206. package/src/server/toolRegistry.ts +508 -474
  207. package/src/tools/CLAUDE.md +604 -0
  208. package/src/tools/__tests__/accountTools.delta.integration.test.ts +128 -111
  209. package/src/tools/__tests__/accountTools.integration.test.ts +129 -111
  210. package/src/tools/__tests__/accountTools.test.ts +685 -638
  211. package/src/tools/__tests__/adapters.test.ts +142 -108
  212. package/src/tools/__tests__/budgetTools.delta.integration.test.ts +73 -73
  213. package/src/tools/__tests__/budgetTools.integration.test.ts +132 -124
  214. package/src/tools/__tests__/budgetTools.test.ts +442 -413
  215. package/src/tools/__tests__/categoryTools.delta.integration.test.ts +76 -68
  216. package/src/tools/__tests__/categoryTools.integration.test.ts +314 -288
  217. package/src/tools/__tests__/categoryTools.test.ts +656 -625
  218. package/src/tools/__tests__/compareTransactions/formatter.test.ts +535 -462
  219. package/src/tools/__tests__/compareTransactions/index.test.ts +378 -358
  220. package/src/tools/__tests__/compareTransactions/matcher.test.ts +497 -398
  221. package/src/tools/__tests__/compareTransactions/parser.test.ts +765 -747
  222. package/src/tools/__tests__/compareTransactions.test.ts +352 -332
  223. package/src/tools/__tests__/compareTransactions.window.test.ts +150 -146
  224. package/src/tools/__tests__/deltaFetcher.scheduled.integration.test.ts +69 -65
  225. package/src/tools/__tests__/deltaFetcher.test.ts +325 -265
  226. package/src/tools/__tests__/deltaSupport.test.ts +211 -184
  227. package/src/tools/__tests__/deltaTestUtils.ts +37 -33
  228. package/src/tools/__tests__/exportTransactions.test.ts +205 -200
  229. package/src/tools/__tests__/monthTools.delta.integration.test.ts +68 -68
  230. package/src/tools/__tests__/monthTools.integration.test.ts +178 -166
  231. package/src/tools/__tests__/monthTools.test.ts +561 -512
  232. package/src/tools/__tests__/payeeTools.delta.integration.test.ts +68 -68
  233. package/src/tools/__tests__/payeeTools.integration.test.ts +158 -142
  234. package/src/tools/__tests__/payeeTools.test.ts +486 -434
  235. package/src/tools/__tests__/transactionSchemas.test.ts +1202 -1186
  236. package/src/tools/__tests__/transactionTools.integration.test.ts +875 -825
  237. package/src/tools/__tests__/transactionTools.test.ts +4923 -4366
  238. package/src/tools/__tests__/transactionUtils.test.ts +1004 -977
  239. package/src/tools/__tests__/utilityTools.integration.test.ts +32 -32
  240. package/src/tools/__tests__/utilityTools.test.ts +68 -58
  241. package/src/tools/accountTools.ts +293 -271
  242. package/src/tools/adapters.ts +120 -63
  243. package/src/tools/budgetTools.ts +121 -116
  244. package/src/tools/categoryTools.ts +379 -339
  245. package/src/tools/compareTransactions/formatter.ts +131 -119
  246. package/src/tools/compareTransactions/index.ts +249 -214
  247. package/src/tools/compareTransactions/matcher.ts +259 -209
  248. package/src/tools/compareTransactions/parser.ts +517 -487
  249. package/src/tools/compareTransactions/types.ts +38 -38
  250. package/src/tools/compareTransactions.ts +1 -1
  251. package/src/tools/deltaFetcher.ts +281 -260
  252. package/src/tools/deltaSupport.ts +264 -259
  253. package/src/tools/exportTransactions.ts +230 -218
  254. package/src/tools/monthTools.ts +180 -165
  255. package/src/tools/payeeTools.ts +152 -140
  256. package/src/tools/reconcileAdapter.ts +297 -252
  257. package/src/tools/reconciliation/CLAUDE.md +506 -0
  258. package/src/tools/reconciliation/__tests__/adapter.causes.test.ts +133 -124
  259. package/src/tools/reconciliation/__tests__/adapter.test.ts +249 -230
  260. package/src/tools/reconciliation/__tests__/analyzer.test.ts +408 -400
  261. package/src/tools/reconciliation/__tests__/csvParser.test.ts +71 -69
  262. package/src/tools/reconciliation/__tests__/executor.integration.test.ts +348 -323
  263. package/src/tools/reconciliation/__tests__/executor.progress.test.ts +503 -457
  264. package/src/tools/reconciliation/__tests__/executor.test.ts +898 -831
  265. package/src/tools/reconciliation/__tests__/matcher.test.ts +667 -663
  266. package/src/tools/reconciliation/__tests__/payeeNormalizer.test.ts +296 -276
  267. package/src/tools/reconciliation/__tests__/recommendationEngine.integration.test.ts +692 -624
  268. package/src/tools/reconciliation/__tests__/recommendationEngine.test.ts +1008 -989
  269. package/src/tools/reconciliation/__tests__/reconciliation.delta.integration.test.ts +187 -146
  270. package/src/tools/reconciliation/__tests__/reportFormatter.test.ts +583 -533
  271. package/src/tools/reconciliation/__tests__/scenarios/adapterCurrency.scenario.test.ts +75 -74
  272. package/src/tools/reconciliation/__tests__/scenarios/extremes.scenario.test.ts +70 -62
  273. package/src/tools/reconciliation/__tests__/scenarios/repeatAmount.scenario.test.ts +102 -88
  274. package/src/tools/reconciliation/__tests__/schemaUrl.test.ts +56 -55
  275. package/src/tools/reconciliation/__tests__/signDetector.test.ts +209 -206
  276. package/src/tools/reconciliation/__tests__/ynabAdapter.test.ts +66 -60
  277. package/src/tools/reconciliation/analyzer.ts +564 -504
  278. package/src/tools/reconciliation/csvParser.ts +656 -609
  279. package/src/tools/reconciliation/executor.ts +1290 -1128
  280. package/src/tools/reconciliation/index.ts +580 -528
  281. package/src/tools/reconciliation/matcher.ts +256 -240
  282. package/src/tools/reconciliation/payeeNormalizer.ts +92 -78
  283. package/src/tools/reconciliation/recommendationEngine.ts +357 -345
  284. package/src/tools/reconciliation/reportFormatter.ts +343 -307
  285. package/src/tools/reconciliation/signDetector.ts +89 -83
  286. package/src/tools/reconciliation/types.ts +164 -159
  287. package/src/tools/reconciliation/ynabAdapter.ts +17 -15
  288. package/src/tools/schemas/CLAUDE.md +546 -0
  289. package/src/tools/schemas/common.ts +1 -1
  290. package/src/tools/schemas/outputs/__tests__/accountOutputs.test.ts +410 -409
  291. package/src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts +305 -299
  292. package/src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts +431 -430
  293. package/src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts +510 -495
  294. package/src/tools/schemas/outputs/__tests__/dateValidation.test.ts +179 -153
  295. package/src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts +293 -254
  296. package/src/tools/schemas/outputs/__tests__/monthOutputs.test.ts +457 -457
  297. package/src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts +362 -356
  298. package/src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts +402 -399
  299. package/src/tools/schemas/outputs/__tests__/transactionMutationSchemas.test.ts +225 -211
  300. package/src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts +457 -454
  301. package/src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts +316 -315
  302. package/src/tools/schemas/outputs/accountOutputs.ts +40 -34
  303. package/src/tools/schemas/outputs/budgetOutputs.ts +24 -19
  304. package/src/tools/schemas/outputs/categoryOutputs.ts +76 -56
  305. package/src/tools/schemas/outputs/comparisonOutputs.ts +192 -169
  306. package/src/tools/schemas/outputs/index.ts +163 -163
  307. package/src/tools/schemas/outputs/monthOutputs.ts +95 -80
  308. package/src/tools/schemas/outputs/payeeOutputs.ts +18 -18
  309. package/src/tools/schemas/outputs/reconciliationOutputs.ts +386 -373
  310. package/src/tools/schemas/outputs/transactionMutationOutputs.ts +259 -231
  311. package/src/tools/schemas/outputs/transactionOutputs.ts +81 -71
  312. package/src/tools/schemas/outputs/utilityOutputs.ts +90 -84
  313. package/src/tools/schemas/shared/commonOutputs.ts +27 -19
  314. package/src/tools/toolCategories.ts +114 -114
  315. package/src/tools/transactionReadTools.ts +327 -0
  316. package/src/tools/transactionSchemas.ts +322 -291
  317. package/src/tools/transactionTools.ts +84 -2246
  318. package/src/tools/transactionUtils.ts +507 -422
  319. package/src/tools/transactionWriteTools.ts +2110 -0
  320. package/src/tools/utilityTools.ts +46 -41
  321. package/src/types/CLAUDE.md +477 -0
  322. package/src/types/__tests__/index.test.ts +51 -51
  323. package/src/types/index.ts +43 -39
  324. package/src/types/integration-tests.d.ts +26 -26
  325. package/src/types/reconciliation.ts +29 -29
  326. package/src/types/toolAnnotations.ts +30 -30
  327. package/src/types/toolRegistration.ts +43 -32
  328. package/src/utils/CLAUDE.md +508 -0
  329. package/src/utils/__tests__/dateUtils.test.ts +174 -168
  330. package/src/utils/__tests__/money.test.ts +193 -187
  331. package/src/utils/amountUtils.ts +5 -5
  332. package/src/utils/baseError.ts +5 -5
  333. package/src/utils/dateUtils.ts +29 -26
  334. package/src/utils/errors.ts +14 -14
  335. package/src/utils/money.ts +66 -52
  336. package/src/utils/validationError.ts +1 -1
  337. package/tsconfig.json +29 -29
  338. package/tsconfig.prod.json +16 -16
  339. package/vitest-reporters/split-json-reporter.ts +247 -204
  340. package/vitest.config.ts +99 -95
  341. package/.prettierignore +0 -10
  342. package/.prettierrc.json +0 -10
  343. 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>;