@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,232 @@
1
+ /**
2
+ * Response Formatter
3
+ *
4
+ * Formats errors for different output contexts:
5
+ * - JSON-RPC response format (for MCP protocol)
6
+ * - Claude-friendly text format (for display)
7
+ */
8
+ /**
9
+ * Format MCPError for JSON-RPC 2.0 error response
10
+ *
11
+ * Creates a properly formatted JSON-RPC error response object
12
+ * that can be sent over the MCP protocol.
13
+ *
14
+ * @param error - The normalized MCP error
15
+ * @param requestId - Optional request ID (null for notifications)
16
+ * @returns JSON-RPC error response object
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * const response = formatErrorResponse(mcpError, "req-123");
21
+ * // Returns:
22
+ * // {
23
+ * // jsonrpc: "2.0",
24
+ * // id: "req-123",
25
+ * // error: {
26
+ * // code: -32005,
27
+ * // message: "Resource not found",
28
+ * // data: { ... }
29
+ * // }
30
+ * // }
31
+ * ```
32
+ */
33
+ export function formatErrorResponse(error, requestId) {
34
+ return {
35
+ jsonrpc: "2.0",
36
+ id: requestId ?? null,
37
+ error: {
38
+ code: error.code,
39
+ message: error.message,
40
+ data: error.data,
41
+ },
42
+ };
43
+ }
44
+ /**
45
+ * Format error for Claude-friendly display
46
+ *
47
+ * Creates a markdown-formatted, human-readable error message
48
+ * that Claude can present to the user with actionable guidance.
49
+ *
50
+ * @param error - The normalized MCP error
51
+ * @returns Formatted error message with suggestions
52
+ *
53
+ * @example
54
+ * ```typescript
55
+ * const display = formatErrorForClaude(mcpError);
56
+ * // Returns:
57
+ * // **Error:** Resource not found
58
+ * //
59
+ * // **Suggestion:** Verify the ID is correct...
60
+ * //
61
+ * // *This error cannot be recovered by retrying.*
62
+ * ```
63
+ */
64
+ export function formatErrorForClaude(error) {
65
+ const parts = [`**Error:** ${error.message}`];
66
+ // Add suggestion if available
67
+ if (error.data.suggestion) {
68
+ parts.push(`**Suggestion:** ${error.data.suggestion}`);
69
+ }
70
+ // Add field information for validation errors
71
+ if (error.data.freshbooksError?.field) {
72
+ parts.push(`**Field:** ${error.data.freshbooksError.field}`);
73
+ }
74
+ // Add validation error details
75
+ if (error.data.validationErrors && error.data.validationErrors.length > 0) {
76
+ const validationDetails = error.data.validationErrors
77
+ .map((ve) => `- ${ve.path}: ${ve.message}`)
78
+ .join("\n");
79
+ parts.push(`**Validation Errors:**\n${validationDetails}`);
80
+ }
81
+ // Add retry information for rate limiting
82
+ if (error.data.retryAfter) {
83
+ parts.push(`**Retry After:** ${error.data.retryAfter} seconds`);
84
+ }
85
+ // Add auth URL for authentication errors
86
+ if (error.data.authUrl) {
87
+ parts.push(`**Authorization URL:** ${error.data.authUrl}`);
88
+ }
89
+ // Add recovery guidance
90
+ if (!error.data.recoverable) {
91
+ parts.push("*This error cannot be recovered by retrying.*");
92
+ }
93
+ else {
94
+ parts.push("*This error may be resolved by retrying the operation.*");
95
+ }
96
+ // Add context information for debugging (if available)
97
+ if (error.data.context?.tool) {
98
+ parts.push(`\n*Tool:* \`${error.data.context.tool}\``);
99
+ }
100
+ if (error.data.context?.requestId) {
101
+ parts.push(`*Request ID:* \`${error.data.context.requestId}\``);
102
+ }
103
+ return parts.join("\n\n");
104
+ }
105
+ /**
106
+ * Format error for logging
107
+ *
108
+ * Creates a structured log entry suitable for stderr logging.
109
+ * Omits sensitive information like tokens or PII.
110
+ *
111
+ * @param error - The normalized MCP error
112
+ * @returns Structured log object
113
+ *
114
+ * @example
115
+ * ```typescript
116
+ * const logEntry = formatErrorForLogging(mcpError);
117
+ * console.error(JSON.stringify(logEntry));
118
+ * ```
119
+ */
120
+ export function formatErrorForLogging(error) {
121
+ return {
122
+ level: "error",
123
+ code: error.code,
124
+ message: error.message,
125
+ tool: error.data.context?.tool,
126
+ requestId: error.data.context?.requestId,
127
+ accountId: error.data.context?.accountId
128
+ ? maskAccountId(error.data.context.accountId)
129
+ : undefined,
130
+ recoverable: error.data.recoverable,
131
+ freshbooksCode: error.data.freshbooksError?.code,
132
+ freshbooksErrno: error.data.freshbooksError?.errno,
133
+ field: error.data.freshbooksError?.field,
134
+ timestamp: new Date().toISOString(),
135
+ };
136
+ }
137
+ /**
138
+ * Format error details for debugging
139
+ *
140
+ * Creates a comprehensive error dump including all details
141
+ * for debugging purposes. Should only be used in development.
142
+ *
143
+ * @param error - The normalized MCP error
144
+ * @returns Detailed error information
145
+ */
146
+ export function formatErrorForDebug(error) {
147
+ return {
148
+ mcpError: {
149
+ code: error.code,
150
+ message: error.message,
151
+ name: error.name,
152
+ stack: error.stack,
153
+ },
154
+ data: error.data,
155
+ timestamp: new Date().toISOString(),
156
+ };
157
+ }
158
+ /**
159
+ * Get error summary
160
+ *
161
+ * Returns a brief one-line summary of the error.
162
+ *
163
+ * @param error - The normalized MCP error
164
+ * @returns Brief error summary
165
+ */
166
+ export function getErrorSummary(error) {
167
+ const parts = [error.message];
168
+ if (error.data.freshbooksError?.field) {
169
+ parts.push(`(field: ${error.data.freshbooksError.field})`);
170
+ }
171
+ if (error.data.context?.tool) {
172
+ parts.push(`[${error.data.context.tool}]`);
173
+ }
174
+ return parts.join(" ");
175
+ }
176
+ /**
177
+ * Check if error is retryable
178
+ *
179
+ * Determines if the error can be resolved by retrying.
180
+ *
181
+ * @param error - The normalized MCP error
182
+ * @returns True if error is retryable
183
+ */
184
+ export function isRetryable(error) {
185
+ return error.data.recoverable;
186
+ }
187
+ /**
188
+ * Get suggested retry delay
189
+ *
190
+ * Returns the suggested delay before retrying (in milliseconds).
191
+ *
192
+ * @param error - The normalized MCP error
193
+ * @returns Delay in milliseconds, or undefined if not retryable
194
+ */
195
+ export function getRetryDelay(error) {
196
+ if (!error.data.recoverable) {
197
+ return undefined;
198
+ }
199
+ // If explicit retry-after is provided (in seconds), convert to ms
200
+ if (error.data.retryAfter) {
201
+ return error.data.retryAfter * 1000;
202
+ }
203
+ // Default retry delays based on error type
204
+ switch (error.code) {
205
+ case -32004: // RATE_LIMITED
206
+ return 60000; // 60 seconds
207
+ case -32008: // SERVICE_UNAVAILABLE
208
+ return 30000; // 30 seconds
209
+ case -32603: // INTERNAL_ERROR
210
+ return 5000; // 5 seconds
211
+ default:
212
+ return 1000; // 1 second
213
+ }
214
+ }
215
+ /**
216
+ * Mask account ID for logging
217
+ *
218
+ * Masks the account ID to prevent logging full account identifiers.
219
+ * Shows first 3 and last 3 characters only.
220
+ *
221
+ * @param accountId - Account ID to mask
222
+ * @returns Masked account ID
223
+ */
224
+ function maskAccountId(accountId) {
225
+ if (accountId.length <= 6) {
226
+ return "***";
227
+ }
228
+ const start = accountId.substring(0, 3);
229
+ const end = accountId.substring(accountId.length - 3);
230
+ return `${start}...${end}`;
231
+ }
232
+ //# sourceMappingURL=response-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-formatter.js","sourceRoot":"","sources":["../../src/errors/response-formatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,194 @@
1
+ /**
2
+ * Error Type Definitions
3
+ *
4
+ * Comprehensive type definitions for the dual-format error system.
5
+ * All errors are normalized to MCP format while preserving original
6
+ * FreshBooks error details for debugging.
7
+ */
8
+ /**
9
+ * MCP Error Codes (JSON-RPC 2.0)
10
+ *
11
+ * Standard JSON-RPC error codes (-32768 to -32000) plus
12
+ * custom application errors (-32000 to -32099)
13
+ */
14
+ export declare enum MCPErrorCode {
15
+ PARSE_ERROR = -32700,
16
+ INVALID_REQUEST = -32600,
17
+ METHOD_NOT_FOUND = -32601,
18
+ INVALID_PARAMS = -32602,
19
+ INTERNAL_ERROR = -32603,
20
+ NOT_AUTHENTICATED = -32001,
21
+ TOKEN_EXPIRED = -32002,
22
+ PERMISSION_DENIED = -32003,
23
+ RATE_LIMITED = -32004,
24
+ RESOURCE_NOT_FOUND = -32005,
25
+ VALIDATION_ERROR = -32006,
26
+ CONFLICT = -32007,
27
+ SERVICE_UNAVAILABLE = -32008,
28
+ NETWORK_ERROR = -32009,
29
+ TIMEOUT = -32010
30
+ }
31
+ /**
32
+ * FreshBooks Error Codes
33
+ *
34
+ * Error codes as returned by the FreshBooks API.
35
+ * These are mapped to MCP error codes for client consumption.
36
+ */
37
+ export declare enum FreshBooksErrorCode {
38
+ UNAUTHORIZED = "UNAUTHORIZED",
39
+ FORBIDDEN = "FORBIDDEN",
40
+ NOT_FOUND = "NOT_FOUND",
41
+ VALIDATION_ERROR = "VALIDATION_ERROR",
42
+ RATE_LIMIT_EXCEEDED = "RATE_LIMIT_EXCEEDED",
43
+ INTERNAL_ERROR = "INTERNAL_ERROR",
44
+ CONFLICT = "CONFLICT",
45
+ BAD_REQUEST = "BAD_REQUEST",
46
+ SERVICE_UNAVAILABLE = "SERVICE_UNAVAILABLE",
47
+ UNAUTHENTICATED = "UNAUTHENTICATED",
48
+ TOKEN_EXPIRED = "TOKEN_EXPIRED",
49
+ INVALID_GRANT = "INVALID_GRANT",
50
+ INSUFFICIENT_PERMISSIONS = "INSUFFICIENT_PERMISSIONS"
51
+ }
52
+ /**
53
+ * Normalized MCP Error
54
+ *
55
+ * All errors are transformed into this format before being
56
+ * sent to the client. Follows JSON-RPC 2.0 error object spec.
57
+ */
58
+ export interface MCPError extends Error {
59
+ code: MCPErrorCode;
60
+ message: string;
61
+ data: MCPErrorData;
62
+ }
63
+ /**
64
+ * Error Data
65
+ *
66
+ * Preserves original FreshBooks error details while adding
67
+ * context and recovery guidance.
68
+ */
69
+ export interface MCPErrorData {
70
+ freshbooksError?: {
71
+ code: string;
72
+ message: string;
73
+ field?: string;
74
+ errno?: number;
75
+ details?: Record<string, unknown>;
76
+ statusCode?: number;
77
+ type?: string;
78
+ };
79
+ validationErrors?: Array<{
80
+ path: string;
81
+ message: string;
82
+ code: string;
83
+ expected?: string;
84
+ received?: unknown;
85
+ }>;
86
+ context?: ErrorContext;
87
+ recoverable: boolean;
88
+ suggestion?: string;
89
+ retryAfter?: number;
90
+ authUrl?: string;
91
+ statusCode?: number;
92
+ }
93
+ /**
94
+ * Error Context
95
+ *
96
+ * Contextual information about where and why the error occurred.
97
+ */
98
+ export interface ErrorContext {
99
+ tool?: string;
100
+ accountId?: string;
101
+ entityId?: number | string;
102
+ requestId?: string;
103
+ operation?: string;
104
+ [key: string]: unknown;
105
+ }
106
+ /**
107
+ * FreshBooks API Error
108
+ *
109
+ * The error structure returned by the FreshBooks SDK.
110
+ */
111
+ export interface FreshBooksApiError {
112
+ ok: false;
113
+ error: {
114
+ code: string;
115
+ message: string;
116
+ field?: string;
117
+ errno?: number;
118
+ details?: Record<string, unknown>;
119
+ type?: string;
120
+ };
121
+ statusCode?: number;
122
+ retryAfter?: number;
123
+ }
124
+ /**
125
+ * OAuth Error
126
+ *
127
+ * Errors from the OAuth flow.
128
+ */
129
+ export declare class OAuthError extends Error {
130
+ code: string;
131
+ details?: Record<string, unknown> | undefined;
132
+ constructor(code: string, message: string, details?: Record<string, unknown> | undefined);
133
+ }
134
+ /**
135
+ * OAuth Error Response
136
+ *
137
+ * Error structure from OAuth token endpoints.
138
+ */
139
+ export interface OAuthErrorResponse {
140
+ error: string;
141
+ error_description?: string;
142
+ error_uri?: string;
143
+ }
144
+ /**
145
+ * Error Mapping Configuration
146
+ *
147
+ * Configuration for mapping error types to MCP errors.
148
+ */
149
+ export interface ErrorMapping {
150
+ mcpCode: MCPErrorCode;
151
+ recoverable: boolean;
152
+ getMessage: (error: FreshBooksApiError["error"]) => string;
153
+ getSuggestion: (error: FreshBooksApiError["error"]) => string;
154
+ statusCode?: number;
155
+ }
156
+ /**
157
+ * Tool Context
158
+ *
159
+ * Context passed to tool handlers.
160
+ */
161
+ export interface ToolContext {
162
+ accountId?: string;
163
+ [key: string]: unknown;
164
+ }
165
+ /**
166
+ * Network Error Type
167
+ *
168
+ * Common network error codes from Node.js.
169
+ */
170
+ export declare enum NetworkErrorType {
171
+ TIMEOUT = "ETIMEDOUT",
172
+ CONNECTION_REFUSED = "ECONNREFUSED",
173
+ NOT_FOUND = "ENOTFOUND",
174
+ CONNECTION_RESET = "ECONNRESET",
175
+ NETWORK_UNREACHABLE = "ENETUNREACH",
176
+ DNS_FAILURE = "EAI_AGAIN"
177
+ }
178
+ /**
179
+ * Type guard: Check if error is an MCP error
180
+ */
181
+ export declare function isMCPError(error: unknown): error is MCPError;
182
+ /**
183
+ * Type guard: Check if error is a FreshBooks API error
184
+ */
185
+ export declare function isFreshBooksError(error: unknown): error is FreshBooksApiError;
186
+ /**
187
+ * Type guard: Check if error is an OAuth error
188
+ */
189
+ export declare function isOAuthError(error: unknown): error is OAuthError;
190
+ /**
191
+ * Type guard: Check if error is a network error
192
+ */
193
+ export declare function isNetworkError(error: unknown): error is NodeJS.ErrnoException;
194
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/errors/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Error Type Definitions
3
+ *
4
+ * Comprehensive type definitions for the dual-format error system.
5
+ * All errors are normalized to MCP format while preserving original
6
+ * FreshBooks error details for debugging.
7
+ */
8
+ /**
9
+ * MCP Error Codes (JSON-RPC 2.0)
10
+ *
11
+ * Standard JSON-RPC error codes (-32768 to -32000) plus
12
+ * custom application errors (-32000 to -32099)
13
+ */
14
+ export var MCPErrorCode;
15
+ (function (MCPErrorCode) {
16
+ // Standard JSON-RPC 2.0 errors
17
+ MCPErrorCode[MCPErrorCode["PARSE_ERROR"] = -32700] = "PARSE_ERROR";
18
+ MCPErrorCode[MCPErrorCode["INVALID_REQUEST"] = -32600] = "INVALID_REQUEST";
19
+ MCPErrorCode[MCPErrorCode["METHOD_NOT_FOUND"] = -32601] = "METHOD_NOT_FOUND";
20
+ MCPErrorCode[MCPErrorCode["INVALID_PARAMS"] = -32602] = "INVALID_PARAMS";
21
+ MCPErrorCode[MCPErrorCode["INTERNAL_ERROR"] = -32603] = "INTERNAL_ERROR";
22
+ // Custom application errors (range: -32000 to -32099)
23
+ MCPErrorCode[MCPErrorCode["NOT_AUTHENTICATED"] = -32001] = "NOT_AUTHENTICATED";
24
+ MCPErrorCode[MCPErrorCode["TOKEN_EXPIRED"] = -32002] = "TOKEN_EXPIRED";
25
+ MCPErrorCode[MCPErrorCode["PERMISSION_DENIED"] = -32003] = "PERMISSION_DENIED";
26
+ MCPErrorCode[MCPErrorCode["RATE_LIMITED"] = -32004] = "RATE_LIMITED";
27
+ MCPErrorCode[MCPErrorCode["RESOURCE_NOT_FOUND"] = -32005] = "RESOURCE_NOT_FOUND";
28
+ MCPErrorCode[MCPErrorCode["VALIDATION_ERROR"] = -32006] = "VALIDATION_ERROR";
29
+ MCPErrorCode[MCPErrorCode["CONFLICT"] = -32007] = "CONFLICT";
30
+ MCPErrorCode[MCPErrorCode["SERVICE_UNAVAILABLE"] = -32008] = "SERVICE_UNAVAILABLE";
31
+ MCPErrorCode[MCPErrorCode["NETWORK_ERROR"] = -32009] = "NETWORK_ERROR";
32
+ MCPErrorCode[MCPErrorCode["TIMEOUT"] = -32010] = "TIMEOUT";
33
+ })(MCPErrorCode || (MCPErrorCode = {}));
34
+ /**
35
+ * FreshBooks Error Codes
36
+ *
37
+ * Error codes as returned by the FreshBooks API.
38
+ * These are mapped to MCP error codes for client consumption.
39
+ */
40
+ export var FreshBooksErrorCode;
41
+ (function (FreshBooksErrorCode) {
42
+ FreshBooksErrorCode["UNAUTHORIZED"] = "UNAUTHORIZED";
43
+ FreshBooksErrorCode["FORBIDDEN"] = "FORBIDDEN";
44
+ FreshBooksErrorCode["NOT_FOUND"] = "NOT_FOUND";
45
+ FreshBooksErrorCode["VALIDATION_ERROR"] = "VALIDATION_ERROR";
46
+ FreshBooksErrorCode["RATE_LIMIT_EXCEEDED"] = "RATE_LIMIT_EXCEEDED";
47
+ FreshBooksErrorCode["INTERNAL_ERROR"] = "INTERNAL_ERROR";
48
+ FreshBooksErrorCode["CONFLICT"] = "CONFLICT";
49
+ FreshBooksErrorCode["BAD_REQUEST"] = "BAD_REQUEST";
50
+ FreshBooksErrorCode["SERVICE_UNAVAILABLE"] = "SERVICE_UNAVAILABLE";
51
+ FreshBooksErrorCode["UNAUTHENTICATED"] = "UNAUTHENTICATED";
52
+ FreshBooksErrorCode["TOKEN_EXPIRED"] = "TOKEN_EXPIRED";
53
+ FreshBooksErrorCode["INVALID_GRANT"] = "INVALID_GRANT";
54
+ FreshBooksErrorCode["INSUFFICIENT_PERMISSIONS"] = "INSUFFICIENT_PERMISSIONS";
55
+ })(FreshBooksErrorCode || (FreshBooksErrorCode = {}));
56
+ /**
57
+ * OAuth Error
58
+ *
59
+ * Errors from the OAuth flow.
60
+ */
61
+ export class OAuthError extends Error {
62
+ code;
63
+ details;
64
+ constructor(code, message, details) {
65
+ super(message);
66
+ this.code = code;
67
+ this.details = details;
68
+ this.name = "OAuthError";
69
+ }
70
+ }
71
+ /**
72
+ * Network Error Type
73
+ *
74
+ * Common network error codes from Node.js.
75
+ */
76
+ export var NetworkErrorType;
77
+ (function (NetworkErrorType) {
78
+ NetworkErrorType["TIMEOUT"] = "ETIMEDOUT";
79
+ NetworkErrorType["CONNECTION_REFUSED"] = "ECONNREFUSED";
80
+ NetworkErrorType["NOT_FOUND"] = "ENOTFOUND";
81
+ NetworkErrorType["CONNECTION_RESET"] = "ECONNRESET";
82
+ NetworkErrorType["NETWORK_UNREACHABLE"] = "ENETUNREACH";
83
+ NetworkErrorType["DNS_FAILURE"] = "EAI_AGAIN";
84
+ })(NetworkErrorType || (NetworkErrorType = {}));
85
+ /**
86
+ * Type guard: Check if error is an MCP error
87
+ */
88
+ export function isMCPError(error) {
89
+ return (typeof error === "object" &&
90
+ error !== null &&
91
+ "code" in error &&
92
+ "message" in error &&
93
+ "data" in error &&
94
+ typeof error.code === "number" &&
95
+ typeof error.message === "string");
96
+ }
97
+ /**
98
+ * Type guard: Check if error is a FreshBooks API error
99
+ */
100
+ export function isFreshBooksError(error) {
101
+ return (typeof error === "object" &&
102
+ error !== null &&
103
+ "ok" in error &&
104
+ error.ok === false &&
105
+ "error" in error &&
106
+ typeof error.error === "object");
107
+ }
108
+ /**
109
+ * Type guard: Check if error is an OAuth error
110
+ */
111
+ export function isOAuthError(error) {
112
+ return error instanceof OAuthError;
113
+ }
114
+ /**
115
+ * Type guard: Check if error is a network error
116
+ */
117
+ export function isNetworkError(error) {
118
+ if (!(error instanceof Error)) {
119
+ return false;
120
+ }
121
+ const networkIndicators = [
122
+ "ETIMEDOUT",
123
+ "ECONNREFUSED",
124
+ "ENOTFOUND",
125
+ "ECONNRESET",
126
+ "ENETUNREACH",
127
+ "EAI_AGAIN",
128
+ "socket hang up",
129
+ "network",
130
+ "timeout",
131
+ ];
132
+ return networkIndicators.some((indicator) => error.message.toLowerCase().includes(indicator.toLowerCase()));
133
+ }
134
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/errors/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * FreshBooks MCP Server
4
+ *
5
+ * Main entry point for the FreshBooks Model Context Protocol server.
6
+ * Provides Claude with access to FreshBooks time tracking, invoicing,
7
+ * expense management, and more through MCP tools.
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG"}