conductor-node-mcp 12.28.0 → 12.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (482) hide show
  1. package/code-tool-types.d.mts +1 -1
  2. package/code-tool-types.d.mts.map +1 -1
  3. package/code-tool-types.d.ts +1 -1
  4. package/code-tool-types.d.ts.map +1 -1
  5. package/code-tool.d.mts.map +1 -1
  6. package/code-tool.d.ts.map +1 -1
  7. package/code-tool.js.map +1 -1
  8. package/code-tool.mjs.map +1 -1
  9. package/compat.d.mts +2 -2
  10. package/compat.d.mts.map +1 -1
  11. package/compat.d.ts +2 -2
  12. package/compat.d.ts.map +1 -1
  13. package/compat.js +1 -1
  14. package/compat.js.map +1 -1
  15. package/compat.mjs +1 -1
  16. package/compat.mjs.map +1 -1
  17. package/headers.d.mts +1 -1
  18. package/headers.d.mts.map +1 -1
  19. package/headers.d.ts +1 -1
  20. package/headers.d.ts.map +1 -1
  21. package/headers.js.map +1 -1
  22. package/headers.mjs.map +1 -1
  23. package/http.d.mts +1 -2
  24. package/http.d.mts.map +1 -1
  25. package/http.d.ts +1 -2
  26. package/http.d.ts.map +1 -1
  27. package/http.js +1 -1
  28. package/http.js.map +1 -1
  29. package/http.mjs +1 -1
  30. package/http.mjs.map +1 -1
  31. package/index.js +2 -2
  32. package/index.js.map +1 -1
  33. package/index.mjs +2 -2
  34. package/index.mjs.map +1 -1
  35. package/options.d.mts +6 -6
  36. package/options.d.mts.map +1 -1
  37. package/options.d.ts +6 -6
  38. package/options.d.ts.map +1 -1
  39. package/options.js +12 -24
  40. package/options.js.map +1 -1
  41. package/options.mjs +12 -24
  42. package/options.mjs.map +1 -1
  43. package/package.json +5 -2
  44. package/server.d.mts +3 -16
  45. package/server.d.mts.map +1 -1
  46. package/server.d.ts +3 -16
  47. package/server.d.ts.map +1 -1
  48. package/server.js +38 -21
  49. package/server.js.map +1 -1
  50. package/server.mjs +39 -21
  51. package/server.mjs.map +1 -1
  52. package/src/code-tool-types.ts +1 -1
  53. package/src/code-tool.ts +1 -3
  54. package/src/compat.ts +2 -2
  55. package/src/headers.ts +1 -2
  56. package/src/http.ts +1 -6
  57. package/src/index.ts +2 -2
  58. package/src/options.ts +22 -32
  59. package/src/server.ts +51 -34
  60. package/src/stdio.ts +3 -4
  61. package/src/tools/qbd/accounts/list-qbd-accounts.ts +2 -2
  62. package/src/tools/qbd/bill-check-payments/list-qbd-bill-check-payments.ts +4 -4
  63. package/src/tools/qbd/bill-credit-card-payments/list-qbd-bill-credit-card-payments.ts +4 -4
  64. package/src/tools/qbd/bills/list-qbd-bills.ts +4 -4
  65. package/src/tools/qbd/build-assemblies/list-qbd-build-assemblies.ts +4 -4
  66. package/src/tools/qbd/checks/list-qbd-checks.ts +4 -4
  67. package/src/tools/qbd/classes/create-qbd-classes.ts +1 -1
  68. package/src/tools/qbd/classes/list-qbd-classes.ts +3 -3
  69. package/src/tools/qbd/classes/retrieve-qbd-classes.ts +1 -1
  70. package/src/tools/qbd/classes/update-qbd-classes.ts +1 -1
  71. package/src/tools/qbd/credit-card-charges/list-qbd-credit-card-charges.ts +4 -4
  72. package/src/tools/qbd/credit-card-credits/list-qbd-credit-card-credits.ts +4 -4
  73. package/src/tools/qbd/credit-memos/list-qbd-credit-memos.ts +4 -4
  74. package/src/tools/qbd/customers/list-qbd-customers.ts +2 -2
  75. package/src/tools/qbd/date-driven-terms/create-qbd-date-driven-terms.ts +1 -1
  76. package/src/tools/qbd/date-driven-terms/list-qbd-date-driven-terms.ts +3 -3
  77. package/src/tools/qbd/date-driven-terms/retrieve-qbd-date-driven-terms.ts +1 -1
  78. package/src/tools/qbd/deleted-list-objects/list-qbd-deleted-list-objects.ts +3 -3
  79. package/src/tools/qbd/deleted-transactions/list-qbd-deleted-transactions.ts +3 -3
  80. package/src/tools/qbd/discount-items/list-qbd-discount-items.ts +2 -2
  81. package/src/tools/qbd/employees/list-qbd-employees.ts +2 -2
  82. package/src/tools/qbd/estimates/list-qbd-estimates.ts +4 -4
  83. package/src/tools/qbd/inventory-adjustments/list-qbd-inventory-adjustments.ts +4 -4
  84. package/src/tools/qbd/inventory-assembly-items/list-qbd-inventory-assembly-items.ts +2 -2
  85. package/src/tools/qbd/inventory-items/list-qbd-inventory-items.ts +2 -2
  86. package/src/tools/qbd/inventory-sites/create-qbd-inventory-sites.ts +1 -1
  87. package/src/tools/qbd/inventory-sites/list-qbd-inventory-sites.ts +5 -12
  88. package/src/tools/qbd/inventory-sites/retrieve-qbd-inventory-sites.ts +1 -1
  89. package/src/tools/qbd/inventory-sites/update-qbd-inventory-sites.ts +1 -1
  90. package/src/tools/qbd/invoices/list-qbd-invoices.ts +4 -4
  91. package/src/tools/qbd/item-groups/list-qbd-item-groups.ts +2 -2
  92. package/src/tools/qbd/item-groups/retrieve-qbd-item-groups.ts +1 -1
  93. package/src/tools/qbd/item-receipts/list-qbd-item-receipts.ts +4 -4
  94. package/src/tools/qbd/item-sites/retrieve-qbd-item-sites.ts +1 -1
  95. package/src/tools/qbd/journal-entries/list-qbd-journal-entries.ts +4 -4
  96. package/src/tools/qbd/non-inventory-items/list-qbd-non-inventory-items.ts +2 -2
  97. package/src/tools/qbd/other-charge-items/list-qbd-other-charge-items.ts +2 -2
  98. package/src/tools/qbd/other-names/list-qbd-other-names.ts +2 -2
  99. package/src/tools/qbd/other-names/retrieve-qbd-other-names.ts +1 -1
  100. package/src/tools/qbd/payment-methods/create-qbd-payment-methods.ts +1 -1
  101. package/src/tools/qbd/payment-methods/list-qbd-payment-methods.ts +3 -3
  102. package/src/tools/qbd/payment-methods/retrieve-qbd-payment-methods.ts +1 -1
  103. package/src/tools/qbd/payroll-wage-items/create-qbd-payroll-wage-items.ts +1 -1
  104. package/src/tools/qbd/payroll-wage-items/list-qbd-payroll-wage-items.ts +3 -3
  105. package/src/tools/qbd/payroll-wage-items/retrieve-qbd-payroll-wage-items.ts +1 -1
  106. package/src/tools/qbd/price-levels/list-qbd-price-levels.ts +2 -2
  107. package/src/tools/qbd/price-levels/retrieve-qbd-price-levels.ts +1 -1
  108. package/src/tools/qbd/purchase-orders/list-qbd-purchase-orders.ts +4 -4
  109. package/src/tools/qbd/receive-payments/list-qbd-receive-payments.ts +4 -4
  110. package/src/tools/qbd/sales-orders/list-qbd-sales-orders.ts +4 -4
  111. package/src/tools/qbd/sales-receipts/list-qbd-sales-receipts.ts +4 -4
  112. package/src/tools/qbd/sales-representatives/create-qbd-sales-representatives.ts +1 -1
  113. package/src/tools/qbd/sales-representatives/list-qbd-sales-representatives.ts +3 -3
  114. package/src/tools/qbd/sales-representatives/retrieve-qbd-sales-representatives.ts +1 -1
  115. package/src/tools/qbd/sales-representatives/update-qbd-sales-representatives.ts +1 -1
  116. package/src/tools/qbd/sales-tax-codes/create-qbd-sales-tax-codes.ts +1 -1
  117. package/src/tools/qbd/sales-tax-codes/list-qbd-sales-tax-codes.ts +3 -3
  118. package/src/tools/qbd/sales-tax-codes/retrieve-qbd-sales-tax-codes.ts +1 -1
  119. package/src/tools/qbd/sales-tax-codes/update-qbd-sales-tax-codes.ts +1 -1
  120. package/src/tools/qbd/sales-tax-items/list-qbd-sales-tax-items.ts +2 -2
  121. package/src/tools/qbd/sales-tax-items/retrieve-qbd-sales-tax-items.ts +1 -1
  122. package/src/tools/qbd/service-items/list-qbd-service-items.ts +2 -2
  123. package/src/tools/qbd/standard-terms/create-qbd-standard-terms.ts +1 -1
  124. package/src/tools/qbd/standard-terms/list-qbd-standard-terms.ts +3 -3
  125. package/src/tools/qbd/standard-terms/retrieve-qbd-standard-terms.ts +1 -1
  126. package/src/tools/qbd/subtotal-items/create-qbd-subtotal-items.ts +1 -1
  127. package/src/tools/qbd/subtotal-items/list-qbd-subtotal-items.ts +2 -2
  128. package/src/tools/qbd/subtotal-items/retrieve-qbd-subtotal-items.ts +1 -1
  129. package/src/tools/qbd/subtotal-items/update-qbd-subtotal-items.ts +1 -1
  130. package/src/tools/qbd/templates/list-qbd-templates.ts +1 -1
  131. package/src/tools/qbd/time-tracking-activities/list-qbd-time-tracking-activities.ts +4 -4
  132. package/src/tools/qbd/time-tracking-activities/retrieve-qbd-time-tracking-activities.ts +1 -1
  133. package/src/tools/qbd/transactions/list-qbd-transactions.ts +4 -4
  134. package/src/tools/qbd/transactions/retrieve-qbd-transactions.ts +1 -1
  135. package/src/tools/qbd/transfers/create-qbd-transfers.ts +1 -1
  136. package/src/tools/qbd/transfers/list-qbd-transfers.ts +7 -15
  137. package/src/tools/qbd/transfers/retrieve-qbd-transfers.ts +1 -1
  138. package/src/tools/qbd/transfers/update-qbd-transfers.ts +1 -1
  139. package/src/tools/qbd/unit-of-measure-sets/list-qbd-unit-of-measure-sets.ts +2 -2
  140. package/src/tools/qbd/unit-of-measure-sets/retrieve-qbd-unit-of-measure-sets.ts +1 -1
  141. package/src/tools/qbd/vendor-credits/list-qbd-vendor-credits.ts +4 -4
  142. package/src/tools/qbd/vendors/list-qbd-vendors.ts +2 -2
  143. package/stdio.d.mts +1 -2
  144. package/stdio.d.mts.map +1 -1
  145. package/stdio.d.ts +1 -2
  146. package/stdio.d.ts.map +1 -1
  147. package/stdio.js +2 -2
  148. package/stdio.js.map +1 -1
  149. package/stdio.mjs +3 -3
  150. package/stdio.mjs.map +1 -1
  151. package/tools/qbd/accounts/list-qbd-accounts.js +2 -2
  152. package/tools/qbd/accounts/list-qbd-accounts.js.map +1 -1
  153. package/tools/qbd/accounts/list-qbd-accounts.mjs +2 -2
  154. package/tools/qbd/accounts/list-qbd-accounts.mjs.map +1 -1
  155. package/tools/qbd/bill-check-payments/list-qbd-bill-check-payments.js +4 -4
  156. package/tools/qbd/bill-check-payments/list-qbd-bill-check-payments.js.map +1 -1
  157. package/tools/qbd/bill-check-payments/list-qbd-bill-check-payments.mjs +4 -4
  158. package/tools/qbd/bill-check-payments/list-qbd-bill-check-payments.mjs.map +1 -1
  159. package/tools/qbd/bill-credit-card-payments/list-qbd-bill-credit-card-payments.js +4 -4
  160. package/tools/qbd/bill-credit-card-payments/list-qbd-bill-credit-card-payments.js.map +1 -1
  161. package/tools/qbd/bill-credit-card-payments/list-qbd-bill-credit-card-payments.mjs +4 -4
  162. package/tools/qbd/bill-credit-card-payments/list-qbd-bill-credit-card-payments.mjs.map +1 -1
  163. package/tools/qbd/bills/list-qbd-bills.js +4 -4
  164. package/tools/qbd/bills/list-qbd-bills.js.map +1 -1
  165. package/tools/qbd/bills/list-qbd-bills.mjs +4 -4
  166. package/tools/qbd/bills/list-qbd-bills.mjs.map +1 -1
  167. package/tools/qbd/build-assemblies/list-qbd-build-assemblies.js +4 -4
  168. package/tools/qbd/build-assemblies/list-qbd-build-assemblies.js.map +1 -1
  169. package/tools/qbd/build-assemblies/list-qbd-build-assemblies.mjs +4 -4
  170. package/tools/qbd/build-assemblies/list-qbd-build-assemblies.mjs.map +1 -1
  171. package/tools/qbd/checks/list-qbd-checks.js +4 -4
  172. package/tools/qbd/checks/list-qbd-checks.js.map +1 -1
  173. package/tools/qbd/checks/list-qbd-checks.mjs +4 -4
  174. package/tools/qbd/checks/list-qbd-checks.mjs.map +1 -1
  175. package/tools/qbd/classes/create-qbd-classes.js +1 -1
  176. package/tools/qbd/classes/create-qbd-classes.js.map +1 -1
  177. package/tools/qbd/classes/create-qbd-classes.mjs +1 -1
  178. package/tools/qbd/classes/create-qbd-classes.mjs.map +1 -1
  179. package/tools/qbd/classes/list-qbd-classes.js +3 -3
  180. package/tools/qbd/classes/list-qbd-classes.js.map +1 -1
  181. package/tools/qbd/classes/list-qbd-classes.mjs +3 -3
  182. package/tools/qbd/classes/list-qbd-classes.mjs.map +1 -1
  183. package/tools/qbd/classes/retrieve-qbd-classes.js +1 -1
  184. package/tools/qbd/classes/retrieve-qbd-classes.js.map +1 -1
  185. package/tools/qbd/classes/retrieve-qbd-classes.mjs +1 -1
  186. package/tools/qbd/classes/retrieve-qbd-classes.mjs.map +1 -1
  187. package/tools/qbd/classes/update-qbd-classes.js +1 -1
  188. package/tools/qbd/classes/update-qbd-classes.js.map +1 -1
  189. package/tools/qbd/classes/update-qbd-classes.mjs +1 -1
  190. package/tools/qbd/classes/update-qbd-classes.mjs.map +1 -1
  191. package/tools/qbd/credit-card-charges/list-qbd-credit-card-charges.js +4 -4
  192. package/tools/qbd/credit-card-charges/list-qbd-credit-card-charges.js.map +1 -1
  193. package/tools/qbd/credit-card-charges/list-qbd-credit-card-charges.mjs +4 -4
  194. package/tools/qbd/credit-card-charges/list-qbd-credit-card-charges.mjs.map +1 -1
  195. package/tools/qbd/credit-card-credits/list-qbd-credit-card-credits.js +4 -4
  196. package/tools/qbd/credit-card-credits/list-qbd-credit-card-credits.js.map +1 -1
  197. package/tools/qbd/credit-card-credits/list-qbd-credit-card-credits.mjs +4 -4
  198. package/tools/qbd/credit-card-credits/list-qbd-credit-card-credits.mjs.map +1 -1
  199. package/tools/qbd/credit-memos/list-qbd-credit-memos.js +4 -4
  200. package/tools/qbd/credit-memos/list-qbd-credit-memos.js.map +1 -1
  201. package/tools/qbd/credit-memos/list-qbd-credit-memos.mjs +4 -4
  202. package/tools/qbd/credit-memos/list-qbd-credit-memos.mjs.map +1 -1
  203. package/tools/qbd/customers/list-qbd-customers.js +2 -2
  204. package/tools/qbd/customers/list-qbd-customers.js.map +1 -1
  205. package/tools/qbd/customers/list-qbd-customers.mjs +2 -2
  206. package/tools/qbd/customers/list-qbd-customers.mjs.map +1 -1
  207. package/tools/qbd/date-driven-terms/create-qbd-date-driven-terms.js +1 -1
  208. package/tools/qbd/date-driven-terms/create-qbd-date-driven-terms.js.map +1 -1
  209. package/tools/qbd/date-driven-terms/create-qbd-date-driven-terms.mjs +1 -1
  210. package/tools/qbd/date-driven-terms/create-qbd-date-driven-terms.mjs.map +1 -1
  211. package/tools/qbd/date-driven-terms/list-qbd-date-driven-terms.js +3 -3
  212. package/tools/qbd/date-driven-terms/list-qbd-date-driven-terms.js.map +1 -1
  213. package/tools/qbd/date-driven-terms/list-qbd-date-driven-terms.mjs +3 -3
  214. package/tools/qbd/date-driven-terms/list-qbd-date-driven-terms.mjs.map +1 -1
  215. package/tools/qbd/date-driven-terms/retrieve-qbd-date-driven-terms.js +1 -1
  216. package/tools/qbd/date-driven-terms/retrieve-qbd-date-driven-terms.js.map +1 -1
  217. package/tools/qbd/date-driven-terms/retrieve-qbd-date-driven-terms.mjs +1 -1
  218. package/tools/qbd/date-driven-terms/retrieve-qbd-date-driven-terms.mjs.map +1 -1
  219. package/tools/qbd/deleted-list-objects/list-qbd-deleted-list-objects.js +3 -3
  220. package/tools/qbd/deleted-list-objects/list-qbd-deleted-list-objects.js.map +1 -1
  221. package/tools/qbd/deleted-list-objects/list-qbd-deleted-list-objects.mjs +3 -3
  222. package/tools/qbd/deleted-list-objects/list-qbd-deleted-list-objects.mjs.map +1 -1
  223. package/tools/qbd/deleted-transactions/list-qbd-deleted-transactions.js +3 -3
  224. package/tools/qbd/deleted-transactions/list-qbd-deleted-transactions.js.map +1 -1
  225. package/tools/qbd/deleted-transactions/list-qbd-deleted-transactions.mjs +3 -3
  226. package/tools/qbd/deleted-transactions/list-qbd-deleted-transactions.mjs.map +1 -1
  227. package/tools/qbd/discount-items/list-qbd-discount-items.js +2 -2
  228. package/tools/qbd/discount-items/list-qbd-discount-items.js.map +1 -1
  229. package/tools/qbd/discount-items/list-qbd-discount-items.mjs +2 -2
  230. package/tools/qbd/discount-items/list-qbd-discount-items.mjs.map +1 -1
  231. package/tools/qbd/employees/list-qbd-employees.js +2 -2
  232. package/tools/qbd/employees/list-qbd-employees.js.map +1 -1
  233. package/tools/qbd/employees/list-qbd-employees.mjs +2 -2
  234. package/tools/qbd/employees/list-qbd-employees.mjs.map +1 -1
  235. package/tools/qbd/estimates/list-qbd-estimates.js +4 -4
  236. package/tools/qbd/estimates/list-qbd-estimates.js.map +1 -1
  237. package/tools/qbd/estimates/list-qbd-estimates.mjs +4 -4
  238. package/tools/qbd/estimates/list-qbd-estimates.mjs.map +1 -1
  239. package/tools/qbd/inventory-adjustments/list-qbd-inventory-adjustments.js +4 -4
  240. package/tools/qbd/inventory-adjustments/list-qbd-inventory-adjustments.js.map +1 -1
  241. package/tools/qbd/inventory-adjustments/list-qbd-inventory-adjustments.mjs +4 -4
  242. package/tools/qbd/inventory-adjustments/list-qbd-inventory-adjustments.mjs.map +1 -1
  243. package/tools/qbd/inventory-assembly-items/list-qbd-inventory-assembly-items.js +2 -2
  244. package/tools/qbd/inventory-assembly-items/list-qbd-inventory-assembly-items.js.map +1 -1
  245. package/tools/qbd/inventory-assembly-items/list-qbd-inventory-assembly-items.mjs +2 -2
  246. package/tools/qbd/inventory-assembly-items/list-qbd-inventory-assembly-items.mjs.map +1 -1
  247. package/tools/qbd/inventory-items/list-qbd-inventory-items.js +2 -2
  248. package/tools/qbd/inventory-items/list-qbd-inventory-items.js.map +1 -1
  249. package/tools/qbd/inventory-items/list-qbd-inventory-items.mjs +2 -2
  250. package/tools/qbd/inventory-items/list-qbd-inventory-items.mjs.map +1 -1
  251. package/tools/qbd/inventory-sites/create-qbd-inventory-sites.js +1 -1
  252. package/tools/qbd/inventory-sites/create-qbd-inventory-sites.js.map +1 -1
  253. package/tools/qbd/inventory-sites/create-qbd-inventory-sites.mjs +1 -1
  254. package/tools/qbd/inventory-sites/create-qbd-inventory-sites.mjs.map +1 -1
  255. package/tools/qbd/inventory-sites/list-qbd-inventory-sites.d.mts.map +1 -1
  256. package/tools/qbd/inventory-sites/list-qbd-inventory-sites.d.ts.map +1 -1
  257. package/tools/qbd/inventory-sites/list-qbd-inventory-sites.js +5 -11
  258. package/tools/qbd/inventory-sites/list-qbd-inventory-sites.js.map +1 -1
  259. package/tools/qbd/inventory-sites/list-qbd-inventory-sites.mjs +5 -11
  260. package/tools/qbd/inventory-sites/list-qbd-inventory-sites.mjs.map +1 -1
  261. package/tools/qbd/inventory-sites/retrieve-qbd-inventory-sites.js +1 -1
  262. package/tools/qbd/inventory-sites/retrieve-qbd-inventory-sites.js.map +1 -1
  263. package/tools/qbd/inventory-sites/retrieve-qbd-inventory-sites.mjs +1 -1
  264. package/tools/qbd/inventory-sites/retrieve-qbd-inventory-sites.mjs.map +1 -1
  265. package/tools/qbd/inventory-sites/update-qbd-inventory-sites.js +1 -1
  266. package/tools/qbd/inventory-sites/update-qbd-inventory-sites.js.map +1 -1
  267. package/tools/qbd/inventory-sites/update-qbd-inventory-sites.mjs +1 -1
  268. package/tools/qbd/inventory-sites/update-qbd-inventory-sites.mjs.map +1 -1
  269. package/tools/qbd/invoices/list-qbd-invoices.js +4 -4
  270. package/tools/qbd/invoices/list-qbd-invoices.js.map +1 -1
  271. package/tools/qbd/invoices/list-qbd-invoices.mjs +4 -4
  272. package/tools/qbd/invoices/list-qbd-invoices.mjs.map +1 -1
  273. package/tools/qbd/item-groups/list-qbd-item-groups.js +2 -2
  274. package/tools/qbd/item-groups/list-qbd-item-groups.js.map +1 -1
  275. package/tools/qbd/item-groups/list-qbd-item-groups.mjs +2 -2
  276. package/tools/qbd/item-groups/list-qbd-item-groups.mjs.map +1 -1
  277. package/tools/qbd/item-groups/retrieve-qbd-item-groups.js +1 -1
  278. package/tools/qbd/item-groups/retrieve-qbd-item-groups.js.map +1 -1
  279. package/tools/qbd/item-groups/retrieve-qbd-item-groups.mjs +1 -1
  280. package/tools/qbd/item-groups/retrieve-qbd-item-groups.mjs.map +1 -1
  281. package/tools/qbd/item-receipts/list-qbd-item-receipts.js +4 -4
  282. package/tools/qbd/item-receipts/list-qbd-item-receipts.js.map +1 -1
  283. package/tools/qbd/item-receipts/list-qbd-item-receipts.mjs +4 -4
  284. package/tools/qbd/item-receipts/list-qbd-item-receipts.mjs.map +1 -1
  285. package/tools/qbd/item-sites/retrieve-qbd-item-sites.js +1 -1
  286. package/tools/qbd/item-sites/retrieve-qbd-item-sites.js.map +1 -1
  287. package/tools/qbd/item-sites/retrieve-qbd-item-sites.mjs +1 -1
  288. package/tools/qbd/item-sites/retrieve-qbd-item-sites.mjs.map +1 -1
  289. package/tools/qbd/journal-entries/list-qbd-journal-entries.js +4 -4
  290. package/tools/qbd/journal-entries/list-qbd-journal-entries.js.map +1 -1
  291. package/tools/qbd/journal-entries/list-qbd-journal-entries.mjs +4 -4
  292. package/tools/qbd/journal-entries/list-qbd-journal-entries.mjs.map +1 -1
  293. package/tools/qbd/non-inventory-items/list-qbd-non-inventory-items.js +2 -2
  294. package/tools/qbd/non-inventory-items/list-qbd-non-inventory-items.js.map +1 -1
  295. package/tools/qbd/non-inventory-items/list-qbd-non-inventory-items.mjs +2 -2
  296. package/tools/qbd/non-inventory-items/list-qbd-non-inventory-items.mjs.map +1 -1
  297. package/tools/qbd/other-charge-items/list-qbd-other-charge-items.js +2 -2
  298. package/tools/qbd/other-charge-items/list-qbd-other-charge-items.js.map +1 -1
  299. package/tools/qbd/other-charge-items/list-qbd-other-charge-items.mjs +2 -2
  300. package/tools/qbd/other-charge-items/list-qbd-other-charge-items.mjs.map +1 -1
  301. package/tools/qbd/other-names/list-qbd-other-names.js +2 -2
  302. package/tools/qbd/other-names/list-qbd-other-names.js.map +1 -1
  303. package/tools/qbd/other-names/list-qbd-other-names.mjs +2 -2
  304. package/tools/qbd/other-names/list-qbd-other-names.mjs.map +1 -1
  305. package/tools/qbd/other-names/retrieve-qbd-other-names.js +1 -1
  306. package/tools/qbd/other-names/retrieve-qbd-other-names.js.map +1 -1
  307. package/tools/qbd/other-names/retrieve-qbd-other-names.mjs +1 -1
  308. package/tools/qbd/other-names/retrieve-qbd-other-names.mjs.map +1 -1
  309. package/tools/qbd/payment-methods/create-qbd-payment-methods.js +1 -1
  310. package/tools/qbd/payment-methods/create-qbd-payment-methods.js.map +1 -1
  311. package/tools/qbd/payment-methods/create-qbd-payment-methods.mjs +1 -1
  312. package/tools/qbd/payment-methods/create-qbd-payment-methods.mjs.map +1 -1
  313. package/tools/qbd/payment-methods/list-qbd-payment-methods.js +3 -3
  314. package/tools/qbd/payment-methods/list-qbd-payment-methods.js.map +1 -1
  315. package/tools/qbd/payment-methods/list-qbd-payment-methods.mjs +3 -3
  316. package/tools/qbd/payment-methods/list-qbd-payment-methods.mjs.map +1 -1
  317. package/tools/qbd/payment-methods/retrieve-qbd-payment-methods.js +1 -1
  318. package/tools/qbd/payment-methods/retrieve-qbd-payment-methods.js.map +1 -1
  319. package/tools/qbd/payment-methods/retrieve-qbd-payment-methods.mjs +1 -1
  320. package/tools/qbd/payment-methods/retrieve-qbd-payment-methods.mjs.map +1 -1
  321. package/tools/qbd/payroll-wage-items/create-qbd-payroll-wage-items.js +1 -1
  322. package/tools/qbd/payroll-wage-items/create-qbd-payroll-wage-items.js.map +1 -1
  323. package/tools/qbd/payroll-wage-items/create-qbd-payroll-wage-items.mjs +1 -1
  324. package/tools/qbd/payroll-wage-items/create-qbd-payroll-wage-items.mjs.map +1 -1
  325. package/tools/qbd/payroll-wage-items/list-qbd-payroll-wage-items.js +3 -3
  326. package/tools/qbd/payroll-wage-items/list-qbd-payroll-wage-items.js.map +1 -1
  327. package/tools/qbd/payroll-wage-items/list-qbd-payroll-wage-items.mjs +3 -3
  328. package/tools/qbd/payroll-wage-items/list-qbd-payroll-wage-items.mjs.map +1 -1
  329. package/tools/qbd/payroll-wage-items/retrieve-qbd-payroll-wage-items.js +1 -1
  330. package/tools/qbd/payroll-wage-items/retrieve-qbd-payroll-wage-items.js.map +1 -1
  331. package/tools/qbd/payroll-wage-items/retrieve-qbd-payroll-wage-items.mjs +1 -1
  332. package/tools/qbd/payroll-wage-items/retrieve-qbd-payroll-wage-items.mjs.map +1 -1
  333. package/tools/qbd/price-levels/list-qbd-price-levels.js +2 -2
  334. package/tools/qbd/price-levels/list-qbd-price-levels.js.map +1 -1
  335. package/tools/qbd/price-levels/list-qbd-price-levels.mjs +2 -2
  336. package/tools/qbd/price-levels/list-qbd-price-levels.mjs.map +1 -1
  337. package/tools/qbd/price-levels/retrieve-qbd-price-levels.js +1 -1
  338. package/tools/qbd/price-levels/retrieve-qbd-price-levels.js.map +1 -1
  339. package/tools/qbd/price-levels/retrieve-qbd-price-levels.mjs +1 -1
  340. package/tools/qbd/price-levels/retrieve-qbd-price-levels.mjs.map +1 -1
  341. package/tools/qbd/purchase-orders/list-qbd-purchase-orders.js +4 -4
  342. package/tools/qbd/purchase-orders/list-qbd-purchase-orders.js.map +1 -1
  343. package/tools/qbd/purchase-orders/list-qbd-purchase-orders.mjs +4 -4
  344. package/tools/qbd/purchase-orders/list-qbd-purchase-orders.mjs.map +1 -1
  345. package/tools/qbd/receive-payments/list-qbd-receive-payments.js +4 -4
  346. package/tools/qbd/receive-payments/list-qbd-receive-payments.js.map +1 -1
  347. package/tools/qbd/receive-payments/list-qbd-receive-payments.mjs +4 -4
  348. package/tools/qbd/receive-payments/list-qbd-receive-payments.mjs.map +1 -1
  349. package/tools/qbd/sales-orders/list-qbd-sales-orders.js +4 -4
  350. package/tools/qbd/sales-orders/list-qbd-sales-orders.js.map +1 -1
  351. package/tools/qbd/sales-orders/list-qbd-sales-orders.mjs +4 -4
  352. package/tools/qbd/sales-orders/list-qbd-sales-orders.mjs.map +1 -1
  353. package/tools/qbd/sales-receipts/list-qbd-sales-receipts.js +4 -4
  354. package/tools/qbd/sales-receipts/list-qbd-sales-receipts.js.map +1 -1
  355. package/tools/qbd/sales-receipts/list-qbd-sales-receipts.mjs +4 -4
  356. package/tools/qbd/sales-receipts/list-qbd-sales-receipts.mjs.map +1 -1
  357. package/tools/qbd/sales-representatives/create-qbd-sales-representatives.js +1 -1
  358. package/tools/qbd/sales-representatives/create-qbd-sales-representatives.js.map +1 -1
  359. package/tools/qbd/sales-representatives/create-qbd-sales-representatives.mjs +1 -1
  360. package/tools/qbd/sales-representatives/create-qbd-sales-representatives.mjs.map +1 -1
  361. package/tools/qbd/sales-representatives/list-qbd-sales-representatives.js +3 -3
  362. package/tools/qbd/sales-representatives/list-qbd-sales-representatives.js.map +1 -1
  363. package/tools/qbd/sales-representatives/list-qbd-sales-representatives.mjs +3 -3
  364. package/tools/qbd/sales-representatives/list-qbd-sales-representatives.mjs.map +1 -1
  365. package/tools/qbd/sales-representatives/retrieve-qbd-sales-representatives.js +1 -1
  366. package/tools/qbd/sales-representatives/retrieve-qbd-sales-representatives.js.map +1 -1
  367. package/tools/qbd/sales-representatives/retrieve-qbd-sales-representatives.mjs +1 -1
  368. package/tools/qbd/sales-representatives/retrieve-qbd-sales-representatives.mjs.map +1 -1
  369. package/tools/qbd/sales-representatives/update-qbd-sales-representatives.js +1 -1
  370. package/tools/qbd/sales-representatives/update-qbd-sales-representatives.js.map +1 -1
  371. package/tools/qbd/sales-representatives/update-qbd-sales-representatives.mjs +1 -1
  372. package/tools/qbd/sales-representatives/update-qbd-sales-representatives.mjs.map +1 -1
  373. package/tools/qbd/sales-tax-codes/create-qbd-sales-tax-codes.js +1 -1
  374. package/tools/qbd/sales-tax-codes/create-qbd-sales-tax-codes.js.map +1 -1
  375. package/tools/qbd/sales-tax-codes/create-qbd-sales-tax-codes.mjs +1 -1
  376. package/tools/qbd/sales-tax-codes/create-qbd-sales-tax-codes.mjs.map +1 -1
  377. package/tools/qbd/sales-tax-codes/list-qbd-sales-tax-codes.js +3 -3
  378. package/tools/qbd/sales-tax-codes/list-qbd-sales-tax-codes.js.map +1 -1
  379. package/tools/qbd/sales-tax-codes/list-qbd-sales-tax-codes.mjs +3 -3
  380. package/tools/qbd/sales-tax-codes/list-qbd-sales-tax-codes.mjs.map +1 -1
  381. package/tools/qbd/sales-tax-codes/retrieve-qbd-sales-tax-codes.js +1 -1
  382. package/tools/qbd/sales-tax-codes/retrieve-qbd-sales-tax-codes.js.map +1 -1
  383. package/tools/qbd/sales-tax-codes/retrieve-qbd-sales-tax-codes.mjs +1 -1
  384. package/tools/qbd/sales-tax-codes/retrieve-qbd-sales-tax-codes.mjs.map +1 -1
  385. package/tools/qbd/sales-tax-codes/update-qbd-sales-tax-codes.js +1 -1
  386. package/tools/qbd/sales-tax-codes/update-qbd-sales-tax-codes.js.map +1 -1
  387. package/tools/qbd/sales-tax-codes/update-qbd-sales-tax-codes.mjs +1 -1
  388. package/tools/qbd/sales-tax-codes/update-qbd-sales-tax-codes.mjs.map +1 -1
  389. package/tools/qbd/sales-tax-items/list-qbd-sales-tax-items.js +2 -2
  390. package/tools/qbd/sales-tax-items/list-qbd-sales-tax-items.js.map +1 -1
  391. package/tools/qbd/sales-tax-items/list-qbd-sales-tax-items.mjs +2 -2
  392. package/tools/qbd/sales-tax-items/list-qbd-sales-tax-items.mjs.map +1 -1
  393. package/tools/qbd/sales-tax-items/retrieve-qbd-sales-tax-items.js +1 -1
  394. package/tools/qbd/sales-tax-items/retrieve-qbd-sales-tax-items.js.map +1 -1
  395. package/tools/qbd/sales-tax-items/retrieve-qbd-sales-tax-items.mjs +1 -1
  396. package/tools/qbd/sales-tax-items/retrieve-qbd-sales-tax-items.mjs.map +1 -1
  397. package/tools/qbd/service-items/list-qbd-service-items.js +2 -2
  398. package/tools/qbd/service-items/list-qbd-service-items.js.map +1 -1
  399. package/tools/qbd/service-items/list-qbd-service-items.mjs +2 -2
  400. package/tools/qbd/service-items/list-qbd-service-items.mjs.map +1 -1
  401. package/tools/qbd/standard-terms/create-qbd-standard-terms.js +1 -1
  402. package/tools/qbd/standard-terms/create-qbd-standard-terms.js.map +1 -1
  403. package/tools/qbd/standard-terms/create-qbd-standard-terms.mjs +1 -1
  404. package/tools/qbd/standard-terms/create-qbd-standard-terms.mjs.map +1 -1
  405. package/tools/qbd/standard-terms/list-qbd-standard-terms.js +3 -3
  406. package/tools/qbd/standard-terms/list-qbd-standard-terms.js.map +1 -1
  407. package/tools/qbd/standard-terms/list-qbd-standard-terms.mjs +3 -3
  408. package/tools/qbd/standard-terms/list-qbd-standard-terms.mjs.map +1 -1
  409. package/tools/qbd/standard-terms/retrieve-qbd-standard-terms.js +1 -1
  410. package/tools/qbd/standard-terms/retrieve-qbd-standard-terms.js.map +1 -1
  411. package/tools/qbd/standard-terms/retrieve-qbd-standard-terms.mjs +1 -1
  412. package/tools/qbd/standard-terms/retrieve-qbd-standard-terms.mjs.map +1 -1
  413. package/tools/qbd/subtotal-items/create-qbd-subtotal-items.js +1 -1
  414. package/tools/qbd/subtotal-items/create-qbd-subtotal-items.js.map +1 -1
  415. package/tools/qbd/subtotal-items/create-qbd-subtotal-items.mjs +1 -1
  416. package/tools/qbd/subtotal-items/create-qbd-subtotal-items.mjs.map +1 -1
  417. package/tools/qbd/subtotal-items/list-qbd-subtotal-items.js +2 -2
  418. package/tools/qbd/subtotal-items/list-qbd-subtotal-items.js.map +1 -1
  419. package/tools/qbd/subtotal-items/list-qbd-subtotal-items.mjs +2 -2
  420. package/tools/qbd/subtotal-items/list-qbd-subtotal-items.mjs.map +1 -1
  421. package/tools/qbd/subtotal-items/retrieve-qbd-subtotal-items.js +1 -1
  422. package/tools/qbd/subtotal-items/retrieve-qbd-subtotal-items.js.map +1 -1
  423. package/tools/qbd/subtotal-items/retrieve-qbd-subtotal-items.mjs +1 -1
  424. package/tools/qbd/subtotal-items/retrieve-qbd-subtotal-items.mjs.map +1 -1
  425. package/tools/qbd/subtotal-items/update-qbd-subtotal-items.js +1 -1
  426. package/tools/qbd/subtotal-items/update-qbd-subtotal-items.js.map +1 -1
  427. package/tools/qbd/subtotal-items/update-qbd-subtotal-items.mjs +1 -1
  428. package/tools/qbd/subtotal-items/update-qbd-subtotal-items.mjs.map +1 -1
  429. package/tools/qbd/templates/list-qbd-templates.js +1 -1
  430. package/tools/qbd/templates/list-qbd-templates.js.map +1 -1
  431. package/tools/qbd/templates/list-qbd-templates.mjs +1 -1
  432. package/tools/qbd/templates/list-qbd-templates.mjs.map +1 -1
  433. package/tools/qbd/time-tracking-activities/list-qbd-time-tracking-activities.js +4 -4
  434. package/tools/qbd/time-tracking-activities/list-qbd-time-tracking-activities.js.map +1 -1
  435. package/tools/qbd/time-tracking-activities/list-qbd-time-tracking-activities.mjs +4 -4
  436. package/tools/qbd/time-tracking-activities/list-qbd-time-tracking-activities.mjs.map +1 -1
  437. package/tools/qbd/time-tracking-activities/retrieve-qbd-time-tracking-activities.js +1 -1
  438. package/tools/qbd/time-tracking-activities/retrieve-qbd-time-tracking-activities.js.map +1 -1
  439. package/tools/qbd/time-tracking-activities/retrieve-qbd-time-tracking-activities.mjs +1 -1
  440. package/tools/qbd/time-tracking-activities/retrieve-qbd-time-tracking-activities.mjs.map +1 -1
  441. package/tools/qbd/transactions/list-qbd-transactions.js +4 -4
  442. package/tools/qbd/transactions/list-qbd-transactions.js.map +1 -1
  443. package/tools/qbd/transactions/list-qbd-transactions.mjs +4 -4
  444. package/tools/qbd/transactions/list-qbd-transactions.mjs.map +1 -1
  445. package/tools/qbd/transactions/retrieve-qbd-transactions.js +1 -1
  446. package/tools/qbd/transactions/retrieve-qbd-transactions.js.map +1 -1
  447. package/tools/qbd/transactions/retrieve-qbd-transactions.mjs +1 -1
  448. package/tools/qbd/transactions/retrieve-qbd-transactions.mjs.map +1 -1
  449. package/tools/qbd/transfers/create-qbd-transfers.js +1 -1
  450. package/tools/qbd/transfers/create-qbd-transfers.js.map +1 -1
  451. package/tools/qbd/transfers/create-qbd-transfers.mjs +1 -1
  452. package/tools/qbd/transfers/create-qbd-transfers.mjs.map +1 -1
  453. package/tools/qbd/transfers/list-qbd-transfers.d.mts.map +1 -1
  454. package/tools/qbd/transfers/list-qbd-transfers.d.ts.map +1 -1
  455. package/tools/qbd/transfers/list-qbd-transfers.js +7 -13
  456. package/tools/qbd/transfers/list-qbd-transfers.js.map +1 -1
  457. package/tools/qbd/transfers/list-qbd-transfers.mjs +7 -13
  458. package/tools/qbd/transfers/list-qbd-transfers.mjs.map +1 -1
  459. package/tools/qbd/transfers/retrieve-qbd-transfers.js +1 -1
  460. package/tools/qbd/transfers/retrieve-qbd-transfers.js.map +1 -1
  461. package/tools/qbd/transfers/retrieve-qbd-transfers.mjs +1 -1
  462. package/tools/qbd/transfers/retrieve-qbd-transfers.mjs.map +1 -1
  463. package/tools/qbd/transfers/update-qbd-transfers.js +1 -1
  464. package/tools/qbd/transfers/update-qbd-transfers.js.map +1 -1
  465. package/tools/qbd/transfers/update-qbd-transfers.mjs +1 -1
  466. package/tools/qbd/transfers/update-qbd-transfers.mjs.map +1 -1
  467. package/tools/qbd/unit-of-measure-sets/list-qbd-unit-of-measure-sets.js +2 -2
  468. package/tools/qbd/unit-of-measure-sets/list-qbd-unit-of-measure-sets.js.map +1 -1
  469. package/tools/qbd/unit-of-measure-sets/list-qbd-unit-of-measure-sets.mjs +2 -2
  470. package/tools/qbd/unit-of-measure-sets/list-qbd-unit-of-measure-sets.mjs.map +1 -1
  471. package/tools/qbd/unit-of-measure-sets/retrieve-qbd-unit-of-measure-sets.js +1 -1
  472. package/tools/qbd/unit-of-measure-sets/retrieve-qbd-unit-of-measure-sets.js.map +1 -1
  473. package/tools/qbd/unit-of-measure-sets/retrieve-qbd-unit-of-measure-sets.mjs +1 -1
  474. package/tools/qbd/unit-of-measure-sets/retrieve-qbd-unit-of-measure-sets.mjs.map +1 -1
  475. package/tools/qbd/vendor-credits/list-qbd-vendor-credits.js +4 -4
  476. package/tools/qbd/vendor-credits/list-qbd-vendor-credits.js.map +1 -1
  477. package/tools/qbd/vendor-credits/list-qbd-vendor-credits.mjs +4 -4
  478. package/tools/qbd/vendor-credits/list-qbd-vendor-credits.mjs.map +1 -1
  479. package/tools/qbd/vendors/list-qbd-vendors.js +2 -2
  480. package/tools/qbd/vendors/list-qbd-vendors.js.map +1 -1
  481. package/tools/qbd/vendors/list-qbd-vendors.mjs +2 -2
  482. package/tools/qbd/vendors/list-qbd-vendors.mjs.map +1 -1
package/src/compat.ts CHANGED
@@ -20,13 +20,13 @@ export const defaultClientCapabilities: ClientCapabilities = {
20
20
  toolNameLength: undefined,
21
21
  };
22
22
 
23
- export const ClientType = z.enum(['openai-agents', 'claude', 'claude-code', 'cursor']);
23
+ export const ClientType = z.enum(['openai-agents', 'claude', 'claude-code', 'cursor', 'infer']);
24
24
  export type ClientType = z.infer<typeof ClientType>;
25
25
 
26
26
  // Client presets for compatibility
27
27
  // Note that these could change over time as models get better, so this is
28
28
  // a best effort.
29
- export const knownClients: Record<ClientType, ClientCapabilities> = {
29
+ export const knownClients: Record<Exclude<ClientType, 'infer'>, ClientCapabilities> = {
30
30
  'openai-agents': {
31
31
  topLevelUnions: false,
32
32
  validJson: true,
package/src/headers.ts CHANGED
@@ -1,8 +1,7 @@
1
1
  // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
- import { type ClientOptions } from 'conductor-node/index';
4
-
5
3
  import { IncomingMessage } from 'node:http';
4
+ import { ClientOptions } from 'conductor-node';
6
5
 
7
6
  export const parseAuthHeaders = (req: IncomingMessage): Partial<ClientOptions> => {
8
7
  if (req.headers.authorization) {
package/src/http.ts CHANGED
@@ -8,7 +8,6 @@ import { fromError } from 'zod-validation-error/v3';
8
8
  import { McpOptions, parseQueryOptions } from './options';
9
9
  import { initMcpServer, newMcpServer } from './server';
10
10
  import { parseAuthHeaders } from './headers';
11
- import { Endpoint } from './tools';
12
11
 
13
12
  const newServer = (
14
13
  defaultMcpOptions: McpOptions,
@@ -101,11 +100,7 @@ export const streamableHTTPApp = (options: McpOptions): express.Express => {
101
100
  return app;
102
101
  };
103
102
 
104
- export const launchStreamableHTTPServer = async (
105
- options: McpOptions,
106
- endpoints: Endpoint[],
107
- port: number | string | undefined,
108
- ) => {
103
+ export const launchStreamableHTTPServer = async (options: McpOptions, port: number | string | undefined) => {
109
104
  const app = streamableHTTPApp(options);
110
105
  const server = app.listen(port);
111
106
  const address = server.address();
package/src/index.ts CHANGED
@@ -23,10 +23,10 @@ async function main() {
23
23
 
24
24
  switch (options.transport) {
25
25
  case 'stdio':
26
- await launchStdioServer(options, selectedTools);
26
+ await launchStdioServer(options);
27
27
  break;
28
28
  case 'http':
29
- await launchStreamableHTTPServer(options, selectedTools, options.port ?? options.socket);
29
+ await launchStreamableHTTPServer(options, options.port ?? options.socket);
30
30
  break;
31
31
  }
32
32
  }
package/src/options.ts CHANGED
@@ -13,12 +13,12 @@ export type CLIOptions = McpOptions & {
13
13
  };
14
14
 
15
15
  export type McpOptions = {
16
- client: ClientType | undefined;
17
- includeDynamicTools: boolean | undefined;
18
- includeAllTools: boolean | undefined;
19
- includeCodeTools: boolean | undefined;
20
- filters: Filter[];
21
- capabilities?: Partial<ClientCapabilities>;
16
+ client?: ClientType | undefined;
17
+ includeDynamicTools?: boolean | undefined;
18
+ includeAllTools?: boolean | undefined;
19
+ includeCodeTools?: boolean | undefined;
20
+ filters?: Filter[] | undefined;
21
+ capabilities?: Partial<ClientCapabilities> | undefined;
22
22
  };
23
23
 
24
24
  const CAPABILITY_CHOICES = [
@@ -204,14 +204,7 @@ export function parseCLIOptions(): CLIOptions {
204
204
  }
205
205
 
206
206
  // Parse client capabilities
207
- const clientCapabilities: ClientCapabilities = {
208
- topLevelUnions: true,
209
- validJson: true,
210
- refs: true,
211
- unions: true,
212
- formats: true,
213
- toolNameLength: undefined,
214
- };
207
+ const clientCapabilities: Partial<ClientCapabilities> = {};
215
208
 
216
209
  // Apply individual capability overrides
217
210
  if (Array.isArray(argv.capability)) {
@@ -264,7 +257,7 @@ export function parseCLIOptions(): CLIOptions {
264
257
 
265
258
  const client = argv.client as ClientType;
266
259
  return {
267
- client: client && knownClients[client] ? client : undefined,
260
+ client: client && client !== 'infer' && knownClients[client] ? client : undefined,
268
261
  includeDynamicTools,
269
262
  includeAllTools,
270
263
  includeCodeTools,
@@ -310,7 +303,7 @@ export function parseQueryOptions(defaultOptions: McpOptions, query: unknown): M
310
303
  const queryObject = typeof query === 'string' ? qs.parse(query) : query;
311
304
  const queryOptions = QueryOptions.parse(queryObject);
312
305
 
313
- const filters: Filter[] = [...defaultOptions.filters];
306
+ const filters: Filter[] = [...(defaultOptions.filters ?? [])];
314
307
 
315
308
  for (const resource of queryOptions.resource || []) {
316
309
  filters.push({ type: 'resource', op: 'include', value: resource });
@@ -338,15 +331,7 @@ export function parseQueryOptions(defaultOptions: McpOptions, query: unknown): M
338
331
  }
339
332
 
340
333
  // Parse client capabilities
341
- const clientCapabilities: ClientCapabilities = {
342
- topLevelUnions: true,
343
- validJson: true,
344
- refs: true,
345
- unions: true,
346
- formats: true,
347
- toolNameLength: undefined,
348
- ...defaultOptions.capabilities,
349
- };
334
+ const clientCapabilities: Partial<ClientCapabilities> = { ...defaultOptions.capabilities };
350
335
 
351
336
  for (const cap of queryOptions.capability || []) {
352
337
  const parsed = parseCapabilityValue(cap);
@@ -381,15 +366,20 @@ export function parseQueryOptions(defaultOptions: McpOptions, query: unknown): M
381
366
  }
382
367
  }
383
368
 
369
+ let dynamicTools: boolean | undefined =
370
+ queryOptions.no_tools && !queryOptions.no_tools?.includes('dynamic') ? false
371
+ : queryOptions.tools?.includes('dynamic') ? true
372
+ : defaultOptions.includeDynamicTools;
373
+
374
+ let allTools: boolean | undefined =
375
+ queryOptions.no_tools && !queryOptions.no_tools?.includes('all') ? false
376
+ : queryOptions.tools?.includes('all') ? true
377
+ : defaultOptions.includeAllTools;
378
+
384
379
  return {
385
380
  client: queryOptions.client ?? defaultOptions.client,
386
- includeDynamicTools:
387
- defaultOptions.includeDynamicTools ??
388
- (queryOptions.tools?.includes('dynamic') && !queryOptions.no_tools?.includes('dynamic')),
389
- includeAllTools:
390
- defaultOptions.includeAllTools ??
391
- (queryOptions.tools?.includes('all') && !queryOptions.no_tools?.includes('all')),
392
- // Never include code tools on remote server.
381
+ includeDynamicTools: dynamicTools,
382
+ includeAllTools: allTools,
393
383
  includeCodeTools: undefined,
394
384
  filters,
395
385
  capabilities: clientCapabilities,
package/src/server.ts CHANGED
@@ -3,7 +3,12 @@
3
3
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
4
4
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
5
5
  import { Endpoint, endpoints, HandlerFunction, query } from './tools';
6
- import { CallToolRequestSchema, ListToolsRequestSchema, Tool } from '@modelcontextprotocol/sdk/types.js';
6
+ import {
7
+ CallToolRequestSchema,
8
+ Implementation,
9
+ ListToolsRequestSchema,
10
+ Tool,
11
+ } from '@modelcontextprotocol/sdk/types.js';
7
12
  import { ClientOptions } from 'conductor-node';
8
13
  import Conductor from 'conductor-node';
9
14
  import {
@@ -27,7 +32,7 @@ export const newMcpServer = () =>
27
32
  new McpServer(
28
33
  {
29
34
  name: 'conductor_node_api',
30
- version: '12.28.0',
35
+ version: '12.30.0',
31
36
  },
32
37
  { capabilities: { tools: {}, logging: {} } },
33
38
  );
@@ -41,74 +46,86 @@ export const server = newMcpServer();
41
46
  */
42
47
  export function initMcpServer(params: {
43
48
  server: Server | McpServer;
44
- clientOptions: ClientOptions;
45
- mcpOptions: McpOptions;
46
- endpoints?: { tool: Tool; handler: HandlerFunction }[];
47
- }) {
48
- const transformedEndpoints = selectTools(endpoints, params.mcpOptions);
49
- const client = new Conductor(params.clientOptions);
50
- const capabilities = {
51
- ...defaultClientCapabilities,
52
- ...(params.mcpOptions.client ? knownClients[params.mcpOptions.client] : params.mcpOptions.capabilities),
53
- };
54
- init({ server: params.server, client, endpoints: transformedEndpoints, capabilities });
55
- }
56
-
57
- export function init(params: {
58
- server: Server | McpServer;
59
- client?: Conductor;
60
- endpoints?: { tool: Tool; handler: HandlerFunction }[];
61
- capabilities?: Partial<ClientCapabilities>;
49
+ clientOptions?: ClientOptions;
50
+ mcpOptions?: McpOptions;
62
51
  }) {
63
52
  const server = params.server instanceof McpServer ? params.server.server : params.server;
64
- const providedEndpoints = params.endpoints || endpoints;
65
-
66
- const endpointMap = Object.fromEntries(providedEndpoints.map((endpoint) => [endpoint.tool.name, endpoint]));
53
+ const mcpOptions = params.mcpOptions ?? {};
54
+
55
+ let providedEndpoints: Endpoint[] | null = null;
56
+ let endpointMap: Record<string, Endpoint> | null = null;
57
+
58
+ const initTools = (implementation?: Implementation) => {
59
+ if (implementation && (!mcpOptions.client || mcpOptions.client === 'infer')) {
60
+ mcpOptions.client =
61
+ implementation.name.toLowerCase().includes('claude') ? 'claude'
62
+ : implementation.name.toLowerCase().includes('cursor') ? 'cursor'
63
+ : undefined;
64
+ mcpOptions.capabilities = {
65
+ ...(mcpOptions.client && knownClients[mcpOptions.client]),
66
+ ...mcpOptions.capabilities,
67
+ };
68
+ }
69
+ providedEndpoints = selectTools(endpoints, mcpOptions);
70
+ endpointMap = Object.fromEntries(providedEndpoints.map((endpoint) => [endpoint.tool.name, endpoint]));
71
+ };
67
72
 
68
- const client = params.client || new Conductor({ defaultHeaders: { 'X-Stainless-MCP': 'true' } });
73
+ const client = new Conductor({
74
+ ...params.clientOptions,
75
+ defaultHeaders: {
76
+ ...params.clientOptions?.defaultHeaders,
77
+ 'X-Stainless-MCP': 'true',
78
+ },
79
+ });
69
80
 
70
81
  server.setRequestHandler(ListToolsRequestSchema, async () => {
82
+ if (providedEndpoints === null) {
83
+ initTools(server.getClientVersion());
84
+ }
71
85
  return {
72
- tools: providedEndpoints.map((endpoint) => endpoint.tool),
86
+ tools: providedEndpoints!.map((endpoint) => endpoint.tool),
73
87
  };
74
88
  });
75
89
 
76
90
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
91
+ if (endpointMap === null) {
92
+ initTools(server.getClientVersion());
93
+ }
77
94
  const { name, arguments: args } = request.params;
78
- const endpoint = endpointMap[name];
95
+ const endpoint = endpointMap![name];
79
96
  if (!endpoint) {
80
97
  throw new Error(`Unknown tool: ${name}`);
81
98
  }
82
99
 
83
- return executeHandler(endpoint.tool, endpoint.handler, client, args, params.capabilities);
100
+ return executeHandler(endpoint.tool, endpoint.handler, client, args, mcpOptions.capabilities);
84
101
  });
85
102
  }
86
103
 
87
104
  /**
88
105
  * Selects the tools to include in the MCP Server based on the provided options.
89
106
  */
90
- export function selectTools(endpoints: Endpoint[], options: McpOptions): Endpoint[] {
91
- const filteredEndpoints = query(options.filters, endpoints);
107
+ export function selectTools(endpoints: Endpoint[], options?: McpOptions): Endpoint[] {
108
+ const filteredEndpoints = query(options?.filters ?? [], endpoints);
92
109
 
93
110
  let includedTools = filteredEndpoints;
94
111
 
95
112
  if (includedTools.length > 0) {
96
- if (options.includeDynamicTools) {
113
+ if (options?.includeDynamicTools) {
97
114
  includedTools = dynamicTools(includedTools);
98
115
  }
99
116
  } else {
100
- if (options.includeAllTools) {
117
+ if (options?.includeAllTools) {
101
118
  includedTools = endpoints;
102
- } else if (options.includeDynamicTools) {
119
+ } else if (options?.includeDynamicTools) {
103
120
  includedTools = dynamicTools(endpoints);
104
- } else if (options.includeCodeTools) {
121
+ } else if (options?.includeCodeTools) {
105
122
  includedTools = [codeTool()];
106
123
  } else {
107
124
  includedTools = endpoints;
108
125
  }
109
126
  }
110
127
 
111
- const capabilities = { ...defaultClientCapabilities, ...options.capabilities };
128
+ const capabilities = { ...defaultClientCapabilities, ...options?.capabilities };
112
129
  return applyCompatibilityTransformations(includedTools, capabilities);
113
130
  }
114
131
 
package/src/stdio.ts CHANGED
@@ -1,12 +1,11 @@
1
1
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
2
- import { init, newMcpServer } from './server';
3
- import { Endpoint } from './tools';
2
+ import { initMcpServer, newMcpServer } from './server';
4
3
  import { McpOptions } from './options';
5
4
 
6
- export const launchStdioServer = async (options: McpOptions, endpoints: Endpoint[]) => {
5
+ export const launchStdioServer = async (options: McpOptions) => {
7
6
  const server = newMcpServer();
8
7
 
9
- init({ server, endpoints });
8
+ initMcpServer({ server, mcpOptions: options });
10
9
 
11
10
  const transport = new StdioServerTransport();
12
11
  await server.connect(transport);
@@ -107,12 +107,12 @@ export const tool: Tool = {
107
107
  updatedAfter: {
108
108
  type: 'string',
109
109
  description:
110
- 'Filter for accounts updated on or after this date and time, in ISO 8601 format (YYYY-MM-DDTHH:mm:ss). If you only provide a date (YYYY-MM-DD), the time is assumed to be 00:00:00 of that day.',
110
+ "Filter for accounts updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.",
111
111
  },
112
112
  updatedBefore: {
113
113
  type: 'string',
114
114
  description:
115
- 'Filter for accounts updated on or before this date and time, in ISO 8601 format (YYYY-MM-DDTHH:mm:ss). If you only provide a date (YYYY-MM-DD), the time is assumed to be 23:59:59 of that day.',
115
+ "Filter for accounts updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.",
116
116
  },
117
117
  },
118
118
  required: ['conductorEndUserId'],
@@ -97,24 +97,24 @@ export const tool: Tool = {
97
97
  transactionDateFrom: {
98
98
  type: 'string',
99
99
  description:
100
- 'Filter for bill check payments whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).',
100
+ "Filter for bill check payments whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).",
101
101
  format: 'date',
102
102
  },
103
103
  transactionDateTo: {
104
104
  type: 'string',
105
105
  description:
106
- 'Filter for bill check payments whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).',
106
+ "Filter for bill check payments whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).",
107
107
  format: 'date',
108
108
  },
109
109
  updatedAfter: {
110
110
  type: 'string',
111
111
  description:
112
- 'Filter for bill check payments updated on or after this date and time, in ISO 8601 format (YYYY-MM-DDTHH:mm:ss). If you only provide a date (YYYY-MM-DD), the time is assumed to be 00:00:00 of that day.',
112
+ "Filter for bill check payments updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.",
113
113
  },
114
114
  updatedBefore: {
115
115
  type: 'string',
116
116
  description:
117
- 'Filter for bill check payments updated on or before this date and time, in ISO 8601 format (YYYY-MM-DDTHH:mm:ss). If you only provide a date (YYYY-MM-DD), the time is assumed to be 23:59:59 of that day.',
117
+ "Filter for bill check payments updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.",
118
118
  },
119
119
  vendorIds: {
120
120
  type: 'array',
@@ -97,24 +97,24 @@ export const tool: Tool = {
97
97
  transactionDateFrom: {
98
98
  type: 'string',
99
99
  description:
100
- 'Filter for bill credit card payments whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).',
100
+ "Filter for bill credit card payments whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).",
101
101
  format: 'date',
102
102
  },
103
103
  transactionDateTo: {
104
104
  type: 'string',
105
105
  description:
106
- 'Filter for bill credit card payments whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).',
106
+ "Filter for bill credit card payments whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).",
107
107
  format: 'date',
108
108
  },
109
109
  updatedAfter: {
110
110
  type: 'string',
111
111
  description:
112
- 'Filter for bill credit card payments updated on or after this date and time, in ISO 8601 format (YYYY-MM-DDTHH:mm:ss). If you only provide a date (YYYY-MM-DD), the time is assumed to be 00:00:00 of that day.',
112
+ "Filter for bill credit card payments updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.",
113
113
  },
114
114
  updatedBefore: {
115
115
  type: 'string',
116
116
  description:
117
- 'Filter for bill credit card payments updated on or before this date and time, in ISO 8601 format (YYYY-MM-DDTHH:mm:ss). If you only provide a date (YYYY-MM-DD), the time is assumed to be 23:59:59 of that day.',
117
+ "Filter for bill credit card payments updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.",
118
118
  },
119
119
  vendorIds: {
120
120
  type: 'array',
@@ -106,24 +106,24 @@ export const tool: Tool = {
106
106
  transactionDateFrom: {
107
107
  type: 'string',
108
108
  description:
109
- 'Filter for bills whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).',
109
+ "Filter for bills whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).",
110
110
  format: 'date',
111
111
  },
112
112
  transactionDateTo: {
113
113
  type: 'string',
114
114
  description:
115
- 'Filter for bills whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).',
115
+ "Filter for bills whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).",
116
116
  format: 'date',
117
117
  },
118
118
  updatedAfter: {
119
119
  type: 'string',
120
120
  description:
121
- 'Filter for bills updated on or after this date and time, in ISO 8601 format (YYYY-MM-DDTHH:mm:ss). If you only provide a date (YYYY-MM-DD), the time is assumed to be 00:00:00 of that day.',
121
+ "Filter for bills updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.",
122
122
  },
123
123
  updatedBefore: {
124
124
  type: 'string',
125
125
  description:
126
- 'Filter for bills updated on or before this date and time, in ISO 8601 format (YYYY-MM-DDTHH:mm:ss). If you only provide a date (YYYY-MM-DD), the time is assumed to be 23:59:59 of that day.',
126
+ "Filter for bills updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.",
127
127
  },
128
128
  vendorIds: {
129
129
  type: 'array',
@@ -95,24 +95,24 @@ export const tool: Tool = {
95
95
  transactionDateFrom: {
96
96
  type: 'string',
97
97
  description:
98
- 'Filter for build assemblies whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).',
98
+ "Filter for build assemblies whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).",
99
99
  format: 'date',
100
100
  },
101
101
  transactionDateTo: {
102
102
  type: 'string',
103
103
  description:
104
- 'Filter for build assemblies whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).',
104
+ "Filter for build assemblies whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).",
105
105
  format: 'date',
106
106
  },
107
107
  updatedAfter: {
108
108
  type: 'string',
109
109
  description:
110
- 'Filter for build assemblies updated on or after this date and time, in ISO 8601 format (YYYY-MM-DDTHH:mm:ss). If you only provide a date (YYYY-MM-DD), the time is assumed to be 00:00:00 of that day.',
110
+ "Filter for build assemblies updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.",
111
111
  },
112
112
  updatedBefore: {
113
113
  type: 'string',
114
114
  description:
115
- 'Filter for build assemblies updated on or before this date and time, in ISO 8601 format (YYYY-MM-DDTHH:mm:ss). If you only provide a date (YYYY-MM-DD), the time is assumed to be 23:59:59 of that day.',
115
+ "Filter for build assemblies updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.",
116
116
  },
117
117
  },
118
118
  required: ['conductorEndUserId'],
@@ -109,24 +109,24 @@ export const tool: Tool = {
109
109
  transactionDateFrom: {
110
110
  type: 'string',
111
111
  description:
112
- 'Filter for checks whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).',
112
+ "Filter for checks whose `date` field is on or after this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).",
113
113
  format: 'date',
114
114
  },
115
115
  transactionDateTo: {
116
116
  type: 'string',
117
117
  description:
118
- 'Filter for checks whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).',
118
+ "Filter for checks whose `date` field is on or before this date, in ISO 8601 format (YYYY-MM-DD).\n\n**NOTE:** QuickBooks Desktop interprets this date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).",
119
119
  format: 'date',
120
120
  },
121
121
  updatedAfter: {
122
122
  type: 'string',
123
123
  description:
124
- 'Filter for checks updated on or after this date and time, in ISO 8601 format (YYYY-MM-DDTHH:mm:ss). If you only provide a date (YYYY-MM-DD), the time is assumed to be 00:00:00 of that day.',
124
+ "Filter for checks updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.",
125
125
  },
126
126
  updatedBefore: {
127
127
  type: 'string',
128
128
  description:
129
- 'Filter for checks updated on or before this date and time, in ISO 8601 format (YYYY-MM-DDTHH:mm:ss). If you only provide a date (YYYY-MM-DD), the time is assumed to be 23:59:59 of that day.',
129
+ "Filter for checks updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.",
130
130
  },
131
131
  },
132
132
  required: ['conductorEndUserId'],
@@ -17,7 +17,7 @@ export const metadata: Metadata = {
17
17
  export const tool: Tool = {
18
18
  name: 'create_qbd_classes',
19
19
  description:
20
- "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nCreates a new class.\n\n# Response Schema\n```json\n{\n $ref: '#/$defs/class',\n $defs: {\n class: {\n type: 'object',\n title: 'The Class object',\n properties: {\n id: {\n type: 'string',\n description: 'The unique identifier assigned by QuickBooks to this class. This ID is unique across all classes but not across different QuickBooks object types.'\n },\n createdAt: {\n type: 'string',\n description: 'The date and time when this class was created, in ISO 8601 format (YYYY-MM-DDThh:mm:ss±hh:mm). The time zone is the same as the user\\'s time zone in QuickBooks.'\n },\n fullName: {\n type: 'string',\n description: 'The case-insensitive fully-qualified unique name of this class, formed by combining the names of its hierarchical parent objects with its own `name`, separated by colons. For example, if a class is under \"Department\" and has the `name` \"Marketing\", its `fullName` would be \"Department:Marketing\".\\n\\n**NOTE**: Unlike `name`, `fullName` is guaranteed to be unique across all class objects. However, `fullName` can still be arbitrarily changed by the QuickBooks user when they modify the underlying `name` field.'\n },\n isActive: {\n type: 'boolean',\n description: 'Indicates whether this class is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.'\n },\n name: {\n type: 'string',\n description: 'The case-insensitive name of this class. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like `fullName` does. For example, two classes could both have the `name` \"Marketing\", but they could have unique `fullName` values, such as \"Department:Marketing\" and \"Internal:Marketing\".'\n },\n objectType: {\n type: 'string',\n description: 'The type of object. This value is always `\"qbd_class\"`.',\n enum: [ 'qbd_class'\n ]\n },\n parent: {\n type: 'object',\n description: 'The parent class one level above this one in the hierarchy. For example, if this class has a `fullName` of \"Department:Marketing\", its parent has a `fullName` of \"Department\". If this class is at the top level, this field will be `null`.',\n properties: {\n id: {\n type: 'string',\n description: 'The unique identifier assigned by QuickBooks to this object. This ID is unique across all objects of the same type, but not across different QuickBooks object types.'\n },\n fullName: {\n type: 'string',\n description: 'The fully-qualified unique name for this object, formed by combining the names of its parent objects with its own `name`, separated by colons. Not case-sensitive.'\n }\n },\n required: [ 'id',\n 'fullName'\n ]\n },\n revisionNumber: {\n type: 'string',\n description: 'The current QuickBooks-assigned revision number of this class object, which changes each time the object is modified. When updating this object, you must provide the most recent `revisionNumber` to ensure you\\'re working with the latest data; otherwise, the update will return an error.'\n },\n sublevel: {\n type: 'number',\n description: 'The depth level of this class in the hierarchy. A top-level class has a `sublevel` of 0; each subsequent sublevel increases this number by 1. For example, a class with a `fullName` of \"Department:Marketing\" would have a `sublevel` of 1.'\n },\n updatedAt: {\n type: 'string',\n description: 'The date and time when this class was last updated, in ISO 8601 format (YYYY-MM-DDThh:mm:ss±hh:mm). The time zone is the same as the user\\'s time zone in QuickBooks.'\n }\n },\n required: [ 'id',\n 'createdAt',\n 'fullName',\n 'isActive',\n 'name',\n 'objectType',\n 'parent',\n 'revisionNumber',\n 'sublevel',\n 'updatedAt'\n ]\n }\n }\n}\n```",
20
+ "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nCreates a new class.\n\n# Response Schema\n```json\n{\n $ref: '#/$defs/class',\n $defs: {\n class: {\n type: 'object',\n title: 'The Class object',\n properties: {\n id: {\n type: 'string',\n description: 'The unique identifier assigned by QuickBooks to this class. This ID is unique across all classes but not across different QuickBooks object types.'\n },\n createdAt: {\n type: 'string',\n description: 'The date and time when this class was created, in ISO 8601 format (YYYY-MM-DDThh:mm:ss±hh:mm), which QuickBooks Desktop interprets in the local timezone of the end-user\\'s computer.'\n },\n fullName: {\n type: 'string',\n description: 'The case-insensitive fully-qualified unique name of this class, formed by combining the names of its hierarchical parent objects with its own `name`, separated by colons. For example, if a class is under \"Department\" and has the `name` \"Marketing\", its `fullName` would be \"Department:Marketing\".\\n\\n**NOTE**: Unlike `name`, `fullName` is guaranteed to be unique across all class objects. However, `fullName` can still be arbitrarily changed by the QuickBooks user when they modify the underlying `name` field.'\n },\n isActive: {\n type: 'boolean',\n description: 'Indicates whether this class is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.'\n },\n name: {\n type: 'string',\n description: 'The case-insensitive name of this class. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like `fullName` does. For example, two classes could both have the `name` \"Marketing\", but they could have unique `fullName` values, such as \"Department:Marketing\" and \"Internal:Marketing\".'\n },\n objectType: {\n type: 'string',\n description: 'The type of object. This value is always `\"qbd_class\"`.',\n enum: [ 'qbd_class'\n ]\n },\n parent: {\n type: 'object',\n description: 'The parent class one level above this one in the hierarchy. For example, if this class has a `fullName` of \"Department:Marketing\", its parent has a `fullName` of \"Department\". If this class is at the top level, this field will be `null`.',\n properties: {\n id: {\n type: 'string',\n description: 'The unique identifier assigned by QuickBooks to this object. This ID is unique across all objects of the same type, but not across different QuickBooks object types.'\n },\n fullName: {\n type: 'string',\n description: 'The fully-qualified unique name for this object, formed by combining the names of its parent objects with its own `name`, separated by colons. Not case-sensitive.'\n }\n },\n required: [ 'id',\n 'fullName'\n ]\n },\n revisionNumber: {\n type: 'string',\n description: 'The current QuickBooks-assigned revision number of this class object, which changes each time the object is modified. When updating this object, you must provide the most recent `revisionNumber` to ensure you\\'re working with the latest data; otherwise, the update will return an error.'\n },\n sublevel: {\n type: 'number',\n description: 'The depth level of this class in the hierarchy. A top-level class has a `sublevel` of 0; each subsequent sublevel increases this number by 1. For example, a class with a `fullName` of \"Department:Marketing\" would have a `sublevel` of 1.'\n },\n updatedAt: {\n type: 'string',\n description: 'The date and time when this class was last updated, in ISO 8601 format (YYYY-MM-DDThh:mm:ss±hh:mm), which QuickBooks Desktop interprets in the local timezone of the end-user\\'s computer.'\n }\n },\n required: [ 'id',\n 'createdAt',\n 'fullName',\n 'isActive',\n 'name',\n 'objectType',\n 'parent',\n 'revisionNumber',\n 'sublevel',\n 'updatedAt'\n ]\n }\n }\n}\n```",
21
21
  inputSchema: {
22
22
  type: 'object',
23
23
  properties: {
@@ -17,7 +17,7 @@ export const metadata: Metadata = {
17
17
  export const tool: Tool = {
18
18
  name: 'list_qbd_classes',
19
19
  description:
20
- "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nReturns a list of classes. NOTE: QuickBooks Desktop does not support pagination for classes; hence, there is no `cursor` parameter. Users typically have few classes.\n\n# Response Schema\n```json\n{\n type: 'object',\n properties: {\n data: {\n type: 'array',\n description: 'The array of classes.',\n items: {\n $ref: '#/$defs/class'\n }\n },\n objectType: {\n type: 'string',\n description: 'The type of object. This value is always `\"list\"`.',\n enum: [ 'list'\n ]\n },\n url: {\n type: 'string',\n description: 'The endpoint URL where this list can be accessed.'\n }\n },\n required: [ 'data',\n 'objectType',\n 'url'\n ],\n $defs: {\n class: {\n type: 'object',\n title: 'The Class object',\n properties: {\n id: {\n type: 'string',\n description: 'The unique identifier assigned by QuickBooks to this class. This ID is unique across all classes but not across different QuickBooks object types.'\n },\n createdAt: {\n type: 'string',\n description: 'The date and time when this class was created, in ISO 8601 format (YYYY-MM-DDThh:mm:ss±hh:mm). The time zone is the same as the user\\'s time zone in QuickBooks.'\n },\n fullName: {\n type: 'string',\n description: 'The case-insensitive fully-qualified unique name of this class, formed by combining the names of its hierarchical parent objects with its own `name`, separated by colons. For example, if a class is under \"Department\" and has the `name` \"Marketing\", its `fullName` would be \"Department:Marketing\".\\n\\n**NOTE**: Unlike `name`, `fullName` is guaranteed to be unique across all class objects. However, `fullName` can still be arbitrarily changed by the QuickBooks user when they modify the underlying `name` field.'\n },\n isActive: {\n type: 'boolean',\n description: 'Indicates whether this class is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.'\n },\n name: {\n type: 'string',\n description: 'The case-insensitive name of this class. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like `fullName` does. For example, two classes could both have the `name` \"Marketing\", but they could have unique `fullName` values, such as \"Department:Marketing\" and \"Internal:Marketing\".'\n },\n objectType: {\n type: 'string',\n description: 'The type of object. This value is always `\"qbd_class\"`.',\n enum: [ 'qbd_class'\n ]\n },\n parent: {\n type: 'object',\n description: 'The parent class one level above this one in the hierarchy. For example, if this class has a `fullName` of \"Department:Marketing\", its parent has a `fullName` of \"Department\". If this class is at the top level, this field will be `null`.',\n properties: {\n id: {\n type: 'string',\n description: 'The unique identifier assigned by QuickBooks to this object. This ID is unique across all objects of the same type, but not across different QuickBooks object types.'\n },\n fullName: {\n type: 'string',\n description: 'The fully-qualified unique name for this object, formed by combining the names of its parent objects with its own `name`, separated by colons. Not case-sensitive.'\n }\n },\n required: [ 'id',\n 'fullName'\n ]\n },\n revisionNumber: {\n type: 'string',\n description: 'The current QuickBooks-assigned revision number of this class object, which changes each time the object is modified. When updating this object, you must provide the most recent `revisionNumber` to ensure you\\'re working with the latest data; otherwise, the update will return an error.'\n },\n sublevel: {\n type: 'number',\n description: 'The depth level of this class in the hierarchy. A top-level class has a `sublevel` of 0; each subsequent sublevel increases this number by 1. For example, a class with a `fullName` of \"Department:Marketing\" would have a `sublevel` of 1.'\n },\n updatedAt: {\n type: 'string',\n description: 'The date and time when this class was last updated, in ISO 8601 format (YYYY-MM-DDThh:mm:ss±hh:mm). The time zone is the same as the user\\'s time zone in QuickBooks.'\n }\n },\n required: [ 'id',\n 'createdAt',\n 'fullName',\n 'isActive',\n 'name',\n 'objectType',\n 'parent',\n 'revisionNumber',\n 'sublevel',\n 'updatedAt'\n ]\n }\n }\n}\n```",
20
+ "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nReturns a list of classes. NOTE: QuickBooks Desktop does not support pagination for classes; hence, there is no `cursor` parameter. Users typically have few classes.\n\n# Response Schema\n```json\n{\n type: 'object',\n properties: {\n data: {\n type: 'array',\n description: 'The array of classes.',\n items: {\n $ref: '#/$defs/class'\n }\n },\n objectType: {\n type: 'string',\n description: 'The type of object. This value is always `\"list\"`.',\n enum: [ 'list'\n ]\n },\n url: {\n type: 'string',\n description: 'The endpoint URL where this list can be accessed.'\n }\n },\n required: [ 'data',\n 'objectType',\n 'url'\n ],\n $defs: {\n class: {\n type: 'object',\n title: 'The Class object',\n properties: {\n id: {\n type: 'string',\n description: 'The unique identifier assigned by QuickBooks to this class. This ID is unique across all classes but not across different QuickBooks object types.'\n },\n createdAt: {\n type: 'string',\n description: 'The date and time when this class was created, in ISO 8601 format (YYYY-MM-DDThh:mm:ss±hh:mm), which QuickBooks Desktop interprets in the local timezone of the end-user\\'s computer.'\n },\n fullName: {\n type: 'string',\n description: 'The case-insensitive fully-qualified unique name of this class, formed by combining the names of its hierarchical parent objects with its own `name`, separated by colons. For example, if a class is under \"Department\" and has the `name` \"Marketing\", its `fullName` would be \"Department:Marketing\".\\n\\n**NOTE**: Unlike `name`, `fullName` is guaranteed to be unique across all class objects. However, `fullName` can still be arbitrarily changed by the QuickBooks user when they modify the underlying `name` field.'\n },\n isActive: {\n type: 'boolean',\n description: 'Indicates whether this class is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.'\n },\n name: {\n type: 'string',\n description: 'The case-insensitive name of this class. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like `fullName` does. For example, two classes could both have the `name` \"Marketing\", but they could have unique `fullName` values, such as \"Department:Marketing\" and \"Internal:Marketing\".'\n },\n objectType: {\n type: 'string',\n description: 'The type of object. This value is always `\"qbd_class\"`.',\n enum: [ 'qbd_class'\n ]\n },\n parent: {\n type: 'object',\n description: 'The parent class one level above this one in the hierarchy. For example, if this class has a `fullName` of \"Department:Marketing\", its parent has a `fullName` of \"Department\". If this class is at the top level, this field will be `null`.',\n properties: {\n id: {\n type: 'string',\n description: 'The unique identifier assigned by QuickBooks to this object. This ID is unique across all objects of the same type, but not across different QuickBooks object types.'\n },\n fullName: {\n type: 'string',\n description: 'The fully-qualified unique name for this object, formed by combining the names of its parent objects with its own `name`, separated by colons. Not case-sensitive.'\n }\n },\n required: [ 'id',\n 'fullName'\n ]\n },\n revisionNumber: {\n type: 'string',\n description: 'The current QuickBooks-assigned revision number of this class object, which changes each time the object is modified. When updating this object, you must provide the most recent `revisionNumber` to ensure you\\'re working with the latest data; otherwise, the update will return an error.'\n },\n sublevel: {\n type: 'number',\n description: 'The depth level of this class in the hierarchy. A top-level class has a `sublevel` of 0; each subsequent sublevel increases this number by 1. For example, a class with a `fullName` of \"Department:Marketing\" would have a `sublevel` of 1.'\n },\n updatedAt: {\n type: 'string',\n description: 'The date and time when this class was last updated, in ISO 8601 format (YYYY-MM-DDThh:mm:ss±hh:mm), which QuickBooks Desktop interprets in the local timezone of the end-user\\'s computer.'\n }\n },\n required: [ 'id',\n 'createdAt',\n 'fullName',\n 'isActive',\n 'name',\n 'objectType',\n 'parent',\n 'revisionNumber',\n 'sublevel',\n 'updatedAt'\n ]\n }\n }\n}\n```",
21
21
  inputSchema: {
22
22
  type: 'object',
23
23
  properties: {
@@ -78,12 +78,12 @@ export const tool: Tool = {
78
78
  updatedAfter: {
79
79
  type: 'string',
80
80
  description:
81
- 'Filter for classes updated on or after this date and time, in ISO 8601 format (YYYY-MM-DDTHH:mm:ss). If you only provide a date (YYYY-MM-DD), the time is assumed to be 00:00:00 of that day.',
81
+ "Filter for classes updated on or after this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **start of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T00:00:00`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.",
82
82
  },
83
83
  updatedBefore: {
84
84
  type: 'string',
85
85
  description:
86
- 'Filter for classes updated on or before this date and time, in ISO 8601 format (YYYY-MM-DDTHH:mm:ss). If you only provide a date (YYYY-MM-DD), the time is assumed to be 23:59:59 of that day.',
86
+ "Filter for classes updated on or before this date/time. Accepts the following ISO 8601 formats:\n- **date-only** (YYYY-MM-DD) - QuickBooks Desktop interprets the date as the **end of the specified day** in the local timezone of the end-user's computer (e.g., `2025-01-01` → `2025-01-01T23:59:59`).\n- **datetime without timezone** (YYYY-MM-DDTHH:mm:ss) - QuickBooks Desktop interprets the timestamp in the local timezone of the end-user's computer.\n- **datetime with timezone** (YYYY-MM-DDTHH:mm:ss±HH:mm) - QuickBooks Desktop interprets the timestamp using the specified timezone.",
87
87
  },
88
88
  jq_filter: {
89
89
  type: 'string',
@@ -17,7 +17,7 @@ export const metadata: Metadata = {
17
17
  export const tool: Tool = {
18
18
  name: 'retrieve_qbd_classes',
19
19
  description:
20
- "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nRetrieves a class by ID.\n\n# Response Schema\n```json\n{\n $ref: '#/$defs/class',\n $defs: {\n class: {\n type: 'object',\n title: 'The Class object',\n properties: {\n id: {\n type: 'string',\n description: 'The unique identifier assigned by QuickBooks to this class. This ID is unique across all classes but not across different QuickBooks object types.'\n },\n createdAt: {\n type: 'string',\n description: 'The date and time when this class was created, in ISO 8601 format (YYYY-MM-DDThh:mm:ss±hh:mm). The time zone is the same as the user\\'s time zone in QuickBooks.'\n },\n fullName: {\n type: 'string',\n description: 'The case-insensitive fully-qualified unique name of this class, formed by combining the names of its hierarchical parent objects with its own `name`, separated by colons. For example, if a class is under \"Department\" and has the `name` \"Marketing\", its `fullName` would be \"Department:Marketing\".\\n\\n**NOTE**: Unlike `name`, `fullName` is guaranteed to be unique across all class objects. However, `fullName` can still be arbitrarily changed by the QuickBooks user when they modify the underlying `name` field.'\n },\n isActive: {\n type: 'boolean',\n description: 'Indicates whether this class is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.'\n },\n name: {\n type: 'string',\n description: 'The case-insensitive name of this class. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like `fullName` does. For example, two classes could both have the `name` \"Marketing\", but they could have unique `fullName` values, such as \"Department:Marketing\" and \"Internal:Marketing\".'\n },\n objectType: {\n type: 'string',\n description: 'The type of object. This value is always `\"qbd_class\"`.',\n enum: [ 'qbd_class'\n ]\n },\n parent: {\n type: 'object',\n description: 'The parent class one level above this one in the hierarchy. For example, if this class has a `fullName` of \"Department:Marketing\", its parent has a `fullName` of \"Department\". If this class is at the top level, this field will be `null`.',\n properties: {\n id: {\n type: 'string',\n description: 'The unique identifier assigned by QuickBooks to this object. This ID is unique across all objects of the same type, but not across different QuickBooks object types.'\n },\n fullName: {\n type: 'string',\n description: 'The fully-qualified unique name for this object, formed by combining the names of its parent objects with its own `name`, separated by colons. Not case-sensitive.'\n }\n },\n required: [ 'id',\n 'fullName'\n ]\n },\n revisionNumber: {\n type: 'string',\n description: 'The current QuickBooks-assigned revision number of this class object, which changes each time the object is modified. When updating this object, you must provide the most recent `revisionNumber` to ensure you\\'re working with the latest data; otherwise, the update will return an error.'\n },\n sublevel: {\n type: 'number',\n description: 'The depth level of this class in the hierarchy. A top-level class has a `sublevel` of 0; each subsequent sublevel increases this number by 1. For example, a class with a `fullName` of \"Department:Marketing\" would have a `sublevel` of 1.'\n },\n updatedAt: {\n type: 'string',\n description: 'The date and time when this class was last updated, in ISO 8601 format (YYYY-MM-DDThh:mm:ss±hh:mm). The time zone is the same as the user\\'s time zone in QuickBooks.'\n }\n },\n required: [ 'id',\n 'createdAt',\n 'fullName',\n 'isActive',\n 'name',\n 'objectType',\n 'parent',\n 'revisionNumber',\n 'sublevel',\n 'updatedAt'\n ]\n }\n }\n}\n```",
20
+ "When using this tool, always use the `jq_filter` parameter to reduce the response size and improve performance.\n\nOnly omit if you're sure you don't need the data.\n\nRetrieves a class by ID.\n\n# Response Schema\n```json\n{\n $ref: '#/$defs/class',\n $defs: {\n class: {\n type: 'object',\n title: 'The Class object',\n properties: {\n id: {\n type: 'string',\n description: 'The unique identifier assigned by QuickBooks to this class. This ID is unique across all classes but not across different QuickBooks object types.'\n },\n createdAt: {\n type: 'string',\n description: 'The date and time when this class was created, in ISO 8601 format (YYYY-MM-DDThh:mm:ss±hh:mm), which QuickBooks Desktop interprets in the local timezone of the end-user\\'s computer.'\n },\n fullName: {\n type: 'string',\n description: 'The case-insensitive fully-qualified unique name of this class, formed by combining the names of its hierarchical parent objects with its own `name`, separated by colons. For example, if a class is under \"Department\" and has the `name` \"Marketing\", its `fullName` would be \"Department:Marketing\".\\n\\n**NOTE**: Unlike `name`, `fullName` is guaranteed to be unique across all class objects. However, `fullName` can still be arbitrarily changed by the QuickBooks user when they modify the underlying `name` field.'\n },\n isActive: {\n type: 'boolean',\n description: 'Indicates whether this class is active. Inactive objects are typically hidden from views and reports in QuickBooks. Defaults to `true`.'\n },\n name: {\n type: 'string',\n description: 'The case-insensitive name of this class. Not guaranteed to be unique because it does not include the names of its hierarchical parent objects like `fullName` does. For example, two classes could both have the `name` \"Marketing\", but they could have unique `fullName` values, such as \"Department:Marketing\" and \"Internal:Marketing\".'\n },\n objectType: {\n type: 'string',\n description: 'The type of object. This value is always `\"qbd_class\"`.',\n enum: [ 'qbd_class'\n ]\n },\n parent: {\n type: 'object',\n description: 'The parent class one level above this one in the hierarchy. For example, if this class has a `fullName` of \"Department:Marketing\", its parent has a `fullName` of \"Department\". If this class is at the top level, this field will be `null`.',\n properties: {\n id: {\n type: 'string',\n description: 'The unique identifier assigned by QuickBooks to this object. This ID is unique across all objects of the same type, but not across different QuickBooks object types.'\n },\n fullName: {\n type: 'string',\n description: 'The fully-qualified unique name for this object, formed by combining the names of its parent objects with its own `name`, separated by colons. Not case-sensitive.'\n }\n },\n required: [ 'id',\n 'fullName'\n ]\n },\n revisionNumber: {\n type: 'string',\n description: 'The current QuickBooks-assigned revision number of this class object, which changes each time the object is modified. When updating this object, you must provide the most recent `revisionNumber` to ensure you\\'re working with the latest data; otherwise, the update will return an error.'\n },\n sublevel: {\n type: 'number',\n description: 'The depth level of this class in the hierarchy. A top-level class has a `sublevel` of 0; each subsequent sublevel increases this number by 1. For example, a class with a `fullName` of \"Department:Marketing\" would have a `sublevel` of 1.'\n },\n updatedAt: {\n type: 'string',\n description: 'The date and time when this class was last updated, in ISO 8601 format (YYYY-MM-DDThh:mm:ss±hh:mm), which QuickBooks Desktop interprets in the local timezone of the end-user\\'s computer.'\n }\n },\n required: [ 'id',\n 'createdAt',\n 'fullName',\n 'isActive',\n 'name',\n 'objectType',\n 'parent',\n 'revisionNumber',\n 'sublevel',\n 'updatedAt'\n ]\n }\n }\n}\n```",
21
21
  inputSchema: {
22
22
  type: 'object',
23
23
  properties: {