@energio/holded-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 (243) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1040 -0
  3. package/dist/constants.d.ts +60 -0
  4. package/dist/constants.d.ts.map +1 -0
  5. package/dist/constants.js +72 -0
  6. package/dist/constants.js.map +1 -0
  7. package/dist/index.d.ts +11 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +86 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/schemas/accounting/account-balances.d.ts +19 -0
  12. package/dist/schemas/accounting/account-balances.d.ts.map +1 -0
  13. package/dist/schemas/accounting/account-balances.js +28 -0
  14. package/dist/schemas/accounting/account-balances.js.map +1 -0
  15. package/dist/schemas/accounting/accounts.d.ts +49 -0
  16. package/dist/schemas/accounting/accounts.d.ts.map +1 -0
  17. package/dist/schemas/accounting/accounts.js +50 -0
  18. package/dist/schemas/accounting/accounts.js.map +1 -0
  19. package/dist/schemas/accounting/daily-ledger.d.ts +45 -0
  20. package/dist/schemas/accounting/daily-ledger.d.ts.map +1 -0
  21. package/dist/schemas/accounting/daily-ledger.js +57 -0
  22. package/dist/schemas/accounting/daily-ledger.js.map +1 -0
  23. package/dist/schemas/common.d.ts +118 -0
  24. package/dist/schemas/common.d.ts.map +1 -0
  25. package/dist/schemas/common.js +126 -0
  26. package/dist/schemas/common.js.map +1 -0
  27. package/dist/schemas/crm/bookings.d.ts +108 -0
  28. package/dist/schemas/crm/bookings.d.ts.map +1 -0
  29. package/dist/schemas/crm/bookings.js +96 -0
  30. package/dist/schemas/crm/bookings.js.map +1 -0
  31. package/dist/schemas/crm/events.d.ts +57 -0
  32. package/dist/schemas/crm/events.d.ts.map +1 -0
  33. package/dist/schemas/crm/events.js +53 -0
  34. package/dist/schemas/crm/events.js.map +1 -0
  35. package/dist/schemas/crm/funnels.d.ts +60 -0
  36. package/dist/schemas/crm/funnels.d.ts.map +1 -0
  37. package/dist/schemas/crm/funnels.js +48 -0
  38. package/dist/schemas/crm/funnels.js.map +1 -0
  39. package/dist/schemas/crm/leads.d.ts +146 -0
  40. package/dist/schemas/crm/leads.d.ts.map +1 -0
  41. package/dist/schemas/crm/leads.js +129 -0
  42. package/dist/schemas/crm/leads.js.map +1 -0
  43. package/dist/schemas/invoicing/contacts.d.ts +352 -0
  44. package/dist/schemas/invoicing/contacts.d.ts.map +1 -0
  45. package/dist/schemas/invoicing/contacts.js +187 -0
  46. package/dist/schemas/invoicing/contacts.js.map +1 -0
  47. package/dist/schemas/invoicing/documents.d.ts +424 -0
  48. package/dist/schemas/invoicing/documents.d.ts.map +1 -0
  49. package/dist/schemas/invoicing/documents.js +217 -0
  50. package/dist/schemas/invoicing/documents.js.map +1 -0
  51. package/dist/schemas/invoicing/expenses-accounts.d.ts +47 -0
  52. package/dist/schemas/invoicing/expenses-accounts.d.ts.map +1 -0
  53. package/dist/schemas/invoicing/expenses-accounts.js +43 -0
  54. package/dist/schemas/invoicing/expenses-accounts.js.map +1 -0
  55. package/dist/schemas/invoicing/numbering-series.d.ts +94 -0
  56. package/dist/schemas/invoicing/numbering-series.d.ts.map +1 -0
  57. package/dist/schemas/invoicing/numbering-series.js +43 -0
  58. package/dist/schemas/invoicing/numbering-series.js.map +1 -0
  59. package/dist/schemas/invoicing/payments.d.ts +50 -0
  60. package/dist/schemas/invoicing/payments.d.ts.map +1 -0
  61. package/dist/schemas/invoicing/payments.js +46 -0
  62. package/dist/schemas/invoicing/payments.js.map +1 -0
  63. package/dist/schemas/invoicing/products.d.ts +176 -0
  64. package/dist/schemas/invoicing/products.d.ts.map +1 -0
  65. package/dist/schemas/invoicing/products.js +149 -0
  66. package/dist/schemas/invoicing/products.js.map +1 -0
  67. package/dist/schemas/invoicing/remittances.d.ts +21 -0
  68. package/dist/schemas/invoicing/remittances.d.ts.map +1 -0
  69. package/dist/schemas/invoicing/remittances.js +20 -0
  70. package/dist/schemas/invoicing/remittances.js.map +1 -0
  71. package/dist/schemas/invoicing/sales-channels.d.ts +45 -0
  72. package/dist/schemas/invoicing/sales-channels.d.ts.map +1 -0
  73. package/dist/schemas/invoicing/sales-channels.js +41 -0
  74. package/dist/schemas/invoicing/sales-channels.js.map +1 -0
  75. package/dist/schemas/invoicing/services.d.ts +55 -0
  76. package/dist/schemas/invoicing/services.d.ts.map +1 -0
  77. package/dist/schemas/invoicing/services.js +51 -0
  78. package/dist/schemas/invoicing/services.js.map +1 -0
  79. package/dist/schemas/invoicing/taxes.d.ts +12 -0
  80. package/dist/schemas/invoicing/taxes.d.ts.map +1 -0
  81. package/dist/schemas/invoicing/taxes.js +12 -0
  82. package/dist/schemas/invoicing/taxes.js.map +1 -0
  83. package/dist/schemas/invoicing/treasury.d.ts +42 -0
  84. package/dist/schemas/invoicing/treasury.d.ts.map +1 -0
  85. package/dist/schemas/invoicing/treasury.js +39 -0
  86. package/dist/schemas/invoicing/treasury.js.map +1 -0
  87. package/dist/schemas/invoicing/warehouses.d.ts +61 -0
  88. package/dist/schemas/invoicing/warehouses.d.ts.map +1 -0
  89. package/dist/schemas/invoicing/warehouses.js +43 -0
  90. package/dist/schemas/invoicing/warehouses.js.map +1 -0
  91. package/dist/schemas/projects/projects.d.ts +60 -0
  92. package/dist/schemas/projects/projects.d.ts.map +1 -0
  93. package/dist/schemas/projects/projects.js +55 -0
  94. package/dist/schemas/projects/projects.js.map +1 -0
  95. package/dist/schemas/projects/tasks.d.ts +68 -0
  96. package/dist/schemas/projects/tasks.d.ts.map +1 -0
  97. package/dist/schemas/projects/tasks.js +64 -0
  98. package/dist/schemas/projects/tasks.js.map +1 -0
  99. package/dist/schemas/projects/time-tracking.d.ts +80 -0
  100. package/dist/schemas/projects/time-tracking.d.ts.map +1 -0
  101. package/dist/schemas/projects/time-tracking.js +75 -0
  102. package/dist/schemas/projects/time-tracking.js.map +1 -0
  103. package/dist/schemas/team/employees.d.ts +135 -0
  104. package/dist/schemas/team/employees.d.ts.map +1 -0
  105. package/dist/schemas/team/employees.js +144 -0
  106. package/dist/schemas/team/employees.js.map +1 -0
  107. package/dist/schemas/team/time-tracking.d.ts +98 -0
  108. package/dist/schemas/team/time-tracking.d.ts.map +1 -0
  109. package/dist/schemas/team/time-tracking.js +89 -0
  110. package/dist/schemas/team/time-tracking.js.map +1 -0
  111. package/dist/services/api.d.ts +118 -0
  112. package/dist/services/api.d.ts.map +1 -0
  113. package/dist/services/api.js +441 -0
  114. package/dist/services/api.js.map +1 -0
  115. package/dist/tools/accounting/account-balances.d.ts +44 -0
  116. package/dist/tools/accounting/account-balances.d.ts.map +1 -0
  117. package/dist/tools/accounting/account-balances.js +240 -0
  118. package/dist/tools/accounting/account-balances.js.map +1 -0
  119. package/dist/tools/accounting/accounts.d.ts +18 -0
  120. package/dist/tools/accounting/accounts.d.ts.map +1 -0
  121. package/dist/tools/accounting/accounts.js +131 -0
  122. package/dist/tools/accounting/accounts.js.map +1 -0
  123. package/dist/tools/accounting/daily-ledger.d.ts +9 -0
  124. package/dist/tools/accounting/daily-ledger.d.ts.map +1 -0
  125. package/dist/tools/accounting/daily-ledger.js +117 -0
  126. package/dist/tools/accounting/daily-ledger.js.map +1 -0
  127. package/dist/tools/accounting/index.d.ts +9 -0
  128. package/dist/tools/accounting/index.d.ts.map +1 -0
  129. package/dist/tools/accounting/index.js +15 -0
  130. package/dist/tools/accounting/index.js.map +1 -0
  131. package/dist/tools/crm/bookings.d.ts +18 -0
  132. package/dist/tools/crm/bookings.d.ts.map +1 -0
  133. package/dist/tools/crm/bookings.js +272 -0
  134. package/dist/tools/crm/bookings.js.map +1 -0
  135. package/dist/tools/crm/events.d.ts +18 -0
  136. package/dist/tools/crm/events.d.ts.map +1 -0
  137. package/dist/tools/crm/events.js +134 -0
  138. package/dist/tools/crm/events.js.map +1 -0
  139. package/dist/tools/crm/funnels.d.ts +18 -0
  140. package/dist/tools/crm/funnels.d.ts.map +1 -0
  141. package/dist/tools/crm/funnels.js +113 -0
  142. package/dist/tools/crm/funnels.js.map +1 -0
  143. package/dist/tools/crm/index.d.ts +9 -0
  144. package/dist/tools/crm/index.d.ts.map +1 -0
  145. package/dist/tools/crm/index.js +17 -0
  146. package/dist/tools/crm/index.js.map +1 -0
  147. package/dist/tools/crm/leads.d.ts +18 -0
  148. package/dist/tools/crm/leads.d.ts.map +1 -0
  149. package/dist/tools/crm/leads.js +519 -0
  150. package/dist/tools/crm/leads.js.map +1 -0
  151. package/dist/tools/factory.d.ts +55 -0
  152. package/dist/tools/factory.d.ts.map +1 -0
  153. package/dist/tools/factory.js +145 -0
  154. package/dist/tools/factory.js.map +1 -0
  155. package/dist/tools/invoicing/contacts.d.ts +26 -0
  156. package/dist/tools/invoicing/contacts.d.ts.map +1 -0
  157. package/dist/tools/invoicing/contacts.js +358 -0
  158. package/dist/tools/invoicing/contacts.js.map +1 -0
  159. package/dist/tools/invoicing/documents.d.ts +18 -0
  160. package/dist/tools/invoicing/documents.d.ts.map +1 -0
  161. package/dist/tools/invoicing/documents.js +578 -0
  162. package/dist/tools/invoicing/documents.js.map +1 -0
  163. package/dist/tools/invoicing/expenses-accounts.d.ts +25 -0
  164. package/dist/tools/invoicing/expenses-accounts.d.ts.map +1 -0
  165. package/dist/tools/invoicing/expenses-accounts.js +111 -0
  166. package/dist/tools/invoicing/expenses-accounts.js.map +1 -0
  167. package/dist/tools/invoicing/index.d.ts +9 -0
  168. package/dist/tools/invoicing/index.d.ts.map +1 -0
  169. package/dist/tools/invoicing/index.js +33 -0
  170. package/dist/tools/invoicing/index.js.map +1 -0
  171. package/dist/tools/invoicing/numbering-series.d.ts +9 -0
  172. package/dist/tools/invoicing/numbering-series.d.ts.map +1 -0
  173. package/dist/tools/invoicing/numbering-series.js +161 -0
  174. package/dist/tools/invoicing/numbering-series.js.map +1 -0
  175. package/dist/tools/invoicing/payments.d.ts +18 -0
  176. package/dist/tools/invoicing/payments.d.ts.map +1 -0
  177. package/dist/tools/invoicing/payments.js +175 -0
  178. package/dist/tools/invoicing/payments.js.map +1 -0
  179. package/dist/tools/invoicing/products.d.ts +18 -0
  180. package/dist/tools/invoicing/products.d.ts.map +1 -0
  181. package/dist/tools/invoicing/products.js +389 -0
  182. package/dist/tools/invoicing/products.js.map +1 -0
  183. package/dist/tools/invoicing/remittances.d.ts +17 -0
  184. package/dist/tools/invoicing/remittances.d.ts.map +1 -0
  185. package/dist/tools/invoicing/remittances.js +76 -0
  186. package/dist/tools/invoicing/remittances.js.map +1 -0
  187. package/dist/tools/invoicing/sales-channels.d.ts +24 -0
  188. package/dist/tools/invoicing/sales-channels.d.ts.map +1 -0
  189. package/dist/tools/invoicing/sales-channels.js +105 -0
  190. package/dist/tools/invoicing/sales-channels.js.map +1 -0
  191. package/dist/tools/invoicing/services.d.ts +29 -0
  192. package/dist/tools/invoicing/services.d.ts.map +1 -0
  193. package/dist/tools/invoicing/services.js +124 -0
  194. package/dist/tools/invoicing/services.js.map +1 -0
  195. package/dist/tools/invoicing/taxes.d.ts +18 -0
  196. package/dist/tools/invoicing/taxes.d.ts.map +1 -0
  197. package/dist/tools/invoicing/taxes.js +58 -0
  198. package/dist/tools/invoicing/taxes.js.map +1 -0
  199. package/dist/tools/invoicing/treasury.d.ts +9 -0
  200. package/dist/tools/invoicing/treasury.d.ts.map +1 -0
  201. package/dist/tools/invoicing/treasury.js +196 -0
  202. package/dist/tools/invoicing/treasury.js.map +1 -0
  203. package/dist/tools/invoicing/warehouses.d.ts +18 -0
  204. package/dist/tools/invoicing/warehouses.d.ts.map +1 -0
  205. package/dist/tools/invoicing/warehouses.js +133 -0
  206. package/dist/tools/invoicing/warehouses.js.map +1 -0
  207. package/dist/tools/projects/index.d.ts +9 -0
  208. package/dist/tools/projects/index.d.ts.map +1 -0
  209. package/dist/tools/projects/index.js +15 -0
  210. package/dist/tools/projects/index.js.map +1 -0
  211. package/dist/tools/projects/projects.d.ts +18 -0
  212. package/dist/tools/projects/projects.d.ts.map +1 -0
  213. package/dist/tools/projects/projects.js +203 -0
  214. package/dist/tools/projects/projects.js.map +1 -0
  215. package/dist/tools/projects/tasks.d.ts +18 -0
  216. package/dist/tools/projects/tasks.d.ts.map +1 -0
  217. package/dist/tools/projects/tasks.js +154 -0
  218. package/dist/tools/projects/tasks.js.map +1 -0
  219. package/dist/tools/projects/time-tracking.d.ts +14 -0
  220. package/dist/tools/projects/time-tracking.d.ts.map +1 -0
  221. package/dist/tools/projects/time-tracking.js +291 -0
  222. package/dist/tools/projects/time-tracking.js.map +1 -0
  223. package/dist/tools/team/employees.d.ts +18 -0
  224. package/dist/tools/team/employees.d.ts.map +1 -0
  225. package/dist/tools/team/employees.js +149 -0
  226. package/dist/tools/team/employees.js.map +1 -0
  227. package/dist/tools/team/index.d.ts +9 -0
  228. package/dist/tools/team/index.d.ts.map +1 -0
  229. package/dist/tools/team/index.js +13 -0
  230. package/dist/tools/team/index.js.map +1 -0
  231. package/dist/tools/team/time-tracking.d.ts +18 -0
  232. package/dist/tools/team/time-tracking.d.ts.map +1 -0
  233. package/dist/tools/team/time-tracking.js +398 -0
  234. package/dist/tools/team/time-tracking.js.map +1 -0
  235. package/dist/tools/utilities.d.ts +45 -0
  236. package/dist/tools/utilities.d.ts.map +1 -0
  237. package/dist/tools/utilities.js +55 -0
  238. package/dist/tools/utilities.js.map +1 -0
  239. package/dist/types.d.ts +640 -0
  240. package/dist/types.d.ts.map +1 -0
  241. package/dist/types.js +29 -0
  242. package/dist/types.js.map +1 -0
  243. package/package.json +70 -0
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Expenses Account tools for Holded API
3
+ */
4
+ import { ListExpensesAccountsInputSchema, GetExpensesAccountInputSchema, CreateExpensesAccountInputSchema, UpdateExpensesAccountInputSchema, DeleteExpensesAccountInputSchema, } from "../../schemas/invoicing/expenses-accounts.js";
5
+ import { registerCrudTools } from "../factory.js";
6
+ /**
7
+ * Format expenses accounts as markdown
8
+ */
9
+ export function formatExpensesAccountsMarkdown(accounts) {
10
+ if (!accounts.length) {
11
+ return "No expenses accounts found.";
12
+ }
13
+ const lines = ["# Expenses Accounts", "", `Found ${accounts.length} expenses accounts:`, ""];
14
+ for (const account of accounts) {
15
+ lines.push(`## ${account.name}`);
16
+ lines.push(`- **ID**: ${account.id}`);
17
+ if (account.code)
18
+ lines.push(`- **Code**: ${account.code}`);
19
+ if (account.description)
20
+ lines.push(`- **Description**: ${account.description}`);
21
+ lines.push("");
22
+ }
23
+ return lines.join("\n");
24
+ }
25
+ /**
26
+ * Format a single expenses account as markdown
27
+ */
28
+ export function formatExpensesAccountMarkdown(account) {
29
+ const lines = [`# ${account.name}`, "", `**ID**: ${account.id}`, ""];
30
+ if (account.code)
31
+ lines.push(`- **Code**: ${account.code}`);
32
+ if (account.description)
33
+ lines.push(`- **Description**: ${account.description}`);
34
+ return lines.join("\n");
35
+ }
36
+ /**
37
+ * Register all expenses account-related tools
38
+ */
39
+ export function registerExpensesAccountTools(server) {
40
+ registerCrudTools(server, {
41
+ module: "invoicing",
42
+ toolPrefix: "holded_invoicing",
43
+ resource: "expenses_account",
44
+ resourcePlural: "expenses_accounts",
45
+ endpoint: "expensesaccounts",
46
+ idParam: "expenses_account_id",
47
+ schemas: {
48
+ list: ListExpensesAccountsInputSchema,
49
+ get: GetExpensesAccountInputSchema,
50
+ create: CreateExpensesAccountInputSchema,
51
+ update: UpdateExpensesAccountInputSchema,
52
+ delete: DeleteExpensesAccountInputSchema,
53
+ },
54
+ titles: {
55
+ list: "List Holded Expenses Accounts",
56
+ get: "Get Holded Expenses Account",
57
+ create: "Create Holded Expenses Account",
58
+ update: "Update Holded Expenses Account",
59
+ delete: "Delete Holded Expenses Account",
60
+ },
61
+ descriptions: {
62
+ list: `List all expenses accounts from Holded.
63
+
64
+ Args:
65
+ - page (number): Page number for pagination (default: 1, max 500 items per page)
66
+ - response_format ('json' | 'markdown'): Output format (default: 'json')
67
+
68
+ Returns:
69
+ Array of expenses accounts with id, name, code, and description.`,
70
+ get: `Get a specific expenses account by ID from Holded.
71
+
72
+ Args:
73
+ - expenses_account_id (string): The expenses account ID to retrieve (required)
74
+ - response_format ('json' | 'markdown'): Output format (default: 'json')
75
+
76
+ Returns:
77
+ Expenses account details including name, code, and description.`,
78
+ create: `Create a new expenses account in Holded.
79
+
80
+ Args:
81
+ - name (string): Expenses account name (required)
82
+ - code (string): Account code
83
+ - description (string): Account description
84
+
85
+ Returns:
86
+ The created expenses account with its assigned ID.`,
87
+ update: `Update an existing expenses account in Holded.
88
+
89
+ Args:
90
+ - expenses_account_id (string): The expenses account ID to update (required)
91
+ - name (string): Expenses account name
92
+ - code (string): Account code
93
+ - description (string): Account description
94
+
95
+ Returns:
96
+ The updated expenses account.`,
97
+ delete: `Delete an expenses account from Holded.
98
+
99
+ Args:
100
+ - expenses_account_id (string): The expenses account ID to delete (required)
101
+
102
+ Returns:
103
+ Confirmation of deletion.`,
104
+ },
105
+ formatters: {
106
+ list: formatExpensesAccountsMarkdown,
107
+ single: formatExpensesAccountMarkdown,
108
+ },
109
+ });
110
+ }
111
+ //# sourceMappingURL=expenses-accounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expenses-accounts.js","sourceRoot":"","sources":["../../../src/tools/invoicing/expenses-accounts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,+BAA+B,EAC/B,6BAA6B,EAC7B,gCAAgC,EAChC,gCAAgC,EAChC,gCAAgC,GACjC,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAUlD;;GAEG;AACH,MAAM,UAAU,8BAA8B,CAAC,QAA2B;IACxE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO,6BAA6B,CAAC;IACvC,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,qBAAqB,EAAE,EAAE,EAAE,SAAS,QAAQ,CAAC,MAAM,qBAAqB,EAAE,EAAE,CAAC,CAAC;IAE7F,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,aAAa,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QACtC,IAAI,OAAO,CAAC,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,eAAe,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5D,IAAI,OAAO,CAAC,WAAW;YAAE,KAAK,CAAC,IAAI,CAAC,sBAAsB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACjF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAAC,OAAwB;IACpE,MAAM,KAAK,GAAG,CAAC,KAAK,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,WAAW,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACrE,IAAI,OAAO,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,eAAe,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5D,IAAI,OAAO,CAAC,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,sBAAsB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAEjF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAAC,MAAiB;IAC5D,iBAAiB,CAAkB,MAAM,EAAE;QACzC,MAAM,EAAE,WAAW;QACnB,UAAU,EAAE,kBAAkB;QAC9B,QAAQ,EAAE,kBAAkB;QAC5B,cAAc,EAAE,mBAAmB;QACnC,QAAQ,EAAE,kBAAkB;QAC5B,OAAO,EAAE,qBAAqB;QAC9B,OAAO,EAAE;YACP,IAAI,EAAE,+BAA+B;YACrC,GAAG,EAAE,6BAA6B;YAClC,MAAM,EAAE,gCAAgC;YACxC,MAAM,EAAE,gCAAgC;YACxC,MAAM,EAAE,gCAAgC;SACzC;QACD,MAAM,EAAE;YACN,IAAI,EAAE,+BAA+B;YACrC,GAAG,EAAE,6BAA6B;YAClC,MAAM,EAAE,gCAAgC;YACxC,MAAM,EAAE,gCAAgC;YACxC,MAAM,EAAE,gCAAgC;SACzC;QACD,YAAY,EAAE;YACZ,IAAI,EAAE;;;;;;;mEAOuD;YAC7D,GAAG,EAAE;;;;;;;kEAOuD;YAC5D,MAAM,EAAE;;;;;;;;qDAQuC;YAC/C,MAAM,EAAE;;;;;;;;;gCASkB;YAC1B,MAAM,EAAE;;;;;;4BAMc;SACvB;QACD,UAAU,EAAE;YACV,IAAI,EAAE,8BAA8B;YACpC,MAAM,EAAE,6BAA6B;SACtC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Invoicing module tools registration
3
+ */
4
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
5
+ /**
6
+ * Register all invoicing-related tools
7
+ */
8
+ export declare function registerInvoicingTools(server: McpServer): void;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/invoicing/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAcpE;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAa9D"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Invoicing module tools registration
3
+ */
4
+ import { registerContactTools } from "./contacts.js";
5
+ import { registerProductTools } from "./products.js";
6
+ import { registerDocumentTools } from "./documents.js";
7
+ import { registerPaymentTools } from "./payments.js";
8
+ import { registerTreasuryTools } from "./treasury.js";
9
+ import { registerNumberingSeriesTools } from "./numbering-series.js";
10
+ import { registerWarehouseTools } from "./warehouses.js";
11
+ import { registerServicesTools } from "./services.js";
12
+ import { registerTaxesTools } from "./taxes.js";
13
+ import { registerSalesChannelTools } from "./sales-channels.js";
14
+ import { registerExpensesAccountTools } from "./expenses-accounts.js";
15
+ import { registerRemittanceTools } from "./remittances.js";
16
+ /**
17
+ * Register all invoicing-related tools
18
+ */
19
+ export function registerInvoicingTools(server) {
20
+ registerContactTools(server);
21
+ registerProductTools(server);
22
+ registerDocumentTools(server);
23
+ registerPaymentTools(server);
24
+ registerTreasuryTools(server);
25
+ registerNumberingSeriesTools(server);
26
+ registerWarehouseTools(server);
27
+ registerServicesTools(server);
28
+ registerTaxesTools(server);
29
+ registerSalesChannelTools(server);
30
+ registerExpensesAccountTools(server);
31
+ registerRemittanceTools(server);
32
+ }
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/invoicing/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9B,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9B,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Numbering Series tools for Holded API
3
+ */
4
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
5
+ /**
6
+ * Register all numbering series-related tools
7
+ */
8
+ export declare function registerNumberingSeriesTools(server: McpServer): void;
9
+ //# sourceMappingURL=numbering-series.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numbering-series.d.ts","sourceRoot":"","sources":["../../../src/tools/invoicing/numbering-series.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgBpE;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2LpE"}
@@ -0,0 +1,161 @@
1
+ /**
2
+ * Numbering Series tools for Holded API
3
+ */
4
+ import { makeApiRequest, toStructuredContent } from "../../services/api.js";
5
+ import { ResponseFormat } from "../../constants.js";
6
+ import { withErrorHandling } from "../utilities.js";
7
+ import { GetNumberingSeriesInputSchema, CreateNumberingSeriesInputSchema, UpdateNumberingSeriesInputSchema, DeleteNumberingSeriesInputSchema, } from "../../schemas/invoicing/numbering-series.js";
8
+ /**
9
+ * Register all numbering series-related tools
10
+ */
11
+ export function registerNumberingSeriesTools(server) {
12
+ // Get Numbering Series
13
+ server.registerTool("holded_invoicing_get_numbering_series", {
14
+ title: "Get Holded Numbering Series",
15
+ description: `Get numbering series for a document type in Holded.
16
+
17
+ Args:
18
+ - doc_type (string): Document type (required)
19
+ - response_format ('json' | 'markdown'): Output format (default: 'json')
20
+
21
+ Returns:
22
+ Array of numbering series with id, name, prefix, suffix, and next number.`,
23
+ inputSchema: GetNumberingSeriesInputSchema,
24
+ annotations: {
25
+ readOnlyHint: true,
26
+ destructiveHint: false,
27
+ idempotentHint: true,
28
+ openWorldHint: true,
29
+ },
30
+ }, withErrorHandling(async (params) => {
31
+ const { doc_type, response_format } = params;
32
+ const series = await makeApiRequest("invoicing", `numberseries/${doc_type}`, "GET");
33
+ let textContent;
34
+ if (response_format === ResponseFormat.MARKDOWN) {
35
+ if (!series.length) {
36
+ textContent = `No numbering series found for ${doc_type}.`;
37
+ }
38
+ else {
39
+ const lines = [`# Numbering Series for ${doc_type}`, "", `Found ${series.length} series:`, ""];
40
+ for (const s of series) {
41
+ lines.push(`## ${s.name}`);
42
+ lines.push(`- **ID**: ${s.id}`);
43
+ if (s.prefix)
44
+ lines.push(`- **Prefix**: ${s.prefix}`);
45
+ if (s.suffix)
46
+ lines.push(`- **Suffix**: ${s.suffix}`);
47
+ lines.push(`- **Next Number**: ${s.nextNumber}`);
48
+ lines.push("");
49
+ }
50
+ textContent = lines.join("\n");
51
+ }
52
+ }
53
+ else {
54
+ textContent = JSON.stringify(series, null, 2);
55
+ }
56
+ return {
57
+ content: [{ type: "text", text: textContent }],
58
+ structuredContent: { series, count: series.length, docType: doc_type },
59
+ };
60
+ }));
61
+ // Create Numbering Series
62
+ server.registerTool("holded_invoicing_create_numbering_serie", {
63
+ title: "Create Holded Numbering Series",
64
+ description: `Create a new numbering series for a document type in Holded.
65
+
66
+ Args:
67
+ - doc_type (string): Document type (required)
68
+ - name (string): Series name (required)
69
+ - format (string): Format string for document numbers (e.g., 'F17%%%%')
70
+ - last (integer): Last number used in the series
71
+ - type (string): Document type (optional, already in path)
72
+
73
+ Returns:
74
+ The created numbering series.`,
75
+ inputSchema: CreateNumberingSeriesInputSchema,
76
+ annotations: {
77
+ readOnlyHint: false,
78
+ destructiveHint: false,
79
+ idempotentHint: false,
80
+ openWorldHint: true,
81
+ },
82
+ }, withErrorHandling(async (params) => {
83
+ const { doc_type, ...seriesData } = params;
84
+ const series = await makeApiRequest("invoicing", `numberseries/${doc_type}`, "POST", seriesData);
85
+ return {
86
+ content: [
87
+ {
88
+ type: "text",
89
+ text: `Numbering series created successfully.\n\n${JSON.stringify(series, null, 2)}`,
90
+ },
91
+ ],
92
+ structuredContent: toStructuredContent(series),
93
+ };
94
+ }));
95
+ // Update Numbering Series
96
+ server.registerTool("holded_invoicing_update_numbering_serie", {
97
+ title: "Update Holded Numbering Series",
98
+ description: `Update an existing numbering series in Holded.
99
+
100
+ Args:
101
+ - doc_type (string): Document type (required)
102
+ - numbering_series_id (string): The numbering series ID to update (required)
103
+ - name (string): Series name
104
+ - format (string): Format string for document numbers
105
+ - last (string): Last number used in the series (string format)
106
+
107
+ Returns:
108
+ The updated numbering series.`,
109
+ inputSchema: UpdateNumberingSeriesInputSchema,
110
+ annotations: {
111
+ readOnlyHint: false,
112
+ destructiveHint: false,
113
+ idempotentHint: true,
114
+ openWorldHint: true,
115
+ },
116
+ }, withErrorHandling(async (params) => {
117
+ const { doc_type, numbering_series_id, ...updateData } = params;
118
+ const series = await makeApiRequest("invoicing", `numberseries/${doc_type}/${numbering_series_id}`, "PUT", updateData);
119
+ return {
120
+ content: [
121
+ {
122
+ type: "text",
123
+ text: `Numbering series updated successfully.\n\n${JSON.stringify(series, null, 2)}`,
124
+ },
125
+ ],
126
+ structuredContent: toStructuredContent(series),
127
+ };
128
+ }));
129
+ // Delete Numbering Series
130
+ server.registerTool("holded_invoicing_delete_numbering_serie", {
131
+ title: "Delete Holded Numbering Series",
132
+ description: `Delete a numbering series from Holded.
133
+
134
+ Args:
135
+ - doc_type (string): Document type (required)
136
+ - numbering_series_id (string): The numbering series ID to delete (required)
137
+
138
+ Returns:
139
+ Confirmation of deletion.`,
140
+ inputSchema: DeleteNumberingSeriesInputSchema,
141
+ annotations: {
142
+ readOnlyHint: false,
143
+ destructiveHint: true,
144
+ idempotentHint: true,
145
+ openWorldHint: true,
146
+ },
147
+ }, withErrorHandling(async (params) => {
148
+ const { doc_type, numbering_series_id } = params;
149
+ await makeApiRequest("invoicing", `numberseries/${doc_type}/${numbering_series_id}`, "DELETE");
150
+ return {
151
+ content: [
152
+ {
153
+ type: "text",
154
+ text: `Numbering series ${numbering_series_id} deleted successfully.`,
155
+ },
156
+ ],
157
+ structuredContent: { deleted: true, id: numbering_series_id, docType: doc_type },
158
+ };
159
+ }));
160
+ }
161
+ //# sourceMappingURL=numbering-series.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numbering-series.js","sourceRoot":"","sources":["../../../src/tools/invoicing/numbering-series.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Payment tools for Holded API
3
+ */
4
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
5
+ import { Payment } from "../../types.js";
6
+ /**
7
+ * Format payments as markdown
8
+ */
9
+ export declare function formatPaymentsMarkdown(payments: Payment[]): string;
10
+ /**
11
+ * Format a single payment as markdown
12
+ */
13
+ export declare function formatPaymentMarkdown(payment: Payment): string;
14
+ /**
15
+ * Register all payment-related tools
16
+ */
17
+ export declare function registerPaymentTools(server: McpServer): void;
18
+ //# sourceMappingURL=payments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payments.d.ts","sourceRoot":"","sources":["../../../src/tools/invoicing/payments.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAazC;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAmBlE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAS9D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuJ5D"}
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Payment tools for Holded API
3
+ */
4
+ import { makeApiRequest, toStructuredContent } from "../../services/api.js";
5
+ import { CreatePaymentInputSchema, ListPaymentsInputSchema, GetPaymentInputSchema, UpdatePaymentInputSchema, DeletePaymentInputSchema, } from "../../schemas/invoicing/payments.js";
6
+ import { registerCrudTools } from "../factory.js";
7
+ import { withErrorHandling } from "../utilities.js";
8
+ /**
9
+ * Format payments as markdown
10
+ */
11
+ export function formatPaymentsMarkdown(payments) {
12
+ if (!payments.length) {
13
+ return "No payments found.";
14
+ }
15
+ const lines = ["# Payments", "", `Found ${payments.length} payments:`, ""];
16
+ for (const payment of payments) {
17
+ lines.push(`## Payment ${payment.id}`);
18
+ lines.push(`- **ID**: ${payment.id}`);
19
+ lines.push(`- **Document ID**: ${payment.docId}`);
20
+ lines.push(`- **Amount**: ${payment.amount}`);
21
+ lines.push(`- **Date**: ${new Date(payment.date * 1000).toLocaleDateString()}`);
22
+ if (payment.accountId)
23
+ lines.push(`- **Account ID**: ${payment.accountId}`);
24
+ if (payment.desc)
25
+ lines.push(`- **Description**: ${payment.desc}`);
26
+ lines.push("");
27
+ }
28
+ return lines.join("\n");
29
+ }
30
+ /**
31
+ * Format a single payment as markdown
32
+ */
33
+ export function formatPaymentMarkdown(payment) {
34
+ const lines = [`# Payment ${payment.id}`, ""];
35
+ lines.push(`- **ID**: ${payment.id}`);
36
+ lines.push(`- **Document ID**: ${payment.docId}`);
37
+ lines.push(`- **Amount**: ${payment.amount}`);
38
+ lines.push(`- **Date**: ${new Date(payment.date * 1000).toLocaleDateString()}`);
39
+ if (payment.accountId)
40
+ lines.push(`- **Account ID**: ${payment.accountId}`);
41
+ if (payment.desc)
42
+ lines.push(`- **Description**: ${payment.desc}`);
43
+ return lines.join("\n");
44
+ }
45
+ /**
46
+ * Register all payment-related tools
47
+ */
48
+ export function registerPaymentTools(server) {
49
+ // ── Standard CRUD via factory (list, get, delete) ─────
50
+ registerCrudTools(server, {
51
+ module: "invoicing",
52
+ toolPrefix: "holded_invoicing",
53
+ resource: "payment",
54
+ resourcePlural: "payments",
55
+ endpoint: "payments",
56
+ idParam: "payment_id",
57
+ schemas: {
58
+ list: ListPaymentsInputSchema,
59
+ get: GetPaymentInputSchema,
60
+ delete: DeletePaymentInputSchema,
61
+ },
62
+ titles: {
63
+ list: "List Holded Payments",
64
+ get: "Get Holded Payment",
65
+ delete: "Delete Holded Payment",
66
+ },
67
+ descriptions: {
68
+ list: `List all payments from Holded.
69
+
70
+ Args:
71
+ - page (number): Page number for pagination (default: 1, max 500 items per page)
72
+ - response_format ('json' | 'markdown'): Output format (default: 'json')
73
+
74
+ Returns:
75
+ Array of payments with id, docId, amount, date, and account information.`,
76
+ get: `Get a specific payment by ID from Holded.
77
+
78
+ Args:
79
+ - payment_id (string): The payment ID to retrieve (required)
80
+ - response_format ('json' | 'markdown'): Output format (default: 'json')
81
+
82
+ Returns:
83
+ Payment details including document ID, amount, date, and account information.`,
84
+ delete: `Delete a payment from Holded.
85
+
86
+ Args:
87
+ - payment_id (string): The payment ID to delete (required)
88
+
89
+ Returns:
90
+ Confirmation of deletion.`,
91
+ },
92
+ formatters: {
93
+ list: formatPaymentsMarkdown,
94
+ single: formatPaymentMarkdown,
95
+ },
96
+ });
97
+ // ── Manual tools (need snake_to_camel conversion) ─────
98
+ // Create Payment
99
+ server.registerTool("holded_invoicing_create_payment", {
100
+ title: "Create Holded Payment",
101
+ description: `Create a payment for a document in Holded.
102
+
103
+ Args:
104
+ - doc_id (string): The document ID to apply the payment to (required)
105
+ - amount (number): Payment amount (required)
106
+ - date (number): Payment date as Unix timestamp
107
+ - account_id (string): Treasury/Bank account ID
108
+ - desc (string): Payment description
109
+
110
+ Returns:
111
+ The created payment confirmation.`,
112
+ inputSchema: CreatePaymentInputSchema,
113
+ annotations: {
114
+ readOnlyHint: false,
115
+ destructiveHint: false,
116
+ idempotentHint: false,
117
+ openWorldHint: true,
118
+ },
119
+ }, withErrorHandling(async (params) => {
120
+ const { doc_id, account_id, ...paymentData } = params;
121
+ const requestData = {
122
+ ...paymentData,
123
+ ...(account_id ? { accountId: account_id } : {}),
124
+ };
125
+ const payment = await makeApiRequest("invoicing", "payments", "POST", { docId: doc_id, ...requestData });
126
+ return {
127
+ content: [
128
+ {
129
+ type: "text",
130
+ text: `Payment created successfully.\n\n${JSON.stringify(payment, null, 2)}`,
131
+ },
132
+ ],
133
+ structuredContent: toStructuredContent(payment),
134
+ };
135
+ }));
136
+ // Update Payment
137
+ server.registerTool("holded_invoicing_update_payment", {
138
+ title: "Update Holded Payment",
139
+ description: `Update an existing payment in Holded.
140
+
141
+ Args:
142
+ - payment_id (string): The payment ID to update (required)
143
+ - amount (number): Payment amount
144
+ - date (number): Payment date as Unix timestamp
145
+ - account_id (string): Treasury/Bank account ID
146
+ - desc (string): Payment description
147
+
148
+ Returns:
149
+ The updated payment.`,
150
+ inputSchema: UpdatePaymentInputSchema,
151
+ annotations: {
152
+ readOnlyHint: false,
153
+ destructiveHint: false,
154
+ idempotentHint: true,
155
+ openWorldHint: true,
156
+ },
157
+ }, withErrorHandling(async (params) => {
158
+ const { payment_id, account_id, ...updateData } = params;
159
+ const requestData = {
160
+ ...updateData,
161
+ ...(account_id ? { accountId: account_id } : {}),
162
+ };
163
+ const payment = await makeApiRequest("invoicing", `payments/${payment_id}`, "PUT", requestData);
164
+ return {
165
+ content: [
166
+ {
167
+ type: "text",
168
+ text: `Payment updated successfully.\n\n${JSON.stringify(payment, null, 2)}`,
169
+ },
170
+ ],
171
+ structuredContent: toStructuredContent(payment),
172
+ };
173
+ }));
174
+ }
175
+ //# sourceMappingURL=payments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payments.js","sourceRoot":"","sources":["../../../src/tools/invoicing/payments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Product tools for Holded API
3
+ */
4
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
5
+ import { Product } from "../../types.js";
6
+ /**
7
+ * Format products as markdown
8
+ */
9
+ export declare function formatProductsMarkdown(products: Product[]): string;
10
+ /**
11
+ * Format a single product as markdown
12
+ */
13
+ export declare function formatProductMarkdown(product: Product): string;
14
+ /**
15
+ * Register all product-related tools
16
+ */
17
+ export declare function registerProductTools(server: McpServer): void;
18
+ //# sourceMappingURL=products.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"products.d.ts","sourceRoot":"","sources":["../../../src/tools/invoicing/products.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,EAAE,OAAO,EAAgB,MAAM,gBAAgB,CAAC;AAuBvD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAkBlE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CA8B9D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0X5D"}