@goodsamsoftware/freshbooks-mcp 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (647) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +357 -0
  3. package/dist/auth/config.d.ts +57 -0
  4. package/dist/auth/config.d.ts.map +1 -0
  5. package/dist/auth/config.js +118 -0
  6. package/dist/auth/config.js.map +1 -0
  7. package/dist/auth/index.d.ts +47 -0
  8. package/dist/auth/index.d.ts.map +1 -0
  9. package/dist/auth/index.js +46 -0
  10. package/dist/auth/index.js.map +1 -0
  11. package/dist/auth/oauth.d.ts +93 -0
  12. package/dist/auth/oauth.d.ts.map +1 -0
  13. package/dist/auth/oauth.js +279 -0
  14. package/dist/auth/oauth.js.map +1 -0
  15. package/dist/auth/token-store.d.ts +80 -0
  16. package/dist/auth/token-store.d.ts.map +1 -0
  17. package/dist/auth/token-store.js +204 -0
  18. package/dist/auth/token-store.js.map +1 -0
  19. package/dist/auth/types.d.ts +76 -0
  20. package/dist/auth/types.d.ts.map +1 -0
  21. package/dist/auth/types.js +20 -0
  22. package/dist/auth/types.js.map +1 -0
  23. package/dist/client/freshbooks-client.d.ts +99 -0
  24. package/dist/client/freshbooks-client.d.ts.map +1 -0
  25. package/dist/client/freshbooks-client.js +283 -0
  26. package/dist/client/freshbooks-client.js.map +1 -0
  27. package/dist/client/index.d.ts +5 -0
  28. package/dist/client/index.d.ts.map +1 -0
  29. package/dist/client/index.js +5 -0
  30. package/dist/client/index.js.map +1 -0
  31. package/dist/config/index.d.ts +17 -0
  32. package/dist/config/index.d.ts.map +1 -0
  33. package/dist/config/index.js +81 -0
  34. package/dist/config/index.js.map +1 -0
  35. package/dist/errors/documentation.d.ts +57 -0
  36. package/dist/errors/documentation.d.ts.map +1 -0
  37. package/dist/errors/documentation.js +390 -0
  38. package/dist/errors/documentation.js.map +1 -0
  39. package/dist/errors/error-codes.d.ts +45 -0
  40. package/dist/errors/error-codes.d.ts.map +1 -0
  41. package/dist/errors/error-codes.js +94 -0
  42. package/dist/errors/error-codes.js.map +1 -0
  43. package/dist/errors/error-handler.d.ts +127 -0
  44. package/dist/errors/error-handler.d.ts.map +1 -0
  45. package/dist/errors/error-handler.js +283 -0
  46. package/dist/errors/error-handler.js.map +1 -0
  47. package/dist/errors/error-mapper.d.ts +68 -0
  48. package/dist/errors/error-mapper.d.ts.map +1 -0
  49. package/dist/errors/error-mapper.js +449 -0
  50. package/dist/errors/error-mapper.js.map +1 -0
  51. package/dist/errors/index.d.ts +37 -0
  52. package/dist/errors/index.d.ts.map +1 -0
  53. package/dist/errors/index.js +41 -0
  54. package/dist/errors/index.js.map +1 -0
  55. package/dist/errors/response-formatter.d.ts +109 -0
  56. package/dist/errors/response-formatter.d.ts.map +1 -0
  57. package/dist/errors/response-formatter.js +232 -0
  58. package/dist/errors/response-formatter.js.map +1 -0
  59. package/dist/errors/types.d.ts +194 -0
  60. package/dist/errors/types.d.ts.map +1 -0
  61. package/dist/errors/types.js +134 -0
  62. package/dist/errors/types.js.map +1 -0
  63. package/dist/server.d.ts +10 -0
  64. package/dist/server.d.ts.map +1 -0
  65. package/dist/server.js +263 -0
  66. package/dist/server.js.map +1 -0
  67. package/dist/tools/base-tool.d.ts +146 -0
  68. package/dist/tools/base-tool.d.ts.map +1 -0
  69. package/dist/tools/base-tool.js +161 -0
  70. package/dist/tools/base-tool.js.map +1 -0
  71. package/dist/tools/bill/bill-archive.d.ts +40 -0
  72. package/dist/tools/bill/bill-archive.d.ts.map +1 -0
  73. package/dist/tools/bill/bill-archive.js +68 -0
  74. package/dist/tools/bill/bill-archive.js.map +1 -0
  75. package/dist/tools/bill/bill-create.d.ts +178 -0
  76. package/dist/tools/bill/bill-create.d.ts.map +1 -0
  77. package/dist/tools/bill/bill-create.js +70 -0
  78. package/dist/tools/bill/bill-create.js.map +1 -0
  79. package/dist/tools/bill/bill-delete.d.ts +40 -0
  80. package/dist/tools/bill/bill-delete.d.ts.map +1 -0
  81. package/dist/tools/bill/bill-delete.js +67 -0
  82. package/dist/tools/bill/bill-delete.js.map +1 -0
  83. package/dist/tools/bill/bill-list.d.ts +249 -0
  84. package/dist/tools/bill/bill-list.d.ts.map +1 -0
  85. package/dist/tools/bill/bill-list.js +114 -0
  86. package/dist/tools/bill/bill-list.js.map +1 -0
  87. package/dist/tools/bill/bill-single.d.ts +142 -0
  88. package/dist/tools/bill/bill-single.d.ts.map +1 -0
  89. package/dist/tools/bill/bill-single.js +62 -0
  90. package/dist/tools/bill/bill-single.js.map +1 -0
  91. package/dist/tools/bill/index.d.ts +11 -0
  92. package/dist/tools/bill/index.d.ts.map +1 -0
  93. package/dist/tools/bill/index.js +13 -0
  94. package/dist/tools/bill/index.js.map +1 -0
  95. package/dist/tools/bill/schemas.d.ts +609 -0
  96. package/dist/tools/bill/schemas.d.ts.map +1 -0
  97. package/dist/tools/bill/schemas.js +124 -0
  98. package/dist/tools/bill/schemas.js.map +1 -0
  99. package/dist/tools/bill-payment/billpayment-create.d.ts +103 -0
  100. package/dist/tools/bill-payment/billpayment-create.d.ts.map +1 -0
  101. package/dist/tools/bill-payment/billpayment-create.js +67 -0
  102. package/dist/tools/bill-payment/billpayment-create.js.map +1 -0
  103. package/dist/tools/bill-payment/billpayment-delete.d.ts +40 -0
  104. package/dist/tools/bill-payment/billpayment-delete.d.ts.map +1 -0
  105. package/dist/tools/bill-payment/billpayment-delete.js +67 -0
  106. package/dist/tools/bill-payment/billpayment-delete.js.map +1 -0
  107. package/dist/tools/bill-payment/billpayment-list.d.ts +148 -0
  108. package/dist/tools/bill-payment/billpayment-list.d.ts.map +1 -0
  109. package/dist/tools/bill-payment/billpayment-list.js +111 -0
  110. package/dist/tools/bill-payment/billpayment-list.js.map +1 -0
  111. package/dist/tools/bill-payment/billpayment-single.d.ts +76 -0
  112. package/dist/tools/bill-payment/billpayment-single.d.ts.map +1 -0
  113. package/dist/tools/bill-payment/billpayment-single.js +62 -0
  114. package/dist/tools/bill-payment/billpayment-single.js.map +1 -0
  115. package/dist/tools/bill-payment/billpayment-update.d.ts +103 -0
  116. package/dist/tools/bill-payment/billpayment-update.d.ts.map +1 -0
  117. package/dist/tools/bill-payment/billpayment-update.js +67 -0
  118. package/dist/tools/bill-payment/billpayment-update.js.map +1 -0
  119. package/dist/tools/bill-payment/index.d.ts +11 -0
  120. package/dist/tools/bill-payment/index.d.ts.map +1 -0
  121. package/dist/tools/bill-payment/index.js +13 -0
  122. package/dist/tools/bill-payment/index.js.map +1 -0
  123. package/dist/tools/bill-payment/schemas.d.ts +381 -0
  124. package/dist/tools/bill-payment/schemas.d.ts.map +1 -0
  125. package/dist/tools/bill-payment/schemas.js +113 -0
  126. package/dist/tools/bill-payment/schemas.js.map +1 -0
  127. package/dist/tools/bill-vendor/billvendor-create.d.ts +139 -0
  128. package/dist/tools/bill-vendor/billvendor-create.d.ts.map +1 -0
  129. package/dist/tools/bill-vendor/billvendor-create.js +72 -0
  130. package/dist/tools/bill-vendor/billvendor-create.js.map +1 -0
  131. package/dist/tools/bill-vendor/billvendor-delete.d.ts +40 -0
  132. package/dist/tools/bill-vendor/billvendor-delete.d.ts.map +1 -0
  133. package/dist/tools/bill-vendor/billvendor-delete.js +67 -0
  134. package/dist/tools/bill-vendor/billvendor-delete.js.map +1 -0
  135. package/dist/tools/bill-vendor/billvendor-list.d.ts +179 -0
  136. package/dist/tools/bill-vendor/billvendor-list.d.ts.map +1 -0
  137. package/dist/tools/bill-vendor/billvendor-list.js +109 -0
  138. package/dist/tools/bill-vendor/billvendor-list.js.map +1 -0
  139. package/dist/tools/bill-vendor/billvendor-single.d.ts +94 -0
  140. package/dist/tools/bill-vendor/billvendor-single.d.ts.map +1 -0
  141. package/dist/tools/bill-vendor/billvendor-single.js +62 -0
  142. package/dist/tools/bill-vendor/billvendor-single.js.map +1 -0
  143. package/dist/tools/bill-vendor/billvendor-update.d.ts +142 -0
  144. package/dist/tools/bill-vendor/billvendor-update.d.ts.map +1 -0
  145. package/dist/tools/bill-vendor/billvendor-update.js +72 -0
  146. package/dist/tools/bill-vendor/billvendor-update.js.map +1 -0
  147. package/dist/tools/bill-vendor/index.d.ts +11 -0
  148. package/dist/tools/bill-vendor/index.d.ts.map +1 -0
  149. package/dist/tools/bill-vendor/index.js +13 -0
  150. package/dist/tools/bill-vendor/index.js.map +1 -0
  151. package/dist/tools/bill-vendor/schemas.d.ts +483 -0
  152. package/dist/tools/bill-vendor/schemas.d.ts.map +1 -0
  153. package/dist/tools/bill-vendor/schemas.js +136 -0
  154. package/dist/tools/bill-vendor/schemas.js.map +1 -0
  155. package/dist/tools/callback/callback-create.d.ts +52 -0
  156. package/dist/tools/callback/callback-create.d.ts.map +1 -0
  157. package/dist/tools/callback/callback-create.js +73 -0
  158. package/dist/tools/callback/callback-create.js.map +1 -0
  159. package/dist/tools/callback/callback-delete.d.ts +37 -0
  160. package/dist/tools/callback/callback-delete.d.ts.map +1 -0
  161. package/dist/tools/callback/callback-delete.js +57 -0
  162. package/dist/tools/callback/callback-delete.js.map +1 -0
  163. package/dist/tools/callback/callback-list.d.ts +100 -0
  164. package/dist/tools/callback/callback-list.d.ts.map +1 -0
  165. package/dist/tools/callback/callback-list.js +84 -0
  166. package/dist/tools/callback/callback-list.js.map +1 -0
  167. package/dist/tools/callback/callback-resend-verification.d.ts +49 -0
  168. package/dist/tools/callback/callback-resend-verification.d.ts.map +1 -0
  169. package/dist/tools/callback/callback-resend-verification.js +63 -0
  170. package/dist/tools/callback/callback-resend-verification.js.map +1 -0
  171. package/dist/tools/callback/callback-single.d.ts +49 -0
  172. package/dist/tools/callback/callback-single.d.ts.map +1 -0
  173. package/dist/tools/callback/callback-single.js +53 -0
  174. package/dist/tools/callback/callback-single.js.map +1 -0
  175. package/dist/tools/callback/callback-update.d.ts +55 -0
  176. package/dist/tools/callback/callback-update.d.ts.map +1 -0
  177. package/dist/tools/callback/callback-update.js +62 -0
  178. package/dist/tools/callback/callback-update.js.map +1 -0
  179. package/dist/tools/callback/callback-verify.d.ts +43 -0
  180. package/dist/tools/callback/callback-verify.d.ts.map +1 -0
  181. package/dist/tools/callback/callback-verify.js +69 -0
  182. package/dist/tools/callback/callback-verify.js.map +1 -0
  183. package/dist/tools/callback/index.d.ts +13 -0
  184. package/dist/tools/callback/index.d.ts.map +1 -0
  185. package/dist/tools/callback/index.js +15 -0
  186. package/dist/tools/callback/index.js.map +1 -0
  187. package/dist/tools/callback/schemas.d.ts +284 -0
  188. package/dist/tools/callback/schemas.d.ts.map +1 -0
  189. package/dist/tools/callback/schemas.js +114 -0
  190. package/dist/tools/callback/schemas.js.map +1 -0
  191. package/dist/tools/client/client-create.d.ts +211 -0
  192. package/dist/tools/client/client-create.d.ts.map +1 -0
  193. package/dist/tools/client/client-create.js +147 -0
  194. package/dist/tools/client/client-create.js.map +1 -0
  195. package/dist/tools/client/client-delete.d.ts +40 -0
  196. package/dist/tools/client/client-delete.d.ts.map +1 -0
  197. package/dist/tools/client/client-delete.js +73 -0
  198. package/dist/tools/client/client-delete.js.map +1 -0
  199. package/dist/tools/client/client-list.d.ts +264 -0
  200. package/dist/tools/client/client-list.d.ts.map +1 -0
  201. package/dist/tools/client/client-list.js +131 -0
  202. package/dist/tools/client/client-list.js.map +1 -0
  203. package/dist/tools/client/client-single.d.ts +133 -0
  204. package/dist/tools/client/client-single.d.ts.map +1 -0
  205. package/dist/tools/client/client-single.js +67 -0
  206. package/dist/tools/client/client-single.js.map +1 -0
  207. package/dist/tools/client/client-update.d.ts +217 -0
  208. package/dist/tools/client/client-update.d.ts.map +1 -0
  209. package/dist/tools/client/client-update.js +146 -0
  210. package/dist/tools/client/client-update.js.map +1 -0
  211. package/dist/tools/client/index.d.ts +11 -0
  212. package/dist/tools/client/index.d.ts.map +1 -0
  213. package/dist/tools/client/index.js +13 -0
  214. package/dist/tools/client/index.js.map +1 -0
  215. package/dist/tools/client/schemas.d.ts +759 -0
  216. package/dist/tools/client/schemas.d.ts.map +1 -0
  217. package/dist/tools/client/schemas.js +241 -0
  218. package/dist/tools/client/schemas.js.map +1 -0
  219. package/dist/tools/credit-note/creditnote-create.d.ts +448 -0
  220. package/dist/tools/credit-note/creditnote-create.d.ts.map +1 -0
  221. package/dist/tools/credit-note/creditnote-create.js +88 -0
  222. package/dist/tools/credit-note/creditnote-create.js.map +1 -0
  223. package/dist/tools/credit-note/creditnote-delete.d.ts +37 -0
  224. package/dist/tools/credit-note/creditnote-delete.d.ts.map +1 -0
  225. package/dist/tools/credit-note/creditnote-delete.js +57 -0
  226. package/dist/tools/credit-note/creditnote-delete.js.map +1 -0
  227. package/dist/tools/credit-note/creditnote-list.d.ts +627 -0
  228. package/dist/tools/credit-note/creditnote-list.d.ts.map +1 -0
  229. package/dist/tools/credit-note/creditnote-list.js +106 -0
  230. package/dist/tools/credit-note/creditnote-list.js.map +1 -0
  231. package/dist/tools/credit-note/creditnote-single.d.ts +358 -0
  232. package/dist/tools/credit-note/creditnote-single.d.ts.map +1 -0
  233. package/dist/tools/credit-note/creditnote-single.js +60 -0
  234. package/dist/tools/credit-note/creditnote-single.js.map +1 -0
  235. package/dist/tools/credit-note/creditnote-update.d.ts +442 -0
  236. package/dist/tools/credit-note/creditnote-update.d.ts.map +1 -0
  237. package/dist/tools/credit-note/creditnote-update.js +82 -0
  238. package/dist/tools/credit-note/creditnote-update.js.map +1 -0
  239. package/dist/tools/credit-note/index.d.ts +11 -0
  240. package/dist/tools/credit-note/index.d.ts.map +1 -0
  241. package/dist/tools/credit-note/index.js +13 -0
  242. package/dist/tools/credit-note/index.js.map +1 -0
  243. package/dist/tools/credit-note/schemas.d.ts +1599 -0
  244. package/dist/tools/credit-note/schemas.d.ts.map +1 -0
  245. package/dist/tools/credit-note/schemas.js +196 -0
  246. package/dist/tools/credit-note/schemas.js.map +1 -0
  247. package/dist/tools/expense/expense-create.d.ts +196 -0
  248. package/dist/tools/expense/expense-create.d.ts.map +1 -0
  249. package/dist/tools/expense/expense-create.js +103 -0
  250. package/dist/tools/expense/expense-create.js.map +1 -0
  251. package/dist/tools/expense/expense-delete.d.ts +40 -0
  252. package/dist/tools/expense/expense-delete.d.ts.map +1 -0
  253. package/dist/tools/expense/expense-delete.js +73 -0
  254. package/dist/tools/expense/expense-delete.js.map +1 -0
  255. package/dist/tools/expense/expense-list.d.ts +264 -0
  256. package/dist/tools/expense/expense-list.d.ts.map +1 -0
  257. package/dist/tools/expense/expense-list.js +126 -0
  258. package/dist/tools/expense/expense-list.js.map +1 -0
  259. package/dist/tools/expense/expense-single.d.ts +145 -0
  260. package/dist/tools/expense/expense-single.d.ts.map +1 -0
  261. package/dist/tools/expense/expense-single.js +63 -0
  262. package/dist/tools/expense/expense-single.js.map +1 -0
  263. package/dist/tools/expense/expense-update.d.ts +199 -0
  264. package/dist/tools/expense/expense-update.d.ts.map +1 -0
  265. package/dist/tools/expense/expense-update.js +108 -0
  266. package/dist/tools/expense/expense-update.js.map +1 -0
  267. package/dist/tools/expense/index.d.ts +11 -0
  268. package/dist/tools/expense/index.d.ts.map +1 -0
  269. package/dist/tools/expense/index.js +13 -0
  270. package/dist/tools/expense/index.js.map +1 -0
  271. package/dist/tools/expense/schemas.d.ts +667 -0
  272. package/dist/tools/expense/schemas.d.ts.map +1 -0
  273. package/dist/tools/expense/schemas.js +142 -0
  274. package/dist/tools/expense/schemas.js.map +1 -0
  275. package/dist/tools/expense-category/expensecategory-list.d.ts +113 -0
  276. package/dist/tools/expense-category/expensecategory-list.d.ts.map +1 -0
  277. package/dist/tools/expense-category/expensecategory-list.js +113 -0
  278. package/dist/tools/expense-category/expensecategory-list.js.map +1 -0
  279. package/dist/tools/expense-category/expensecategory-single.d.ts +58 -0
  280. package/dist/tools/expense-category/expensecategory-single.d.ts.map +1 -0
  281. package/dist/tools/expense-category/expensecategory-single.js +66 -0
  282. package/dist/tools/expense-category/expensecategory-single.js.map +1 -0
  283. package/dist/tools/expense-category/index.d.ts +9 -0
  284. package/dist/tools/expense-category/index.d.ts.map +1 -0
  285. package/dist/tools/expense-category/index.js +11 -0
  286. package/dist/tools/expense-category/index.js.map +1 -0
  287. package/dist/tools/expense-category/schemas.d.ts +184 -0
  288. package/dist/tools/expense-category/schemas.d.ts.map +1 -0
  289. package/dist/tools/expense-category/schemas.js +58 -0
  290. package/dist/tools/expense-category/schemas.js.map +1 -0
  291. package/dist/tools/index.d.ts +53 -0
  292. package/dist/tools/index.d.ts.map +1 -0
  293. package/dist/tools/index.js +98 -0
  294. package/dist/tools/index.js.map +1 -0
  295. package/dist/tools/invoice/index.d.ts +12 -0
  296. package/dist/tools/invoice/index.d.ts.map +1 -0
  297. package/dist/tools/invoice/index.js +14 -0
  298. package/dist/tools/invoice/index.js.map +1 -0
  299. package/dist/tools/invoice/invoice-create.d.ts +367 -0
  300. package/dist/tools/invoice/invoice-create.d.ts.map +1 -0
  301. package/dist/tools/invoice/invoice-create.js +115 -0
  302. package/dist/tools/invoice/invoice-create.js.map +1 -0
  303. package/dist/tools/invoice/invoice-delete.d.ts +40 -0
  304. package/dist/tools/invoice/invoice-delete.d.ts.map +1 -0
  305. package/dist/tools/invoice/invoice-delete.js +75 -0
  306. package/dist/tools/invoice/invoice-delete.js.map +1 -0
  307. package/dist/tools/invoice/invoice-list.d.ts +439 -0
  308. package/dist/tools/invoice/invoice-list.d.ts.map +1 -0
  309. package/dist/tools/invoice/invoice-list.js +126 -0
  310. package/dist/tools/invoice/invoice-list.js.map +1 -0
  311. package/dist/tools/invoice/invoice-share-link.d.ts +40 -0
  312. package/dist/tools/invoice/invoice-share-link.d.ts.map +1 -0
  313. package/dist/tools/invoice/invoice-share-link.js +89 -0
  314. package/dist/tools/invoice/invoice-share-link.js.map +1 -0
  315. package/dist/tools/invoice/invoice-single.d.ts +265 -0
  316. package/dist/tools/invoice/invoice-single.d.ts.map +1 -0
  317. package/dist/tools/invoice/invoice-single.js +66 -0
  318. package/dist/tools/invoice/invoice-single.js.map +1 -0
  319. package/dist/tools/invoice/invoice-update.d.ts +373 -0
  320. package/dist/tools/invoice/invoice-update.d.ts.map +1 -0
  321. package/dist/tools/invoice/invoice-update.js +122 -0
  322. package/dist/tools/invoice/invoice-update.js.map +1 -0
  323. package/dist/tools/invoice/schemas.d.ts +1414 -0
  324. package/dist/tools/invoice/schemas.d.ts.map +1 -0
  325. package/dist/tools/invoice/schemas.js +269 -0
  326. package/dist/tools/invoice/schemas.js.map +1 -0
  327. package/dist/tools/item/index.d.ts +10 -0
  328. package/dist/tools/item/index.d.ts.map +1 -0
  329. package/dist/tools/item/index.js +12 -0
  330. package/dist/tools/item/index.js.map +1 -0
  331. package/dist/tools/item/item-create.d.ts +136 -0
  332. package/dist/tools/item/item-create.d.ts.map +1 -0
  333. package/dist/tools/item/item-create.js +71 -0
  334. package/dist/tools/item/item-create.js.map +1 -0
  335. package/dist/tools/item/item-list.d.ts +178 -0
  336. package/dist/tools/item/item-list.d.ts.map +1 -0
  337. package/dist/tools/item/item-list.js +112 -0
  338. package/dist/tools/item/item-list.js.map +1 -0
  339. package/dist/tools/item/item-single.d.ts +94 -0
  340. package/dist/tools/item/item-single.d.ts.map +1 -0
  341. package/dist/tools/item/item-single.js +62 -0
  342. package/dist/tools/item/item-single.js.map +1 -0
  343. package/dist/tools/item/item-update.d.ts +139 -0
  344. package/dist/tools/item/item-update.d.ts.map +1 -0
  345. package/dist/tools/item/item-update.js +74 -0
  346. package/dist/tools/item/item-update.js.map +1 -0
  347. package/dist/tools/item/schemas.d.ts +454 -0
  348. package/dist/tools/item/schemas.d.ts.map +1 -0
  349. package/dist/tools/item/schemas.js +116 -0
  350. package/dist/tools/item/schemas.js.map +1 -0
  351. package/dist/tools/journal-entry/index.d.ts +7 -0
  352. package/dist/tools/journal-entry/index.d.ts.map +1 -0
  353. package/dist/tools/journal-entry/index.js +9 -0
  354. package/dist/tools/journal-entry/index.js.map +1 -0
  355. package/dist/tools/journal-entry/journalentry-create.d.ts +114 -0
  356. package/dist/tools/journal-entry/journalentry-create.d.ts.map +1 -0
  357. package/dist/tools/journal-entry/journalentry-create.js +98 -0
  358. package/dist/tools/journal-entry/journalentry-create.js.map +1 -0
  359. package/dist/tools/journal-entry/schemas.d.ts +182 -0
  360. package/dist/tools/journal-entry/schemas.d.ts.map +1 -0
  361. package/dist/tools/journal-entry/schemas.js +43 -0
  362. package/dist/tools/journal-entry/schemas.js.map +1 -0
  363. package/dist/tools/journal-entry-account/index.d.ts +7 -0
  364. package/dist/tools/journal-entry-account/index.d.ts.map +1 -0
  365. package/dist/tools/journal-entry-account/index.js +9 -0
  366. package/dist/tools/journal-entry-account/index.js.map +1 -0
  367. package/dist/tools/journal-entry-account/journalentryaccount-list.d.ts +190 -0
  368. package/dist/tools/journal-entry-account/journalentryaccount-list.d.ts.map +1 -0
  369. package/dist/tools/journal-entry-account/journalentryaccount-list.js +102 -0
  370. package/dist/tools/journal-entry-account/journalentryaccount-list.js.map +1 -0
  371. package/dist/tools/journal-entry-account/schemas.d.ts +344 -0
  372. package/dist/tools/journal-entry-account/schemas.d.ts.map +1 -0
  373. package/dist/tools/journal-entry-account/schemas.js +65 -0
  374. package/dist/tools/journal-entry-account/schemas.js.map +1 -0
  375. package/dist/tools/metadata.d.ts +49 -0
  376. package/dist/tools/metadata.d.ts.map +1 -0
  377. package/dist/tools/metadata.js +317 -0
  378. package/dist/tools/metadata.js.map +1 -0
  379. package/dist/tools/other-income/index.d.ts +11 -0
  380. package/dist/tools/other-income/index.d.ts.map +1 -0
  381. package/dist/tools/other-income/index.js +13 -0
  382. package/dist/tools/other-income/index.js.map +1 -0
  383. package/dist/tools/other-income/otherincome-create.d.ts +152 -0
  384. package/dist/tools/other-income/otherincome-create.d.ts.map +1 -0
  385. package/dist/tools/other-income/otherincome-create.js +89 -0
  386. package/dist/tools/other-income/otherincome-create.js.map +1 -0
  387. package/dist/tools/other-income/otherincome-delete.d.ts +37 -0
  388. package/dist/tools/other-income/otherincome-delete.d.ts.map +1 -0
  389. package/dist/tools/other-income/otherincome-delete.js +57 -0
  390. package/dist/tools/other-income/otherincome-delete.js.map +1 -0
  391. package/dist/tools/other-income/otherincome-list.d.ts +186 -0
  392. package/dist/tools/other-income/otherincome-list.d.ts.map +1 -0
  393. package/dist/tools/other-income/otherincome-list.js +107 -0
  394. package/dist/tools/other-income/otherincome-list.js.map +1 -0
  395. package/dist/tools/other-income/otherincome-single.d.ts +99 -0
  396. package/dist/tools/other-income/otherincome-single.d.ts.map +1 -0
  397. package/dist/tools/other-income/otherincome-single.js +53 -0
  398. package/dist/tools/other-income/otherincome-single.js.map +1 -0
  399. package/dist/tools/other-income/otherincome-update.d.ts +155 -0
  400. package/dist/tools/other-income/otherincome-update.d.ts.map +1 -0
  401. package/dist/tools/other-income/otherincome-update.js +84 -0
  402. package/dist/tools/other-income/otherincome-update.js.map +1 -0
  403. package/dist/tools/other-income/schemas.d.ts +510 -0
  404. package/dist/tools/other-income/schemas.d.ts.map +1 -0
  405. package/dist/tools/other-income/schemas.js +141 -0
  406. package/dist/tools/other-income/schemas.js.map +1 -0
  407. package/dist/tools/payment/index.d.ts +11 -0
  408. package/dist/tools/payment/index.d.ts.map +1 -0
  409. package/dist/tools/payment/index.js +13 -0
  410. package/dist/tools/payment/index.js.map +1 -0
  411. package/dist/tools/payment/payment-create.d.ts +127 -0
  412. package/dist/tools/payment/payment-create.d.ts.map +1 -0
  413. package/dist/tools/payment/payment-create.js +84 -0
  414. package/dist/tools/payment/payment-create.js.map +1 -0
  415. package/dist/tools/payment/payment-delete.d.ts +40 -0
  416. package/dist/tools/payment/payment-delete.d.ts.map +1 -0
  417. package/dist/tools/payment/payment-delete.js +67 -0
  418. package/dist/tools/payment/payment-delete.js.map +1 -0
  419. package/dist/tools/payment/payment-list.d.ts +186 -0
  420. package/dist/tools/payment/payment-list.d.ts.map +1 -0
  421. package/dist/tools/payment/payment-list.js +113 -0
  422. package/dist/tools/payment/payment-list.js.map +1 -0
  423. package/dist/tools/payment/payment-single.d.ts +97 -0
  424. package/dist/tools/payment/payment-single.d.ts.map +1 -0
  425. package/dist/tools/payment/payment-single.js +62 -0
  426. package/dist/tools/payment/payment-single.js.map +1 -0
  427. package/dist/tools/payment/payment-update.d.ts +124 -0
  428. package/dist/tools/payment/payment-update.d.ts.map +1 -0
  429. package/dist/tools/payment/payment-update.js +79 -0
  430. package/dist/tools/payment/payment-update.js.map +1 -0
  431. package/dist/tools/payment/schemas.d.ts +445 -0
  432. package/dist/tools/payment/schemas.d.ts.map +1 -0
  433. package/dist/tools/payment/schemas.js +126 -0
  434. package/dist/tools/payment/schemas.js.map +1 -0
  435. package/dist/tools/payment-options/index.d.ts +9 -0
  436. package/dist/tools/payment-options/index.d.ts.map +1 -0
  437. package/dist/tools/payment-options/index.js +11 -0
  438. package/dist/tools/payment-options/index.js.map +1 -0
  439. package/dist/tools/payment-options/paymentoptions-create.d.ts +91 -0
  440. package/dist/tools/payment-options/paymentoptions-create.d.ts.map +1 -0
  441. package/dist/tools/payment-options/paymentoptions-create.js +71 -0
  442. package/dist/tools/payment-options/paymentoptions-create.js.map +1 -0
  443. package/dist/tools/payment-options/paymentoptions-default.d.ts +43 -0
  444. package/dist/tools/payment-options/paymentoptions-default.d.ts.map +1 -0
  445. package/dist/tools/payment-options/paymentoptions-default.js +64 -0
  446. package/dist/tools/payment-options/paymentoptions-default.js.map +1 -0
  447. package/dist/tools/payment-options/paymentoptions-single.d.ts +76 -0
  448. package/dist/tools/payment-options/paymentoptions-single.d.ts.map +1 -0
  449. package/dist/tools/payment-options/paymentoptions-single.js +58 -0
  450. package/dist/tools/payment-options/paymentoptions-single.js.map +1 -0
  451. package/dist/tools/payment-options/schemas.d.ts +197 -0
  452. package/dist/tools/payment-options/schemas.d.ts.map +1 -0
  453. package/dist/tools/payment-options/schemas.js +69 -0
  454. package/dist/tools/payment-options/schemas.js.map +1 -0
  455. package/dist/tools/project/index.d.ts +11 -0
  456. package/dist/tools/project/index.d.ts.map +1 -0
  457. package/dist/tools/project/index.js +13 -0
  458. package/dist/tools/project/index.js.map +1 -0
  459. package/dist/tools/project/project-create.d.ts +142 -0
  460. package/dist/tools/project/project-create.d.ts.map +1 -0
  461. package/dist/tools/project/project-create.js +100 -0
  462. package/dist/tools/project/project-create.js.map +1 -0
  463. package/dist/tools/project/project-delete.d.ts +44 -0
  464. package/dist/tools/project/project-delete.d.ts.map +1 -0
  465. package/dist/tools/project/project-delete.js +80 -0
  466. package/dist/tools/project/project-delete.js.map +1 -0
  467. package/dist/tools/project/project-list.d.ts +227 -0
  468. package/dist/tools/project/project-list.d.ts.map +1 -0
  469. package/dist/tools/project/project-list.js +118 -0
  470. package/dist/tools/project/project-list.js.map +1 -0
  471. package/dist/tools/project/project-single.d.ts +115 -0
  472. package/dist/tools/project/project-single.d.ts.map +1 -0
  473. package/dist/tools/project/project-single.js +63 -0
  474. package/dist/tools/project/project-single.js.map +1 -0
  475. package/dist/tools/project/project-update.d.ts +151 -0
  476. package/dist/tools/project/project-update.d.ts.map +1 -0
  477. package/dist/tools/project/project-update.js +106 -0
  478. package/dist/tools/project/project-update.js.map +1 -0
  479. package/dist/tools/project/schemas.d.ts +588 -0
  480. package/dist/tools/project/schemas.d.ts.map +1 -0
  481. package/dist/tools/project/schemas.js +196 -0
  482. package/dist/tools/project/schemas.js.map +1 -0
  483. package/dist/tools/report/index.d.ts +9 -0
  484. package/dist/tools/report/index.d.ts.map +1 -0
  485. package/dist/tools/report/index.js +11 -0
  486. package/dist/tools/report/index.js.map +1 -0
  487. package/dist/tools/report/report-payments-collected.d.ts +118 -0
  488. package/dist/tools/report/report-payments-collected.d.ts.map +1 -0
  489. package/dist/tools/report/report-payments-collected.js +89 -0
  490. package/dist/tools/report/report-payments-collected.js.map +1 -0
  491. package/dist/tools/report/report-profit-loss.d.ts +139 -0
  492. package/dist/tools/report/report-profit-loss.d.ts.map +1 -0
  493. package/dist/tools/report/report-profit-loss.js +98 -0
  494. package/dist/tools/report/report-profit-loss.js.map +1 -0
  495. package/dist/tools/report/report-tax-summary.d.ts +155 -0
  496. package/dist/tools/report/report-tax-summary.d.ts.map +1 -0
  497. package/dist/tools/report/report-tax-summary.js +100 -0
  498. package/dist/tools/report/report-tax-summary.js.map +1 -0
  499. package/dist/tools/report/schemas.d.ts +859 -0
  500. package/dist/tools/report/schemas.d.ts.map +1 -0
  501. package/dist/tools/report/schemas.js +126 -0
  502. package/dist/tools/report/schemas.js.map +1 -0
  503. package/dist/tools/service/index.d.ts +12 -0
  504. package/dist/tools/service/index.d.ts.map +1 -0
  505. package/dist/tools/service/index.js +14 -0
  506. package/dist/tools/service/index.js.map +1 -0
  507. package/dist/tools/service/schemas.d.ts +159 -0
  508. package/dist/tools/service/schemas.d.ts.map +1 -0
  509. package/dist/tools/service/schemas.js +62 -0
  510. package/dist/tools/service/schemas.js.map +1 -0
  511. package/dist/tools/service/service-create.d.ts +52 -0
  512. package/dist/tools/service/service-create.d.ts.map +1 -0
  513. package/dist/tools/service/service-create.js +82 -0
  514. package/dist/tools/service/service-create.js.map +1 -0
  515. package/dist/tools/service/service-list.d.ts +119 -0
  516. package/dist/tools/service/service-list.d.ts.map +1 -0
  517. package/dist/tools/service/service-list.js +99 -0
  518. package/dist/tools/service/service-list.js.map +1 -0
  519. package/dist/tools/service/service-rate-get.d.ts +63 -0
  520. package/dist/tools/service/service-rate-get.d.ts.map +1 -0
  521. package/dist/tools/service/service-rate-get.js +66 -0
  522. package/dist/tools/service/service-rate-get.js.map +1 -0
  523. package/dist/tools/service/service-rate-set.d.ts +76 -0
  524. package/dist/tools/service/service-rate-set.d.ts.map +1 -0
  525. package/dist/tools/service/service-rate-set.js +91 -0
  526. package/dist/tools/service/service-rate-set.js.map +1 -0
  527. package/dist/tools/service/service-single.d.ts +45 -0
  528. package/dist/tools/service/service-single.d.ts.map +1 -0
  529. package/dist/tools/service/service-single.js +63 -0
  530. package/dist/tools/service/service-single.js.map +1 -0
  531. package/dist/tools/task/index.d.ts +12 -0
  532. package/dist/tools/task/index.d.ts.map +1 -0
  533. package/dist/tools/task/index.js +14 -0
  534. package/dist/tools/task/index.js.map +1 -0
  535. package/dist/tools/task/schemas.d.ts +299 -0
  536. package/dist/tools/task/schemas.d.ts.map +1 -0
  537. package/dist/tools/task/schemas.js +89 -0
  538. package/dist/tools/task/schemas.js.map +1 -0
  539. package/dist/tools/task/task-create.d.ts +101 -0
  540. package/dist/tools/task/task-create.d.ts.map +1 -0
  541. package/dist/tools/task/task-create.js +77 -0
  542. package/dist/tools/task/task-create.js.map +1 -0
  543. package/dist/tools/task/task-delete.d.ts +39 -0
  544. package/dist/tools/task/task-delete.d.ts.map +1 -0
  545. package/dist/tools/task/task-delete.js +70 -0
  546. package/dist/tools/task/task-delete.js.map +1 -0
  547. package/dist/tools/task/task-list.d.ts +157 -0
  548. package/dist/tools/task/task-list.d.ts.map +1 -0
  549. package/dist/tools/task/task-list.js +78 -0
  550. package/dist/tools/task/task-list.js.map +1 -0
  551. package/dist/tools/task/task-single.d.ts +77 -0
  552. package/dist/tools/task/task-single.d.ts.map +1 -0
  553. package/dist/tools/task/task-single.js +56 -0
  554. package/dist/tools/task/task-single.js.map +1 -0
  555. package/dist/tools/task/task-update.d.ts +107 -0
  556. package/dist/tools/task/task-update.d.ts.map +1 -0
  557. package/dist/tools/task/task-update.js +87 -0
  558. package/dist/tools/task/task-update.js.map +1 -0
  559. package/dist/tools/time-entry/index.d.ts +11 -0
  560. package/dist/tools/time-entry/index.d.ts.map +1 -0
  561. package/dist/tools/time-entry/index.js +11 -0
  562. package/dist/tools/time-entry/index.js.map +1 -0
  563. package/dist/tools/time-entry/schemas.d.ts +598 -0
  564. package/dist/tools/time-entry/schemas.d.ts.map +1 -0
  565. package/dist/tools/time-entry/schemas.js +217 -0
  566. package/dist/tools/time-entry/schemas.js.map +1 -0
  567. package/dist/tools/time-entry/timeentry-create.d.ts +142 -0
  568. package/dist/tools/time-entry/timeentry-create.d.ts.map +1 -0
  569. package/dist/tools/time-entry/timeentry-create.js +137 -0
  570. package/dist/tools/time-entry/timeentry-create.js.map +1 -0
  571. package/dist/tools/time-entry/timeentry-delete.d.ts +43 -0
  572. package/dist/tools/time-entry/timeentry-delete.d.ts.map +1 -0
  573. package/dist/tools/time-entry/timeentry-delete.js +93 -0
  574. package/dist/tools/time-entry/timeentry-delete.js.map +1 -0
  575. package/dist/tools/time-entry/timeentry-list.d.ts +232 -0
  576. package/dist/tools/time-entry/timeentry-list.d.ts.map +1 -0
  577. package/dist/tools/time-entry/timeentry-list.js +154 -0
  578. package/dist/tools/time-entry/timeentry-list.js.map +1 -0
  579. package/dist/tools/time-entry/timeentry-single.d.ts +109 -0
  580. package/dist/tools/time-entry/timeentry-single.d.ts.map +1 -0
  581. package/dist/tools/time-entry/timeentry-single.js +75 -0
  582. package/dist/tools/time-entry/timeentry-single.js.map +1 -0
  583. package/dist/tools/time-entry/timeentry-update.d.ts +145 -0
  584. package/dist/tools/time-entry/timeentry-update.d.ts.map +1 -0
  585. package/dist/tools/time-entry/timeentry-update.js +174 -0
  586. package/dist/tools/time-entry/timeentry-update.js.map +1 -0
  587. package/dist/tools/timer/index.d.ts +16 -0
  588. package/dist/tools/timer/index.d.ts.map +1 -0
  589. package/dist/tools/timer/index.js +19 -0
  590. package/dist/tools/timer/index.js.map +1 -0
  591. package/dist/tools/timer/schemas.d.ts +520 -0
  592. package/dist/tools/timer/schemas.d.ts.map +1 -0
  593. package/dist/tools/timer/schemas.js +109 -0
  594. package/dist/tools/timer/schemas.js.map +1 -0
  595. package/dist/tools/timer/timer-current.d.ts +170 -0
  596. package/dist/tools/timer/timer-current.d.ts.map +1 -0
  597. package/dist/tools/timer/timer-current.js +134 -0
  598. package/dist/tools/timer/timer-current.js.map +1 -0
  599. package/dist/tools/timer/timer-discard.d.ts +54 -0
  600. package/dist/tools/timer/timer-discard.d.ts.map +1 -0
  601. package/dist/tools/timer/timer-discard.js +115 -0
  602. package/dist/tools/timer/timer-discard.js.map +1 -0
  603. package/dist/tools/timer/timer-start.d.ts +135 -0
  604. package/dist/tools/timer/timer-start.d.ts.map +1 -0
  605. package/dist/tools/timer/timer-start.js +129 -0
  606. package/dist/tools/timer/timer-start.js.map +1 -0
  607. package/dist/tools/timer/timer-stop.d.ts +123 -0
  608. package/dist/tools/timer/timer-stop.d.ts.map +1 -0
  609. package/dist/tools/timer/timer-stop.js +165 -0
  610. package/dist/tools/timer/timer-stop.js.map +1 -0
  611. package/dist/tools/types.d.ts +49 -0
  612. package/dist/tools/types.d.ts.map +1 -0
  613. package/dist/tools/types.js +61 -0
  614. package/dist/tools/types.js.map +1 -0
  615. package/dist/tools/user/index.d.ts +7 -0
  616. package/dist/tools/user/index.d.ts.map +1 -0
  617. package/dist/tools/user/index.js +9 -0
  618. package/dist/tools/user/index.js.map +1 -0
  619. package/dist/tools/user/schemas.d.ts +258 -0
  620. package/dist/tools/user/schemas.d.ts.map +1 -0
  621. package/dist/tools/user/schemas.js +51 -0
  622. package/dist/tools/user/schemas.js.map +1 -0
  623. package/dist/tools/user/user-me.d.ts +129 -0
  624. package/dist/tools/user/user-me.d.ts.map +1 -0
  625. package/dist/tools/user/user-me.js +63 -0
  626. package/dist/tools/user/user-me.js.map +1 -0
  627. package/dist/types/freshbooks.d.ts +276 -0
  628. package/dist/types/freshbooks.d.ts.map +1 -0
  629. package/dist/types/freshbooks.js +6 -0
  630. package/dist/types/freshbooks.js.map +1 -0
  631. package/dist/types/index.d.ts +92 -0
  632. package/dist/types/index.d.ts.map +1 -0
  633. package/dist/types/index.js +6 -0
  634. package/dist/types/index.js.map +1 -0
  635. package/dist/utils/index.d.ts +6 -0
  636. package/dist/utils/index.d.ts.map +1 -0
  637. package/dist/utils/index.js +6 -0
  638. package/dist/utils/index.js.map +1 -0
  639. package/dist/utils/logger.d.ts +54 -0
  640. package/dist/utils/logger.d.ts.map +1 -0
  641. package/dist/utils/logger.js +133 -0
  642. package/dist/utils/logger.js.map +1 -0
  643. package/dist/utils/pagination.d.ts +39 -0
  644. package/dist/utils/pagination.d.ts.map +1 -0
  645. package/dist/utils/pagination.js +62 -0
  646. package/dist/utils/pagination.js.map +1 -0
  647. package/package.json +88 -0
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Timer Start Tool
3
+ *
4
+ * Starts a new timer using the /comments/business/.../time_entries endpoint.
5
+ * This endpoint is not supported by the SDK, so we use raw HTTP.
6
+ *
7
+ * Note: The SDK uses /timetracking/business/... but timer operations require /comments/business/...
8
+ */
9
+ import { TimerStartInputSchema, TimerStartOutputSchema } from "./schemas.js";
10
+ import { ErrorHandler } from "../../errors/error-handler.js";
11
+ /**
12
+ * Tool definition for timer_start
13
+ */
14
+ export const timerStartTool = {
15
+ name: "timer_start",
16
+ description: `Start a new timer for time tracking in FreshBooks.
17
+
18
+ WHEN TO USE:
19
+ - User says "start timer", "begin tracking time", "clock in"
20
+ - User wants to track time on a task or project
21
+ - Starting work on billable hours
22
+
23
+ HOW IT WORKS:
24
+ Creates a new time entry with:
25
+ - active=true (timer is running)
26
+ - duration=0 (will auto-calculate when stopped)
27
+ - startedAt=now (start time)
28
+ - isLogged=false (not yet logged as completed time)
29
+
30
+ IMPORTANT NOTES:
31
+ - FreshBooks typically allows only ONE active timer per user
32
+ - If a timer is already running, you may need to stop it first
33
+ - The timer will continue running until explicitly stopped
34
+ - Duration is auto-calculated from startedAt when stopped
35
+
36
+ REQUIRED:
37
+ - businessId: FreshBooks business ID (get from user_me -> businessMemberships[].business.id)
38
+
39
+ OPTIONAL BUT HELPFUL:
40
+ - projectId: Associate timer with a specific project (recommended for billing)
41
+ - clientId: Associate timer with a client
42
+ - serviceId: Type of service/work being performed
43
+ - taskId: Specific task within a project
44
+ - note: Description of work being performed (can be updated when stopping)
45
+ - billable: Whether time is billable (default: true)
46
+ - internal: Whether this is internal work (default: false)
47
+
48
+ EXAMPLE USAGE:
49
+ - "Start a timer for Project Alpha"
50
+ - "Begin tracking time on bug fixes"
51
+ - "Clock in for client meeting"
52
+
53
+ RETURNS:
54
+ Created time entry with:
55
+ - id: Use this ID to stop or discard the timer later
56
+ - active: true (timer is running)
57
+ - duration: 0 (will be calculated when stopped)
58
+ - startedAt: When timer started
59
+ - timer: Active timer object with isRunning=true`,
60
+ inputSchema: TimerStartInputSchema,
61
+ outputSchema: TimerStartOutputSchema,
62
+ async execute(input, client) {
63
+ const handler = ErrorHandler.wrapHandler('timer_start', async (input, _context) => {
64
+ const { businessId, projectId, clientId, serviceId, taskId, note, billable, internal } = input;
65
+ // Build the time entry payload using snake_case (raw API format)
66
+ // This matches the format used by the FreshBooks website
67
+ const timeEntryPayload = {
68
+ time_entry: {
69
+ is_logged: false,
70
+ duration: null, // null for active timer
71
+ note: note ?? null,
72
+ internal: internal ?? false,
73
+ retainer_id: null,
74
+ pending_client: null,
75
+ pending_project: null,
76
+ pending_task: null,
77
+ source: null,
78
+ started_at: new Date().toISOString(),
79
+ local_started_at: null,
80
+ local_timezone: null,
81
+ billable: billable ?? false,
82
+ billed: false,
83
+ timer: {}, // Empty object for new timer
84
+ identity_id: null,
85
+ client_id: clientId ?? null,
86
+ project_id: projectId ?? null,
87
+ service_id: serviceId ?? null,
88
+ task_id: taskId ?? null,
89
+ },
90
+ };
91
+ // Use raw HTTP to POST to /comments/business/.../time_entries
92
+ const result = await client.executeRawWithRetry('POST', `/comments/business/${businessId}/time_entries`, timeEntryPayload, 'timer_start');
93
+ if (!result.ok || !result.data) {
94
+ throw result.error || new Error('Failed to start timer');
95
+ }
96
+ const te = result.data.time_entry;
97
+ // Transform to camelCase output format
98
+ return {
99
+ id: te.id,
100
+ identityId: te.identity_id,
101
+ isLogged: te.is_logged,
102
+ startedAt: te.started_at,
103
+ createdAt: te.created_at,
104
+ clientId: te.client_id,
105
+ projectId: te.project_id,
106
+ taskId: te.task_id,
107
+ serviceId: te.service_id,
108
+ note: te.note,
109
+ active: te.active,
110
+ billable: te.billable,
111
+ billed: te.billed,
112
+ internal: te.internal,
113
+ duration: te.duration ?? 0,
114
+ timer: te.timer ? {
115
+ id: te.timer.id,
116
+ isRunning: te.timer.is_running ?? true,
117
+ } : null,
118
+ };
119
+ });
120
+ return handler(input, { businessId: input.businessId });
121
+ },
122
+ };
123
+ /**
124
+ * Wrapped handler for backward compatibility with tests
125
+ */
126
+ export async function timerStartHandler(input, context) {
127
+ return timerStartTool.execute(input, context.client);
128
+ }
129
+ //# sourceMappingURL=timer-start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timer-start.js","sourceRoot":"","sources":["../../../src/tools/timer/timer-start.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Timer Stop Tool
3
+ *
4
+ * Stops a running timer and logs the time using the /comments/business/.../timers endpoint.
5
+ * This endpoint is not supported by the SDK, so we use raw HTTP.
6
+ *
7
+ * Note: The SDK uses /timetracking/business/... but timer operations require /comments/business/...
8
+ */
9
+ import { z } from "zod";
10
+ import { TimerStopInputSchema, TimerStopOutputSchema } from "./schemas.js";
11
+ import { ToolContext } from "../../errors/types.js";
12
+ import { FreshBooksClientWrapper } from "../../client/freshbooks-client.js";
13
+ /**
14
+ * Tool definition for timer_stop
15
+ */
16
+ export declare const timerStopTool: {
17
+ name: string;
18
+ description: string;
19
+ inputSchema: z.ZodObject<{
20
+ businessId: z.ZodNumber;
21
+ } & {
22
+ timerId: z.ZodOptional<z.ZodNumber>;
23
+ timeEntryId: z.ZodOptional<z.ZodNumber>;
24
+ note: z.ZodOptional<z.ZodString>;
25
+ }, "strip", z.ZodTypeAny, {
26
+ businessId: number;
27
+ note?: string | undefined;
28
+ timeEntryId?: number | undefined;
29
+ timerId?: number | undefined;
30
+ }, {
31
+ businessId: number;
32
+ note?: string | undefined;
33
+ timeEntryId?: number | undefined;
34
+ timerId?: number | undefined;
35
+ }>;
36
+ outputSchema: z.ZodObject<{
37
+ id: z.ZodNumber;
38
+ identityId: z.ZodOptional<z.ZodNumber>;
39
+ isLogged: z.ZodBoolean;
40
+ startedAt: z.ZodString;
41
+ createdAt: z.ZodOptional<z.ZodString>;
42
+ clientId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
43
+ projectId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
44
+ taskId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
45
+ serviceId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
46
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
47
+ active: z.ZodBoolean;
48
+ billable: z.ZodOptional<z.ZodBoolean>;
49
+ billed: z.ZodOptional<z.ZodBoolean>;
50
+ internal: z.ZodOptional<z.ZodBoolean>;
51
+ duration: z.ZodNumber;
52
+ timer: z.ZodOptional<z.ZodNullable<z.ZodObject<{
53
+ id: z.ZodNumber;
54
+ isRunning: z.ZodNullable<z.ZodBoolean>;
55
+ }, "strip", z.ZodTypeAny, {
56
+ id: number;
57
+ isRunning: boolean | null;
58
+ }, {
59
+ id: number;
60
+ isRunning: boolean | null;
61
+ }>>>;
62
+ pendingClient: z.ZodOptional<z.ZodNullable<z.ZodString>>;
63
+ pendingProject: z.ZodOptional<z.ZodNullable<z.ZodString>>;
64
+ pendingTask: z.ZodOptional<z.ZodNullable<z.ZodString>>;
65
+ retainerId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
66
+ }, "strip", z.ZodTypeAny, {
67
+ duration: number;
68
+ id: number;
69
+ isLogged: boolean;
70
+ startedAt: string;
71
+ active: boolean;
72
+ billed?: boolean | undefined;
73
+ taskId?: number | null | undefined;
74
+ createdAt?: string | undefined;
75
+ identityId?: number | undefined;
76
+ clientId?: number | null | undefined;
77
+ projectId?: number | null | undefined;
78
+ pendingClient?: string | null | undefined;
79
+ pendingProject?: string | null | undefined;
80
+ pendingTask?: string | null | undefined;
81
+ serviceId?: number | null | undefined;
82
+ note?: string | null | undefined;
83
+ billable?: boolean | undefined;
84
+ internal?: boolean | undefined;
85
+ retainerId?: number | null | undefined;
86
+ timer?: {
87
+ id: number;
88
+ isRunning: boolean | null;
89
+ } | null | undefined;
90
+ }, {
91
+ duration: number;
92
+ id: number;
93
+ isLogged: boolean;
94
+ startedAt: string;
95
+ active: boolean;
96
+ billed?: boolean | undefined;
97
+ taskId?: number | null | undefined;
98
+ createdAt?: string | undefined;
99
+ identityId?: number | undefined;
100
+ clientId?: number | null | undefined;
101
+ projectId?: number | null | undefined;
102
+ pendingClient?: string | null | undefined;
103
+ pendingProject?: string | null | undefined;
104
+ pendingTask?: string | null | undefined;
105
+ serviceId?: number | null | undefined;
106
+ note?: string | null | undefined;
107
+ billable?: boolean | undefined;
108
+ internal?: boolean | undefined;
109
+ retainerId?: number | null | undefined;
110
+ timer?: {
111
+ id: number;
112
+ isRunning: boolean | null;
113
+ } | null | undefined;
114
+ }>;
115
+ execute(input: z.infer<typeof TimerStopInputSchema>, client: FreshBooksClientWrapper): Promise<z.infer<typeof TimerStopOutputSchema>>;
116
+ };
117
+ /**
118
+ * Wrapped handler for backward compatibility with tests
119
+ */
120
+ export declare function timerStopHandler(input: z.infer<typeof TimerStopInputSchema>, context: ToolContext & {
121
+ client: FreshBooksClientWrapper;
122
+ }): Promise<z.infer<typeof TimerStopOutputSchema>>;
123
+ //# sourceMappingURL=timer-stop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timer-stop.d.ts","sourceRoot":"","sources":["../../../src/tools/timer/timer-stop.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE3E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AA4B5E;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAyCf,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,UACnC,uBAAuB,GAC9B,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;CA0IlD,CAAC;AAEF;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,EAC3C,OAAO,EAAE,WAAW,GAAG;IAAE,MAAM,EAAE,uBAAuB,CAAA;CAAE,GACzD,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAEhD"}
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Timer Stop Tool
3
+ *
4
+ * Stops a running timer and logs the time using the /comments/business/.../timers endpoint.
5
+ * This endpoint is not supported by the SDK, so we use raw HTTP.
6
+ *
7
+ * Note: The SDK uses /timetracking/business/... but timer operations require /comments/business/...
8
+ */
9
+ import { TimerStopInputSchema, TimerStopOutputSchema } from "./schemas.js";
10
+ import { ErrorHandler } from "../../errors/error-handler.js";
11
+ /**
12
+ * Tool definition for timer_stop
13
+ */
14
+ export const timerStopTool = {
15
+ name: "timer_stop",
16
+ description: `Stop a running timer and log the time in FreshBooks.
17
+
18
+ WHEN TO USE:
19
+ - User says "stop timer", "stop tracking", "clock out"
20
+ - User finishes work on a task/project and wants to log the time
21
+ - User wants to save and log the time entry
22
+
23
+ HOW IT WORKS:
24
+ 1. Gets the current timer to calculate total duration
25
+ 2. Aggregates duration across all time entry segments
26
+ 3. Updates the timer to mark time as logged and billable
27
+
28
+ REQUIRED:
29
+ - businessId: FreshBooks business ID (get from user_me -> businessMemberships[].business.id)
30
+
31
+ OPTIONAL:
32
+ - timerId: ID of the timer to stop (from timer_current). If not provided, stops the current running timer.
33
+ - note: Update the description before stopping
34
+
35
+ WHAT IF NO TIMER IS RUNNING:
36
+ - Returns error if no active timer found
37
+
38
+ EXAMPLE USAGE:
39
+ - "Stop my timer" (auto-detects current timer)
40
+ - "Stop timer and add note: completed bug fixes"
41
+
42
+ RETURNS:
43
+ Stopped time entry with:
44
+ - id: The time entry ID
45
+ - timerId: The timer ID
46
+ - active: false (timer has stopped)
47
+ - duration: Total calculated time in seconds
48
+ - isLogged: true (time is now logged)
49
+ - billable: true (time is marked billable)`,
50
+ inputSchema: TimerStopInputSchema,
51
+ outputSchema: TimerStopOutputSchema,
52
+ async execute(input, client) {
53
+ const handler = ErrorHandler.wrapHandler('timer_stop', async (input, _context) => {
54
+ const { businessId, timerId, timeEntryId, note } = input;
55
+ // First, get current timers to find the one to stop
56
+ const timersResult = await client.executeRawWithRetry('GET', `/comments/business/${businessId}/timers`, undefined, 'timer_stop_get_timers');
57
+ if (!timersResult.ok || !timersResult.data) {
58
+ throw timersResult.error || new Error('Failed to fetch timers');
59
+ }
60
+ const timers = timersResult.data.timers || [];
61
+ if (timers.length === 0) {
62
+ throw new Error('No timer found to stop');
63
+ }
64
+ // Find the timer to stop
65
+ let targetTimer = timers[0]; // Default to first timer
66
+ if (timerId) {
67
+ const found = timers.find(t => t.id === timerId);
68
+ if (!found) {
69
+ throw new Error(`Timer with ID ${timerId} not found`);
70
+ }
71
+ targetTimer = found;
72
+ }
73
+ else if (timeEntryId) {
74
+ // Legacy: find timer containing this time entry
75
+ const found = timers.find(t => t.time_entries?.some(te => te.id === timeEntryId));
76
+ if (found) {
77
+ targetTimer = found;
78
+ }
79
+ }
80
+ if (!targetTimer) {
81
+ throw new Error('No timer found to stop');
82
+ }
83
+ const timeEntries = targetTimer.time_entries || [];
84
+ if (timeEntries.length === 0) {
85
+ throw new Error('Timer has no time entries');
86
+ }
87
+ // Calculate total duration across all time entry segments
88
+ let totalDuration = timeEntries.reduce((total, entry) => {
89
+ return entry.duration ? total + Math.floor(entry.duration) : total;
90
+ }, 0);
91
+ // Add duration for currently running segment (duration === null)
92
+ if (targetTimer.is_running) {
93
+ const runningEntry = timeEntries.find(te => te.duration === null);
94
+ if (runningEntry) {
95
+ const startTime = new Date(runningEntry.started_at).getTime();
96
+ const now = Date.now();
97
+ const runningDuration = Math.floor((now - startTime) / 1000);
98
+ totalDuration += runningDuration;
99
+ }
100
+ }
101
+ if (totalDuration === 0) {
102
+ throw new Error('No time to log, timer has no duration');
103
+ }
104
+ // Get the first time entry as the base for the update
105
+ const sourceEntry = timeEntries[0];
106
+ // Build the payload to stop and log the timer
107
+ // This matches the FreshBooks website behavior
108
+ const updatePayload = {
109
+ timer: {
110
+ time_entries: [{
111
+ id: sourceEntry.id,
112
+ is_logged: sourceEntry.is_logged,
113
+ started_at: sourceEntry.started_at,
114
+ client_id: sourceEntry.client_id,
115
+ project_id: sourceEntry.project_id,
116
+ task_id: sourceEntry.task_id,
117
+ service_id: sourceEntry.service_id,
118
+ note: note ?? sourceEntry.note,
119
+ active: false,
120
+ billable: true, // Mark as billable when stopping
121
+ billed: sourceEntry.billed ?? false,
122
+ internal: sourceEntry.internal ?? false,
123
+ duration: totalDuration,
124
+ }],
125
+ },
126
+ };
127
+ // PUT to /timers/{id} to stop and log
128
+ const result = await client.executeRawWithRetry('PUT', `/comments/business/${businessId}/timers/${targetTimer.id}`, updatePayload, 'timer_stop');
129
+ if (!result.ok) {
130
+ throw result.error || new Error('Failed to stop timer');
131
+ }
132
+ // Return the stopped time entry info
133
+ return {
134
+ id: sourceEntry.id,
135
+ timerId: targetTimer.id,
136
+ identityId: undefined,
137
+ isLogged: true,
138
+ startedAt: sourceEntry.started_at,
139
+ createdAt: sourceEntry.created_at,
140
+ clientId: sourceEntry.client_id,
141
+ projectId: sourceEntry.project_id,
142
+ taskId: sourceEntry.task_id,
143
+ serviceId: sourceEntry.service_id,
144
+ note: note ?? sourceEntry.note,
145
+ active: false,
146
+ billable: true,
147
+ billed: sourceEntry.billed,
148
+ internal: sourceEntry.internal,
149
+ duration: totalDuration,
150
+ timer: {
151
+ id: targetTimer.id,
152
+ isRunning: false,
153
+ },
154
+ };
155
+ });
156
+ return handler(input, { businessId: input.businessId });
157
+ },
158
+ };
159
+ /**
160
+ * Wrapped handler for backward compatibility with tests
161
+ */
162
+ export async function timerStopHandler(input, context) {
163
+ return timerStopTool.execute(input, context.client);
164
+ }
165
+ //# sourceMappingURL=timer-stop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timer-stop.js","sourceRoot":"","sources":["../../../src/tools/timer/timer-stop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Tool Metadata Types
3
+ *
4
+ * Defines types for tool metadata used by the hosted server
5
+ * to categorize and filter tools based on user permissions.
6
+ */
7
+ /**
8
+ * Tool categories matching FreshBooks resource types
9
+ */
10
+ export type ToolCategory = 'Invoice' | 'Client' | 'Project' | 'TimeEntry' | 'Timer' | 'Expense' | 'ExpenseCategory' | 'Payment' | 'Item' | 'Bill' | 'BillPayment' | 'BillVendor' | 'CreditNote' | 'OtherIncome' | 'JournalEntry' | 'JournalEntryAccount' | 'Service' | 'Task' | 'User' | 'Report' | 'PaymentOptions' | 'Callback';
11
+ /**
12
+ * Metadata for a single tool
13
+ */
14
+ export interface ToolMetadata {
15
+ /** Tool name (e.g., 'invoice_list') */
16
+ name: string;
17
+ /** Category the tool belongs to */
18
+ category: ToolCategory;
19
+ /** Whether this tool only reads data (no mutations) */
20
+ isReadOnly: boolean;
21
+ /** Human-readable display name for the tool */
22
+ displayName: string;
23
+ }
24
+ /**
25
+ * Category metadata for UI display
26
+ */
27
+ export interface CategoryMetadata {
28
+ /** Category identifier */
29
+ id: ToolCategory;
30
+ /** Human-readable display name */
31
+ displayName: string;
32
+ /** Brief description of what this category covers */
33
+ description: string;
34
+ /** Number of read-only tools in this category */
35
+ readOnlyCount: number;
36
+ /** Number of write tools in this category */
37
+ writeCount: number;
38
+ /** All tools in this category */
39
+ tools: ToolMetadata[];
40
+ }
41
+ /**
42
+ * Display names for each category
43
+ */
44
+ export declare const categoryDisplayNames: Record<ToolCategory, string>;
45
+ /**
46
+ * Descriptions for each category
47
+ */
48
+ export declare const categoryDescriptions: Record<ToolCategory, string>;
49
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,QAAQ,GACR,SAAS,GACT,WAAW,GACX,OAAO,GACP,SAAS,GACT,iBAAiB,GACjB,SAAS,GACT,MAAM,GACN,MAAM,GACN,aAAa,GACb,YAAY,GACZ,YAAY,GACZ,aAAa,GACb,cAAc,GACd,qBAAqB,GACrB,SAAS,GACT,MAAM,GACN,MAAM,GACN,QAAQ,GACR,gBAAgB,GAChB,UAAU,CAAC;AAEf;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,QAAQ,EAAE,YAAY,CAAC;IACvB,uDAAuD;IACvD,UAAU,EAAE,OAAO,CAAC;IACpB,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B;IAC1B,EAAE,EAAE,YAAY,CAAC;IACjB,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,aAAa,EAAE,MAAM,CAAC;IACtB,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAuB7D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAuB7D,CAAC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Tool Metadata Types
3
+ *
4
+ * Defines types for tool metadata used by the hosted server
5
+ * to categorize and filter tools based on user permissions.
6
+ */
7
+ /**
8
+ * Display names for each category
9
+ */
10
+ export const categoryDisplayNames = {
11
+ Invoice: 'Invoices',
12
+ Client: 'Clients',
13
+ Project: 'Projects',
14
+ TimeEntry: 'Time Entries',
15
+ Timer: 'Timers',
16
+ Expense: 'Expenses',
17
+ ExpenseCategory: 'Expense Categories',
18
+ Payment: 'Payments',
19
+ Item: 'Items',
20
+ Bill: 'Bills',
21
+ BillPayment: 'Bill Payments',
22
+ BillVendor: 'Vendors',
23
+ CreditNote: 'Credit Notes',
24
+ OtherIncome: 'Other Income',
25
+ JournalEntry: 'Journal Entries',
26
+ JournalEntryAccount: 'Chart of Accounts',
27
+ Service: 'Services',
28
+ Task: 'Tasks',
29
+ User: 'User Info',
30
+ Report: 'Reports',
31
+ PaymentOptions: 'Payment Options',
32
+ Callback: 'Webhooks',
33
+ };
34
+ /**
35
+ * Descriptions for each category
36
+ */
37
+ export const categoryDescriptions = {
38
+ Invoice: 'Create, send, and manage client invoices',
39
+ Client: 'Manage customers and their contact information',
40
+ Project: 'Track projects and their details',
41
+ TimeEntry: 'Log and manage time entries for billing',
42
+ Timer: 'Start, stop, and manage active timers',
43
+ Expense: 'Track business expenses and receipts',
44
+ ExpenseCategory: 'View expense category definitions',
45
+ Payment: 'Record and track invoice payments',
46
+ Item: 'Manage reusable invoice line items',
47
+ Bill: 'Track bills from vendors and suppliers',
48
+ BillPayment: 'Record payments made to vendors',
49
+ BillVendor: 'Manage vendors and suppliers',
50
+ CreditNote: 'Create and manage credit notes',
51
+ OtherIncome: 'Track income not tied to invoices',
52
+ JournalEntry: 'Create manual accounting entries',
53
+ JournalEntryAccount: 'View chart of accounts',
54
+ Service: 'Manage billable services and rates',
55
+ Task: 'Manage project tasks',
56
+ User: 'View current user information',
57
+ Report: 'Generate financial reports',
58
+ PaymentOptions: 'Configure payment gateway settings',
59
+ Callback: 'Manage webhook subscriptions',
60
+ };
61
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA6DH;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAiC;IAChE,OAAO,EAAE,UAAU;IACnB,MAAM,EAAE,SAAS;IACjB,OAAO,EAAE,UAAU;IACnB,SAAS,EAAE,cAAc;IACzB,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,UAAU;IACnB,eAAe,EAAE,oBAAoB;IACrC,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,eAAe;IAC5B,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,cAAc;IAC1B,WAAW,EAAE,cAAc;IAC3B,YAAY,EAAE,iBAAiB;IAC/B,mBAAmB,EAAE,mBAAmB;IACxC,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,WAAW;IACjB,MAAM,EAAE,SAAS;IACjB,cAAc,EAAE,iBAAiB;IACjC,QAAQ,EAAE,UAAU;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAiC;IAChE,OAAO,EAAE,0CAA0C;IACnD,MAAM,EAAE,gDAAgD;IACxD,OAAO,EAAE,kCAAkC;IAC3C,SAAS,EAAE,yCAAyC;IACpD,KAAK,EAAE,uCAAuC;IAC9C,OAAO,EAAE,sCAAsC;IAC/C,eAAe,EAAE,mCAAmC;IACpD,OAAO,EAAE,mCAAmC;IAC5C,IAAI,EAAE,oCAAoC;IAC1C,IAAI,EAAE,wCAAwC;IAC9C,WAAW,EAAE,iCAAiC;IAC9C,UAAU,EAAE,8BAA8B;IAC1C,UAAU,EAAE,gCAAgC;IAC5C,WAAW,EAAE,mCAAmC;IAChD,YAAY,EAAE,kCAAkC;IAChD,mBAAmB,EAAE,wBAAwB;IAC7C,OAAO,EAAE,oCAAoC;IAC7C,IAAI,EAAE,sBAAsB;IAC5B,IAAI,EAAE,+BAA+B;IACrC,MAAM,EAAE,4BAA4B;IACpC,cAAc,EAAE,oCAAoC;IACpD,QAAQ,EAAE,8BAA8B;CACzC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * User Tools - FreshBooks user account management
3
+ *
4
+ * Exports all user-related MCP tools for account information.
5
+ */
6
+ export { userMeTool } from "./user-me.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/user/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * User Tools - FreshBooks user account management
3
+ *
4
+ * Exports all user-related MCP tools for account information.
5
+ */
6
+ // Export schemas
7
+ // Export tool definitions
8
+ export { userMeTool } from "./user-me.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/user/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,iBAAiB;AAEjB,0BAA0B;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}