@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.
- package/LICENSE +21 -0
- package/README.md +1040 -0
- package/dist/constants.d.ts +60 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +72 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +86 -0
- package/dist/index.js.map +1 -0
- package/dist/schemas/accounting/account-balances.d.ts +19 -0
- package/dist/schemas/accounting/account-balances.d.ts.map +1 -0
- package/dist/schemas/accounting/account-balances.js +28 -0
- package/dist/schemas/accounting/account-balances.js.map +1 -0
- package/dist/schemas/accounting/accounts.d.ts +49 -0
- package/dist/schemas/accounting/accounts.d.ts.map +1 -0
- package/dist/schemas/accounting/accounts.js +50 -0
- package/dist/schemas/accounting/accounts.js.map +1 -0
- package/dist/schemas/accounting/daily-ledger.d.ts +45 -0
- package/dist/schemas/accounting/daily-ledger.d.ts.map +1 -0
- package/dist/schemas/accounting/daily-ledger.js +57 -0
- package/dist/schemas/accounting/daily-ledger.js.map +1 -0
- package/dist/schemas/common.d.ts +118 -0
- package/dist/schemas/common.d.ts.map +1 -0
- package/dist/schemas/common.js +126 -0
- package/dist/schemas/common.js.map +1 -0
- package/dist/schemas/crm/bookings.d.ts +108 -0
- package/dist/schemas/crm/bookings.d.ts.map +1 -0
- package/dist/schemas/crm/bookings.js +96 -0
- package/dist/schemas/crm/bookings.js.map +1 -0
- package/dist/schemas/crm/events.d.ts +57 -0
- package/dist/schemas/crm/events.d.ts.map +1 -0
- package/dist/schemas/crm/events.js +53 -0
- package/dist/schemas/crm/events.js.map +1 -0
- package/dist/schemas/crm/funnels.d.ts +60 -0
- package/dist/schemas/crm/funnels.d.ts.map +1 -0
- package/dist/schemas/crm/funnels.js +48 -0
- package/dist/schemas/crm/funnels.js.map +1 -0
- package/dist/schemas/crm/leads.d.ts +146 -0
- package/dist/schemas/crm/leads.d.ts.map +1 -0
- package/dist/schemas/crm/leads.js +129 -0
- package/dist/schemas/crm/leads.js.map +1 -0
- package/dist/schemas/invoicing/contacts.d.ts +352 -0
- package/dist/schemas/invoicing/contacts.d.ts.map +1 -0
- package/dist/schemas/invoicing/contacts.js +187 -0
- package/dist/schemas/invoicing/contacts.js.map +1 -0
- package/dist/schemas/invoicing/documents.d.ts +424 -0
- package/dist/schemas/invoicing/documents.d.ts.map +1 -0
- package/dist/schemas/invoicing/documents.js +217 -0
- package/dist/schemas/invoicing/documents.js.map +1 -0
- package/dist/schemas/invoicing/expenses-accounts.d.ts +47 -0
- package/dist/schemas/invoicing/expenses-accounts.d.ts.map +1 -0
- package/dist/schemas/invoicing/expenses-accounts.js +43 -0
- package/dist/schemas/invoicing/expenses-accounts.js.map +1 -0
- package/dist/schemas/invoicing/numbering-series.d.ts +94 -0
- package/dist/schemas/invoicing/numbering-series.d.ts.map +1 -0
- package/dist/schemas/invoicing/numbering-series.js +43 -0
- package/dist/schemas/invoicing/numbering-series.js.map +1 -0
- package/dist/schemas/invoicing/payments.d.ts +50 -0
- package/dist/schemas/invoicing/payments.d.ts.map +1 -0
- package/dist/schemas/invoicing/payments.js +46 -0
- package/dist/schemas/invoicing/payments.js.map +1 -0
- package/dist/schemas/invoicing/products.d.ts +176 -0
- package/dist/schemas/invoicing/products.d.ts.map +1 -0
- package/dist/schemas/invoicing/products.js +149 -0
- package/dist/schemas/invoicing/products.js.map +1 -0
- package/dist/schemas/invoicing/remittances.d.ts +21 -0
- package/dist/schemas/invoicing/remittances.d.ts.map +1 -0
- package/dist/schemas/invoicing/remittances.js +20 -0
- package/dist/schemas/invoicing/remittances.js.map +1 -0
- package/dist/schemas/invoicing/sales-channels.d.ts +45 -0
- package/dist/schemas/invoicing/sales-channels.d.ts.map +1 -0
- package/dist/schemas/invoicing/sales-channels.js +41 -0
- package/dist/schemas/invoicing/sales-channels.js.map +1 -0
- package/dist/schemas/invoicing/services.d.ts +55 -0
- package/dist/schemas/invoicing/services.d.ts.map +1 -0
- package/dist/schemas/invoicing/services.js +51 -0
- package/dist/schemas/invoicing/services.js.map +1 -0
- package/dist/schemas/invoicing/taxes.d.ts +12 -0
- package/dist/schemas/invoicing/taxes.d.ts.map +1 -0
- package/dist/schemas/invoicing/taxes.js +12 -0
- package/dist/schemas/invoicing/taxes.js.map +1 -0
- package/dist/schemas/invoicing/treasury.d.ts +42 -0
- package/dist/schemas/invoicing/treasury.d.ts.map +1 -0
- package/dist/schemas/invoicing/treasury.js +39 -0
- package/dist/schemas/invoicing/treasury.js.map +1 -0
- package/dist/schemas/invoicing/warehouses.d.ts +61 -0
- package/dist/schemas/invoicing/warehouses.d.ts.map +1 -0
- package/dist/schemas/invoicing/warehouses.js +43 -0
- package/dist/schemas/invoicing/warehouses.js.map +1 -0
- package/dist/schemas/projects/projects.d.ts +60 -0
- package/dist/schemas/projects/projects.d.ts.map +1 -0
- package/dist/schemas/projects/projects.js +55 -0
- package/dist/schemas/projects/projects.js.map +1 -0
- package/dist/schemas/projects/tasks.d.ts +68 -0
- package/dist/schemas/projects/tasks.d.ts.map +1 -0
- package/dist/schemas/projects/tasks.js +64 -0
- package/dist/schemas/projects/tasks.js.map +1 -0
- package/dist/schemas/projects/time-tracking.d.ts +80 -0
- package/dist/schemas/projects/time-tracking.d.ts.map +1 -0
- package/dist/schemas/projects/time-tracking.js +75 -0
- package/dist/schemas/projects/time-tracking.js.map +1 -0
- package/dist/schemas/team/employees.d.ts +135 -0
- package/dist/schemas/team/employees.d.ts.map +1 -0
- package/dist/schemas/team/employees.js +144 -0
- package/dist/schemas/team/employees.js.map +1 -0
- package/dist/schemas/team/time-tracking.d.ts +98 -0
- package/dist/schemas/team/time-tracking.d.ts.map +1 -0
- package/dist/schemas/team/time-tracking.js +89 -0
- package/dist/schemas/team/time-tracking.js.map +1 -0
- package/dist/services/api.d.ts +118 -0
- package/dist/services/api.d.ts.map +1 -0
- package/dist/services/api.js +441 -0
- package/dist/services/api.js.map +1 -0
- package/dist/tools/accounting/account-balances.d.ts +44 -0
- package/dist/tools/accounting/account-balances.d.ts.map +1 -0
- package/dist/tools/accounting/account-balances.js +240 -0
- package/dist/tools/accounting/account-balances.js.map +1 -0
- package/dist/tools/accounting/accounts.d.ts +18 -0
- package/dist/tools/accounting/accounts.d.ts.map +1 -0
- package/dist/tools/accounting/accounts.js +131 -0
- package/dist/tools/accounting/accounts.js.map +1 -0
- package/dist/tools/accounting/daily-ledger.d.ts +9 -0
- package/dist/tools/accounting/daily-ledger.d.ts.map +1 -0
- package/dist/tools/accounting/daily-ledger.js +117 -0
- package/dist/tools/accounting/daily-ledger.js.map +1 -0
- package/dist/tools/accounting/index.d.ts +9 -0
- package/dist/tools/accounting/index.d.ts.map +1 -0
- package/dist/tools/accounting/index.js +15 -0
- package/dist/tools/accounting/index.js.map +1 -0
- package/dist/tools/crm/bookings.d.ts +18 -0
- package/dist/tools/crm/bookings.d.ts.map +1 -0
- package/dist/tools/crm/bookings.js +272 -0
- package/dist/tools/crm/bookings.js.map +1 -0
- package/dist/tools/crm/events.d.ts +18 -0
- package/dist/tools/crm/events.d.ts.map +1 -0
- package/dist/tools/crm/events.js +134 -0
- package/dist/tools/crm/events.js.map +1 -0
- package/dist/tools/crm/funnels.d.ts +18 -0
- package/dist/tools/crm/funnels.d.ts.map +1 -0
- package/dist/tools/crm/funnels.js +113 -0
- package/dist/tools/crm/funnels.js.map +1 -0
- package/dist/tools/crm/index.d.ts +9 -0
- package/dist/tools/crm/index.d.ts.map +1 -0
- package/dist/tools/crm/index.js +17 -0
- package/dist/tools/crm/index.js.map +1 -0
- package/dist/tools/crm/leads.d.ts +18 -0
- package/dist/tools/crm/leads.d.ts.map +1 -0
- package/dist/tools/crm/leads.js +519 -0
- package/dist/tools/crm/leads.js.map +1 -0
- package/dist/tools/factory.d.ts +55 -0
- package/dist/tools/factory.d.ts.map +1 -0
- package/dist/tools/factory.js +145 -0
- package/dist/tools/factory.js.map +1 -0
- package/dist/tools/invoicing/contacts.d.ts +26 -0
- package/dist/tools/invoicing/contacts.d.ts.map +1 -0
- package/dist/tools/invoicing/contacts.js +358 -0
- package/dist/tools/invoicing/contacts.js.map +1 -0
- package/dist/tools/invoicing/documents.d.ts +18 -0
- package/dist/tools/invoicing/documents.d.ts.map +1 -0
- package/dist/tools/invoicing/documents.js +578 -0
- package/dist/tools/invoicing/documents.js.map +1 -0
- package/dist/tools/invoicing/expenses-accounts.d.ts +25 -0
- package/dist/tools/invoicing/expenses-accounts.d.ts.map +1 -0
- package/dist/tools/invoicing/expenses-accounts.js +111 -0
- package/dist/tools/invoicing/expenses-accounts.js.map +1 -0
- package/dist/tools/invoicing/index.d.ts +9 -0
- package/dist/tools/invoicing/index.d.ts.map +1 -0
- package/dist/tools/invoicing/index.js +33 -0
- package/dist/tools/invoicing/index.js.map +1 -0
- package/dist/tools/invoicing/numbering-series.d.ts +9 -0
- package/dist/tools/invoicing/numbering-series.d.ts.map +1 -0
- package/dist/tools/invoicing/numbering-series.js +161 -0
- package/dist/tools/invoicing/numbering-series.js.map +1 -0
- package/dist/tools/invoicing/payments.d.ts +18 -0
- package/dist/tools/invoicing/payments.d.ts.map +1 -0
- package/dist/tools/invoicing/payments.js +175 -0
- package/dist/tools/invoicing/payments.js.map +1 -0
- package/dist/tools/invoicing/products.d.ts +18 -0
- package/dist/tools/invoicing/products.d.ts.map +1 -0
- package/dist/tools/invoicing/products.js +389 -0
- package/dist/tools/invoicing/products.js.map +1 -0
- package/dist/tools/invoicing/remittances.d.ts +17 -0
- package/dist/tools/invoicing/remittances.d.ts.map +1 -0
- package/dist/tools/invoicing/remittances.js +76 -0
- package/dist/tools/invoicing/remittances.js.map +1 -0
- package/dist/tools/invoicing/sales-channels.d.ts +24 -0
- package/dist/tools/invoicing/sales-channels.d.ts.map +1 -0
- package/dist/tools/invoicing/sales-channels.js +105 -0
- package/dist/tools/invoicing/sales-channels.js.map +1 -0
- package/dist/tools/invoicing/services.d.ts +29 -0
- package/dist/tools/invoicing/services.d.ts.map +1 -0
- package/dist/tools/invoicing/services.js +124 -0
- package/dist/tools/invoicing/services.js.map +1 -0
- package/dist/tools/invoicing/taxes.d.ts +18 -0
- package/dist/tools/invoicing/taxes.d.ts.map +1 -0
- package/dist/tools/invoicing/taxes.js +58 -0
- package/dist/tools/invoicing/taxes.js.map +1 -0
- package/dist/tools/invoicing/treasury.d.ts +9 -0
- package/dist/tools/invoicing/treasury.d.ts.map +1 -0
- package/dist/tools/invoicing/treasury.js +196 -0
- package/dist/tools/invoicing/treasury.js.map +1 -0
- package/dist/tools/invoicing/warehouses.d.ts +18 -0
- package/dist/tools/invoicing/warehouses.d.ts.map +1 -0
- package/dist/tools/invoicing/warehouses.js +133 -0
- package/dist/tools/invoicing/warehouses.js.map +1 -0
- package/dist/tools/projects/index.d.ts +9 -0
- package/dist/tools/projects/index.d.ts.map +1 -0
- package/dist/tools/projects/index.js +15 -0
- package/dist/tools/projects/index.js.map +1 -0
- package/dist/tools/projects/projects.d.ts +18 -0
- package/dist/tools/projects/projects.d.ts.map +1 -0
- package/dist/tools/projects/projects.js +203 -0
- package/dist/tools/projects/projects.js.map +1 -0
- package/dist/tools/projects/tasks.d.ts +18 -0
- package/dist/tools/projects/tasks.d.ts.map +1 -0
- package/dist/tools/projects/tasks.js +154 -0
- package/dist/tools/projects/tasks.js.map +1 -0
- package/dist/tools/projects/time-tracking.d.ts +14 -0
- package/dist/tools/projects/time-tracking.d.ts.map +1 -0
- package/dist/tools/projects/time-tracking.js +291 -0
- package/dist/tools/projects/time-tracking.js.map +1 -0
- package/dist/tools/team/employees.d.ts +18 -0
- package/dist/tools/team/employees.d.ts.map +1 -0
- package/dist/tools/team/employees.js +149 -0
- package/dist/tools/team/employees.js.map +1 -0
- package/dist/tools/team/index.d.ts +9 -0
- package/dist/tools/team/index.d.ts.map +1 -0
- package/dist/tools/team/index.js +13 -0
- package/dist/tools/team/index.js.map +1 -0
- package/dist/tools/team/time-tracking.d.ts +18 -0
- package/dist/tools/team/time-tracking.d.ts.map +1 -0
- package/dist/tools/team/time-tracking.js +398 -0
- package/dist/tools/team/time-tracking.js.map +1 -0
- package/dist/tools/utilities.d.ts +45 -0
- package/dist/tools/utilities.d.ts.map +1 -0
- package/dist/tools/utilities.js +55 -0
- package/dist/tools/utilities.js.map +1 -0
- package/dist/types.d.ts +640 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +29 -0
- package/dist/types.js.map +1 -0
- 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"}
|