@adoptai/genui-components 0.1.32

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 (554) hide show
  1. package/README.md +56 -0
  2. package/dist/builders/BuilderForm.d.ts +25 -0
  3. package/dist/builders/BuilderForm.d.ts.map +1 -0
  4. package/dist/builders/BuilderRecap.d.ts +12 -0
  5. package/dist/builders/BuilderRecap.d.ts.map +1 -0
  6. package/dist/builders/ContextSlot.d.ts +6 -0
  7. package/dist/builders/ContextSlot.d.ts.map +1 -0
  8. package/dist/builders/EscalationCard.d.ts +12 -0
  9. package/dist/builders/EscalationCard.d.ts.map +1 -0
  10. package/dist/builders/FieldRenderer.d.ts +12 -0
  11. package/dist/builders/FieldRenderer.d.ts.map +1 -0
  12. package/dist/builders/FormBuilder.d.ts +13 -0
  13. package/dist/builders/FormBuilder.d.ts.map +1 -0
  14. package/dist/builders/StepperBuilder.d.ts +20 -0
  15. package/dist/builders/StepperBuilder.d.ts.map +1 -0
  16. package/dist/builders/fields.d.ts +27 -0
  17. package/dist/builders/fields.d.ts.map +1 -0
  18. package/dist/builders/hooks.d.ts +22 -0
  19. package/dist/builders/hooks.d.ts.map +1 -0
  20. package/dist/builders/index.d.ts +20 -0
  21. package/dist/builders/index.d.ts.map +1 -0
  22. package/dist/builders/resolver.d.ts +10 -0
  23. package/dist/builders/resolver.d.ts.map +1 -0
  24. package/dist/builders/schemas.d.ts +130 -0
  25. package/dist/builders/schemas.d.ts.map +1 -0
  26. package/dist/builders/validateBuilder.d.ts +10 -0
  27. package/dist/builders/validateBuilder.d.ts.map +1 -0
  28. package/dist/composites/aging-report/resolver.cjs +339 -0
  29. package/dist/composites/aging-report/resolver.cjs.map +1 -0
  30. package/dist/composites/aging-report/resolver.d.ts +3 -0
  31. package/dist/composites/aging-report/resolver.d.ts.map +1 -0
  32. package/dist/composites/aging-report/resolver.js +337 -0
  33. package/dist/composites/aging-report/resolver.js.map +1 -0
  34. package/dist/composites/alert/resolver.cjs +510 -0
  35. package/dist/composites/alert/resolver.cjs.map +1 -0
  36. package/dist/composites/alert/resolver.d.ts +3 -0
  37. package/dist/composites/alert/resolver.d.ts.map +1 -0
  38. package/dist/composites/alert/resolver.js +508 -0
  39. package/dist/composites/alert/resolver.js.map +1 -0
  40. package/dist/composites/allocation-donut/resolver.cjs +363 -0
  41. package/dist/composites/allocation-donut/resolver.cjs.map +1 -0
  42. package/dist/composites/allocation-donut/resolver.d.ts +3 -0
  43. package/dist/composites/allocation-donut/resolver.d.ts.map +1 -0
  44. package/dist/composites/allocation-donut/resolver.js +361 -0
  45. package/dist/composites/allocation-donut/resolver.js.map +1 -0
  46. package/dist/composites/amortization-table/resolver.cjs +692 -0
  47. package/dist/composites/amortization-table/resolver.cjs.map +1 -0
  48. package/dist/composites/amortization-table/resolver.d.ts +3 -0
  49. package/dist/composites/amortization-table/resolver.d.ts.map +1 -0
  50. package/dist/composites/amortization-table/resolver.js +690 -0
  51. package/dist/composites/amortization-table/resolver.js.map +1 -0
  52. package/dist/composites/area-chart/resolver.cjs +334 -0
  53. package/dist/composites/area-chart/resolver.cjs.map +1 -0
  54. package/dist/composites/area-chart/resolver.d.ts +3 -0
  55. package/dist/composites/area-chart/resolver.d.ts.map +1 -0
  56. package/dist/composites/area-chart/resolver.js +332 -0
  57. package/dist/composites/area-chart/resolver.js.map +1 -0
  58. package/dist/composites/audit-trail/resolver.cjs +564 -0
  59. package/dist/composites/audit-trail/resolver.cjs.map +1 -0
  60. package/dist/composites/audit-trail/resolver.d.ts +3 -0
  61. package/dist/composites/audit-trail/resolver.d.ts.map +1 -0
  62. package/dist/composites/audit-trail/resolver.js +562 -0
  63. package/dist/composites/audit-trail/resolver.js.map +1 -0
  64. package/dist/composites/balance-sheet/resolver.cjs +475 -0
  65. package/dist/composites/balance-sheet/resolver.cjs.map +1 -0
  66. package/dist/composites/balance-sheet/resolver.d.ts +3 -0
  67. package/dist/composites/balance-sheet/resolver.d.ts.map +1 -0
  68. package/dist/composites/balance-sheet/resolver.js +469 -0
  69. package/dist/composites/balance-sheet/resolver.js.map +1 -0
  70. package/dist/composites/bullet-chart/resolver.cjs +300 -0
  71. package/dist/composites/bullet-chart/resolver.cjs.map +1 -0
  72. package/dist/composites/bullet-chart/resolver.d.ts +3 -0
  73. package/dist/composites/bullet-chart/resolver.d.ts.map +1 -0
  74. package/dist/composites/bullet-chart/resolver.js +298 -0
  75. package/dist/composites/bullet-chart/resolver.js.map +1 -0
  76. package/dist/composites/cash-flow-statement/resolver.cjs +757 -0
  77. package/dist/composites/cash-flow-statement/resolver.cjs.map +1 -0
  78. package/dist/composites/cash-flow-statement/resolver.d.ts +3 -0
  79. package/dist/composites/cash-flow-statement/resolver.d.ts.map +1 -0
  80. package/dist/composites/cash-flow-statement/resolver.js +751 -0
  81. package/dist/composites/cash-flow-statement/resolver.js.map +1 -0
  82. package/dist/composites/chart-of-accounts/resolver.cjs +603 -0
  83. package/dist/composites/chart-of-accounts/resolver.cjs.map +1 -0
  84. package/dist/composites/chart-of-accounts/resolver.d.ts +3 -0
  85. package/dist/composites/chart-of-accounts/resolver.d.ts.map +1 -0
  86. package/dist/composites/chart-of-accounts/resolver.js +601 -0
  87. package/dist/composites/chart-of-accounts/resolver.js.map +1 -0
  88. package/dist/composites/cited-answer/resolver.cjs +829 -0
  89. package/dist/composites/cited-answer/resolver.cjs.map +1 -0
  90. package/dist/composites/cited-answer/resolver.d.ts +3 -0
  91. package/dist/composites/cited-answer/resolver.d.ts.map +1 -0
  92. package/dist/composites/cited-answer/resolver.js +827 -0
  93. package/dist/composites/cited-answer/resolver.js.map +1 -0
  94. package/dist/composites/combo-chart/resolver.cjs +402 -0
  95. package/dist/composites/combo-chart/resolver.cjs.map +1 -0
  96. package/dist/composites/combo-chart/resolver.d.ts +3 -0
  97. package/dist/composites/combo-chart/resolver.d.ts.map +1 -0
  98. package/dist/composites/combo-chart/resolver.js +400 -0
  99. package/dist/composites/combo-chart/resolver.js.map +1 -0
  100. package/dist/composites/comparative-bar-chart/resolver.cjs +366 -0
  101. package/dist/composites/comparative-bar-chart/resolver.cjs.map +1 -0
  102. package/dist/composites/comparative-bar-chart/resolver.d.ts +3 -0
  103. package/dist/composites/comparative-bar-chart/resolver.d.ts.map +1 -0
  104. package/dist/composites/comparative-bar-chart/resolver.js +364 -0
  105. package/dist/composites/comparative-bar-chart/resolver.js.map +1 -0
  106. package/dist/composites/compliance-checklist/resolver.cjs +618 -0
  107. package/dist/composites/compliance-checklist/resolver.cjs.map +1 -0
  108. package/dist/composites/compliance-checklist/resolver.d.ts +3 -0
  109. package/dist/composites/compliance-checklist/resolver.d.ts.map +1 -0
  110. package/dist/composites/compliance-checklist/resolver.js +616 -0
  111. package/dist/composites/compliance-checklist/resolver.js.map +1 -0
  112. package/dist/composites/connect-integration/resolver.d.ts +3 -0
  113. package/dist/composites/connect-integration/resolver.d.ts.map +1 -0
  114. package/dist/composites/data-table/resolver.cjs +324 -0
  115. package/dist/composites/data-table/resolver.cjs.map +1 -0
  116. package/dist/composites/data-table/resolver.d.ts +3 -0
  117. package/dist/composites/data-table/resolver.d.ts.map +1 -0
  118. package/dist/composites/data-table/resolver.js +322 -0
  119. package/dist/composites/data-table/resolver.js.map +1 -0
  120. package/dist/composites/depreciation-schedule/resolver.cjs +726 -0
  121. package/dist/composites/depreciation-schedule/resolver.cjs.map +1 -0
  122. package/dist/composites/depreciation-schedule/resolver.d.ts +3 -0
  123. package/dist/composites/depreciation-schedule/resolver.d.ts.map +1 -0
  124. package/dist/composites/depreciation-schedule/resolver.js +724 -0
  125. package/dist/composites/depreciation-schedule/resolver.js.map +1 -0
  126. package/dist/composites/document-preview/ExcelViewer.d.ts +8 -0
  127. package/dist/composites/document-preview/ExcelViewer.d.ts.map +1 -0
  128. package/dist/composites/document-preview/PdfViewer.d.ts +10 -0
  129. package/dist/composites/document-preview/PdfViewer.d.ts.map +1 -0
  130. package/dist/composites/document-preview/resolver.cjs +1036 -0
  131. package/dist/composites/document-preview/resolver.cjs.map +1 -0
  132. package/dist/composites/document-preview/resolver.d.ts +3 -0
  133. package/dist/composites/document-preview/resolver.d.ts.map +1 -0
  134. package/dist/composites/document-preview/resolver.js +1011 -0
  135. package/dist/composites/document-preview/resolver.js.map +1 -0
  136. package/dist/composites/document-preview/useFullscreen.d.ts +8 -0
  137. package/dist/composites/document-preview/useFullscreen.d.ts.map +1 -0
  138. package/dist/composites/download-card/resolver.cjs +1831 -0
  139. package/dist/composites/download-card/resolver.cjs.map +1 -0
  140. package/dist/composites/download-card/resolver.d.ts +3 -0
  141. package/dist/composites/download-card/resolver.d.ts.map +1 -0
  142. package/dist/composites/download-card/resolver.js +1804 -0
  143. package/dist/composites/download-card/resolver.js.map +1 -0
  144. package/dist/composites/engagement-pipeline/resolver.cjs +834 -0
  145. package/dist/composites/engagement-pipeline/resolver.cjs.map +1 -0
  146. package/dist/composites/engagement-pipeline/resolver.d.ts +3 -0
  147. package/dist/composites/engagement-pipeline/resolver.d.ts.map +1 -0
  148. package/dist/composites/engagement-pipeline/resolver.js +828 -0
  149. package/dist/composites/engagement-pipeline/resolver.js.map +1 -0
  150. package/dist/composites/entity-card-grid/resolver.cjs +444 -0
  151. package/dist/composites/entity-card-grid/resolver.cjs.map +1 -0
  152. package/dist/composites/entity-card-grid/resolver.d.ts +3 -0
  153. package/dist/composites/entity-card-grid/resolver.d.ts.map +1 -0
  154. package/dist/composites/entity-card-grid/resolver.js +442 -0
  155. package/dist/composites/entity-card-grid/resolver.js.map +1 -0
  156. package/dist/composites/escalation-card/resolver.cjs +359 -0
  157. package/dist/composites/escalation-card/resolver.cjs.map +1 -0
  158. package/dist/composites/escalation-card/resolver.d.ts +3 -0
  159. package/dist/composites/escalation-card/resolver.d.ts.map +1 -0
  160. package/dist/composites/escalation-card/resolver.js +357 -0
  161. package/dist/composites/escalation-card/resolver.js.map +1 -0
  162. package/dist/composites/file-browser/resolver.cjs +440 -0
  163. package/dist/composites/file-browser/resolver.cjs.map +1 -0
  164. package/dist/composites/file-browser/resolver.d.ts +3 -0
  165. package/dist/composites/file-browser/resolver.d.ts.map +1 -0
  166. package/dist/composites/file-browser/resolver.js +438 -0
  167. package/dist/composites/file-browser/resolver.js.map +1 -0
  168. package/dist/composites/flow-canvas/DiagramStreamParser.d.ts +15 -0
  169. package/dist/composites/flow-canvas/DiagramStreamParser.d.ts.map +1 -0
  170. package/dist/composites/flow-canvas/ElementStreamParser.d.ts +19 -0
  171. package/dist/composites/flow-canvas/ElementStreamParser.d.ts.map +1 -0
  172. package/dist/composites/flow-canvas/ExcalidrawCanvas.d.ts +8 -0
  173. package/dist/composites/flow-canvas/ExcalidrawCanvas.d.ts.map +1 -0
  174. package/dist/composites/flow-canvas/FlowGraph.d.ts +11 -0
  175. package/dist/composites/flow-canvas/FlowGraph.d.ts.map +1 -0
  176. package/dist/composites/flow-canvas/layoutFlow.d.ts +18 -0
  177. package/dist/composites/flow-canvas/layoutFlow.d.ts.map +1 -0
  178. package/dist/composites/flow-canvas/parseMermaidFlow.d.ts +24 -0
  179. package/dist/composites/flow-canvas/parseMermaidFlow.d.ts.map +1 -0
  180. package/dist/composites/flow-canvas/resolver.cjs +1295 -0
  181. package/dist/composites/flow-canvas/resolver.cjs.map +1 -0
  182. package/dist/composites/flow-canvas/resolver.d.ts +12 -0
  183. package/dist/composites/flow-canvas/resolver.d.ts.map +1 -0
  184. package/dist/composites/flow-canvas/resolver.js +1287 -0
  185. package/dist/composites/flow-canvas/resolver.js.map +1 -0
  186. package/dist/composites/funnel-chart/resolver.cjs +315 -0
  187. package/dist/composites/funnel-chart/resolver.cjs.map +1 -0
  188. package/dist/composites/funnel-chart/resolver.d.ts +3 -0
  189. package/dist/composites/funnel-chart/resolver.d.ts.map +1 -0
  190. package/dist/composites/funnel-chart/resolver.js +313 -0
  191. package/dist/composites/funnel-chart/resolver.js.map +1 -0
  192. package/dist/composites/gauge-chart/resolver.cjs +294 -0
  193. package/dist/composites/gauge-chart/resolver.cjs.map +1 -0
  194. package/dist/composites/gauge-chart/resolver.d.ts +3 -0
  195. package/dist/composites/gauge-chart/resolver.d.ts.map +1 -0
  196. package/dist/composites/gauge-chart/resolver.js +292 -0
  197. package/dist/composites/gauge-chart/resolver.js.map +1 -0
  198. package/dist/composites/general-ledger/resolver.cjs +543 -0
  199. package/dist/composites/general-ledger/resolver.cjs.map +1 -0
  200. package/dist/composites/general-ledger/resolver.d.ts +3 -0
  201. package/dist/composites/general-ledger/resolver.d.ts.map +1 -0
  202. package/dist/composites/general-ledger/resolver.js +541 -0
  203. package/dist/composites/general-ledger/resolver.js.map +1 -0
  204. package/dist/composites/grouped-table/resolver.cjs +388 -0
  205. package/dist/composites/grouped-table/resolver.cjs.map +1 -0
  206. package/dist/composites/grouped-table/resolver.d.ts +3 -0
  207. package/dist/composites/grouped-table/resolver.d.ts.map +1 -0
  208. package/dist/composites/grouped-table/resolver.js +386 -0
  209. package/dist/composites/grouped-table/resolver.js.map +1 -0
  210. package/dist/composites/heatmap-table/resolver.cjs +380 -0
  211. package/dist/composites/heatmap-table/resolver.cjs.map +1 -0
  212. package/dist/composites/heatmap-table/resolver.d.ts +3 -0
  213. package/dist/composites/heatmap-table/resolver.d.ts.map +1 -0
  214. package/dist/composites/heatmap-table/resolver.js +378 -0
  215. package/dist/composites/heatmap-table/resolver.js.map +1 -0
  216. package/dist/composites/income-statement/resolver.cjs +583 -0
  217. package/dist/composites/income-statement/resolver.cjs.map +1 -0
  218. package/dist/composites/income-statement/resolver.d.ts +3 -0
  219. package/dist/composites/income-statement/resolver.d.ts.map +1 -0
  220. package/dist/composites/income-statement/resolver.js +577 -0
  221. package/dist/composites/income-statement/resolver.js.map +1 -0
  222. package/dist/composites/integrations-list/resolver.d.ts +3 -0
  223. package/dist/composites/integrations-list/resolver.d.ts.map +1 -0
  224. package/dist/composites/invoice-detail/resolver.cjs +1086 -0
  225. package/dist/composites/invoice-detail/resolver.cjs.map +1 -0
  226. package/dist/composites/invoice-detail/resolver.d.ts +3 -0
  227. package/dist/composites/invoice-detail/resolver.d.ts.map +1 -0
  228. package/dist/composites/invoice-detail/resolver.js +1084 -0
  229. package/dist/composites/invoice-detail/resolver.js.map +1 -0
  230. package/dist/composites/job-tracker/resolver.cjs +830 -0
  231. package/dist/composites/job-tracker/resolver.cjs.map +1 -0
  232. package/dist/composites/job-tracker/resolver.d.ts +3 -0
  233. package/dist/composites/job-tracker/resolver.d.ts.map +1 -0
  234. package/dist/composites/job-tracker/resolver.js +828 -0
  235. package/dist/composites/job-tracker/resolver.js.map +1 -0
  236. package/dist/composites/journal-entry/resolver.cjs +324 -0
  237. package/dist/composites/journal-entry/resolver.cjs.map +1 -0
  238. package/dist/composites/journal-entry/resolver.d.ts +3 -0
  239. package/dist/composites/journal-entry/resolver.d.ts.map +1 -0
  240. package/dist/composites/journal-entry/resolver.js +322 -0
  241. package/dist/composites/journal-entry/resolver.js.map +1 -0
  242. package/dist/composites/key-value-list/resolver.cjs +708 -0
  243. package/dist/composites/key-value-list/resolver.cjs.map +1 -0
  244. package/dist/composites/key-value-list/resolver.d.ts +3 -0
  245. package/dist/composites/key-value-list/resolver.d.ts.map +1 -0
  246. package/dist/composites/key-value-list/resolver.js +702 -0
  247. package/dist/composites/key-value-list/resolver.js.map +1 -0
  248. package/dist/composites/legal-test-result/resolver.cjs +666 -0
  249. package/dist/composites/legal-test-result/resolver.cjs.map +1 -0
  250. package/dist/composites/legal-test-result/resolver.d.ts +3 -0
  251. package/dist/composites/legal-test-result/resolver.d.ts.map +1 -0
  252. package/dist/composites/legal-test-result/resolver.js +664 -0
  253. package/dist/composites/legal-test-result/resolver.js.map +1 -0
  254. package/dist/composites/line-chart/resolver.cjs +344 -0
  255. package/dist/composites/line-chart/resolver.cjs.map +1 -0
  256. package/dist/composites/line-chart/resolver.d.ts +3 -0
  257. package/dist/composites/line-chart/resolver.d.ts.map +1 -0
  258. package/dist/composites/line-chart/resolver.js +342 -0
  259. package/dist/composites/line-chart/resolver.js.map +1 -0
  260. package/dist/composites/news-feed/resolver.cjs +539 -0
  261. package/dist/composites/news-feed/resolver.cjs.map +1 -0
  262. package/dist/composites/news-feed/resolver.d.ts +3 -0
  263. package/dist/composites/news-feed/resolver.d.ts.map +1 -0
  264. package/dist/composites/news-feed/resolver.js +537 -0
  265. package/dist/composites/news-feed/resolver.js.map +1 -0
  266. package/dist/composites/ops-dashboard/resolver.cjs +430 -0
  267. package/dist/composites/ops-dashboard/resolver.cjs.map +1 -0
  268. package/dist/composites/ops-dashboard/resolver.d.ts +3 -0
  269. package/dist/composites/ops-dashboard/resolver.d.ts.map +1 -0
  270. package/dist/composites/ops-dashboard/resolver.js +428 -0
  271. package/dist/composites/ops-dashboard/resolver.js.map +1 -0
  272. package/dist/composites/pipeline-preview/layout.d.ts +39 -0
  273. package/dist/composites/pipeline-preview/layout.d.ts.map +1 -0
  274. package/dist/composites/pipeline-preview/opMeta.d.ts +9 -0
  275. package/dist/composites/pipeline-preview/opMeta.d.ts.map +1 -0
  276. package/dist/composites/pipeline-preview/resolver.d.ts +3 -0
  277. package/dist/composites/pipeline-preview/resolver.d.ts.map +1 -0
  278. package/dist/composites/provenance-chain/resolver.cjs +797 -0
  279. package/dist/composites/provenance-chain/resolver.cjs.map +1 -0
  280. package/dist/composites/provenance-chain/resolver.d.ts +3 -0
  281. package/dist/composites/provenance-chain/resolver.d.ts.map +1 -0
  282. package/dist/composites/provenance-chain/resolver.js +795 -0
  283. package/dist/composites/provenance-chain/resolver.js.map +1 -0
  284. package/dist/composites/radar-chart/resolver.cjs +323 -0
  285. package/dist/composites/radar-chart/resolver.cjs.map +1 -0
  286. package/dist/composites/radar-chart/resolver.d.ts +3 -0
  287. package/dist/composites/radar-chart/resolver.d.ts.map +1 -0
  288. package/dist/composites/radar-chart/resolver.js +321 -0
  289. package/dist/composites/radar-chart/resolver.js.map +1 -0
  290. package/dist/composites/reconciliation-view/resolver.cjs +917 -0
  291. package/dist/composites/reconciliation-view/resolver.cjs.map +1 -0
  292. package/dist/composites/reconciliation-view/resolver.d.ts +3 -0
  293. package/dist/composites/reconciliation-view/resolver.d.ts.map +1 -0
  294. package/dist/composites/reconciliation-view/resolver.js +915 -0
  295. package/dist/composites/reconciliation-view/resolver.js.map +1 -0
  296. package/dist/composites/scatter-chart/resolver.cjs +357 -0
  297. package/dist/composites/scatter-chart/resolver.cjs.map +1 -0
  298. package/dist/composites/scatter-chart/resolver.d.ts +3 -0
  299. package/dist/composites/scatter-chart/resolver.d.ts.map +1 -0
  300. package/dist/composites/scatter-chart/resolver.js +355 -0
  301. package/dist/composites/scatter-chart/resolver.js.map +1 -0
  302. package/dist/composites/screener-table/resolver.cjs +372 -0
  303. package/dist/composites/screener-table/resolver.cjs.map +1 -0
  304. package/dist/composites/screener-table/resolver.d.ts +3 -0
  305. package/dist/composites/screener-table/resolver.d.ts.map +1 -0
  306. package/dist/composites/screener-table/resolver.js +370 -0
  307. package/dist/composites/screener-table/resolver.js.map +1 -0
  308. package/dist/composites/search-results/resolver.cjs +391 -0
  309. package/dist/composites/search-results/resolver.cjs.map +1 -0
  310. package/dist/composites/search-results/resolver.d.ts +3 -0
  311. package/dist/composites/search-results/resolver.d.ts.map +1 -0
  312. package/dist/composites/search-results/resolver.js +389 -0
  313. package/dist/composites/search-results/resolver.js.map +1 -0
  314. package/dist/composites/sparkline-table/resolver.cjs +361 -0
  315. package/dist/composites/sparkline-table/resolver.cjs.map +1 -0
  316. package/dist/composites/sparkline-table/resolver.d.ts +3 -0
  317. package/dist/composites/sparkline-table/resolver.d.ts.map +1 -0
  318. package/dist/composites/sparkline-table/resolver.js +359 -0
  319. package/dist/composites/sparkline-table/resolver.js.map +1 -0
  320. package/dist/composites/stacked-breakdown/resolver.cjs +397 -0
  321. package/dist/composites/stacked-breakdown/resolver.cjs.map +1 -0
  322. package/dist/composites/stacked-breakdown/resolver.d.ts +3 -0
  323. package/dist/composites/stacked-breakdown/resolver.d.ts.map +1 -0
  324. package/dist/composites/stacked-breakdown/resolver.js +395 -0
  325. package/dist/composites/stacked-breakdown/resolver.js.map +1 -0
  326. package/dist/composites/stat-grid/resolver.cjs +498 -0
  327. package/dist/composites/stat-grid/resolver.cjs.map +1 -0
  328. package/dist/composites/stat-grid/resolver.d.ts +3 -0
  329. package/dist/composites/stat-grid/resolver.d.ts.map +1 -0
  330. package/dist/composites/stat-grid/resolver.js +496 -0
  331. package/dist/composites/stat-grid/resolver.js.map +1 -0
  332. package/dist/composites/status-card/resolver.cjs +593 -0
  333. package/dist/composites/status-card/resolver.cjs.map +1 -0
  334. package/dist/composites/status-card/resolver.d.ts +3 -0
  335. package/dist/composites/status-card/resolver.d.ts.map +1 -0
  336. package/dist/composites/status-card/resolver.js +591 -0
  337. package/dist/composites/status-card/resolver.js.map +1 -0
  338. package/dist/composites/tabs-panel/resolver.cjs +564 -0
  339. package/dist/composites/tabs-panel/resolver.cjs.map +1 -0
  340. package/dist/composites/tabs-panel/resolver.d.ts +3 -0
  341. package/dist/composites/tabs-panel/resolver.d.ts.map +1 -0
  342. package/dist/composites/tabs-panel/resolver.js +562 -0
  343. package/dist/composites/tabs-panel/resolver.js.map +1 -0
  344. package/dist/composites/transaction-feed/resolver.cjs +830 -0
  345. package/dist/composites/transaction-feed/resolver.cjs.map +1 -0
  346. package/dist/composites/transaction-feed/resolver.d.ts +3 -0
  347. package/dist/composites/transaction-feed/resolver.d.ts.map +1 -0
  348. package/dist/composites/transaction-feed/resolver.js +828 -0
  349. package/dist/composites/transaction-feed/resolver.js.map +1 -0
  350. package/dist/composites/treemap-chart/resolver.cjs +323 -0
  351. package/dist/composites/treemap-chart/resolver.cjs.map +1 -0
  352. package/dist/composites/treemap-chart/resolver.d.ts +3 -0
  353. package/dist/composites/treemap-chart/resolver.d.ts.map +1 -0
  354. package/dist/composites/treemap-chart/resolver.js +321 -0
  355. package/dist/composites/treemap-chart/resolver.js.map +1 -0
  356. package/dist/composites/trial-balance/resolver.cjs +359 -0
  357. package/dist/composites/trial-balance/resolver.cjs.map +1 -0
  358. package/dist/composites/trial-balance/resolver.d.ts +3 -0
  359. package/dist/composites/trial-balance/resolver.d.ts.map +1 -0
  360. package/dist/composites/trial-balance/resolver.js +353 -0
  361. package/dist/composites/trial-balance/resolver.js.map +1 -0
  362. package/dist/composites/variance-analysis/resolver.cjs +310 -0
  363. package/dist/composites/variance-analysis/resolver.cjs.map +1 -0
  364. package/dist/composites/variance-analysis/resolver.d.ts +3 -0
  365. package/dist/composites/variance-analysis/resolver.d.ts.map +1 -0
  366. package/dist/composites/variance-analysis/resolver.js +308 -0
  367. package/dist/composites/variance-analysis/resolver.js.map +1 -0
  368. package/dist/composites/waterfall-chart/resolver.cjs +347 -0
  369. package/dist/composites/waterfall-chart/resolver.cjs.map +1 -0
  370. package/dist/composites/waterfall-chart/resolver.d.ts +3 -0
  371. package/dist/composites/waterfall-chart/resolver.d.ts.map +1 -0
  372. package/dist/composites/waterfall-chart/resolver.js +345 -0
  373. package/dist/composites/waterfall-chart/resolver.js.map +1 -0
  374. package/dist/index.cjs +18271 -0
  375. package/dist/index.cjs.map +1 -0
  376. package/dist/index.d.ts +52 -0
  377. package/dist/index.d.ts.map +1 -0
  378. package/dist/index.js +18184 -0
  379. package/dist/index.js.map +1 -0
  380. package/dist/renderer.cjs +17092 -0
  381. package/dist/renderer.cjs.map +1 -0
  382. package/dist/renderer.d.ts +7 -0
  383. package/dist/renderer.d.ts.map +1 -0
  384. package/dist/renderer.js +17064 -0
  385. package/dist/renderer.js.map +1 -0
  386. package/dist/resolver.cjs +17061 -0
  387. package/dist/resolver.cjs.map +1 -0
  388. package/dist/resolver.d.ts +6 -0
  389. package/dist/resolver.d.ts.map +1 -0
  390. package/dist/resolver.js +17033 -0
  391. package/dist/resolver.js.map +1 -0
  392. package/dist/schemas/aging-report.d.ts +74 -0
  393. package/dist/schemas/aging-report.d.ts.map +1 -0
  394. package/dist/schemas/alert.d.ts +39 -0
  395. package/dist/schemas/alert.d.ts.map +1 -0
  396. package/dist/schemas/allocation-donut.d.ts +53 -0
  397. package/dist/schemas/allocation-donut.d.ts.map +1 -0
  398. package/dist/schemas/amortization-table.d.ts +102 -0
  399. package/dist/schemas/amortization-table.d.ts.map +1 -0
  400. package/dist/schemas/area-chart.d.ts +61 -0
  401. package/dist/schemas/area-chart.d.ts.map +1 -0
  402. package/dist/schemas/audit-trail.d.ts +88 -0
  403. package/dist/schemas/audit-trail.d.ts.map +1 -0
  404. package/dist/schemas/balance-sheet.d.ts +170 -0
  405. package/dist/schemas/balance-sheet.d.ts.map +1 -0
  406. package/dist/schemas/buildRenderUITool.d.ts +7 -0
  407. package/dist/schemas/buildRenderUITool.d.ts.map +1 -0
  408. package/dist/schemas/bullet-chart.d.ts +58 -0
  409. package/dist/schemas/bullet-chart.d.ts.map +1 -0
  410. package/dist/schemas/cash-flow-statement.d.ts +165 -0
  411. package/dist/schemas/cash-flow-statement.d.ts.map +1 -0
  412. package/dist/schemas/chart-of-accounts.d.ts +93 -0
  413. package/dist/schemas/chart-of-accounts.d.ts.map +1 -0
  414. package/dist/schemas/cited-answer.d.ts +76 -0
  415. package/dist/schemas/cited-answer.d.ts.map +1 -0
  416. package/dist/schemas/coercePayload.d.ts +16 -0
  417. package/dist/schemas/coercePayload.d.ts.map +1 -0
  418. package/dist/schemas/combo-chart.d.ts +111 -0
  419. package/dist/schemas/combo-chart.d.ts.map +1 -0
  420. package/dist/schemas/comparative-bar-chart.d.ts +83 -0
  421. package/dist/schemas/comparative-bar-chart.d.ts.map +1 -0
  422. package/dist/schemas/compliance-checklist.d.ts +91 -0
  423. package/dist/schemas/compliance-checklist.d.ts.map +1 -0
  424. package/dist/schemas/connect-integration.d.ts +47 -0
  425. package/dist/schemas/connect-integration.d.ts.map +1 -0
  426. package/dist/schemas/data-table.d.ts +63 -0
  427. package/dist/schemas/data-table.d.ts.map +1 -0
  428. package/dist/schemas/depreciation-schedule.d.ts +125 -0
  429. package/dist/schemas/depreciation-schedule.d.ts.map +1 -0
  430. package/dist/schemas/document-preview.d.ts +128 -0
  431. package/dist/schemas/document-preview.d.ts.map +1 -0
  432. package/dist/schemas/download-card.d.ts +62 -0
  433. package/dist/schemas/download-card.d.ts.map +1 -0
  434. package/dist/schemas/engagement-pipeline.d.ts +119 -0
  435. package/dist/schemas/engagement-pipeline.d.ts.map +1 -0
  436. package/dist/schemas/entity-card-grid.d.ts +101 -0
  437. package/dist/schemas/entity-card-grid.d.ts.map +1 -0
  438. package/dist/schemas/escalation-card.d.ts +44 -0
  439. package/dist/schemas/escalation-card.d.ts.map +1 -0
  440. package/dist/schemas/file-browser.d.ts +81 -0
  441. package/dist/schemas/file-browser.d.ts.map +1 -0
  442. package/dist/schemas/flow-canvas.d.ts +58 -0
  443. package/dist/schemas/flow-canvas.d.ts.map +1 -0
  444. package/dist/schemas/funnel-chart.d.ts +53 -0
  445. package/dist/schemas/funnel-chart.d.ts.map +1 -0
  446. package/dist/schemas/gauge-chart.d.ts +58 -0
  447. package/dist/schemas/gauge-chart.d.ts.map +1 -0
  448. package/dist/schemas/general-ledger.d.ts +120 -0
  449. package/dist/schemas/general-ledger.d.ts.map +1 -0
  450. package/dist/schemas/grouped-table.d.ts +101 -0
  451. package/dist/schemas/grouped-table.d.ts.map +1 -0
  452. package/dist/schemas/heatmap-table.d.ts +76 -0
  453. package/dist/schemas/heatmap-table.d.ts.map +1 -0
  454. package/dist/schemas/income-statement.d.ts +170 -0
  455. package/dist/schemas/income-statement.d.ts.map +1 -0
  456. package/dist/schemas/index.cjs +3509 -0
  457. package/dist/schemas/index.cjs.map +1 -0
  458. package/dist/schemas/index.d.ts +5030 -0
  459. package/dist/schemas/index.d.ts.map +1 -0
  460. package/dist/schemas/index.js +3505 -0
  461. package/dist/schemas/index.js.map +1 -0
  462. package/dist/schemas/integrations-list.d.ts +62 -0
  463. package/dist/schemas/integrations-list.d.ts.map +1 -0
  464. package/dist/schemas/invoice-detail.d.ts +157 -0
  465. package/dist/schemas/invoice-detail.d.ts.map +1 -0
  466. package/dist/schemas/job-tracker.d.ts +114 -0
  467. package/dist/schemas/job-tracker.d.ts.map +1 -0
  468. package/dist/schemas/journal-entry.d.ts +90 -0
  469. package/dist/schemas/journal-entry.d.ts.map +1 -0
  470. package/dist/schemas/key-value-list.d.ts +108 -0
  471. package/dist/schemas/key-value-list.d.ts.map +1 -0
  472. package/dist/schemas/legal-test-result.d.ts +130 -0
  473. package/dist/schemas/legal-test-result.d.ts.map +1 -0
  474. package/dist/schemas/line-chart.d.ts +71 -0
  475. package/dist/schemas/line-chart.d.ts.map +1 -0
  476. package/dist/schemas/news-feed.d.ts +63 -0
  477. package/dist/schemas/news-feed.d.ts.map +1 -0
  478. package/dist/schemas/ops-dashboard.d.ts +92 -0
  479. package/dist/schemas/ops-dashboard.d.ts.map +1 -0
  480. package/dist/schemas/pipeline-preview.d.ts +209 -0
  481. package/dist/schemas/pipeline-preview.d.ts.map +1 -0
  482. package/dist/schemas/provenance-chain.d.ts +121 -0
  483. package/dist/schemas/provenance-chain.d.ts.map +1 -0
  484. package/dist/schemas/radar-chart.d.ts +70 -0
  485. package/dist/schemas/radar-chart.d.ts.map +1 -0
  486. package/dist/schemas/reconciliation-view.d.ts +156 -0
  487. package/dist/schemas/reconciliation-view.d.ts.map +1 -0
  488. package/dist/schemas/scatter-chart.d.ts +90 -0
  489. package/dist/schemas/scatter-chart.d.ts.map +1 -0
  490. package/dist/schemas/screener-table.d.ts +74 -0
  491. package/dist/schemas/screener-table.d.ts.map +1 -0
  492. package/dist/schemas/search-results.d.ts +87 -0
  493. package/dist/schemas/search-results.d.ts.map +1 -0
  494. package/dist/schemas/sparkline-table.d.ts +74 -0
  495. package/dist/schemas/sparkline-table.d.ts.map +1 -0
  496. package/dist/schemas/stacked-breakdown.d.ts +70 -0
  497. package/dist/schemas/stacked-breakdown.d.ts.map +1 -0
  498. package/dist/schemas/stat-grid.d.ts +55 -0
  499. package/dist/schemas/stat-grid.d.ts.map +1 -0
  500. package/dist/schemas/status-card.d.ts +84 -0
  501. package/dist/schemas/status-card.d.ts.map +1 -0
  502. package/dist/schemas/tabs-panel.d.ts +42 -0
  503. package/dist/schemas/tabs-panel.d.ts.map +1 -0
  504. package/dist/schemas/transaction-feed.d.ts +82 -0
  505. package/dist/schemas/transaction-feed.d.ts.map +1 -0
  506. package/dist/schemas/treemap-chart.d.ts +53 -0
  507. package/dist/schemas/treemap-chart.d.ts.map +1 -0
  508. package/dist/schemas/trial-balance.d.ts +85 -0
  509. package/dist/schemas/trial-balance.d.ts.map +1 -0
  510. package/dist/schemas/validatePayload.d.ts +10 -0
  511. package/dist/schemas/validatePayload.d.ts.map +1 -0
  512. package/dist/schemas/variance-analysis.d.ts +73 -0
  513. package/dist/schemas/variance-analysis.d.ts.map +1 -0
  514. package/dist/schemas/waterfall-chart.d.ts +53 -0
  515. package/dist/schemas/waterfall-chart.d.ts.map +1 -0
  516. package/dist/shared/ColumnSettingsPanel.d.ts +13 -0
  517. package/dist/shared/ColumnSettingsPanel.d.ts.map +1 -0
  518. package/dist/shared/ComponentActions.d.ts +20 -0
  519. package/dist/shared/ComponentActions.d.ts.map +1 -0
  520. package/dist/shared/FileCard.d.ts +35 -0
  521. package/dist/shared/FileCard.d.ts.map +1 -0
  522. package/dist/shared/Markdown.d.ts +22 -0
  523. package/dist/shared/Markdown.d.ts.map +1 -0
  524. package/dist/shared/PreviewModal.d.ts +19 -0
  525. package/dist/shared/PreviewModal.d.ts.map +1 -0
  526. package/dist/shared/ThemeContext.d.ts +18 -0
  527. package/dist/shared/ThemeContext.d.ts.map +1 -0
  528. package/dist/shared/brandIcons.d.ts +3 -0
  529. package/dist/shared/brandIcons.d.ts.map +1 -0
  530. package/dist/shared/downloadCSV.d.ts +5 -0
  531. package/dist/shared/downloadCSV.d.ts.map +1 -0
  532. package/dist/shared/fileType.d.ts +19 -0
  533. package/dist/shared/fileType.d.ts.map +1 -0
  534. package/dist/shared/theme.d.ts +48 -0
  535. package/dist/shared/theme.d.ts.map +1 -0
  536. package/dist/shared/useColumnVisibility.d.ts +13 -0
  537. package/dist/shared/useColumnVisibility.d.ts.map +1 -0
  538. package/dist/shared/useSeriesToggle.d.ts +8 -0
  539. package/dist/shared/useSeriesToggle.d.ts.map +1 -0
  540. package/dist/shared/viewers/CsvViewer.d.ts +13 -0
  541. package/dist/shared/viewers/CsvViewer.d.ts.map +1 -0
  542. package/dist/shared/viewers/DocxViewer.d.ts +8 -0
  543. package/dist/shared/viewers/DocxViewer.d.ts.map +1 -0
  544. package/dist/shared/viewers/PreviewHost.d.ts +17 -0
  545. package/dist/shared/viewers/PreviewHost.d.ts.map +1 -0
  546. package/dist/shared/viewers/TextViewer.d.ts +13 -0
  547. package/dist/shared/viewers/TextViewer.d.ts.map +1 -0
  548. package/dist/shared/viewers/decode.d.ts +14 -0
  549. package/dist/shared/viewers/decode.d.ts.map +1 -0
  550. package/dist/tool-definitions.json +4629 -0
  551. package/dist/types.d.ts +8 -0
  552. package/dist/types.d.ts.map +1 -0
  553. package/package.json +110 -0
  554. package/styles/contract.css +17 -0
@@ -0,0 +1,4629 @@
1
+ {
2
+ "version": "0.1.32",
3
+ "generated_at": "2026-06-03T03:59:50.636Z",
4
+ "schema_count": 56,
5
+ "schemas": {
6
+ "data-table": {
7
+ "name": "render_data_table",
8
+ "description": "Render a structured data table with labeled columns and rows",
9
+ "input_schema": {
10
+ "type": "object",
11
+ "properties": {
12
+ "type": {
13
+ "type": "string",
14
+ "enum": [
15
+ "data-table"
16
+ ]
17
+ },
18
+ "title": {
19
+ "type": "string"
20
+ },
21
+ "columns": {
22
+ "type": "array",
23
+ "items": {
24
+ "type": "object",
25
+ "properties": {
26
+ "key": {
27
+ "type": "string"
28
+ },
29
+ "label": {
30
+ "type": "string"
31
+ },
32
+ "align": {
33
+ "type": "string",
34
+ "enum": [
35
+ "start",
36
+ "center",
37
+ "end"
38
+ ]
39
+ }
40
+ },
41
+ "required": [
42
+ "key",
43
+ "label"
44
+ ]
45
+ }
46
+ },
47
+ "rows": {
48
+ "type": "array",
49
+ "items": {
50
+ "type": "object",
51
+ "additionalProperties": true
52
+ }
53
+ },
54
+ "pagination": {
55
+ "type": "boolean"
56
+ }
57
+ },
58
+ "required": [
59
+ "type",
60
+ "columns",
61
+ "rows"
62
+ ]
63
+ }
64
+ },
65
+ "status-card": {
66
+ "name": "render_status_card",
67
+ "description": "Render a card for a single entity — person, order, product, task",
68
+ "input_schema": {
69
+ "type": "object",
70
+ "properties": {
71
+ "type": {
72
+ "type": "string",
73
+ "enum": [
74
+ "status-card"
75
+ ]
76
+ },
77
+ "title": {
78
+ "type": "string"
79
+ },
80
+ "subtitle": {
81
+ "type": "string"
82
+ },
83
+ "status": {
84
+ "type": "string",
85
+ "enum": [
86
+ "default",
87
+ "success",
88
+ "warning",
89
+ "danger",
90
+ "primary"
91
+ ]
92
+ },
93
+ "fields": {
94
+ "type": "array",
95
+ "items": {
96
+ "type": "object",
97
+ "properties": {
98
+ "label": {
99
+ "type": "string"
100
+ },
101
+ "value": {
102
+ "type": "string"
103
+ },
104
+ "highlight": {
105
+ "type": "boolean"
106
+ }
107
+ },
108
+ "required": [
109
+ "label",
110
+ "value"
111
+ ]
112
+ }
113
+ },
114
+ "actions": {
115
+ "type": "array",
116
+ "items": {
117
+ "type": "object",
118
+ "properties": {
119
+ "label": {
120
+ "type": "string"
121
+ },
122
+ "variant": {
123
+ "type": "string"
124
+ },
125
+ "color": {
126
+ "type": "string"
127
+ }
128
+ },
129
+ "required": [
130
+ "label"
131
+ ]
132
+ }
133
+ }
134
+ },
135
+ "required": [
136
+ "type",
137
+ "title",
138
+ "fields"
139
+ ]
140
+ }
141
+ },
142
+ "alert": {
143
+ "name": "render_alert",
144
+ "description": "Render a short important message — success, warning, error, or info",
145
+ "input_schema": {
146
+ "type": "object",
147
+ "properties": {
148
+ "type": {
149
+ "type": "string",
150
+ "enum": [
151
+ "alert"
152
+ ]
153
+ },
154
+ "color": {
155
+ "type": "string",
156
+ "enum": [
157
+ "default",
158
+ "primary",
159
+ "secondary",
160
+ "success",
161
+ "warning",
162
+ "danger"
163
+ ]
164
+ },
165
+ "title": {
166
+ "type": "string"
167
+ },
168
+ "description": {
169
+ "type": "string"
170
+ }
171
+ },
172
+ "required": [
173
+ "type",
174
+ "color",
175
+ "title"
176
+ ]
177
+ }
178
+ },
179
+ "stat-grid": {
180
+ "name": "render_stat_grid",
181
+ "description": "Render 2–4 KPI metric cards side by side",
182
+ "input_schema": {
183
+ "type": "object",
184
+ "properties": {
185
+ "type": {
186
+ "type": "string",
187
+ "enum": [
188
+ "stat-grid"
189
+ ]
190
+ },
191
+ "stats": {
192
+ "type": "array",
193
+ "items": {
194
+ "type": "object",
195
+ "properties": {
196
+ "label": {
197
+ "type": "string"
198
+ },
199
+ "value": {
200
+ "type": "string"
201
+ },
202
+ "change": {
203
+ "type": "string"
204
+ },
205
+ "changeType": {
206
+ "type": "string",
207
+ "enum": [
208
+ "positive",
209
+ "negative",
210
+ "neutral"
211
+ ]
212
+ },
213
+ "description": {
214
+ "type": "string"
215
+ }
216
+ },
217
+ "required": [
218
+ "label",
219
+ "value"
220
+ ]
221
+ }
222
+ }
223
+ },
224
+ "required": [
225
+ "type",
226
+ "stats"
227
+ ]
228
+ }
229
+ },
230
+ "tabs-panel": {
231
+ "name": "render_tabs_panel",
232
+ "description": "Render multiple sections the user can switch between via tabs",
233
+ "input_schema": {
234
+ "type": "object",
235
+ "properties": {
236
+ "type": {
237
+ "type": "string",
238
+ "enum": [
239
+ "tabs-panel"
240
+ ]
241
+ },
242
+ "tabs": {
243
+ "type": "array",
244
+ "items": {
245
+ "type": "object",
246
+ "properties": {
247
+ "key": {
248
+ "type": "string"
249
+ },
250
+ "label": {
251
+ "type": "string"
252
+ },
253
+ "content": {
254
+ "type": "string"
255
+ }
256
+ },
257
+ "required": [
258
+ "key",
259
+ "label",
260
+ "content"
261
+ ]
262
+ }
263
+ }
264
+ },
265
+ "required": [
266
+ "type",
267
+ "tabs"
268
+ ]
269
+ }
270
+ },
271
+ "sparkline-table": {
272
+ "name": "render_sparkline_table",
273
+ "description": "Render a table where one column shows a 30-day sparkline trend per row — watchlist, holdings, options chain",
274
+ "input_schema": {
275
+ "type": "object",
276
+ "properties": {
277
+ "type": {
278
+ "type": "string",
279
+ "enum": [
280
+ "sparkline-table"
281
+ ]
282
+ },
283
+ "title": {
284
+ "type": "string"
285
+ },
286
+ "sparklineLabel": {
287
+ "type": "string"
288
+ },
289
+ "columns": {
290
+ "type": "array",
291
+ "items": {
292
+ "type": "object",
293
+ "properties": {
294
+ "key": {
295
+ "type": "string"
296
+ },
297
+ "label": {
298
+ "type": "string"
299
+ },
300
+ "align": {
301
+ "type": "string",
302
+ "enum": [
303
+ "start",
304
+ "center",
305
+ "end"
306
+ ]
307
+ }
308
+ },
309
+ "required": [
310
+ "key",
311
+ "label"
312
+ ]
313
+ }
314
+ },
315
+ "rows": {
316
+ "type": "array",
317
+ "items": {
318
+ "type": "object",
319
+ "properties": {
320
+ "sparkline": {
321
+ "type": "array",
322
+ "items": {
323
+ "type": "number"
324
+ }
325
+ }
326
+ },
327
+ "required": [
328
+ "sparkline"
329
+ ],
330
+ "additionalProperties": true
331
+ }
332
+ }
333
+ },
334
+ "required": [
335
+ "type",
336
+ "columns",
337
+ "rows"
338
+ ]
339
+ }
340
+ },
341
+ "heatmap-table": {
342
+ "name": "render_heatmap_table",
343
+ "description": "Render a comparison table where cells are color-scaled by z-score — fund comparison, peer group, macro heatmap",
344
+ "input_schema": {
345
+ "type": "object",
346
+ "properties": {
347
+ "type": {
348
+ "type": "string",
349
+ "enum": [
350
+ "heatmap-table"
351
+ ]
352
+ },
353
+ "title": {
354
+ "type": "string"
355
+ },
356
+ "columns": {
357
+ "type": "array",
358
+ "items": {
359
+ "type": "object",
360
+ "properties": {
361
+ "key": {
362
+ "type": "string"
363
+ },
364
+ "label": {
365
+ "type": "string"
366
+ }
367
+ },
368
+ "required": [
369
+ "key",
370
+ "label"
371
+ ]
372
+ }
373
+ },
374
+ "rows": {
375
+ "type": "array",
376
+ "items": {
377
+ "type": "object",
378
+ "properties": {
379
+ "rowLabel": {
380
+ "type": "string"
381
+ },
382
+ "cells": {
383
+ "type": "array",
384
+ "items": {
385
+ "type": "object",
386
+ "properties": {
387
+ "value": {
388
+ "type": "string"
389
+ },
390
+ "zScore": {
391
+ "type": "number"
392
+ }
393
+ },
394
+ "required": [
395
+ "value",
396
+ "zScore"
397
+ ]
398
+ }
399
+ }
400
+ },
401
+ "required": [
402
+ "rowLabel",
403
+ "cells"
404
+ ]
405
+ }
406
+ }
407
+ },
408
+ "required": [
409
+ "type",
410
+ "columns",
411
+ "rows"
412
+ ]
413
+ }
414
+ },
415
+ "screener-table": {
416
+ "name": "render_screener_table",
417
+ "description": "Render a sortable table with inline meter bars for scores/ratings — stock screener, fund search, bond filter",
418
+ "input_schema": {
419
+ "type": "object",
420
+ "properties": {
421
+ "type": {
422
+ "type": "string",
423
+ "enum": [
424
+ "screener-table"
425
+ ]
426
+ },
427
+ "title": {
428
+ "type": "string"
429
+ },
430
+ "columns": {
431
+ "type": "array",
432
+ "items": {
433
+ "type": "object",
434
+ "properties": {
435
+ "key": {
436
+ "type": "string"
437
+ },
438
+ "label": {
439
+ "type": "string"
440
+ },
441
+ "align": {
442
+ "type": "string",
443
+ "enum": [
444
+ "start",
445
+ "center",
446
+ "end"
447
+ ]
448
+ },
449
+ "meterKey": {
450
+ "type": "boolean"
451
+ },
452
+ "meterMax": {
453
+ "type": "number"
454
+ }
455
+ },
456
+ "required": [
457
+ "key",
458
+ "label"
459
+ ]
460
+ }
461
+ },
462
+ "rows": {
463
+ "type": "array",
464
+ "items": {
465
+ "type": "object",
466
+ "additionalProperties": true
467
+ }
468
+ },
469
+ "activeFilters": {
470
+ "type": "array",
471
+ "items": {
472
+ "type": "string"
473
+ }
474
+ }
475
+ },
476
+ "required": [
477
+ "type",
478
+ "columns",
479
+ "rows"
480
+ ]
481
+ }
482
+ },
483
+ "grouped-table": {
484
+ "name": "render_grouped_table",
485
+ "description": "Render a table with collapsible row groups — portfolio hierarchy, sleeve breakdown, consolidated view",
486
+ "input_schema": {
487
+ "type": "object",
488
+ "properties": {
489
+ "type": {
490
+ "type": "string",
491
+ "enum": [
492
+ "grouped-table"
493
+ ]
494
+ },
495
+ "title": {
496
+ "type": "string"
497
+ },
498
+ "columns": {
499
+ "type": "array",
500
+ "items": {
501
+ "type": "object",
502
+ "properties": {
503
+ "key": {
504
+ "type": "string"
505
+ },
506
+ "label": {
507
+ "type": "string"
508
+ },
509
+ "align": {
510
+ "type": "string"
511
+ }
512
+ },
513
+ "required": [
514
+ "key",
515
+ "label"
516
+ ]
517
+ }
518
+ },
519
+ "groups": {
520
+ "type": "array",
521
+ "items": {
522
+ "type": "object",
523
+ "properties": {
524
+ "groupLabel": {
525
+ "type": "string"
526
+ },
527
+ "rows": {
528
+ "type": "array",
529
+ "items": {
530
+ "type": "object",
531
+ "additionalProperties": true
532
+ }
533
+ },
534
+ "subGroups": {
535
+ "type": "array",
536
+ "items": {
537
+ "type": "object",
538
+ "properties": {
539
+ "groupLabel": {
540
+ "type": "string"
541
+ },
542
+ "rows": {
543
+ "type": "array",
544
+ "items": {
545
+ "type": "object",
546
+ "additionalProperties": true
547
+ }
548
+ }
549
+ },
550
+ "required": [
551
+ "groupLabel",
552
+ "rows"
553
+ ]
554
+ }
555
+ }
556
+ },
557
+ "required": [
558
+ "groupLabel",
559
+ "rows"
560
+ ]
561
+ }
562
+ }
563
+ },
564
+ "required": [
565
+ "type",
566
+ "columns",
567
+ "groups"
568
+ ]
569
+ }
570
+ },
571
+ "news-feed": {
572
+ "name": "render_news_feed",
573
+ "description": "Render a list of news items with AI sentiment chips — news, catalysts, sentiment, macro",
574
+ "input_schema": {
575
+ "type": "object",
576
+ "properties": {
577
+ "type": {
578
+ "type": "string",
579
+ "enum": [
580
+ "news-feed"
581
+ ]
582
+ },
583
+ "title": {
584
+ "type": "string"
585
+ },
586
+ "items": {
587
+ "type": "array",
588
+ "items": {
589
+ "type": "object",
590
+ "properties": {
591
+ "headline": {
592
+ "type": "string"
593
+ },
594
+ "source": {
595
+ "type": "string"
596
+ },
597
+ "timestamp": {
598
+ "type": "string"
599
+ },
600
+ "sentiment": {
601
+ "type": "string",
602
+ "enum": [
603
+ "positive",
604
+ "neutral",
605
+ "negative"
606
+ ]
607
+ },
608
+ "summary": {
609
+ "type": "string"
610
+ },
611
+ "url": {
612
+ "type": "string"
613
+ }
614
+ },
615
+ "required": [
616
+ "headline",
617
+ "source",
618
+ "timestamp",
619
+ "sentiment"
620
+ ]
621
+ }
622
+ }
623
+ },
624
+ "required": [
625
+ "type",
626
+ "items"
627
+ ]
628
+ }
629
+ },
630
+ "area-chart": {
631
+ "name": "render_area_chart",
632
+ "description": "Render a multi-series area chart for time series — cumulative return, benchmark comparison, drawdown",
633
+ "input_schema": {
634
+ "type": "object",
635
+ "properties": {
636
+ "type": {
637
+ "type": "string",
638
+ "enum": [
639
+ "area-chart"
640
+ ]
641
+ },
642
+ "title": {
643
+ "type": "string"
644
+ },
645
+ "xKey": {
646
+ "type": "string",
647
+ "description": "The key in each data row used as the X-axis label (e.g. 'date')"
648
+ },
649
+ "series": {
650
+ "type": "array",
651
+ "items": {
652
+ "type": "object",
653
+ "properties": {
654
+ "name": {
655
+ "type": "string"
656
+ },
657
+ "dataKey": {
658
+ "type": "string"
659
+ },
660
+ "color": {
661
+ "type": "string",
662
+ "description": "CSS color, e.g. #6366f1"
663
+ }
664
+ },
665
+ "required": [
666
+ "name",
667
+ "dataKey",
668
+ "color"
669
+ ]
670
+ }
671
+ },
672
+ "data": {
673
+ "type": "array",
674
+ "items": {
675
+ "type": "object",
676
+ "additionalProperties": true
677
+ },
678
+ "description": "Array of data rows. Each row must have xKey and all series dataKeys."
679
+ }
680
+ },
681
+ "required": [
682
+ "type",
683
+ "xKey",
684
+ "series",
685
+ "data"
686
+ ]
687
+ }
688
+ },
689
+ "allocation-donut": {
690
+ "name": "render_allocation_donut",
691
+ "description": "Render a donut chart with allocation breakdown table — portfolio, asset class, sector, geography",
692
+ "input_schema": {
693
+ "type": "object",
694
+ "properties": {
695
+ "type": {
696
+ "type": "string",
697
+ "enum": [
698
+ "allocation-donut"
699
+ ]
700
+ },
701
+ "title": {
702
+ "type": "string"
703
+ },
704
+ "slices": {
705
+ "type": "array",
706
+ "items": {
707
+ "type": "object",
708
+ "properties": {
709
+ "label": {
710
+ "type": "string"
711
+ },
712
+ "value": {
713
+ "type": "number",
714
+ "description": "Percentage 0-100"
715
+ },
716
+ "color": {
717
+ "type": "string",
718
+ "description": "Optional CSS color"
719
+ },
720
+ "benchmark": {
721
+ "type": "number",
722
+ "description": "Benchmark weight for over/underweight chip"
723
+ }
724
+ },
725
+ "required": [
726
+ "label",
727
+ "value"
728
+ ]
729
+ }
730
+ }
731
+ },
732
+ "required": [
733
+ "type",
734
+ "slices"
735
+ ]
736
+ }
737
+ },
738
+ "waterfall-chart": {
739
+ "name": "render_waterfall_chart",
740
+ "description": "Render a waterfall bar chart showing contribution of each factor to total return — factor attribution, P&L attribution",
741
+ "input_schema": {
742
+ "type": "object",
743
+ "properties": {
744
+ "type": {
745
+ "type": "string",
746
+ "enum": [
747
+ "waterfall-chart"
748
+ ]
749
+ },
750
+ "title": {
751
+ "type": "string"
752
+ },
753
+ "bars": {
754
+ "type": "array",
755
+ "items": {
756
+ "type": "object",
757
+ "properties": {
758
+ "label": {
759
+ "type": "string"
760
+ },
761
+ "value": {
762
+ "type": "number",
763
+ "description": "Positive or negative contribution"
764
+ },
765
+ "isTotal": {
766
+ "type": "boolean",
767
+ "description": "True for the total/net bar"
768
+ }
769
+ },
770
+ "required": [
771
+ "label",
772
+ "value"
773
+ ]
774
+ }
775
+ },
776
+ "unit": {
777
+ "type": "string",
778
+ "description": "Unit label, e.g. '%' or 'bps'"
779
+ }
780
+ },
781
+ "required": [
782
+ "type",
783
+ "bars"
784
+ ]
785
+ }
786
+ },
787
+ "flow-canvas": {
788
+ "name": "render_flow_canvas",
789
+ "description": "Render a Mermaid diagram for user flows, workflows, system architecture, process maps, mind maps, ER diagrams, sequence diagrams, and any visual design artifact. Use when the user asks to visualize a process, flow, system, or diagram of any kind.",
790
+ "input_schema": {
791
+ "type": "object",
792
+ "properties": {
793
+ "type": {
794
+ "type": "string",
795
+ "enum": [
796
+ "flow-canvas"
797
+ ]
798
+ },
799
+ "id": {
800
+ "type": "string",
801
+ "description": "Stable id for this diagram. To UPDATE a previously shown flow (e.g. a pipeline as its stages progress), re-render with the SAME id and updated node_states — the existing card updates in place instead of a new one being added. Omit for one-off diagrams."
802
+ },
803
+ "title": {
804
+ "type": "string",
805
+ "description": "Diagram title, shown above the canvas"
806
+ },
807
+ "description": {
808
+ "type": "string",
809
+ "description": "One-line description of what the diagram shows"
810
+ },
811
+ "node_states": {
812
+ "type": "object",
813
+ "description": "Optional per-node run status, keyed by the Mermaid node id or its label, value one of 'pending' | 'active' | 'done' | 'error'. Drives stage coloring + a paint animation. Update these (with the same id) as the workflow progresses.",
814
+ "additionalProperties": {
815
+ "type": "string",
816
+ "enum": [
817
+ "pending",
818
+ "active",
819
+ "done",
820
+ "error"
821
+ ]
822
+ }
823
+ },
824
+ "autoplay": {
825
+ "type": "boolean",
826
+ "description": "When true, the flow auto-animates each node lighting up in sequence (loops) — use only to DEMO a workflow running when there is no real per-stage status to report."
827
+ },
828
+ "diagram": {
829
+ "type": "string",
830
+ "description": "A valid Mermaid diagram string. Keep diagrams COMPACT — max 15 nodes, short labels (1-4 words each). No emojis anywhere.\n\nflowchart TD (top-down flows and processes):\n flowchart TD\n A([Start]) --> B[Step One]\n B --> C{Decision?}\n C -->|Yes| D[Path A]\n C -->|No| E[Path B]\n D --> F([End])\n E --> F\n\nflowchart LR (left-right pipelines):\n flowchart LR\n A[Input] --> B[Process] --> C[Output]\n\nsequenceDiagram (actor interactions):\n sequenceDiagram\n participant U as User\n participant S as Server\n U->>S: POST /login\n S-->>U: 200 OK\n\nerDiagram:\n erDiagram\n USER ||--o{ ORDER : places\n ORDER ||--|{ LINE_ITEM : contains\n\nclassDiagram:\n classDiagram\n Animal <|-- Dog\n Animal: +name string\n\nRULES — follow these exactly:\n- Max 15 nodes total. For complex topics, show the happy path only; omit edge cases\n- Labels: 1-4 words, no punctuation other than / or &\n- No emojis anywhere\n- No inline style directives (style A fill:#...)\n- Prefer TD for flows, LR for pipelines, sequence for interactions\n- Use subgraph only when 2+ clear groups exist; max 2 subgraphs\n- Do NOT wrap output in ```mermaid fences"
831
+ }
832
+ },
833
+ "required": [
834
+ "type",
835
+ "diagram"
836
+ ]
837
+ }
838
+ },
839
+ "trial-balance": {
840
+ "name": "render_trial_balance",
841
+ "description": "Render a debit/credit trial balance grouped by account category — chart of accounts, balance verification",
842
+ "input_schema": {
843
+ "type": "object",
844
+ "properties": {
845
+ "type": {
846
+ "type": "string",
847
+ "enum": [
848
+ "trial-balance"
849
+ ]
850
+ },
851
+ "title": {
852
+ "type": "string"
853
+ },
854
+ "asOfDate": {
855
+ "type": "string",
856
+ "description": "As-of date for the balance"
857
+ },
858
+ "currency": {
859
+ "type": "string",
860
+ "description": "ISO currency code, e.g. USD"
861
+ },
862
+ "groups": {
863
+ "type": "array",
864
+ "items": {
865
+ "type": "object",
866
+ "properties": {
867
+ "category": {
868
+ "type": "string",
869
+ "enum": [
870
+ "assets",
871
+ "liabilities",
872
+ "equity",
873
+ "revenue",
874
+ "expenses",
875
+ "other"
876
+ ]
877
+ },
878
+ "accounts": {
879
+ "type": "array",
880
+ "items": {
881
+ "type": "object",
882
+ "properties": {
883
+ "code": {
884
+ "type": "string"
885
+ },
886
+ "name": {
887
+ "type": "string"
888
+ },
889
+ "debit": {
890
+ "type": "number",
891
+ "minimum": 0
892
+ },
893
+ "credit": {
894
+ "type": "number",
895
+ "minimum": 0
896
+ }
897
+ },
898
+ "required": [
899
+ "code",
900
+ "name"
901
+ ]
902
+ }
903
+ }
904
+ },
905
+ "required": [
906
+ "category",
907
+ "accounts"
908
+ ]
909
+ }
910
+ }
911
+ },
912
+ "required": [
913
+ "type",
914
+ "groups"
915
+ ]
916
+ }
917
+ },
918
+ "journal-entry": {
919
+ "name": "render_journal_entry",
920
+ "description": "Render journal entries with debit/credit lines — transactions, adjusting entries, postings",
921
+ "input_schema": {
922
+ "type": "object",
923
+ "properties": {
924
+ "type": {
925
+ "type": "string",
926
+ "enum": [
927
+ "journal-entry"
928
+ ]
929
+ },
930
+ "title": {
931
+ "type": "string"
932
+ },
933
+ "entries": {
934
+ "type": "array",
935
+ "items": {
936
+ "type": "object",
937
+ "properties": {
938
+ "entryId": {
939
+ "type": "string"
940
+ },
941
+ "date": {
942
+ "type": "string",
943
+ "description": "ISO date"
944
+ },
945
+ "memo": {
946
+ "type": "string"
947
+ },
948
+ "status": {
949
+ "type": "string",
950
+ "enum": [
951
+ "draft",
952
+ "posted",
953
+ "reversed",
954
+ "pending-approval"
955
+ ]
956
+ },
957
+ "lines": {
958
+ "type": "array",
959
+ "items": {
960
+ "type": "object",
961
+ "properties": {
962
+ "account": {
963
+ "type": "string"
964
+ },
965
+ "description": {
966
+ "type": "string"
967
+ },
968
+ "debit": {
969
+ "type": "number",
970
+ "minimum": 0
971
+ },
972
+ "credit": {
973
+ "type": "number",
974
+ "minimum": 0
975
+ }
976
+ },
977
+ "required": [
978
+ "account"
979
+ ]
980
+ }
981
+ }
982
+ },
983
+ "required": [
984
+ "entryId",
985
+ "date",
986
+ "lines"
987
+ ]
988
+ }
989
+ },
990
+ "currency": {
991
+ "type": "string"
992
+ }
993
+ },
994
+ "required": [
995
+ "type",
996
+ "entries"
997
+ ]
998
+ }
999
+ },
1000
+ "aging-report": {
1001
+ "name": "render_aging_report",
1002
+ "description": "Render an AR/AP aging report with time buckets — overdue invoices, collections, payables aging",
1003
+ "input_schema": {
1004
+ "type": "object",
1005
+ "properties": {
1006
+ "type": {
1007
+ "type": "string",
1008
+ "enum": [
1009
+ "aging-report"
1010
+ ]
1011
+ },
1012
+ "title": {
1013
+ "type": "string"
1014
+ },
1015
+ "reportType": {
1016
+ "type": "string",
1017
+ "enum": [
1018
+ "receivable",
1019
+ "payable"
1020
+ ]
1021
+ },
1022
+ "asOfDate": {
1023
+ "type": "string"
1024
+ },
1025
+ "currency": {
1026
+ "type": "string"
1027
+ },
1028
+ "buckets": {
1029
+ "type": "array",
1030
+ "items": {
1031
+ "type": "string"
1032
+ },
1033
+ "description": "Aging bucket labels, e.g. ['Current','1-30','31-60','61-90','90+']"
1034
+ },
1035
+ "entities": {
1036
+ "type": "array",
1037
+ "items": {
1038
+ "type": "object",
1039
+ "properties": {
1040
+ "name": {
1041
+ "type": "string"
1042
+ },
1043
+ "amounts": {
1044
+ "type": "array",
1045
+ "items": {
1046
+ "type": "number"
1047
+ },
1048
+ "description": "One amount per bucket"
1049
+ },
1050
+ "total": {
1051
+ "type": "number"
1052
+ }
1053
+ },
1054
+ "required": [
1055
+ "name",
1056
+ "amounts",
1057
+ "total"
1058
+ ]
1059
+ }
1060
+ }
1061
+ },
1062
+ "required": [
1063
+ "type",
1064
+ "buckets",
1065
+ "entities"
1066
+ ]
1067
+ }
1068
+ },
1069
+ "variance-analysis": {
1070
+ "name": "render_variance_analysis",
1071
+ "description": "Render a budget vs actual table with variance columns — cost analysis, performance vs target",
1072
+ "input_schema": {
1073
+ "type": "object",
1074
+ "properties": {
1075
+ "type": {
1076
+ "type": "string",
1077
+ "enum": [
1078
+ "variance-analysis"
1079
+ ]
1080
+ },
1081
+ "title": {
1082
+ "type": "string"
1083
+ },
1084
+ "currency": {
1085
+ "type": "string"
1086
+ },
1087
+ "period": {
1088
+ "type": "string"
1089
+ },
1090
+ "rows": {
1091
+ "type": "array",
1092
+ "items": {
1093
+ "type": "object",
1094
+ "properties": {
1095
+ "lineItem": {
1096
+ "type": "string"
1097
+ },
1098
+ "budget": {
1099
+ "type": "number"
1100
+ },
1101
+ "actual": {
1102
+ "type": "number"
1103
+ },
1104
+ "isSubtotal": {
1105
+ "type": "boolean"
1106
+ },
1107
+ "indent": {
1108
+ "type": "number",
1109
+ "minimum": 0,
1110
+ "maximum": 3
1111
+ }
1112
+ },
1113
+ "required": [
1114
+ "lineItem",
1115
+ "budget",
1116
+ "actual"
1117
+ ]
1118
+ }
1119
+ },
1120
+ "favorableDirection": {
1121
+ "type": "string",
1122
+ "enum": [
1123
+ "higher",
1124
+ "lower"
1125
+ ],
1126
+ "description": "Whether higher actual is favorable (revenue) or unfavorable (cost)"
1127
+ }
1128
+ },
1129
+ "required": [
1130
+ "type",
1131
+ "rows"
1132
+ ]
1133
+ }
1134
+ },
1135
+ "stacked-breakdown": {
1136
+ "name": "render_stacked_breakdown",
1137
+ "description": "Render a stacked bar chart with category breakdown across periods — cost breakdown, revenue by segment, liability composition, budget allocation",
1138
+ "input_schema": {
1139
+ "type": "object",
1140
+ "properties": {
1141
+ "type": {
1142
+ "type": "string",
1143
+ "enum": [
1144
+ "stacked-breakdown"
1145
+ ]
1146
+ },
1147
+ "title": {
1148
+ "type": "string"
1149
+ },
1150
+ "currency": {
1151
+ "type": "string"
1152
+ },
1153
+ "periods": {
1154
+ "type": "array",
1155
+ "items": {
1156
+ "type": "string"
1157
+ },
1158
+ "description": "Period labels, e.g. ['Q1 2024','Q2 2024']"
1159
+ },
1160
+ "categories": {
1161
+ "type": "array",
1162
+ "items": {
1163
+ "type": "object",
1164
+ "properties": {
1165
+ "name": {
1166
+ "type": "string"
1167
+ },
1168
+ "color": {
1169
+ "type": "string"
1170
+ },
1171
+ "values": {
1172
+ "type": "array",
1173
+ "items": {
1174
+ "type": "number"
1175
+ },
1176
+ "description": "One value per period"
1177
+ }
1178
+ },
1179
+ "required": [
1180
+ "name",
1181
+ "values"
1182
+ ]
1183
+ }
1184
+ },
1185
+ "totals": {
1186
+ "type": "array",
1187
+ "items": {
1188
+ "type": "number"
1189
+ },
1190
+ "description": "Optional pre-computed totals per period"
1191
+ }
1192
+ },
1193
+ "required": [
1194
+ "type",
1195
+ "periods",
1196
+ "categories"
1197
+ ]
1198
+ }
1199
+ },
1200
+ "comparative-bar-chart": {
1201
+ "name": "render_comparative_bar_chart",
1202
+ "description": "Render a grouped or stacked bar chart for comparisons — period-over-period, multi-entity benchmarks",
1203
+ "input_schema": {
1204
+ "type": "object",
1205
+ "properties": {
1206
+ "type": {
1207
+ "type": "string",
1208
+ "enum": [
1209
+ "comparative-bar-chart"
1210
+ ]
1211
+ },
1212
+ "title": {
1213
+ "type": "string"
1214
+ },
1215
+ "mode": {
1216
+ "type": "string",
1217
+ "enum": [
1218
+ "grouped",
1219
+ "stacked"
1220
+ ]
1221
+ },
1222
+ "orientation": {
1223
+ "type": "string",
1224
+ "enum": [
1225
+ "vertical",
1226
+ "horizontal"
1227
+ ]
1228
+ },
1229
+ "xKey": {
1230
+ "type": "string",
1231
+ "description": "Key in data objects for x-axis labels"
1232
+ },
1233
+ "series": {
1234
+ "type": "array",
1235
+ "items": {
1236
+ "type": "object",
1237
+ "properties": {
1238
+ "name": {
1239
+ "type": "string"
1240
+ },
1241
+ "dataKey": {
1242
+ "type": "string"
1243
+ },
1244
+ "color": {
1245
+ "type": "string"
1246
+ }
1247
+ },
1248
+ "required": [
1249
+ "name",
1250
+ "dataKey"
1251
+ ]
1252
+ }
1253
+ },
1254
+ "data": {
1255
+ "type": "array",
1256
+ "items": {
1257
+ "type": "object",
1258
+ "additionalProperties": true
1259
+ }
1260
+ },
1261
+ "unit": {
1262
+ "type": "string"
1263
+ },
1264
+ "showValues": {
1265
+ "type": "boolean"
1266
+ }
1267
+ },
1268
+ "required": [
1269
+ "type",
1270
+ "xKey",
1271
+ "series",
1272
+ "data"
1273
+ ]
1274
+ }
1275
+ },
1276
+ "compliance-checklist": {
1277
+ "name": "render_compliance_checklist",
1278
+ "description": "Render a regulatory checklist with status tracking — audit checklist, SOX, filing deadlines",
1279
+ "input_schema": {
1280
+ "type": "object",
1281
+ "properties": {
1282
+ "type": {
1283
+ "type": "string",
1284
+ "enum": [
1285
+ "compliance-checklist"
1286
+ ]
1287
+ },
1288
+ "title": {
1289
+ "type": "string"
1290
+ },
1291
+ "sections": {
1292
+ "type": "array",
1293
+ "items": {
1294
+ "type": "object",
1295
+ "properties": {
1296
+ "sectionTitle": {
1297
+ "type": "string"
1298
+ },
1299
+ "items": {
1300
+ "type": "array",
1301
+ "items": {
1302
+ "type": "object",
1303
+ "properties": {
1304
+ "id": {
1305
+ "type": "string"
1306
+ },
1307
+ "description": {
1308
+ "type": "string"
1309
+ },
1310
+ "status": {
1311
+ "type": "string",
1312
+ "enum": [
1313
+ "completed",
1314
+ "in-progress",
1315
+ "not-started",
1316
+ "overdue",
1317
+ "blocked",
1318
+ "na"
1319
+ ]
1320
+ },
1321
+ "dueDate": {
1322
+ "type": "string"
1323
+ },
1324
+ "assignee": {
1325
+ "type": "string"
1326
+ },
1327
+ "notes": {
1328
+ "type": "string"
1329
+ },
1330
+ "priority": {
1331
+ "type": "string",
1332
+ "enum": [
1333
+ "critical",
1334
+ "high",
1335
+ "medium",
1336
+ "low"
1337
+ ]
1338
+ }
1339
+ },
1340
+ "required": [
1341
+ "id",
1342
+ "description",
1343
+ "status"
1344
+ ]
1345
+ }
1346
+ }
1347
+ },
1348
+ "required": [
1349
+ "sectionTitle",
1350
+ "items"
1351
+ ]
1352
+ }
1353
+ }
1354
+ },
1355
+ "required": [
1356
+ "type",
1357
+ "sections"
1358
+ ]
1359
+ }
1360
+ },
1361
+ "reconciliation-view": {
1362
+ "name": "render_reconciliation_view",
1363
+ "description": "Render a side-by-side reconciliation of two sources — bank recon, intercompany matching",
1364
+ "input_schema": {
1365
+ "type": "object",
1366
+ "properties": {
1367
+ "type": {
1368
+ "type": "string",
1369
+ "enum": [
1370
+ "reconciliation-view"
1371
+ ]
1372
+ },
1373
+ "title": {
1374
+ "type": "string"
1375
+ },
1376
+ "currency": {
1377
+ "type": "string"
1378
+ },
1379
+ "sourceA": {
1380
+ "type": "object",
1381
+ "properties": {
1382
+ "label": {
1383
+ "type": "string"
1384
+ }
1385
+ },
1386
+ "required": [
1387
+ "label"
1388
+ ]
1389
+ },
1390
+ "sourceB": {
1391
+ "type": "object",
1392
+ "properties": {
1393
+ "label": {
1394
+ "type": "string"
1395
+ }
1396
+ },
1397
+ "required": [
1398
+ "label"
1399
+ ]
1400
+ },
1401
+ "matched": {
1402
+ "type": "array",
1403
+ "items": {
1404
+ "type": "object",
1405
+ "properties": {
1406
+ "date": {
1407
+ "type": "string"
1408
+ },
1409
+ "description": {
1410
+ "type": "string"
1411
+ },
1412
+ "amountA": {
1413
+ "type": "number"
1414
+ },
1415
+ "amountB": {
1416
+ "type": "number"
1417
+ },
1418
+ "reference": {
1419
+ "type": "string"
1420
+ }
1421
+ },
1422
+ "required": [
1423
+ "date",
1424
+ "description",
1425
+ "amountA",
1426
+ "amountB"
1427
+ ]
1428
+ }
1429
+ },
1430
+ "unmatchedA": {
1431
+ "type": "array",
1432
+ "items": {
1433
+ "type": "object",
1434
+ "properties": {
1435
+ "date": {
1436
+ "type": "string"
1437
+ },
1438
+ "description": {
1439
+ "type": "string"
1440
+ },
1441
+ "amount": {
1442
+ "type": "number"
1443
+ },
1444
+ "reference": {
1445
+ "type": "string"
1446
+ }
1447
+ },
1448
+ "required": [
1449
+ "date",
1450
+ "description",
1451
+ "amount"
1452
+ ]
1453
+ }
1454
+ },
1455
+ "unmatchedB": {
1456
+ "type": "array",
1457
+ "items": {
1458
+ "type": "object",
1459
+ "properties": {
1460
+ "date": {
1461
+ "type": "string"
1462
+ },
1463
+ "description": {
1464
+ "type": "string"
1465
+ },
1466
+ "amount": {
1467
+ "type": "number"
1468
+ },
1469
+ "reference": {
1470
+ "type": "string"
1471
+ }
1472
+ },
1473
+ "required": [
1474
+ "date",
1475
+ "description",
1476
+ "amount"
1477
+ ]
1478
+ }
1479
+ },
1480
+ "summary": {
1481
+ "type": "object",
1482
+ "properties": {
1483
+ "balanceA": {
1484
+ "type": "number"
1485
+ },
1486
+ "balanceB": {
1487
+ "type": "number"
1488
+ },
1489
+ "difference": {
1490
+ "type": "number"
1491
+ }
1492
+ },
1493
+ "required": [
1494
+ "balanceA",
1495
+ "balanceB",
1496
+ "difference"
1497
+ ]
1498
+ }
1499
+ },
1500
+ "required": [
1501
+ "type",
1502
+ "sourceA",
1503
+ "sourceB"
1504
+ ]
1505
+ }
1506
+ },
1507
+ "audit-trail": {
1508
+ "name": "render_audit_trail",
1509
+ "description": "Render a chronological change log with diffs — revision history, modification tracking",
1510
+ "input_schema": {
1511
+ "type": "object",
1512
+ "properties": {
1513
+ "type": {
1514
+ "type": "string",
1515
+ "enum": [
1516
+ "audit-trail"
1517
+ ]
1518
+ },
1519
+ "title": {
1520
+ "type": "string"
1521
+ },
1522
+ "entityName": {
1523
+ "type": "string"
1524
+ },
1525
+ "events": {
1526
+ "type": "array",
1527
+ "items": {
1528
+ "type": "object",
1529
+ "properties": {
1530
+ "timestamp": {
1531
+ "type": "string",
1532
+ "description": "ISO datetime"
1533
+ },
1534
+ "actor": {
1535
+ "type": "string"
1536
+ },
1537
+ "action": {
1538
+ "type": "string",
1539
+ "enum": [
1540
+ "created",
1541
+ "modified",
1542
+ "approved",
1543
+ "rejected",
1544
+ "deleted",
1545
+ "restored",
1546
+ "submitted",
1547
+ "commented"
1548
+ ]
1549
+ },
1550
+ "summary": {
1551
+ "type": "string"
1552
+ },
1553
+ "changes": {
1554
+ "type": "array",
1555
+ "items": {
1556
+ "type": "object",
1557
+ "properties": {
1558
+ "field": {
1559
+ "type": "string"
1560
+ },
1561
+ "oldValue": {
1562
+ "type": "string"
1563
+ },
1564
+ "newValue": {
1565
+ "type": "string"
1566
+ }
1567
+ },
1568
+ "required": [
1569
+ "field"
1570
+ ]
1571
+ }
1572
+ }
1573
+ },
1574
+ "required": [
1575
+ "timestamp",
1576
+ "actor",
1577
+ "action",
1578
+ "summary"
1579
+ ]
1580
+ }
1581
+ }
1582
+ },
1583
+ "required": [
1584
+ "type",
1585
+ "events"
1586
+ ]
1587
+ }
1588
+ },
1589
+ "document-preview": {
1590
+ "name": "render_document_preview",
1591
+ "description": "Render a read-only document viewer for PDF/Excel — tax returns, financial statements, supporting docs. Demo files available: source.url='/demos/sample-tax-return.pdf' (3-page Q4 2024 tax return) and source.url='/demos/sample-budget.xlsx' (3-sheet Q4 2024 budget). When using a demo file, set source.url and provide pages with labels for fallback.",
1592
+ "input_schema": {
1593
+ "type": "object",
1594
+ "properties": {
1595
+ "type": {
1596
+ "type": "string",
1597
+ "enum": [
1598
+ "document-preview"
1599
+ ]
1600
+ },
1601
+ "title": {
1602
+ "type": "string"
1603
+ },
1604
+ "documentType": {
1605
+ "type": "string",
1606
+ "enum": [
1607
+ "pdf",
1608
+ "excel"
1609
+ ]
1610
+ },
1611
+ "source": {
1612
+ "type": "object",
1613
+ "properties": {
1614
+ "url": {
1615
+ "type": "string"
1616
+ },
1617
+ "base64": {
1618
+ "type": "string"
1619
+ },
1620
+ "filename": {
1621
+ "type": "string"
1622
+ }
1623
+ },
1624
+ "required": [
1625
+ "filename"
1626
+ ]
1627
+ },
1628
+ "pages": {
1629
+ "type": "array",
1630
+ "items": {
1631
+ "type": "object",
1632
+ "properties": {
1633
+ "label": {
1634
+ "type": "string"
1635
+ },
1636
+ "content": {
1637
+ "type": "string",
1638
+ "description": "Text content for accessibility"
1639
+ },
1640
+ "imageUrl": {
1641
+ "type": "string",
1642
+ "description": "Pre-rendered page image URL"
1643
+ }
1644
+ },
1645
+ "required": [
1646
+ "label"
1647
+ ]
1648
+ }
1649
+ },
1650
+ "metadata": {
1651
+ "type": "object",
1652
+ "properties": {
1653
+ "pageCount": {
1654
+ "type": "number"
1655
+ },
1656
+ "fileSize": {
1657
+ "type": "string"
1658
+ },
1659
+ "lastModified": {
1660
+ "type": "string"
1661
+ }
1662
+ }
1663
+ },
1664
+ "highlights": {
1665
+ "type": "array",
1666
+ "items": {
1667
+ "type": "object",
1668
+ "properties": {
1669
+ "pageIndex": {
1670
+ "type": "number"
1671
+ },
1672
+ "text": {
1673
+ "type": "string"
1674
+ },
1675
+ "color": {
1676
+ "type": "string",
1677
+ "enum": [
1678
+ "yellow",
1679
+ "red",
1680
+ "green",
1681
+ "blue"
1682
+ ]
1683
+ },
1684
+ "note": {
1685
+ "type": "string"
1686
+ }
1687
+ },
1688
+ "required": [
1689
+ "pageIndex",
1690
+ "text"
1691
+ ]
1692
+ }
1693
+ }
1694
+ },
1695
+ "required": [
1696
+ "type",
1697
+ "documentType",
1698
+ "source",
1699
+ "pages"
1700
+ ]
1701
+ }
1702
+ },
1703
+ "provenance-chain": {
1704
+ "name": "render_provenance_chain",
1705
+ "description": "Render a provenance chain showing how a data value was derived — source documents, extractions, reasoning steps, confidence scores. Use for employee qualification traces, data lineage, audit provenance.",
1706
+ "input_schema": {
1707
+ "type": "object",
1708
+ "properties": {
1709
+ "type": {
1710
+ "type": "string",
1711
+ "enum": [
1712
+ "provenance-chain"
1713
+ ]
1714
+ },
1715
+ "title": {
1716
+ "type": "string"
1717
+ },
1718
+ "entity": {
1719
+ "type": "object",
1720
+ "properties": {
1721
+ "name": {
1722
+ "type": "string"
1723
+ },
1724
+ "type": {
1725
+ "type": "string"
1726
+ },
1727
+ "value": {
1728
+ "type": "string"
1729
+ }
1730
+ },
1731
+ "required": [
1732
+ "name",
1733
+ "type",
1734
+ "value"
1735
+ ]
1736
+ },
1737
+ "steps": {
1738
+ "type": "array",
1739
+ "items": {
1740
+ "type": "object",
1741
+ "properties": {
1742
+ "stepType": {
1743
+ "type": "string",
1744
+ "enum": [
1745
+ "source",
1746
+ "extraction",
1747
+ "rag-query",
1748
+ "reasoning",
1749
+ "computation"
1750
+ ]
1751
+ },
1752
+ "label": {
1753
+ "type": "string"
1754
+ },
1755
+ "detail": {
1756
+ "type": "string"
1757
+ },
1758
+ "source": {
1759
+ "type": "string"
1760
+ },
1761
+ "location": {
1762
+ "type": "string"
1763
+ },
1764
+ "confidence": {
1765
+ "type": "number",
1766
+ "minimum": 0,
1767
+ "maximum": 1
1768
+ },
1769
+ "metadata": {
1770
+ "type": "object",
1771
+ "additionalProperties": {
1772
+ "type": "string"
1773
+ }
1774
+ }
1775
+ },
1776
+ "required": [
1777
+ "stepType",
1778
+ "label",
1779
+ "detail"
1780
+ ]
1781
+ }
1782
+ },
1783
+ "conclusion": {
1784
+ "type": "object",
1785
+ "properties": {
1786
+ "value": {
1787
+ "type": "string"
1788
+ },
1789
+ "confidence": {
1790
+ "type": "number",
1791
+ "minimum": 0,
1792
+ "maximum": 1
1793
+ },
1794
+ "status": {
1795
+ "type": "string",
1796
+ "enum": [
1797
+ "qualified",
1798
+ "partially-qualified",
1799
+ "not-qualified"
1800
+ ]
1801
+ }
1802
+ },
1803
+ "required": [
1804
+ "value",
1805
+ "confidence",
1806
+ "status"
1807
+ ]
1808
+ }
1809
+ },
1810
+ "required": [
1811
+ "type",
1812
+ "entity",
1813
+ "steps",
1814
+ "conclusion"
1815
+ ]
1816
+ }
1817
+ },
1818
+ "search-results": {
1819
+ "name": "render_search_results",
1820
+ "description": "Render ranked search results with relevance scores, source attribution, and content snippets — document search, regulatory search, knowledge base queries.",
1821
+ "input_schema": {
1822
+ "type": "object",
1823
+ "properties": {
1824
+ "type": {
1825
+ "type": "string",
1826
+ "enum": [
1827
+ "search-results"
1828
+ ]
1829
+ },
1830
+ "title": {
1831
+ "type": "string"
1832
+ },
1833
+ "query": {
1834
+ "type": "string"
1835
+ },
1836
+ "totalResults": {
1837
+ "type": "number"
1838
+ },
1839
+ "results": {
1840
+ "type": "array",
1841
+ "items": {
1842
+ "type": "object",
1843
+ "properties": {
1844
+ "title": {
1845
+ "type": "string"
1846
+ },
1847
+ "source": {
1848
+ "type": "string"
1849
+ },
1850
+ "sourceType": {
1851
+ "type": "string",
1852
+ "enum": [
1853
+ "tech-memo",
1854
+ "questionnaire",
1855
+ "contract",
1856
+ "workpaper",
1857
+ "regulation",
1858
+ "other"
1859
+ ]
1860
+ },
1861
+ "relevance": {
1862
+ "type": "number",
1863
+ "minimum": 0,
1864
+ "maximum": 1
1865
+ },
1866
+ "snippet": {
1867
+ "type": "string"
1868
+ },
1869
+ "highlights": {
1870
+ "type": "array",
1871
+ "items": {
1872
+ "type": "string"
1873
+ }
1874
+ },
1875
+ "location": {
1876
+ "type": "string"
1877
+ },
1878
+ "url": {
1879
+ "type": "string"
1880
+ }
1881
+ },
1882
+ "required": [
1883
+ "title",
1884
+ "source",
1885
+ "relevance",
1886
+ "snippet"
1887
+ ]
1888
+ }
1889
+ }
1890
+ },
1891
+ "required": [
1892
+ "type",
1893
+ "query",
1894
+ "totalResults",
1895
+ "results"
1896
+ ]
1897
+ }
1898
+ },
1899
+ "legal-test-result": {
1900
+ "name": "render_legal_test_result",
1901
+ "description": "Render a hierarchical legal test result — IRC 41 four-part test, funded-research exclusion two-prong test, regulatory compliance determinations with pass/fail at each level, narrative reasoning, and evidence.",
1902
+ "input_schema": {
1903
+ "type": "object",
1904
+ "properties": {
1905
+ "type": {
1906
+ "type": "string",
1907
+ "enum": [
1908
+ "legal-test-result"
1909
+ ]
1910
+ },
1911
+ "title": {
1912
+ "type": "string"
1913
+ },
1914
+ "citation": {
1915
+ "type": "string"
1916
+ },
1917
+ "overallResult": {
1918
+ "type": "string",
1919
+ "enum": [
1920
+ "pass",
1921
+ "fail",
1922
+ "inconclusive",
1923
+ "partial"
1924
+ ]
1925
+ },
1926
+ "overallNarrative": {
1927
+ "type": "string"
1928
+ },
1929
+ "parts": {
1930
+ "type": "array",
1931
+ "items": {
1932
+ "type": "object",
1933
+ "properties": {
1934
+ "partLabel": {
1935
+ "type": "string"
1936
+ },
1937
+ "result": {
1938
+ "type": "string",
1939
+ "enum": [
1940
+ "pass",
1941
+ "fail",
1942
+ "inconclusive",
1943
+ "na"
1944
+ ]
1945
+ },
1946
+ "narrative": {
1947
+ "type": "string"
1948
+ },
1949
+ "subRequirements": {
1950
+ "type": "array",
1951
+ "items": {
1952
+ "type": "object",
1953
+ "properties": {
1954
+ "label": {
1955
+ "type": "string"
1956
+ },
1957
+ "result": {
1958
+ "type": "string",
1959
+ "enum": [
1960
+ "pass",
1961
+ "fail",
1962
+ "inconclusive",
1963
+ "na"
1964
+ ]
1965
+ },
1966
+ "detail": {
1967
+ "type": "string"
1968
+ },
1969
+ "threshold": {
1970
+ "type": "string"
1971
+ },
1972
+ "evidence": {
1973
+ "type": "string"
1974
+ }
1975
+ },
1976
+ "required": [
1977
+ "label",
1978
+ "result"
1979
+ ]
1980
+ }
1981
+ },
1982
+ "examples": {
1983
+ "type": "array",
1984
+ "items": {
1985
+ "type": "object",
1986
+ "properties": {
1987
+ "scenario": {
1988
+ "type": "string"
1989
+ },
1990
+ "qualifies": {
1991
+ "type": "boolean"
1992
+ },
1993
+ "explanation": {
1994
+ "type": "string"
1995
+ }
1996
+ },
1997
+ "required": [
1998
+ "scenario",
1999
+ "qualifies",
2000
+ "explanation"
2001
+ ]
2002
+ }
2003
+ }
2004
+ },
2005
+ "required": [
2006
+ "partLabel",
2007
+ "result",
2008
+ "narrative"
2009
+ ]
2010
+ }
2011
+ }
2012
+ },
2013
+ "required": [
2014
+ "type",
2015
+ "overallResult",
2016
+ "parts"
2017
+ ]
2018
+ }
2019
+ },
2020
+ "engagement-pipeline": {
2021
+ "name": "render_engagement_pipeline",
2022
+ "description": "Render a multi-phase engagement pipeline with progress tracking — client engagement status, tax year progress, sequential workflow phases with milestones and blockers.",
2023
+ "input_schema": {
2024
+ "type": "object",
2025
+ "properties": {
2026
+ "type": {
2027
+ "type": "string",
2028
+ "enum": [
2029
+ "engagement-pipeline"
2030
+ ]
2031
+ },
2032
+ "title": {
2033
+ "type": "string"
2034
+ },
2035
+ "clientName": {
2036
+ "type": "string"
2037
+ },
2038
+ "taxYear": {
2039
+ "type": "string"
2040
+ },
2041
+ "currentPhase": {
2042
+ "type": "string"
2043
+ },
2044
+ "phases": {
2045
+ "type": "array",
2046
+ "items": {
2047
+ "type": "object",
2048
+ "properties": {
2049
+ "label": {
2050
+ "type": "string"
2051
+ },
2052
+ "status": {
2053
+ "type": "string",
2054
+ "enum": [
2055
+ "completed",
2056
+ "in-progress",
2057
+ "pending",
2058
+ "blocked"
2059
+ ]
2060
+ },
2061
+ "completedDate": {
2062
+ "type": "string"
2063
+ },
2064
+ "progress": {
2065
+ "type": "number",
2066
+ "minimum": 0,
2067
+ "maximum": 100
2068
+ },
2069
+ "milestones": {
2070
+ "type": "array",
2071
+ "items": {
2072
+ "type": "object",
2073
+ "properties": {
2074
+ "label": {
2075
+ "type": "string"
2076
+ },
2077
+ "completed": {
2078
+ "type": "boolean"
2079
+ },
2080
+ "note": {
2081
+ "type": "string"
2082
+ }
2083
+ },
2084
+ "required": [
2085
+ "label",
2086
+ "completed"
2087
+ ]
2088
+ }
2089
+ },
2090
+ "blockers": {
2091
+ "type": "array",
2092
+ "items": {
2093
+ "type": "string"
2094
+ }
2095
+ }
2096
+ },
2097
+ "required": [
2098
+ "label",
2099
+ "status"
2100
+ ]
2101
+ }
2102
+ },
2103
+ "summary": {
2104
+ "type": "object",
2105
+ "properties": {
2106
+ "totalCredit": {
2107
+ "type": "string"
2108
+ },
2109
+ "daysRemaining": {
2110
+ "type": "number"
2111
+ },
2112
+ "lastActivity": {
2113
+ "type": "string"
2114
+ }
2115
+ }
2116
+ }
2117
+ },
2118
+ "required": [
2119
+ "type",
2120
+ "clientName",
2121
+ "taxYear",
2122
+ "currentPhase",
2123
+ "phases"
2124
+ ]
2125
+ }
2126
+ },
2127
+ "entity-card-grid": {
2128
+ "name": "render_entity_card_grid",
2129
+ "description": "Render a grid of entity cards for browsing collections — clients, contacts, products, teams, resources",
2130
+ "input_schema": {
2131
+ "type": "object",
2132
+ "properties": {
2133
+ "type": {
2134
+ "type": "string",
2135
+ "enum": [
2136
+ "entity-card-grid"
2137
+ ]
2138
+ },
2139
+ "title": {
2140
+ "type": "string"
2141
+ },
2142
+ "columns": {
2143
+ "type": "number",
2144
+ "enum": [
2145
+ 2,
2146
+ 3,
2147
+ 4
2148
+ ]
2149
+ },
2150
+ "items": {
2151
+ "type": "array",
2152
+ "items": {
2153
+ "type": "object",
2154
+ "properties": {
2155
+ "id": {
2156
+ "type": "string"
2157
+ },
2158
+ "name": {
2159
+ "type": "string"
2160
+ },
2161
+ "subtitle": {
2162
+ "type": "string"
2163
+ },
2164
+ "avatar": {
2165
+ "type": "string"
2166
+ },
2167
+ "badges": {
2168
+ "type": "array",
2169
+ "items": {
2170
+ "type": "object",
2171
+ "properties": {
2172
+ "label": {
2173
+ "type": "string"
2174
+ },
2175
+ "color": {
2176
+ "type": "string",
2177
+ "enum": [
2178
+ "green",
2179
+ "red",
2180
+ "amber",
2181
+ "blue",
2182
+ "purple",
2183
+ "gray"
2184
+ ]
2185
+ }
2186
+ },
2187
+ "required": [
2188
+ "label"
2189
+ ]
2190
+ }
2191
+ },
2192
+ "fields": {
2193
+ "type": "array",
2194
+ "items": {
2195
+ "type": "object",
2196
+ "properties": {
2197
+ "label": {
2198
+ "type": "string"
2199
+ },
2200
+ "value": {
2201
+ "type": "string"
2202
+ }
2203
+ },
2204
+ "required": [
2205
+ "label",
2206
+ "value"
2207
+ ]
2208
+ }
2209
+ }
2210
+ },
2211
+ "required": [
2212
+ "id",
2213
+ "name"
2214
+ ]
2215
+ }
2216
+ }
2217
+ },
2218
+ "required": [
2219
+ "type",
2220
+ "items"
2221
+ ]
2222
+ }
2223
+ },
2224
+ "job-tracker": {
2225
+ "name": "render_job_tracker",
2226
+ "description": "Render a job or task status tracker with progress bar, steps, and result — for async operations, builds, imports, exports",
2227
+ "input_schema": {
2228
+ "type": "object",
2229
+ "properties": {
2230
+ "type": {
2231
+ "type": "string",
2232
+ "enum": [
2233
+ "job-tracker"
2234
+ ]
2235
+ },
2236
+ "title": {
2237
+ "type": "string"
2238
+ },
2239
+ "jobId": {
2240
+ "type": "string"
2241
+ },
2242
+ "status": {
2243
+ "type": "string",
2244
+ "enum": [
2245
+ "queued",
2246
+ "running",
2247
+ "completed",
2248
+ "failed",
2249
+ "cancelled"
2250
+ ]
2251
+ },
2252
+ "progress": {
2253
+ "type": "number",
2254
+ "minimum": 0,
2255
+ "maximum": 100
2256
+ },
2257
+ "startedAt": {
2258
+ "type": "string"
2259
+ },
2260
+ "completedAt": {
2261
+ "type": "string"
2262
+ },
2263
+ "steps": {
2264
+ "type": "array",
2265
+ "items": {
2266
+ "type": "object",
2267
+ "properties": {
2268
+ "label": {
2269
+ "type": "string"
2270
+ },
2271
+ "status": {
2272
+ "type": "string",
2273
+ "enum": [
2274
+ "pending",
2275
+ "running",
2276
+ "completed",
2277
+ "failed",
2278
+ "skipped"
2279
+ ]
2280
+ },
2281
+ "duration": {
2282
+ "type": "string"
2283
+ }
2284
+ },
2285
+ "required": [
2286
+ "label",
2287
+ "status"
2288
+ ]
2289
+ }
2290
+ },
2291
+ "result": {
2292
+ "type": "object",
2293
+ "properties": {
2294
+ "summary": {
2295
+ "type": "string"
2296
+ },
2297
+ "data": {
2298
+ "type": "object"
2299
+ }
2300
+ },
2301
+ "required": [
2302
+ "summary"
2303
+ ]
2304
+ },
2305
+ "error": {
2306
+ "type": "object",
2307
+ "properties": {
2308
+ "message": {
2309
+ "type": "string"
2310
+ },
2311
+ "code": {
2312
+ "type": "string"
2313
+ }
2314
+ },
2315
+ "required": [
2316
+ "message"
2317
+ ]
2318
+ }
2319
+ },
2320
+ "required": [
2321
+ "type",
2322
+ "jobId",
2323
+ "status"
2324
+ ]
2325
+ }
2326
+ },
2327
+ "cited-answer": {
2328
+ "name": "render_cited_answer",
2329
+ "description": "Render an AI-synthesized answer with inline numbered citations linking to source documents — for RAG answers, research synthesis, document Q&A",
2330
+ "input_schema": {
2331
+ "type": "object",
2332
+ "properties": {
2333
+ "type": {
2334
+ "type": "string",
2335
+ "enum": [
2336
+ "cited-answer"
2337
+ ]
2338
+ },
2339
+ "title": {
2340
+ "type": "string"
2341
+ },
2342
+ "answer": {
2343
+ "type": "string",
2344
+ "description": "Answer text with [n] citation markers"
2345
+ },
2346
+ "citations": {
2347
+ "type": "array",
2348
+ "items": {
2349
+ "type": "object",
2350
+ "properties": {
2351
+ "id": {
2352
+ "type": "string"
2353
+ },
2354
+ "label": {
2355
+ "type": "string"
2356
+ },
2357
+ "source": {
2358
+ "type": "string"
2359
+ },
2360
+ "sourceType": {
2361
+ "type": "string"
2362
+ },
2363
+ "snippet": {
2364
+ "type": "string"
2365
+ },
2366
+ "url": {
2367
+ "type": "string"
2368
+ },
2369
+ "confidence": {
2370
+ "type": "number",
2371
+ "minimum": 0,
2372
+ "maximum": 1
2373
+ }
2374
+ },
2375
+ "required": [
2376
+ "id",
2377
+ "label",
2378
+ "source",
2379
+ "snippet"
2380
+ ]
2381
+ }
2382
+ },
2383
+ "followUps": {
2384
+ "type": "array",
2385
+ "items": {
2386
+ "type": "string"
2387
+ }
2388
+ }
2389
+ },
2390
+ "required": [
2391
+ "type",
2392
+ "answer",
2393
+ "citations"
2394
+ ]
2395
+ }
2396
+ },
2397
+ "transaction-feed": {
2398
+ "name": "render_transaction_feed",
2399
+ "description": "Render a chronological transaction feed with amounts, categories, and running balance — for bank statements, ledger activity, order history",
2400
+ "input_schema": {
2401
+ "type": "object",
2402
+ "properties": {
2403
+ "type": {
2404
+ "type": "string",
2405
+ "enum": [
2406
+ "transaction-feed"
2407
+ ]
2408
+ },
2409
+ "title": {
2410
+ "type": "string"
2411
+ },
2412
+ "currency": {
2413
+ "type": "string"
2414
+ },
2415
+ "transactions": {
2416
+ "type": "array",
2417
+ "items": {
2418
+ "type": "object",
2419
+ "properties": {
2420
+ "id": {
2421
+ "type": "string"
2422
+ },
2423
+ "date": {
2424
+ "type": "string"
2425
+ },
2426
+ "description": {
2427
+ "type": "string"
2428
+ },
2429
+ "amount": {
2430
+ "type": "number"
2431
+ },
2432
+ "category": {
2433
+ "type": "string"
2434
+ },
2435
+ "counterparty": {
2436
+ "type": "string"
2437
+ },
2438
+ "balance": {
2439
+ "type": "number"
2440
+ },
2441
+ "status": {
2442
+ "type": "string",
2443
+ "enum": [
2444
+ "cleared",
2445
+ "pending",
2446
+ "reversed"
2447
+ ]
2448
+ },
2449
+ "metadata": {
2450
+ "type": "object",
2451
+ "additionalProperties": {
2452
+ "type": "string"
2453
+ }
2454
+ }
2455
+ },
2456
+ "required": [
2457
+ "date",
2458
+ "description",
2459
+ "amount"
2460
+ ]
2461
+ }
2462
+ }
2463
+ },
2464
+ "required": [
2465
+ "type",
2466
+ "transactions"
2467
+ ]
2468
+ }
2469
+ },
2470
+ "file-browser": {
2471
+ "name": "render_file_browser",
2472
+ "description": "Render a document or file browser with type badges, grouping, and metadata — for document collections, file libraries, client documents",
2473
+ "input_schema": {
2474
+ "type": "object",
2475
+ "properties": {
2476
+ "type": {
2477
+ "type": "string",
2478
+ "enum": [
2479
+ "file-browser"
2480
+ ]
2481
+ },
2482
+ "title": {
2483
+ "type": "string"
2484
+ },
2485
+ "items": {
2486
+ "type": "array",
2487
+ "items": {
2488
+ "type": "object",
2489
+ "properties": {
2490
+ "id": {
2491
+ "type": "string"
2492
+ },
2493
+ "name": {
2494
+ "type": "string"
2495
+ },
2496
+ "docType": {
2497
+ "type": "string"
2498
+ },
2499
+ "group": {
2500
+ "type": "string"
2501
+ },
2502
+ "size": {
2503
+ "type": "string"
2504
+ },
2505
+ "createdAt": {
2506
+ "type": "string"
2507
+ },
2508
+ "modifiedAt": {
2509
+ "type": "string"
2510
+ },
2511
+ "author": {
2512
+ "type": "string"
2513
+ },
2514
+ "tags": {
2515
+ "type": "array",
2516
+ "items": {
2517
+ "type": "string"
2518
+ }
2519
+ },
2520
+ "url": {
2521
+ "type": "string"
2522
+ },
2523
+ "preview": {
2524
+ "type": "string"
2525
+ }
2526
+ },
2527
+ "required": [
2528
+ "id",
2529
+ "name"
2530
+ ]
2531
+ }
2532
+ }
2533
+ },
2534
+ "required": [
2535
+ "type",
2536
+ "items"
2537
+ ]
2538
+ }
2539
+ },
2540
+ "download-card": {
2541
+ "name": "render_download_card",
2542
+ "description": "Render download cards for files with filename, size, and download link — for export results, generated reports, file delivery",
2543
+ "input_schema": {
2544
+ "type": "object",
2545
+ "properties": {
2546
+ "type": {
2547
+ "type": "string",
2548
+ "enum": [
2549
+ "download-card"
2550
+ ]
2551
+ },
2552
+ "title": {
2553
+ "type": "string"
2554
+ },
2555
+ "files": {
2556
+ "type": "array",
2557
+ "items": {
2558
+ "type": "object",
2559
+ "properties": {
2560
+ "filename": {
2561
+ "type": "string"
2562
+ },
2563
+ "url": {
2564
+ "type": "string"
2565
+ },
2566
+ "fileType": {
2567
+ "type": "string"
2568
+ },
2569
+ "size": {
2570
+ "type": "string"
2571
+ },
2572
+ "expiresAt": {
2573
+ "type": "string"
2574
+ },
2575
+ "description": {
2576
+ "type": "string"
2577
+ },
2578
+ "preview": {
2579
+ "type": "boolean"
2580
+ }
2581
+ },
2582
+ "required": [
2583
+ "filename",
2584
+ "url"
2585
+ ]
2586
+ }
2587
+ }
2588
+ },
2589
+ "required": [
2590
+ "type",
2591
+ "files"
2592
+ ]
2593
+ }
2594
+ },
2595
+ "ops-dashboard": {
2596
+ "name": "render_ops_dashboard",
2597
+ "description": "Render an operational dashboard grid showing pipeline or service status cards — for monitoring pipelines, services, cron jobs, microservices",
2598
+ "input_schema": {
2599
+ "type": "object",
2600
+ "properties": {
2601
+ "type": {
2602
+ "type": "string",
2603
+ "enum": [
2604
+ "ops-dashboard"
2605
+ ]
2606
+ },
2607
+ "title": {
2608
+ "type": "string"
2609
+ },
2610
+ "items": {
2611
+ "type": "array",
2612
+ "items": {
2613
+ "type": "object",
2614
+ "properties": {
2615
+ "id": {
2616
+ "type": "string"
2617
+ },
2618
+ "name": {
2619
+ "type": "string"
2620
+ },
2621
+ "state": {
2622
+ "type": "string",
2623
+ "enum": [
2624
+ "running",
2625
+ "paused",
2626
+ "stopped",
2627
+ "error"
2628
+ ]
2629
+ },
2630
+ "schedule": {
2631
+ "type": "string"
2632
+ },
2633
+ "lastRunAt": {
2634
+ "type": "string"
2635
+ },
2636
+ "nextRunAt": {
2637
+ "type": "string"
2638
+ },
2639
+ "metrics": {
2640
+ "type": "array",
2641
+ "items": {
2642
+ "type": "object",
2643
+ "properties": {
2644
+ "label": {
2645
+ "type": "string"
2646
+ },
2647
+ "value": {
2648
+ "type": "string"
2649
+ }
2650
+ },
2651
+ "required": [
2652
+ "label",
2653
+ "value"
2654
+ ]
2655
+ }
2656
+ },
2657
+ "health": {
2658
+ "type": "string",
2659
+ "enum": [
2660
+ "healthy",
2661
+ "degraded",
2662
+ "down"
2663
+ ]
2664
+ }
2665
+ },
2666
+ "required": [
2667
+ "id",
2668
+ "name",
2669
+ "state"
2670
+ ]
2671
+ }
2672
+ }
2673
+ },
2674
+ "required": [
2675
+ "type",
2676
+ "items"
2677
+ ]
2678
+ }
2679
+ },
2680
+ "key-value-list": {
2681
+ "name": "render_key_value_list",
2682
+ "description": "Render a structured key-value list with optional grouping and type-aware formatting — for API responses, config displays, metadata, extraction results",
2683
+ "input_schema": {
2684
+ "type": "object",
2685
+ "properties": {
2686
+ "type": {
2687
+ "type": "string",
2688
+ "enum": [
2689
+ "key-value-list"
2690
+ ]
2691
+ },
2692
+ "title": {
2693
+ "type": "string"
2694
+ },
2695
+ "groups": {
2696
+ "type": "array",
2697
+ "items": {
2698
+ "type": "object",
2699
+ "properties": {
2700
+ "label": {
2701
+ "type": "string"
2702
+ },
2703
+ "items": {
2704
+ "type": "array",
2705
+ "items": {
2706
+ "type": "object",
2707
+ "properties": {
2708
+ "key": {
2709
+ "type": "string"
2710
+ },
2711
+ "value": {
2712
+ "type": "string"
2713
+ },
2714
+ "type": {
2715
+ "type": "string",
2716
+ "enum": [
2717
+ "text",
2718
+ "date",
2719
+ "url",
2720
+ "boolean",
2721
+ "code",
2722
+ "currency"
2723
+ ]
2724
+ },
2725
+ "copyable": {
2726
+ "type": "boolean"
2727
+ }
2728
+ },
2729
+ "required": [
2730
+ "key",
2731
+ "value"
2732
+ ]
2733
+ }
2734
+ }
2735
+ },
2736
+ "required": [
2737
+ "label",
2738
+ "items"
2739
+ ]
2740
+ }
2741
+ },
2742
+ "items": {
2743
+ "type": "array",
2744
+ "items": {
2745
+ "type": "object",
2746
+ "properties": {
2747
+ "key": {
2748
+ "type": "string"
2749
+ },
2750
+ "value": {
2751
+ "type": "string"
2752
+ },
2753
+ "type": {
2754
+ "type": "string",
2755
+ "enum": [
2756
+ "text",
2757
+ "date",
2758
+ "url",
2759
+ "boolean",
2760
+ "code",
2761
+ "currency"
2762
+ ]
2763
+ },
2764
+ "copyable": {
2765
+ "type": "boolean"
2766
+ }
2767
+ },
2768
+ "required": [
2769
+ "key",
2770
+ "value"
2771
+ ]
2772
+ }
2773
+ }
2774
+ },
2775
+ "required": [
2776
+ "type"
2777
+ ]
2778
+ }
2779
+ },
2780
+ "balance-sheet": {
2781
+ "name": "render_balance_sheet",
2782
+ "description": "Render a balance sheet with assets, liabilities, and equity sections — statement of financial position, A = L + E comparison",
2783
+ "input_schema": {
2784
+ "type": "object",
2785
+ "properties": {
2786
+ "type": {
2787
+ "type": "string",
2788
+ "enum": [
2789
+ "balance-sheet"
2790
+ ]
2791
+ },
2792
+ "title": {
2793
+ "type": "string"
2794
+ },
2795
+ "currency": {
2796
+ "type": "string",
2797
+ "description": "ISO currency code, e.g. USD"
2798
+ },
2799
+ "metadata": {
2800
+ "type": "object",
2801
+ "properties": {
2802
+ "companyName": {
2803
+ "type": "string"
2804
+ },
2805
+ "preparedBy": {
2806
+ "type": "string"
2807
+ },
2808
+ "reviewedBy": {
2809
+ "type": "string"
2810
+ },
2811
+ "approvedBy": {
2812
+ "type": "string"
2813
+ },
2814
+ "status": {
2815
+ "type": "string",
2816
+ "enum": [
2817
+ "draft",
2818
+ "pending-review",
2819
+ "approved",
2820
+ "filed"
2821
+ ]
2822
+ },
2823
+ "date": {
2824
+ "type": "string"
2825
+ }
2826
+ }
2827
+ },
2828
+ "currentPeriodLabel": {
2829
+ "type": "string",
2830
+ "description": "Label for current period column, e.g. Dec 31, 2024"
2831
+ },
2832
+ "priorPeriodLabel": {
2833
+ "type": "string",
2834
+ "description": "Label for prior period column, e.g. Dec 31, 2023"
2835
+ },
2836
+ "sections": {
2837
+ "type": "array",
2838
+ "items": {
2839
+ "type": "object",
2840
+ "properties": {
2841
+ "category": {
2842
+ "type": "string",
2843
+ "enum": [
2844
+ "assets",
2845
+ "liabilities",
2846
+ "equity"
2847
+ ]
2848
+ },
2849
+ "subsections": {
2850
+ "type": "array",
2851
+ "items": {
2852
+ "type": "object",
2853
+ "properties": {
2854
+ "label": {
2855
+ "type": "string",
2856
+ "description": "Subsection label, e.g. Current Assets"
2857
+ },
2858
+ "items": {
2859
+ "type": "array",
2860
+ "items": {
2861
+ "type": "object",
2862
+ "properties": {
2863
+ "name": {
2864
+ "type": "string"
2865
+ },
2866
+ "currentPeriod": {
2867
+ "type": "number"
2868
+ },
2869
+ "priorPeriod": {
2870
+ "type": "number"
2871
+ }
2872
+ },
2873
+ "required": [
2874
+ "name",
2875
+ "currentPeriod"
2876
+ ]
2877
+ }
2878
+ },
2879
+ "subtotal": {
2880
+ "type": "object",
2881
+ "properties": {
2882
+ "currentPeriod": {
2883
+ "type": "number"
2884
+ },
2885
+ "priorPeriod": {
2886
+ "type": "number"
2887
+ }
2888
+ },
2889
+ "required": [
2890
+ "currentPeriod"
2891
+ ]
2892
+ }
2893
+ },
2894
+ "required": [
2895
+ "label",
2896
+ "items"
2897
+ ]
2898
+ }
2899
+ }
2900
+ },
2901
+ "required": [
2902
+ "category",
2903
+ "subsections"
2904
+ ]
2905
+ }
2906
+ },
2907
+ "totalLiabilitiesAndEquity": {
2908
+ "type": "object",
2909
+ "properties": {
2910
+ "currentPeriod": {
2911
+ "type": "number"
2912
+ },
2913
+ "priorPeriod": {
2914
+ "type": "number"
2915
+ }
2916
+ },
2917
+ "required": [
2918
+ "currentPeriod"
2919
+ ]
2920
+ }
2921
+ },
2922
+ "required": [
2923
+ "type",
2924
+ "currentPeriodLabel",
2925
+ "sections"
2926
+ ]
2927
+ }
2928
+ },
2929
+ "income-statement": {
2930
+ "name": "render_income_statement",
2931
+ "description": "Render a multi-period income statement with revenue, COGS, gross profit, operating expenses, and net income — P&L, profit and loss",
2932
+ "input_schema": {
2933
+ "type": "object",
2934
+ "properties": {
2935
+ "type": {
2936
+ "type": "string",
2937
+ "enum": [
2938
+ "income-statement"
2939
+ ]
2940
+ },
2941
+ "title": {
2942
+ "type": "string"
2943
+ },
2944
+ "currency": {
2945
+ "type": "string",
2946
+ "description": "ISO currency code, e.g. USD"
2947
+ },
2948
+ "metadata": {
2949
+ "type": "object",
2950
+ "properties": {
2951
+ "companyName": {
2952
+ "type": "string"
2953
+ },
2954
+ "preparedBy": {
2955
+ "type": "string"
2956
+ },
2957
+ "reviewedBy": {
2958
+ "type": "string"
2959
+ },
2960
+ "approvedBy": {
2961
+ "type": "string"
2962
+ },
2963
+ "status": {
2964
+ "type": "string",
2965
+ "enum": [
2966
+ "draft",
2967
+ "pending-review",
2968
+ "approved",
2969
+ "filed"
2970
+ ]
2971
+ },
2972
+ "date": {
2973
+ "type": "string"
2974
+ }
2975
+ }
2976
+ },
2977
+ "periods": {
2978
+ "type": "array",
2979
+ "items": {
2980
+ "type": "string"
2981
+ },
2982
+ "minItems": 1,
2983
+ "maxItems": 8,
2984
+ "description": "Period labels, e.g. Q1 2024, Q2 2024"
2985
+ },
2986
+ "showPercentOfRevenue": {
2987
+ "type": "boolean",
2988
+ "description": "Show each line item as a percentage of revenue"
2989
+ },
2990
+ "sections": {
2991
+ "type": "array",
2992
+ "items": {
2993
+ "type": "object",
2994
+ "properties": {
2995
+ "label": {
2996
+ "type": "string"
2997
+ },
2998
+ "lineItems": {
2999
+ "type": "array",
3000
+ "items": {
3001
+ "type": "object",
3002
+ "properties": {
3003
+ "name": {
3004
+ "type": "string"
3005
+ },
3006
+ "amounts": {
3007
+ "type": "array",
3008
+ "items": {
3009
+ "type": "number"
3010
+ },
3011
+ "description": "One amount per period"
3012
+ },
3013
+ "indent": {
3014
+ "type": "number",
3015
+ "minimum": 0,
3016
+ "maximum": 2,
3017
+ "description": "Indentation level 0-2"
3018
+ },
3019
+ "isSubtotal": {
3020
+ "type": "boolean",
3021
+ "description": "True for a subtotal/total row (e.g. 'Total Revenue'). Excluded from the %-of-revenue base so it isn't double-counted."
3022
+ }
3023
+ },
3024
+ "required": [
3025
+ "name",
3026
+ "amounts"
3027
+ ]
3028
+ }
3029
+ },
3030
+ "sectionType": {
3031
+ "type": "string",
3032
+ "enum": [
3033
+ "detail",
3034
+ "subtotal"
3035
+ ]
3036
+ }
3037
+ },
3038
+ "required": [
3039
+ "label",
3040
+ "lineItems"
3041
+ ]
3042
+ }
3043
+ },
3044
+ "calculatedTotals": {
3045
+ "type": "object",
3046
+ "properties": {
3047
+ "grossProfit": {
3048
+ "type": "array",
3049
+ "items": {
3050
+ "type": "number"
3051
+ },
3052
+ "description": "Gross profit per period"
3053
+ },
3054
+ "operatingIncome": {
3055
+ "type": "array",
3056
+ "items": {
3057
+ "type": "number"
3058
+ },
3059
+ "description": "Operating income per period"
3060
+ },
3061
+ "netIncome": {
3062
+ "type": "array",
3063
+ "items": {
3064
+ "type": "number"
3065
+ },
3066
+ "description": "Net income per period"
3067
+ }
3068
+ },
3069
+ "required": [
3070
+ "netIncome"
3071
+ ]
3072
+ }
3073
+ },
3074
+ "required": [
3075
+ "type",
3076
+ "periods",
3077
+ "sections",
3078
+ "calculatedTotals"
3079
+ ]
3080
+ }
3081
+ },
3082
+ "cash-flow-statement": {
3083
+ "name": "render_cash_flow_statement",
3084
+ "description": "Render a cash flow statement with operating, investing, and financing activities — statement of cash flows, net change in cash",
3085
+ "input_schema": {
3086
+ "type": "object",
3087
+ "properties": {
3088
+ "type": {
3089
+ "type": "string",
3090
+ "enum": [
3091
+ "cash-flow-statement"
3092
+ ]
3093
+ },
3094
+ "title": {
3095
+ "type": "string"
3096
+ },
3097
+ "currency": {
3098
+ "type": "string",
3099
+ "description": "ISO currency code, e.g. USD"
3100
+ },
3101
+ "metadata": {
3102
+ "type": "object",
3103
+ "properties": {
3104
+ "companyName": {
3105
+ "type": "string"
3106
+ },
3107
+ "preparedBy": {
3108
+ "type": "string"
3109
+ },
3110
+ "reviewedBy": {
3111
+ "type": "string"
3112
+ },
3113
+ "approvedBy": {
3114
+ "type": "string"
3115
+ },
3116
+ "status": {
3117
+ "type": "string",
3118
+ "enum": [
3119
+ "draft",
3120
+ "pending-review",
3121
+ "approved",
3122
+ "filed"
3123
+ ]
3124
+ },
3125
+ "date": {
3126
+ "type": "string"
3127
+ }
3128
+ }
3129
+ },
3130
+ "periodLabel": {
3131
+ "type": "string",
3132
+ "description": "Label for the current period, e.g. Year Ended Dec 31, 2024"
3133
+ },
3134
+ "priorPeriodLabel": {
3135
+ "type": "string",
3136
+ "description": "Label for the prior period, e.g. Year Ended Dec 31, 2023"
3137
+ },
3138
+ "activities": {
3139
+ "type": "array",
3140
+ "minItems": 1,
3141
+ "maxItems": 3,
3142
+ "items": {
3143
+ "type": "object",
3144
+ "properties": {
3145
+ "activityType": {
3146
+ "type": "string",
3147
+ "enum": [
3148
+ "operating",
3149
+ "investing",
3150
+ "financing"
3151
+ ]
3152
+ },
3153
+ "lineItems": {
3154
+ "type": "array",
3155
+ "minItems": 1,
3156
+ "maxItems": 20,
3157
+ "items": {
3158
+ "type": "object",
3159
+ "properties": {
3160
+ "name": {
3161
+ "type": "string"
3162
+ },
3163
+ "amount": {
3164
+ "type": "number"
3165
+ },
3166
+ "priorAmount": {
3167
+ "type": "number"
3168
+ },
3169
+ "indent": {
3170
+ "type": "number",
3171
+ "minimum": 0,
3172
+ "maximum": 2,
3173
+ "description": "Indentation level 0-2"
3174
+ },
3175
+ "isSubtotal": {
3176
+ "type": "boolean"
3177
+ }
3178
+ },
3179
+ "required": [
3180
+ "name",
3181
+ "amount"
3182
+ ]
3183
+ }
3184
+ },
3185
+ "netCash": {
3186
+ "type": "number"
3187
+ },
3188
+ "priorNetCash": {
3189
+ "type": "number"
3190
+ }
3191
+ },
3192
+ "required": [
3193
+ "activityType",
3194
+ "lineItems",
3195
+ "netCash"
3196
+ ]
3197
+ }
3198
+ },
3199
+ "netChange": {
3200
+ "type": "number"
3201
+ },
3202
+ "priorNetChange": {
3203
+ "type": "number"
3204
+ },
3205
+ "beginningCash": {
3206
+ "type": "number"
3207
+ },
3208
+ "endingCash": {
3209
+ "type": "number"
3210
+ },
3211
+ "priorBeginningCash": {
3212
+ "type": "number"
3213
+ },
3214
+ "priorEndingCash": {
3215
+ "type": "number"
3216
+ }
3217
+ },
3218
+ "required": [
3219
+ "type",
3220
+ "activities",
3221
+ "netChange",
3222
+ "beginningCash",
3223
+ "endingCash"
3224
+ ]
3225
+ }
3226
+ },
3227
+ "general-ledger": {
3228
+ "name": "render_general_ledger",
3229
+ "description": "Render a general ledger with account-level transaction detail and running balance — GL detail, account ledger, ledger entries",
3230
+ "input_schema": {
3231
+ "type": "object",
3232
+ "properties": {
3233
+ "type": {
3234
+ "type": "string",
3235
+ "enum": [
3236
+ "general-ledger"
3237
+ ]
3238
+ },
3239
+ "title": {
3240
+ "type": "string"
3241
+ },
3242
+ "currency": {
3243
+ "type": "string",
3244
+ "description": "ISO currency code, e.g. USD"
3245
+ },
3246
+ "account": {
3247
+ "type": "object",
3248
+ "properties": {
3249
+ "code": {
3250
+ "type": "string"
3251
+ },
3252
+ "name": {
3253
+ "type": "string"
3254
+ },
3255
+ "accountType": {
3256
+ "type": "string",
3257
+ "enum": [
3258
+ "asset",
3259
+ "liability",
3260
+ "equity",
3261
+ "revenue",
3262
+ "expense"
3263
+ ]
3264
+ }
3265
+ },
3266
+ "required": [
3267
+ "code",
3268
+ "name"
3269
+ ]
3270
+ },
3271
+ "dateRange": {
3272
+ "type": "object",
3273
+ "properties": {
3274
+ "from": {
3275
+ "type": "string"
3276
+ },
3277
+ "to": {
3278
+ "type": "string"
3279
+ }
3280
+ },
3281
+ "required": [
3282
+ "from",
3283
+ "to"
3284
+ ]
3285
+ },
3286
+ "openingBalance": {
3287
+ "type": "number",
3288
+ "description": "Opening balance for the period"
3289
+ },
3290
+ "transactions": {
3291
+ "type": "array",
3292
+ "items": {
3293
+ "type": "object",
3294
+ "properties": {
3295
+ "date": {
3296
+ "type": "string"
3297
+ },
3298
+ "description": {
3299
+ "type": "string"
3300
+ },
3301
+ "reference": {
3302
+ "type": "string"
3303
+ },
3304
+ "source": {
3305
+ "type": "string",
3306
+ "description": "Source document, e.g. JE-001, AP-INV-042"
3307
+ },
3308
+ "debit": {
3309
+ "type": "number"
3310
+ },
3311
+ "credit": {
3312
+ "type": "number"
3313
+ },
3314
+ "runningBalance": {
3315
+ "type": "number"
3316
+ }
3317
+ },
3318
+ "required": [
3319
+ "date",
3320
+ "description",
3321
+ "runningBalance"
3322
+ ]
3323
+ }
3324
+ },
3325
+ "closingBalance": {
3326
+ "type": "number"
3327
+ }
3328
+ },
3329
+ "required": [
3330
+ "type",
3331
+ "account",
3332
+ "transactions",
3333
+ "closingBalance"
3334
+ ]
3335
+ }
3336
+ },
3337
+ "chart-of-accounts": {
3338
+ "name": "render_chart_of_accounts",
3339
+ "description": "Render a chart of accounts with account codes, types, hierarchy, and optional balances — COA, account structure, account directory",
3340
+ "input_schema": {
3341
+ "type": "object",
3342
+ "properties": {
3343
+ "type": {
3344
+ "type": "string",
3345
+ "enum": [
3346
+ "chart-of-accounts"
3347
+ ]
3348
+ },
3349
+ "title": {
3350
+ "type": "string"
3351
+ },
3352
+ "currency": {
3353
+ "type": "string",
3354
+ "description": "ISO currency code, e.g. USD"
3355
+ },
3356
+ "showBalances": {
3357
+ "type": "boolean",
3358
+ "description": "Whether to show balance column"
3359
+ },
3360
+ "accounts": {
3361
+ "type": "array",
3362
+ "items": {
3363
+ "type": "object",
3364
+ "properties": {
3365
+ "code": {
3366
+ "type": "string",
3367
+ "description": "Account code, e.g. 1000"
3368
+ },
3369
+ "name": {
3370
+ "type": "string",
3371
+ "description": "Account name"
3372
+ },
3373
+ "accountType": {
3374
+ "type": "string",
3375
+ "enum": [
3376
+ "asset",
3377
+ "liability",
3378
+ "equity",
3379
+ "revenue",
3380
+ "expense"
3381
+ ]
3382
+ },
3383
+ "subType": {
3384
+ "type": "string",
3385
+ "description": "Sub-type, e.g. Current Asset, Fixed Asset, COGS"
3386
+ },
3387
+ "status": {
3388
+ "type": "string",
3389
+ "enum": [
3390
+ "active",
3391
+ "inactive"
3392
+ ]
3393
+ },
3394
+ "indent": {
3395
+ "type": "number",
3396
+ "description": "Indentation level 0-3"
3397
+ },
3398
+ "isHeader": {
3399
+ "type": "boolean",
3400
+ "description": "Whether this row is a section header"
3401
+ },
3402
+ "balance": {
3403
+ "type": "number",
3404
+ "description": "Account balance"
3405
+ }
3406
+ },
3407
+ "required": [
3408
+ "code",
3409
+ "name",
3410
+ "accountType"
3411
+ ]
3412
+ }
3413
+ }
3414
+ },
3415
+ "required": [
3416
+ "type",
3417
+ "accounts"
3418
+ ]
3419
+ }
3420
+ },
3421
+ "invoice-detail": {
3422
+ "name": "render_invoice_detail",
3423
+ "description": "Render a single invoice with line items, totals, tax, payments, and status — invoice detail, billing, AR invoice",
3424
+ "input_schema": {
3425
+ "type": "object",
3426
+ "properties": {
3427
+ "type": {
3428
+ "type": "string",
3429
+ "enum": [
3430
+ "invoice-detail"
3431
+ ]
3432
+ },
3433
+ "invoiceNumber": {
3434
+ "type": "string"
3435
+ },
3436
+ "status": {
3437
+ "type": "string",
3438
+ "enum": [
3439
+ "draft",
3440
+ "sent",
3441
+ "paid",
3442
+ "partial",
3443
+ "overdue",
3444
+ "void"
3445
+ ]
3446
+ },
3447
+ "issueDate": {
3448
+ "type": "string"
3449
+ },
3450
+ "dueDate": {
3451
+ "type": "string"
3452
+ },
3453
+ "currency": {
3454
+ "type": "string"
3455
+ },
3456
+ "client": {
3457
+ "type": "object",
3458
+ "properties": {
3459
+ "name": {
3460
+ "type": "string"
3461
+ },
3462
+ "address": {
3463
+ "type": "string"
3464
+ },
3465
+ "email": {
3466
+ "type": "string"
3467
+ }
3468
+ },
3469
+ "required": [
3470
+ "name"
3471
+ ]
3472
+ },
3473
+ "lineItems": {
3474
+ "type": "array",
3475
+ "items": {
3476
+ "type": "object",
3477
+ "properties": {
3478
+ "description": {
3479
+ "type": "string"
3480
+ },
3481
+ "quantity": {
3482
+ "type": "number"
3483
+ },
3484
+ "unitPrice": {
3485
+ "type": "number"
3486
+ },
3487
+ "amount": {
3488
+ "type": "number"
3489
+ }
3490
+ },
3491
+ "required": [
3492
+ "description",
3493
+ "quantity",
3494
+ "unitPrice",
3495
+ "amount"
3496
+ ]
3497
+ }
3498
+ },
3499
+ "subtotal": {
3500
+ "type": "number"
3501
+ },
3502
+ "taxLabel": {
3503
+ "type": "string"
3504
+ },
3505
+ "taxAmount": {
3506
+ "type": "number"
3507
+ },
3508
+ "discount": {
3509
+ "type": "number"
3510
+ },
3511
+ "total": {
3512
+ "type": "number"
3513
+ },
3514
+ "amountPaid": {
3515
+ "type": "number"
3516
+ },
3517
+ "amountDue": {
3518
+ "type": "number"
3519
+ },
3520
+ "payments": {
3521
+ "type": "array",
3522
+ "items": {
3523
+ "type": "object",
3524
+ "properties": {
3525
+ "date": {
3526
+ "type": "string"
3527
+ },
3528
+ "method": {
3529
+ "type": "string"
3530
+ },
3531
+ "amount": {
3532
+ "type": "number"
3533
+ },
3534
+ "reference": {
3535
+ "type": "string"
3536
+ }
3537
+ },
3538
+ "required": [
3539
+ "date",
3540
+ "method",
3541
+ "amount"
3542
+ ]
3543
+ }
3544
+ },
3545
+ "notes": {
3546
+ "type": "string"
3547
+ },
3548
+ "terms": {
3549
+ "type": "string"
3550
+ }
3551
+ },
3552
+ "required": [
3553
+ "type",
3554
+ "invoiceNumber",
3555
+ "status",
3556
+ "issueDate",
3557
+ "dueDate",
3558
+ "client",
3559
+ "lineItems",
3560
+ "subtotal",
3561
+ "total",
3562
+ "amountDue"
3563
+ ]
3564
+ }
3565
+ },
3566
+ "amortization-table": {
3567
+ "name": "render_amortization_table",
3568
+ "description": "Render a loan or lease amortization schedule with principal, interest, and remaining balance — mortgage, lease payments, ASC 842, loan servicing",
3569
+ "input_schema": {
3570
+ "type": "object",
3571
+ "properties": {
3572
+ "type": {
3573
+ "type": "string",
3574
+ "enum": [
3575
+ "amortization-table"
3576
+ ]
3577
+ },
3578
+ "title": {
3579
+ "type": "string"
3580
+ },
3581
+ "currency": {
3582
+ "type": "string",
3583
+ "default": "USD"
3584
+ },
3585
+ "summary": {
3586
+ "type": "object",
3587
+ "properties": {
3588
+ "originalAmount": {
3589
+ "type": "number"
3590
+ },
3591
+ "interestRate": {
3592
+ "type": "string"
3593
+ },
3594
+ "term": {
3595
+ "type": "string"
3596
+ },
3597
+ "monthlyPayment": {
3598
+ "type": "number"
3599
+ },
3600
+ "totalInterest": {
3601
+ "type": "number"
3602
+ },
3603
+ "startDate": {
3604
+ "type": "string"
3605
+ }
3606
+ },
3607
+ "required": [
3608
+ "originalAmount",
3609
+ "interestRate",
3610
+ "term"
3611
+ ]
3612
+ },
3613
+ "payments": {
3614
+ "type": "array",
3615
+ "items": {
3616
+ "type": "object",
3617
+ "properties": {
3618
+ "period": {
3619
+ "type": "string"
3620
+ },
3621
+ "paymentDate": {
3622
+ "type": "string"
3623
+ },
3624
+ "payment": {
3625
+ "type": "number"
3626
+ },
3627
+ "principal": {
3628
+ "type": "number"
3629
+ },
3630
+ "interest": {
3631
+ "type": "number"
3632
+ },
3633
+ "balance": {
3634
+ "type": "number"
3635
+ },
3636
+ "extra": {
3637
+ "type": "number",
3638
+ "default": 0
3639
+ }
3640
+ },
3641
+ "required": [
3642
+ "period",
3643
+ "payment",
3644
+ "principal",
3645
+ "interest",
3646
+ "balance"
3647
+ ]
3648
+ },
3649
+ "minItems": 1,
3650
+ "maxItems": 372
3651
+ }
3652
+ },
3653
+ "required": [
3654
+ "type",
3655
+ "payments"
3656
+ ]
3657
+ }
3658
+ },
3659
+ "depreciation-schedule": {
3660
+ "name": "render_depreciation_schedule",
3661
+ "description": "Render a fixed asset depreciation schedule with cost, useful life, method, annual depreciation, accumulated depreciation, and book value — asset register, MACRS, straight-line",
3662
+ "input_schema": {
3663
+ "type": "object",
3664
+ "properties": {
3665
+ "type": {
3666
+ "type": "string",
3667
+ "enum": [
3668
+ "depreciation-schedule"
3669
+ ]
3670
+ },
3671
+ "title": {
3672
+ "type": "string"
3673
+ },
3674
+ "currency": {
3675
+ "type": "string",
3676
+ "description": "ISO currency code, e.g. USD"
3677
+ },
3678
+ "asOfDate": {
3679
+ "type": "string",
3680
+ "description": "As-of date for the schedule"
3681
+ },
3682
+ "method": {
3683
+ "type": "string",
3684
+ "description": "Default depreciation method, e.g. Straight-Line, MACRS"
3685
+ },
3686
+ "assets": {
3687
+ "type": "array",
3688
+ "items": {
3689
+ "type": "object",
3690
+ "properties": {
3691
+ "id": {
3692
+ "type": "string"
3693
+ },
3694
+ "name": {
3695
+ "type": "string"
3696
+ },
3697
+ "category": {
3698
+ "type": "string",
3699
+ "enum": [
3700
+ "Buildings",
3701
+ "Equipment",
3702
+ "Vehicles",
3703
+ "Furniture"
3704
+ ]
3705
+ },
3706
+ "acquiredDate": {
3707
+ "type": "string"
3708
+ },
3709
+ "cost": {
3710
+ "type": "number"
3711
+ },
3712
+ "salvageValue": {
3713
+ "type": "number"
3714
+ },
3715
+ "usefulLife": {
3716
+ "type": "string",
3717
+ "description": "e.g. 5 years, 39 years"
3718
+ },
3719
+ "method": {
3720
+ "type": "string",
3721
+ "description": "Per-asset depreciation method override"
3722
+ },
3723
+ "currentYearDepreciation": {
3724
+ "type": "number"
3725
+ },
3726
+ "accumulatedDepreciation": {
3727
+ "type": "number"
3728
+ },
3729
+ "bookValue": {
3730
+ "type": "number"
3731
+ }
3732
+ },
3733
+ "required": [
3734
+ "id",
3735
+ "name",
3736
+ "acquiredDate",
3737
+ "cost",
3738
+ "currentYearDepreciation",
3739
+ "accumulatedDepreciation",
3740
+ "bookValue"
3741
+ ]
3742
+ }
3743
+ },
3744
+ "totals": {
3745
+ "type": "object",
3746
+ "properties": {
3747
+ "totalCost": {
3748
+ "type": "number"
3749
+ },
3750
+ "totalCurrentYear": {
3751
+ "type": "number"
3752
+ },
3753
+ "totalAccumulated": {
3754
+ "type": "number"
3755
+ },
3756
+ "totalBookValue": {
3757
+ "type": "number"
3758
+ }
3759
+ },
3760
+ "required": [
3761
+ "totalCost",
3762
+ "totalCurrentYear",
3763
+ "totalAccumulated",
3764
+ "totalBookValue"
3765
+ ]
3766
+ }
3767
+ },
3768
+ "required": [
3769
+ "type",
3770
+ "assets"
3771
+ ]
3772
+ }
3773
+ },
3774
+ "escalation-card": {
3775
+ "name": "render_escalation_card",
3776
+ "description": "Render a human-in-the-loop (HITL) escalation card with a title, description, priority, and a deeplink CTA button to resolve it — use for review requests, low-confidence extractions, data conflicts, or any item needing manual resolution in the review portal",
3777
+ "input_schema": {
3778
+ "type": "object",
3779
+ "properties": {
3780
+ "type": {
3781
+ "type": "string",
3782
+ "enum": [
3783
+ "escalation-card"
3784
+ ]
3785
+ },
3786
+ "title": {
3787
+ "type": "string"
3788
+ },
3789
+ "description": {
3790
+ "type": "string"
3791
+ },
3792
+ "url": {
3793
+ "type": "string"
3794
+ },
3795
+ "ctaLabel": {
3796
+ "type": "string"
3797
+ },
3798
+ "priority": {
3799
+ "type": "string",
3800
+ "enum": [
3801
+ "low",
3802
+ "medium",
3803
+ "high"
3804
+ ]
3805
+ }
3806
+ },
3807
+ "required": [
3808
+ "type",
3809
+ "url"
3810
+ ]
3811
+ }
3812
+ },
3813
+ "line-chart": {
3814
+ "name": "render_line_chart",
3815
+ "description": "Render a multi-series line chart for trends over time — net income trend, cash position, revenue vs expense, KPI over months/quarters. Use when comparing how one or more numeric measures move across an ordered axis (lines, not filled areas).",
3816
+ "input_schema": {
3817
+ "type": "object",
3818
+ "properties": {
3819
+ "type": {
3820
+ "type": "string",
3821
+ "enum": [
3822
+ "line-chart"
3823
+ ]
3824
+ },
3825
+ "title": {
3826
+ "type": "string"
3827
+ },
3828
+ "xKey": {
3829
+ "type": "string",
3830
+ "description": "Key in each data row for the X-axis label (e.g. 'month')"
3831
+ },
3832
+ "unit": {
3833
+ "type": "string",
3834
+ "description": "Value unit/prefix, e.g. '$', '%', 'bps'"
3835
+ },
3836
+ "smooth": {
3837
+ "type": "boolean",
3838
+ "description": "Use smooth (monotone) curves instead of straight segments"
3839
+ },
3840
+ "series": {
3841
+ "type": "array",
3842
+ "items": {
3843
+ "type": "object",
3844
+ "properties": {
3845
+ "name": {
3846
+ "type": "string"
3847
+ },
3848
+ "dataKey": {
3849
+ "type": "string"
3850
+ },
3851
+ "color": {
3852
+ "type": "string",
3853
+ "description": "Optional CSS color; auto-assigned from palette if omitted"
3854
+ }
3855
+ },
3856
+ "required": [
3857
+ "name",
3858
+ "dataKey"
3859
+ ]
3860
+ }
3861
+ },
3862
+ "data": {
3863
+ "type": "array",
3864
+ "items": {
3865
+ "type": "object",
3866
+ "additionalProperties": true
3867
+ },
3868
+ "description": "Data rows; each row has xKey and every series dataKey"
3869
+ }
3870
+ },
3871
+ "required": [
3872
+ "type",
3873
+ "xKey",
3874
+ "series",
3875
+ "data"
3876
+ ]
3877
+ }
3878
+ },
3879
+ "combo-chart": {
3880
+ "name": "render_combo_chart",
3881
+ "description": "Render a combined bar + line chart with an optional secondary (right) Y-axis — revenue bars with a margin % line, actuals bars with a cumulative budget line, volume vs rate. Use when one measure is best shown as bars and another (often a %, ratio, or running total on a different scale) as a line.",
3882
+ "input_schema": {
3883
+ "type": "object",
3884
+ "properties": {
3885
+ "type": {
3886
+ "type": "string",
3887
+ "enum": [
3888
+ "combo-chart"
3889
+ ]
3890
+ },
3891
+ "title": {
3892
+ "type": "string"
3893
+ },
3894
+ "xKey": {
3895
+ "type": "string",
3896
+ "description": "Key in each data row for the X-axis label"
3897
+ },
3898
+ "leftUnit": {
3899
+ "type": "string",
3900
+ "description": "Unit for the left Y-axis (e.g. '$')"
3901
+ },
3902
+ "rightUnit": {
3903
+ "type": "string",
3904
+ "description": "Unit for the right Y-axis (e.g. '%')"
3905
+ },
3906
+ "bars": {
3907
+ "type": "array",
3908
+ "items": {
3909
+ "type": "object",
3910
+ "properties": {
3911
+ "name": {
3912
+ "type": "string"
3913
+ },
3914
+ "dataKey": {
3915
+ "type": "string"
3916
+ },
3917
+ "color": {
3918
+ "type": "string"
3919
+ },
3920
+ "axis": {
3921
+ "type": "string",
3922
+ "enum": [
3923
+ "left",
3924
+ "right"
3925
+ ],
3926
+ "description": "Which Y-axis; default left"
3927
+ }
3928
+ },
3929
+ "required": [
3930
+ "name",
3931
+ "dataKey"
3932
+ ]
3933
+ }
3934
+ },
3935
+ "lines": {
3936
+ "type": "array",
3937
+ "items": {
3938
+ "type": "object",
3939
+ "properties": {
3940
+ "name": {
3941
+ "type": "string"
3942
+ },
3943
+ "dataKey": {
3944
+ "type": "string"
3945
+ },
3946
+ "color": {
3947
+ "type": "string"
3948
+ },
3949
+ "axis": {
3950
+ "type": "string",
3951
+ "enum": [
3952
+ "left",
3953
+ "right"
3954
+ ],
3955
+ "description": "Which Y-axis; default right"
3956
+ }
3957
+ },
3958
+ "required": [
3959
+ "name",
3960
+ "dataKey"
3961
+ ]
3962
+ }
3963
+ },
3964
+ "data": {
3965
+ "type": "array",
3966
+ "items": {
3967
+ "type": "object",
3968
+ "additionalProperties": true
3969
+ },
3970
+ "description": "Data rows; each row has xKey and every bar/line dataKey"
3971
+ }
3972
+ },
3973
+ "required": [
3974
+ "type",
3975
+ "xKey",
3976
+ "data"
3977
+ ]
3978
+ }
3979
+ },
3980
+ "gauge-chart": {
3981
+ "name": "render_gauge_chart",
3982
+ "description": "Render one to four radial gauge dials showing a single KPI against its max and an optional target — budget utilization %, DSO/DPO vs target, collection rate, cash-runway months, capacity used. The arc colors green/amber/red relative to the target.",
3983
+ "input_schema": {
3984
+ "type": "object",
3985
+ "properties": {
3986
+ "type": {
3987
+ "type": "string",
3988
+ "enum": [
3989
+ "gauge-chart"
3990
+ ]
3991
+ },
3992
+ "title": {
3993
+ "type": "string"
3994
+ },
3995
+ "items": {
3996
+ "type": "array",
3997
+ "items": {
3998
+ "type": "object",
3999
+ "properties": {
4000
+ "label": {
4001
+ "type": "string"
4002
+ },
4003
+ "value": {
4004
+ "type": "number",
4005
+ "description": "Current value"
4006
+ },
4007
+ "max": {
4008
+ "type": "number",
4009
+ "description": "Full-scale value of the dial"
4010
+ },
4011
+ "target": {
4012
+ "type": "number",
4013
+ "description": "Optional goal threshold; drives arc color"
4014
+ },
4015
+ "unit": {
4016
+ "type": "string",
4017
+ "description": "e.g. '%', '$', 'days'"
4018
+ }
4019
+ },
4020
+ "required": [
4021
+ "label",
4022
+ "value",
4023
+ "max"
4024
+ ]
4025
+ }
4026
+ }
4027
+ },
4028
+ "required": [
4029
+ "type",
4030
+ "items"
4031
+ ]
4032
+ }
4033
+ },
4034
+ "treemap-chart": {
4035
+ "name": "render_treemap_chart",
4036
+ "description": "Render a treemap where each rectangle's area is proportional to its value — expense breakdown by GL account, revenue by segment or product, spend by cost center, asset mix. Use to show how a total decomposes into many parts ranked by magnitude.",
4037
+ "input_schema": {
4038
+ "type": "object",
4039
+ "properties": {
4040
+ "type": {
4041
+ "type": "string",
4042
+ "enum": [
4043
+ "treemap-chart"
4044
+ ]
4045
+ },
4046
+ "title": {
4047
+ "type": "string"
4048
+ },
4049
+ "currency": {
4050
+ "type": "string",
4051
+ "description": "Currency symbol/prefix for values, e.g. '$'"
4052
+ },
4053
+ "nodes": {
4054
+ "type": "array",
4055
+ "items": {
4056
+ "type": "object",
4057
+ "properties": {
4058
+ "name": {
4059
+ "type": "string"
4060
+ },
4061
+ "value": {
4062
+ "type": "number",
4063
+ "description": "Positive magnitude; sets rectangle area"
4064
+ },
4065
+ "color": {
4066
+ "type": "string",
4067
+ "description": "Optional; auto-assigned from palette if omitted"
4068
+ }
4069
+ },
4070
+ "required": [
4071
+ "name",
4072
+ "value"
4073
+ ]
4074
+ }
4075
+ }
4076
+ },
4077
+ "required": [
4078
+ "type",
4079
+ "nodes"
4080
+ ]
4081
+ }
4082
+ },
4083
+ "radar-chart": {
4084
+ "name": "render_radar_chart",
4085
+ "description": "Render a radar (spider) chart comparing several entities or periods across the same set of metrics — financial-ratio profiles (liquidity, profitability, leverage, efficiency, coverage), scorecard comparison, multi-dimensional benchmarking. One axis per metric; one shape per series.",
4086
+ "input_schema": {
4087
+ "type": "object",
4088
+ "properties": {
4089
+ "type": {
4090
+ "type": "string",
4091
+ "enum": [
4092
+ "radar-chart"
4093
+ ]
4094
+ },
4095
+ "title": {
4096
+ "type": "string"
4097
+ },
4098
+ "unit": {
4099
+ "type": "string",
4100
+ "description": "Optional value unit, e.g. 'x', '%'"
4101
+ },
4102
+ "series": {
4103
+ "type": "array",
4104
+ "items": {
4105
+ "type": "object",
4106
+ "properties": {
4107
+ "name": {
4108
+ "type": "string"
4109
+ },
4110
+ "dataKey": {
4111
+ "type": "string"
4112
+ },
4113
+ "color": {
4114
+ "type": "string",
4115
+ "description": "Optional; auto-assigned from palette if omitted"
4116
+ }
4117
+ },
4118
+ "required": [
4119
+ "name",
4120
+ "dataKey"
4121
+ ]
4122
+ }
4123
+ },
4124
+ "data": {
4125
+ "type": "array",
4126
+ "items": {
4127
+ "type": "object",
4128
+ "properties": {
4129
+ "metric": {
4130
+ "type": "string",
4131
+ "description": "Axis label"
4132
+ }
4133
+ },
4134
+ "required": [
4135
+ "metric"
4136
+ ],
4137
+ "additionalProperties": true
4138
+ },
4139
+ "description": "One row per metric; each row has 'metric' and every series dataKey"
4140
+ }
4141
+ },
4142
+ "required": [
4143
+ "type",
4144
+ "series",
4145
+ "data"
4146
+ ]
4147
+ }
4148
+ },
4149
+ "funnel-chart": {
4150
+ "name": "render_funnel_chart",
4151
+ "description": "Render a funnel chart showing how a quantity narrows across ordered stages — collections funnel (billed → collected → overdue → written off), quote → invoice → paid, lead → close. Use for stage-to-stage conversion or drop-off. Each stage shows its value and % of the prior stage.",
4152
+ "input_schema": {
4153
+ "type": "object",
4154
+ "properties": {
4155
+ "type": {
4156
+ "type": "string",
4157
+ "enum": [
4158
+ "funnel-chart"
4159
+ ]
4160
+ },
4161
+ "title": {
4162
+ "type": "string"
4163
+ },
4164
+ "currency": {
4165
+ "type": "string",
4166
+ "description": "Currency symbol/prefix, e.g. '$'"
4167
+ },
4168
+ "stages": {
4169
+ "type": "array",
4170
+ "description": "Ordered widest → narrowest",
4171
+ "items": {
4172
+ "type": "object",
4173
+ "properties": {
4174
+ "label": {
4175
+ "type": "string"
4176
+ },
4177
+ "value": {
4178
+ "type": "number"
4179
+ },
4180
+ "color": {
4181
+ "type": "string",
4182
+ "description": "Optional; auto-assigned from palette if omitted"
4183
+ }
4184
+ },
4185
+ "required": [
4186
+ "label",
4187
+ "value"
4188
+ ]
4189
+ }
4190
+ }
4191
+ },
4192
+ "required": [
4193
+ "type",
4194
+ "stages"
4195
+ ]
4196
+ }
4197
+ },
4198
+ "bullet-chart": {
4199
+ "name": "render_bullet_chart",
4200
+ "description": "Render a compact bullet-chart scorecard: one horizontal row per KPI showing actual value vs target against a qualitative range — actual vs budget, vs forecast, vs prior year. Use for dense KPI-vs-target dashboards where each measure has its own target. The bar turns green/amber/red by how the value compares to its target.",
4201
+ "input_schema": {
4202
+ "type": "object",
4203
+ "properties": {
4204
+ "type": {
4205
+ "type": "string",
4206
+ "enum": [
4207
+ "bullet-chart"
4208
+ ]
4209
+ },
4210
+ "title": {
4211
+ "type": "string"
4212
+ },
4213
+ "items": {
4214
+ "type": "array",
4215
+ "items": {
4216
+ "type": "object",
4217
+ "properties": {
4218
+ "label": {
4219
+ "type": "string"
4220
+ },
4221
+ "value": {
4222
+ "type": "number",
4223
+ "description": "Actual measured value"
4224
+ },
4225
+ "target": {
4226
+ "type": "number",
4227
+ "description": "Goal / budget marker"
4228
+ },
4229
+ "max": {
4230
+ "type": "number",
4231
+ "description": "Optional scale max; defaults to max(value,target)*1.25"
4232
+ },
4233
+ "unit": {
4234
+ "type": "string",
4235
+ "description": "e.g. '$', '%', 'days'"
4236
+ }
4237
+ },
4238
+ "required": [
4239
+ "label",
4240
+ "value",
4241
+ "target"
4242
+ ]
4243
+ }
4244
+ }
4245
+ },
4246
+ "required": [
4247
+ "type",
4248
+ "items"
4249
+ ]
4250
+ }
4251
+ },
4252
+ "scatter-chart": {
4253
+ "name": "render_scatter_chart",
4254
+ "description": "Render a scatter / bubble chart plotting points on two numeric axes (optional bubble size as a third dimension) — AR aging days vs outstanding amount, account size vs activity, risk vs return, price vs volume. Use to reveal correlation, clustering, or outliers across accounts/entities.",
4255
+ "input_schema": {
4256
+ "type": "object",
4257
+ "properties": {
4258
+ "type": {
4259
+ "type": "string",
4260
+ "enum": [
4261
+ "scatter-chart"
4262
+ ]
4263
+ },
4264
+ "title": {
4265
+ "type": "string"
4266
+ },
4267
+ "xLabel": {
4268
+ "type": "string"
4269
+ },
4270
+ "yLabel": {
4271
+ "type": "string"
4272
+ },
4273
+ "xUnit": {
4274
+ "type": "string",
4275
+ "description": "e.g. 'days'"
4276
+ },
4277
+ "yUnit": {
4278
+ "type": "string",
4279
+ "description": "e.g. '$'"
4280
+ },
4281
+ "series": {
4282
+ "type": "array",
4283
+ "items": {
4284
+ "type": "object",
4285
+ "properties": {
4286
+ "name": {
4287
+ "type": "string"
4288
+ },
4289
+ "color": {
4290
+ "type": "string",
4291
+ "description": "Optional; auto-assigned from palette if omitted"
4292
+ },
4293
+ "points": {
4294
+ "type": "array",
4295
+ "items": {
4296
+ "type": "object",
4297
+ "properties": {
4298
+ "x": {
4299
+ "type": "number"
4300
+ },
4301
+ "y": {
4302
+ "type": "number"
4303
+ },
4304
+ "z": {
4305
+ "type": "number",
4306
+ "description": "Optional magnitude → bubble size"
4307
+ },
4308
+ "label": {
4309
+ "type": "string",
4310
+ "description": "Optional point name for tooltip"
4311
+ }
4312
+ },
4313
+ "required": [
4314
+ "x",
4315
+ "y"
4316
+ ]
4317
+ }
4318
+ }
4319
+ },
4320
+ "required": [
4321
+ "name",
4322
+ "points"
4323
+ ]
4324
+ }
4325
+ }
4326
+ },
4327
+ "required": [
4328
+ "type",
4329
+ "series"
4330
+ ]
4331
+ }
4332
+ },
4333
+ "connect-integration": {
4334
+ "name": "render_connect_integration",
4335
+ "description": "Render a compact card for a single third-party integration (e.g. Gmail, Slack, Google Drive). Use it three ways via `status`: (1) status='not_connected' — prompt the user to connect it, the button deep-links to the connections settings page (set `url` to /settings/connections?integration=<id>); (2) status='connected' — show it as connected, the button is an Open deep-link into the integration or its settings; (3) as a plain deep-link to an external resource. `url` is the button target; `ctaLabel` overrides the button text (defaults: Connect when not connected, Open when connected).",
4336
+ "input_schema": {
4337
+ "type": "object",
4338
+ "properties": {
4339
+ "type": {
4340
+ "type": "string",
4341
+ "enum": [
4342
+ "connect-integration"
4343
+ ]
4344
+ },
4345
+ "integrationName": {
4346
+ "type": "string"
4347
+ },
4348
+ "description": {
4349
+ "type": "string"
4350
+ },
4351
+ "url": {
4352
+ "type": "string"
4353
+ },
4354
+ "status": {
4355
+ "type": "string",
4356
+ "enum": [
4357
+ "connected",
4358
+ "not_connected"
4359
+ ]
4360
+ },
4361
+ "iconUrl": {
4362
+ "type": "string"
4363
+ },
4364
+ "ctaLabel": {
4365
+ "type": "string"
4366
+ }
4367
+ },
4368
+ "required": [
4369
+ "type",
4370
+ "integrationName",
4371
+ "url"
4372
+ ]
4373
+ }
4374
+ },
4375
+ "integrations-list": {
4376
+ "name": "render_integrations_list",
4377
+ "description": "Render a grouped list of multiple third-party integrations with their connection status (connected vs not connected) and a per-row Connect link for the ones that are not connected. Prefer this over multiple separate connect-integration cards whenever there are 2 or more integrations — e.g. to orient the user on what's available, or to offer several providers to connect (Gmail, Outlook, ...). Optional `description` is a one-line subtitle under the title.",
4378
+ "input_schema": {
4379
+ "type": "object",
4380
+ "properties": {
4381
+ "type": {
4382
+ "type": "string",
4383
+ "enum": [
4384
+ "integrations-list"
4385
+ ]
4386
+ },
4387
+ "title": {
4388
+ "type": "string"
4389
+ },
4390
+ "description": {
4391
+ "type": "string"
4392
+ },
4393
+ "integrations": {
4394
+ "type": "array",
4395
+ "items": {
4396
+ "type": "object",
4397
+ "properties": {
4398
+ "name": {
4399
+ "type": "string"
4400
+ },
4401
+ "status": {
4402
+ "type": "string",
4403
+ "enum": [
4404
+ "connected",
4405
+ "not_connected"
4406
+ ]
4407
+ },
4408
+ "capability": {
4409
+ "type": "string"
4410
+ },
4411
+ "connectUrl": {
4412
+ "type": "string"
4413
+ },
4414
+ "iconUrl": {
4415
+ "type": "string"
4416
+ }
4417
+ },
4418
+ "required": [
4419
+ "name",
4420
+ "status"
4421
+ ]
4422
+ }
4423
+ }
4424
+ },
4425
+ "required": [
4426
+ "type",
4427
+ "integrations"
4428
+ ]
4429
+ }
4430
+ },
4431
+ "pipeline-preview": {
4432
+ "name": "render_pipeline_preview",
4433
+ "description": "Render a read-only blueprint preview of a data pipeline / workflow — its name, source → destination(s), schedule, and the ordered flow of WDL operation steps (with nested FAN_OUT sub-steps and CONDITION branches) plus an optional deeplink CTA. Use to show a pipeline you designed or are proposing before it is created/activated. NOT for live run status (use job-tracker) or a grid of running services (use ops-dashboard).",
4434
+ "input_schema": {
4435
+ "type": "object",
4436
+ "properties": {
4437
+ "type": {
4438
+ "type": "string",
4439
+ "enum": [
4440
+ "pipeline-preview"
4441
+ ]
4442
+ },
4443
+ "name": {
4444
+ "type": "string"
4445
+ },
4446
+ "description": {
4447
+ "type": "string"
4448
+ },
4449
+ "state": {
4450
+ "type": "string",
4451
+ "enum": [
4452
+ "draft",
4453
+ "running",
4454
+ "paused"
4455
+ ]
4456
+ },
4457
+ "source": {
4458
+ "type": "object",
4459
+ "properties": {
4460
+ "name": {
4461
+ "type": "string"
4462
+ },
4463
+ "kind": {
4464
+ "type": "string"
4465
+ }
4466
+ },
4467
+ "required": [
4468
+ "name"
4469
+ ]
4470
+ },
4471
+ "destinations": {
4472
+ "type": "array",
4473
+ "items": {
4474
+ "type": "object",
4475
+ "properties": {
4476
+ "name": {
4477
+ "type": "string"
4478
+ },
4479
+ "kind": {
4480
+ "type": "string"
4481
+ }
4482
+ },
4483
+ "required": [
4484
+ "name"
4485
+ ]
4486
+ }
4487
+ },
4488
+ "schedule": {
4489
+ "type": "object",
4490
+ "properties": {
4491
+ "type": {
4492
+ "type": "string",
4493
+ "enum": [
4494
+ "manual",
4495
+ "cron"
4496
+ ]
4497
+ },
4498
+ "cron": {
4499
+ "type": "string"
4500
+ },
4501
+ "label": {
4502
+ "type": "string"
4503
+ }
4504
+ },
4505
+ "required": [
4506
+ "type"
4507
+ ]
4508
+ },
4509
+ "steps": {
4510
+ "type": "array",
4511
+ "items": {
4512
+ "type": "object",
4513
+ "properties": {
4514
+ "id": {
4515
+ "type": "string"
4516
+ },
4517
+ "operation": {
4518
+ "type": "string"
4519
+ },
4520
+ "label": {
4521
+ "type": "string"
4522
+ },
4523
+ "description": {
4524
+ "type": "string"
4525
+ },
4526
+ "subSteps": {
4527
+ "type": "array",
4528
+ "items": {
4529
+ "type": "object",
4530
+ "properties": {
4531
+ "id": {
4532
+ "type": "string"
4533
+ },
4534
+ "operation": {
4535
+ "type": "string"
4536
+ },
4537
+ "label": {
4538
+ "type": "string"
4539
+ },
4540
+ "description": {
4541
+ "type": "string"
4542
+ }
4543
+ },
4544
+ "required": [
4545
+ "id",
4546
+ "operation"
4547
+ ]
4548
+ }
4549
+ },
4550
+ "branches": {
4551
+ "type": "array",
4552
+ "items": {
4553
+ "type": "object",
4554
+ "properties": {
4555
+ "label": {
4556
+ "type": "string"
4557
+ },
4558
+ "condition": {
4559
+ "type": "string"
4560
+ },
4561
+ "steps": {
4562
+ "type": "array",
4563
+ "items": {
4564
+ "type": "object",
4565
+ "properties": {
4566
+ "id": {
4567
+ "type": "string"
4568
+ },
4569
+ "operation": {
4570
+ "type": "string"
4571
+ },
4572
+ "label": {
4573
+ "type": "string"
4574
+ },
4575
+ "description": {
4576
+ "type": "string"
4577
+ }
4578
+ },
4579
+ "required": [
4580
+ "id",
4581
+ "operation"
4582
+ ]
4583
+ }
4584
+ }
4585
+ },
4586
+ "required": [
4587
+ "label",
4588
+ "steps"
4589
+ ]
4590
+ }
4591
+ }
4592
+ },
4593
+ "required": [
4594
+ "id",
4595
+ "operation"
4596
+ ]
4597
+ }
4598
+ },
4599
+ "workstreams": {
4600
+ "type": "array",
4601
+ "items": {
4602
+ "type": "string"
4603
+ }
4604
+ },
4605
+ "cta": {
4606
+ "type": "object",
4607
+ "properties": {
4608
+ "label": {
4609
+ "type": "string"
4610
+ },
4611
+ "url": {
4612
+ "type": "string"
4613
+ }
4614
+ },
4615
+ "required": [
4616
+ "label",
4617
+ "url"
4618
+ ]
4619
+ }
4620
+ },
4621
+ "required": [
4622
+ "type",
4623
+ "name",
4624
+ "steps"
4625
+ ]
4626
+ }
4627
+ }
4628
+ }
4629
+ }