@tailormade/billit-mcp 1.0.0 → 1.1.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/dist/index.js
CHANGED
|
@@ -11,6 +11,7 @@ const peppol_js_1 = require("./tools/peppol.js");
|
|
|
11
11
|
const documents_js_1 = require("./tools/documents.js");
|
|
12
12
|
const financial_js_1 = require("./tools/financial.js");
|
|
13
13
|
const toprocess_js_1 = require("./tools/toprocess.js");
|
|
14
|
+
const workflows_js_1 = require("./tools/workflows.js");
|
|
14
15
|
function getRequiredEnv(name) {
|
|
15
16
|
const value = process.env[name];
|
|
16
17
|
if (!value)
|
|
@@ -32,6 +33,7 @@ async function main() {
|
|
|
32
33
|
(0, documents_js_1.registerDocumentTools)(server, client);
|
|
33
34
|
(0, financial_js_1.registerFinancialTools)(server, client);
|
|
34
35
|
(0, toprocess_js_1.registerToProcessTools)(server, client);
|
|
36
|
+
(0, workflows_js_1.registerWorkflowTools)(server, client);
|
|
35
37
|
const transport = new stdio_js_1.StdioServerTransport();
|
|
36
38
|
await server.connect(transport);
|
|
37
39
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,oEAAoE;AACpE,wEAAiF;AACjF,+CAA+C;AAC/C,iDAAuD;AACvD,mDAAwD;AACxD,qDAA2D;AAC3D,iDAAwD;AACxD,uDAA6D;AAC7D,uDAA8D;AAC9D,uDAA8D;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,oEAAoE;AACpE,wEAAiF;AACjF,+CAA+C;AAC/C,iDAAuD;AACvD,mDAAwD;AACxD,qDAA2D;AAC3D,iDAAwD;AACxD,uDAA6D;AAC7D,uDAA8D;AAC9D,uDAA8D;AAC9D,uDAA6D;AAE7D,SAAS,cAAc,CAAC,IAAY;IAClC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,EAAE,CAAC,CAAC;IAC9E,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClG,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;QAC3D,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,EAAE,CAAC;QACtD,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,MAAM,GAAG,IAAI,wBAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;IAErE,MAAM,MAAM,GAAG,IAAI,kBAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAEvE,IAAA,8BAAkB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,IAAA,+BAAkB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,IAAA,kCAAoB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,IAAA,+BAAmB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,IAAA,oCAAqB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,IAAA,qCAAsB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,IAAA,qCAAsB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,IAAA,oCAAqB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEtC,MAAM,SAAS,GAAG,IAAI,+BAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../src/tools/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAkDhD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,QAqN5E"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerWorkflowTools = registerWorkflowTools;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
function respond(text) {
|
|
6
|
+
return { content: [{ type: "text", text }] };
|
|
7
|
+
}
|
|
8
|
+
const companyId = zod_1.z.coerce.number().optional()
|
|
9
|
+
.describe("Billit PartyID of the company to act as. If not set, uses BILLIT_PARTY_ID env. If env is 0, call billit_get_account_info first to discover available companies.");
|
|
10
|
+
function registerWorkflowTools(server, client) {
|
|
11
|
+
server.tool("billit_check_peppol_coverage", "WORKFLOW (multi-step): Scans all outgoing invoices (Income/Invoice) since a date, deduplicates customers by VAT number, and checks each unique VAT against the Peppol network. Returns two groups: customers NOT on Peppol (priority list for onboarding) and customers already on Peppol.\n\nUSE THIS when the user asks: 'which customers are not on Peppol?', 'who should I onboard to e-invoicing?', 'check Peppol coverage', 'which invoices can't be sent via Peppol?'\nDO NOT use this for a single VAT lookup — use billit_peppol_lookup_participant instead.\n\nOUTPUT: { summary: { period_from, total_customers_with_vat, not_on_peppol, on_peppol }, not_on_peppol: [{ vat, name, invoiceCount, totalAmount, invoices[] }] sorted by totalAmount desc, on_peppol: [{ vat, name, invoiceCount }] }\n\nNOTE: May be slow if there are many invoices — paginates through all pages automatically. Peppol lookups run in parallel.", {
|
|
12
|
+
since_date: zod_1.z.string().optional()
|
|
13
|
+
.describe("Start date for invoice scan (YYYY-MM-DD). Default: 2026-01-01. Use a recent date to limit scope and improve speed."),
|
|
14
|
+
company_id: companyId,
|
|
15
|
+
}, async ({ since_date, company_id }) => {
|
|
16
|
+
const fromDate = since_date ?? "2026-01-01";
|
|
17
|
+
// Fetch all outgoing invoices since date (paginate through all pages)
|
|
18
|
+
const allOrders = [];
|
|
19
|
+
let skip = 0;
|
|
20
|
+
const pageSize = 120;
|
|
21
|
+
while (true) {
|
|
22
|
+
const filter = `OrderDirection eq 'Income' and OrderType eq 'Invoice' and OrderDate ge datetime'${fromDate}T00:00:00'`;
|
|
23
|
+
const params = new URLSearchParams({
|
|
24
|
+
"$filter": filter,
|
|
25
|
+
"$top": String(pageSize),
|
|
26
|
+
"$skip": String(skip),
|
|
27
|
+
"$orderby": "OrderDate desc",
|
|
28
|
+
});
|
|
29
|
+
const page = await client.request("GET", `/v1/orders?${params.toString()}`, undefined, company_id);
|
|
30
|
+
const items = page?.Items ?? [];
|
|
31
|
+
allOrders.push(...items);
|
|
32
|
+
if (items.length < pageSize)
|
|
33
|
+
break;
|
|
34
|
+
skip += pageSize;
|
|
35
|
+
}
|
|
36
|
+
// Deduplicate by VAT number — collect unique VATs with their invoices
|
|
37
|
+
const byVat = new Map();
|
|
38
|
+
for (const order of allOrders) {
|
|
39
|
+
const vat = order.CounterParty?.VATNumber;
|
|
40
|
+
if (!vat)
|
|
41
|
+
continue;
|
|
42
|
+
if (!byVat.has(vat)) {
|
|
43
|
+
byVat.set(vat, { name: order.CounterParty.DisplayName, invoices: [] });
|
|
44
|
+
}
|
|
45
|
+
byVat.get(vat).invoices.push({
|
|
46
|
+
id: order.OrderID,
|
|
47
|
+
number: order.OrderNumber,
|
|
48
|
+
date: order.OrderDate.slice(0, 10),
|
|
49
|
+
amount: order.TotalIncl,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
// Check Peppol registration for each unique VAT in parallel
|
|
53
|
+
const vatList = Array.from(byVat.entries());
|
|
54
|
+
const peppolResults = await Promise.all(vatList.map(([vat]) => client.request("GET", `/v1/peppol/participantInformation/${vat}`)
|
|
55
|
+
.then(r => ({ vat, registered: r?.Registered ?? false }))
|
|
56
|
+
.catch(() => ({ vat, registered: false }))));
|
|
57
|
+
const notOnPeppol = [];
|
|
58
|
+
const onPeppol = [];
|
|
59
|
+
for (const { vat, registered } of peppolResults) {
|
|
60
|
+
const entry = byVat.get(vat);
|
|
61
|
+
const totalAmount = entry.invoices.reduce((sum, i) => sum + i.amount, 0);
|
|
62
|
+
if (registered) {
|
|
63
|
+
onPeppol.push({ vat, name: entry.name, invoiceCount: entry.invoices.length });
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
notOnPeppol.push({ vat, name: entry.name, invoiceCount: entry.invoices.length, totalAmount, invoices: entry.invoices });
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const result = {
|
|
70
|
+
summary: {
|
|
71
|
+
period_from: fromDate,
|
|
72
|
+
total_customers_with_vat: vatList.length,
|
|
73
|
+
not_on_peppol: notOnPeppol.length,
|
|
74
|
+
on_peppol: onPeppol.length,
|
|
75
|
+
},
|
|
76
|
+
not_on_peppol: notOnPeppol.sort((a, b) => b.totalAmount - a.totalAmount),
|
|
77
|
+
on_peppol: onPeppol,
|
|
78
|
+
};
|
|
79
|
+
return respond(JSON.stringify(result, null, 2));
|
|
80
|
+
});
|
|
81
|
+
server.tool("billit_peppol_send_report", "WORKFLOW (multi-step): Scans all outgoing invoices (Income/Invoice) since a date and reports their Peppol send status. For each invoice with a VAT number: checks if customer is on Peppol, then fetches full order to check if it was actually sent via Peppol.\n\nUSE THIS when the user asks: 'which invoices were sent via Peppol?', 'which Peppol invoices are not yet sent?', 'Peppol send status overview', 'which invoices still need to be sent via Peppol?', 'have all Peppol invoices been dispatched?'\nDO NOT use this to check if a customer is on Peppol — use billit_check_peppol_coverage or billit_peppol_lookup_participant instead.\nDO NOT use this to send invoices — use billit_peppol_send_order to dispatch a single invoice.\n\nOUTPUT: { summary: { period_from, total_invoices, sent_via_peppol, on_peppol_not_sent, not_on_peppol, no_vat }, sent_via_peppol: [{ id, number, date, amount, vat, customer, deliveryStatus }], on_peppol_not_sent: [...], not_on_peppol: [...] }\n\nNOTE: Slower than billit_check_peppol_coverage — fetches full order details for every Peppol-eligible invoice (N requests). Use a recent since_date to limit scope. Peppol send is detected via order Messages (TransportType='Peppol') or CurrentDocumentDeliveryDetails.IsDocumentDelivered.", {
|
|
82
|
+
since_date: zod_1.z.string().optional()
|
|
83
|
+
.describe("Start date for invoice scan (YYYY-MM-DD). Default: 2026-01-01. Use a recent date (e.g. current month) to limit scope and reduce API calls."),
|
|
84
|
+
company_id: companyId,
|
|
85
|
+
}, async ({ since_date, company_id }) => {
|
|
86
|
+
const fromDate = since_date ?? "2026-01-01";
|
|
87
|
+
// 1. Paginate all Income invoices since date
|
|
88
|
+
const allOrders = [];
|
|
89
|
+
let skip = 0;
|
|
90
|
+
const pageSize = 120;
|
|
91
|
+
while (true) {
|
|
92
|
+
const filter = `OrderDirection eq 'Income' and OrderType eq 'Invoice' and OrderDate ge datetime'${fromDate}T00:00:00'`;
|
|
93
|
+
const params = new URLSearchParams({
|
|
94
|
+
"$filter": filter,
|
|
95
|
+
"$top": String(pageSize),
|
|
96
|
+
"$skip": String(skip),
|
|
97
|
+
"$orderby": "OrderDate desc",
|
|
98
|
+
});
|
|
99
|
+
const page = await client.request("GET", `/v1/orders?${params.toString()}`, undefined, company_id);
|
|
100
|
+
const items = page?.Items ?? [];
|
|
101
|
+
allOrders.push(...items);
|
|
102
|
+
if (items.length < pageSize)
|
|
103
|
+
break;
|
|
104
|
+
skip += pageSize;
|
|
105
|
+
}
|
|
106
|
+
// 2. Split: no VAT / has VAT
|
|
107
|
+
const noVat = [];
|
|
108
|
+
const hasVat = [];
|
|
109
|
+
for (const order of allOrders) {
|
|
110
|
+
if (!order.CounterParty?.VATNumber)
|
|
111
|
+
noVat.push(order);
|
|
112
|
+
else
|
|
113
|
+
hasVat.push(order);
|
|
114
|
+
}
|
|
115
|
+
// 3. Deduplicate VATs for Peppol lookup
|
|
116
|
+
const uniqueVats = [...new Set(hasVat.map(o => o.CounterParty.VATNumber))];
|
|
117
|
+
const peppolMap = new Map();
|
|
118
|
+
await Promise.all(uniqueVats.map(vat => client.request("GET", `/v1/peppol/participantInformation/${vat}`)
|
|
119
|
+
.then(r => peppolMap.set(vat, r?.Registered ?? false))
|
|
120
|
+
.catch(() => peppolMap.set(vat, false))));
|
|
121
|
+
// 4. Split into Peppol-eligible vs not
|
|
122
|
+
const notOnPeppolOrders = [];
|
|
123
|
+
const peppolEligible = [];
|
|
124
|
+
for (const order of hasVat) {
|
|
125
|
+
const vat = order.CounterParty.VATNumber;
|
|
126
|
+
if (peppolMap.get(vat))
|
|
127
|
+
peppolEligible.push(order);
|
|
128
|
+
else
|
|
129
|
+
notOnPeppolOrders.push(order);
|
|
130
|
+
}
|
|
131
|
+
const fullOrderResults = await Promise.all(peppolEligible.map(order => client.request("GET", `/v1/orders/${order.OrderID}`, undefined, company_id)
|
|
132
|
+
.then(full => {
|
|
133
|
+
// Check Messages for Peppol send
|
|
134
|
+
const peppolMsg = full?.Messages?.find(m => m.TransportType === "Peppol" || m.ExternalProvider === "Peppol");
|
|
135
|
+
const sent = !!(peppolMsg?.SentDate || peppolMsg?.DeliveredDate ||
|
|
136
|
+
full?.CurrentDocumentDeliveryDetails?.IsDocumentDelivered);
|
|
137
|
+
const deliveryStatus = full?.CurrentDocumentDeliveryDetails?.DocumentDeliveryStatus;
|
|
138
|
+
return { order, sent, deliveryStatus };
|
|
139
|
+
})
|
|
140
|
+
.catch(() => ({ order, sent: false }))));
|
|
141
|
+
const sentViaPeppol = [];
|
|
142
|
+
const onPeppolNotSent = [];
|
|
143
|
+
for (const { order, sent, deliveryStatus } of fullOrderResults) {
|
|
144
|
+
const info = {
|
|
145
|
+
id: order.OrderID,
|
|
146
|
+
number: order.OrderNumber,
|
|
147
|
+
date: order.OrderDate.slice(0, 10),
|
|
148
|
+
amount: order.TotalIncl,
|
|
149
|
+
vat: order.CounterParty.VATNumber,
|
|
150
|
+
customer: order.CounterParty.DisplayName,
|
|
151
|
+
deliveryStatus,
|
|
152
|
+
};
|
|
153
|
+
if (sent)
|
|
154
|
+
sentViaPeppol.push(info);
|
|
155
|
+
else
|
|
156
|
+
onPeppolNotSent.push(info);
|
|
157
|
+
}
|
|
158
|
+
const notOnPeppol = notOnPeppolOrders.map(o => ({
|
|
159
|
+
id: o.OrderID,
|
|
160
|
+
number: o.OrderNumber,
|
|
161
|
+
date: o.OrderDate.slice(0, 10),
|
|
162
|
+
amount: o.TotalIncl,
|
|
163
|
+
vat: o.CounterParty.VATNumber,
|
|
164
|
+
customer: o.CounterParty.DisplayName,
|
|
165
|
+
}));
|
|
166
|
+
const result = {
|
|
167
|
+
summary: {
|
|
168
|
+
period_from: fromDate,
|
|
169
|
+
total_invoices: allOrders.length,
|
|
170
|
+
no_vat: noVat.length,
|
|
171
|
+
sent_via_peppol: sentViaPeppol.length,
|
|
172
|
+
on_peppol_not_sent: onPeppolNotSent.length,
|
|
173
|
+
not_on_peppol: notOnPeppol.length,
|
|
174
|
+
},
|
|
175
|
+
sent_via_peppol: sentViaPeppol,
|
|
176
|
+
on_peppol_not_sent: onPeppolNotSent,
|
|
177
|
+
not_on_peppol: notOnPeppol,
|
|
178
|
+
};
|
|
179
|
+
return respond(JSON.stringify(result, null, 2));
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=workflows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../src/tools/workflows.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tailormade/billit-mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "MCP server for the Billit invoicing API — orders, parties, products, Peppol, documents and more.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": { "billit-mcp": "dist/index.js" },
|