buchpilot-mcp 0.1.1
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/CHANGELOG.md +30 -0
- package/README.md +198 -0
- package/dist/backends/lexoffice.d.ts +23 -0
- package/dist/backends/lexoffice.js +344 -0
- package/dist/backends/types.d.ts +120 -0
- package/dist/backends/types.js +2 -0
- package/dist/config.d.ts +24 -0
- package/dist/config.js +44 -0
- package/dist/errors.d.ts +18 -0
- package/dist/errors.js +22 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +53 -0
- package/dist/tools/contacts.d.ts +75 -0
- package/dist/tools/contacts.js +63 -0
- package/dist/tools/invoices.d.ts +116 -0
- package/dist/tools/invoices.js +92 -0
- package/dist/tools/quotations.d.ts +2 -0
- package/dist/tools/quotations.js +41 -0
- package/dist/tools/sync.d.ts +2 -0
- package/dist/tools/sync.js +37 -0
- package/dist/tools/vouchers.d.ts +2 -0
- package/dist/tools/vouchers.js +43 -0
- package/docs/claude-desktop-setup.md +209 -0
- package/docs/tool-reference.md +497 -0
- package/package.json +24 -0
- package/src/backends/lexoffice.ts +392 -0
- package/src/backends/types.ts +137 -0
- package/src/config.ts +62 -0
- package/src/errors.ts +34 -0
- package/src/index.ts +73 -0
- package/src/tools/contacts.ts +92 -0
- package/src/tools/invoices.ts +128 -0
- package/src/tools/quotations.ts +58 -0
- package/src/tools/sync.ts +50 -0
- package/src/tools/vouchers.ts +65 -0
- package/tsconfig.json +15 -0
|
@@ -0,0 +1,497 @@
|
|
|
1
|
+
# BuchPilot MCP — Tool-Referenz
|
|
2
|
+
|
|
3
|
+
Vollstaendige Referenz aller 15 Tools des BuchPilot MCP Servers.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Kontakte
|
|
8
|
+
|
|
9
|
+
### create_contact
|
|
10
|
+
|
|
11
|
+
Erstellt einen neuen Kontakt (Person oder Firma) im Buchhaltungssystem.
|
|
12
|
+
|
|
13
|
+
**Parameter:**
|
|
14
|
+
|
|
15
|
+
| Parameter | Typ | Pflicht | Default | Beschreibung |
|
|
16
|
+
|-----------|-----|---------|---------|-------------|
|
|
17
|
+
| `type` | `"person"` \| `"company"` | Ja | — | Kontakttyp: Person oder Firma |
|
|
18
|
+
| `name` | string | Ja | — | Nachname (bei Person) oder Firmenname (bei Firma) |
|
|
19
|
+
| `firstName` | string | Nein | — | Vorname (nur bei Person) |
|
|
20
|
+
| `email` | string | Nein | — | E-Mail-Adresse |
|
|
21
|
+
| `role` | `"customer"` \| `"vendor"` \| `"both"` | Nein | `"customer"` | Rolle: Kunde, Lieferant, oder beides |
|
|
22
|
+
| `backend` | string | Nein | Default-Backend | Backend (z.B. "lexoffice") |
|
|
23
|
+
|
|
24
|
+
**Beispiel-Input:**
|
|
25
|
+
|
|
26
|
+
```json
|
|
27
|
+
{
|
|
28
|
+
"type": "company",
|
|
29
|
+
"name": "Beispiel GmbH",
|
|
30
|
+
"email": "info@beispiel.de",
|
|
31
|
+
"role": "customer"
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**Beispiel-Output:**
|
|
36
|
+
|
|
37
|
+
```json
|
|
38
|
+
{
|
|
39
|
+
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
|
40
|
+
"type": "company",
|
|
41
|
+
"name": "Beispiel GmbH",
|
|
42
|
+
"email": "info@beispiel.de",
|
|
43
|
+
"role": "customer",
|
|
44
|
+
"backend": "lexoffice",
|
|
45
|
+
"raw": { "...": "Lexoffice-spezifische Rohdaten" }
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
### get_contact
|
|
52
|
+
|
|
53
|
+
Ruft einen Kontakt per ID ab.
|
|
54
|
+
|
|
55
|
+
**Parameter:**
|
|
56
|
+
|
|
57
|
+
| Parameter | Typ | Pflicht | Default | Beschreibung |
|
|
58
|
+
|-----------|-----|---------|---------|-------------|
|
|
59
|
+
| `id` | string | Ja | — | Kontakt-ID |
|
|
60
|
+
| `backend` | string | Nein | Default-Backend | Backend |
|
|
61
|
+
|
|
62
|
+
**Beispiel-Input:**
|
|
63
|
+
|
|
64
|
+
```json
|
|
65
|
+
{
|
|
66
|
+
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Beispiel-Output:**
|
|
71
|
+
|
|
72
|
+
```json
|
|
73
|
+
{
|
|
74
|
+
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
|
75
|
+
"type": "company",
|
|
76
|
+
"name": "Beispiel GmbH",
|
|
77
|
+
"email": "info@beispiel.de",
|
|
78
|
+
"role": "customer",
|
|
79
|
+
"backend": "lexoffice",
|
|
80
|
+
"raw": { "...": "..." }
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
### list_contacts
|
|
87
|
+
|
|
88
|
+
Listet Kontakte auf mit optionalen Filtern.
|
|
89
|
+
|
|
90
|
+
**Parameter:**
|
|
91
|
+
|
|
92
|
+
| Parameter | Typ | Pflicht | Default | Beschreibung |
|
|
93
|
+
|-----------|-----|---------|---------|-------------|
|
|
94
|
+
| `name` | string | Nein | — | Nach Name filtern (Teilsuche) |
|
|
95
|
+
| `email` | string | Nein | — | Nach E-Mail filtern |
|
|
96
|
+
| `role` | `"customer"` \| `"vendor"` | Nein | — | Nach Rolle filtern |
|
|
97
|
+
| `limit` | number | Nein | 25 | Maximale Anzahl Ergebnisse |
|
|
98
|
+
| `backend` | string | Nein | Default-Backend | Backend |
|
|
99
|
+
|
|
100
|
+
**Beispiel-Input:**
|
|
101
|
+
|
|
102
|
+
```json
|
|
103
|
+
{
|
|
104
|
+
"role": "customer",
|
|
105
|
+
"limit": 10
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**Beispiel-Output:**
|
|
110
|
+
|
|
111
|
+
```json
|
|
112
|
+
[
|
|
113
|
+
{
|
|
114
|
+
"id": "a1b2c3d4-...",
|
|
115
|
+
"type": "company",
|
|
116
|
+
"name": "Beispiel GmbH",
|
|
117
|
+
"email": "info@beispiel.de",
|
|
118
|
+
"role": "customer",
|
|
119
|
+
"backend": "lexoffice",
|
|
120
|
+
"raw": { "...": "..." }
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"id": "b2c3d4e5-...",
|
|
124
|
+
"type": "person",
|
|
125
|
+
"name": "Mustermann",
|
|
126
|
+
"firstName": "Max",
|
|
127
|
+
"email": "max@mustermann.de",
|
|
128
|
+
"role": "customer",
|
|
129
|
+
"backend": "lexoffice",
|
|
130
|
+
"raw": { "...": "..." }
|
|
131
|
+
}
|
|
132
|
+
]
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
### update_contact
|
|
138
|
+
|
|
139
|
+
Aktualisiert einen bestehenden Kontakt. Nur die uebergebenen Felder werden geaendert.
|
|
140
|
+
|
|
141
|
+
**Parameter:**
|
|
142
|
+
|
|
143
|
+
| Parameter | Typ | Pflicht | Default | Beschreibung |
|
|
144
|
+
|-----------|-----|---------|---------|-------------|
|
|
145
|
+
| `id` | string | Ja | — | Kontakt-ID |
|
|
146
|
+
| `name` | string | Nein | — | Neuer Name |
|
|
147
|
+
| `firstName` | string | Nein | — | Neuer Vorname |
|
|
148
|
+
| `email` | string | Nein | — | Neue E-Mail |
|
|
149
|
+
| `backend` | string | Nein | Default-Backend | Backend |
|
|
150
|
+
|
|
151
|
+
**Beispiel-Input:**
|
|
152
|
+
|
|
153
|
+
```json
|
|
154
|
+
{
|
|
155
|
+
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
|
156
|
+
"email": "neu@beispiel.de"
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Rechnungen
|
|
163
|
+
|
|
164
|
+
### create_invoice
|
|
165
|
+
|
|
166
|
+
Erstellt eine neue Rechnung mit Positionen.
|
|
167
|
+
|
|
168
|
+
**Parameter:**
|
|
169
|
+
|
|
170
|
+
| Parameter | Typ | Pflicht | Default | Beschreibung |
|
|
171
|
+
|-----------|-----|---------|---------|-------------|
|
|
172
|
+
| `contactId` | string | Ja | — | Kontakt-ID des Rechnungsempfaengers |
|
|
173
|
+
| `date` | string | Ja | — | Rechnungsdatum (ISO 8601, z.B. `2026-03-18`) |
|
|
174
|
+
| `lineItems` | Array | Ja | — | Rechnungspositionen (mind. 1) |
|
|
175
|
+
| `lineItems[].name` | string | Ja | — | Positionsname |
|
|
176
|
+
| `lineItems[].quantity` | number | Nein | 1 | Menge |
|
|
177
|
+
| `lineItems[].unitPrice` | number | Ja | — | Einzelpreis netto |
|
|
178
|
+
| `lineItems[].taxRate` | number | Nein | 19 | Steuersatz in Prozent |
|
|
179
|
+
| `title` | string | Nein | — | Rechnungstitel |
|
|
180
|
+
| `introduction` | string | Nein | — | Einleitungstext |
|
|
181
|
+
| `remark` | string | Nein | — | Schlusstext |
|
|
182
|
+
| `currency` | string | Nein | `"EUR"` | Waehrung |
|
|
183
|
+
| `finalize` | boolean | Nein | `false` | Rechnung direkt finalisieren (nicht mehr editierbar) |
|
|
184
|
+
| `backend` | string | Nein | Default-Backend | Backend |
|
|
185
|
+
|
|
186
|
+
**Beispiel-Input:**
|
|
187
|
+
|
|
188
|
+
```json
|
|
189
|
+
{
|
|
190
|
+
"contactId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
|
191
|
+
"date": "2026-03-18",
|
|
192
|
+
"lineItems": [
|
|
193
|
+
{ "name": "Beratung", "quantity": 10, "unitPrice": 150.00, "taxRate": 19 },
|
|
194
|
+
{ "name": "Softwarelizenz", "quantity": 1, "unitPrice": 499.00, "taxRate": 19 }
|
|
195
|
+
],
|
|
196
|
+
"title": "Rechnung Maerz 2026",
|
|
197
|
+
"introduction": "Vielen Dank fuer Ihren Auftrag.",
|
|
198
|
+
"remark": "Zahlbar innerhalb von 14 Tagen.",
|
|
199
|
+
"finalize": false
|
|
200
|
+
}
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
**Beispiel-Output:**
|
|
204
|
+
|
|
205
|
+
```json
|
|
206
|
+
{
|
|
207
|
+
"id": "inv-1234-5678-abcd",
|
|
208
|
+
"number": "RE-2026-0042",
|
|
209
|
+
"contactId": "a1b2c3d4-...",
|
|
210
|
+
"date": "2026-03-18",
|
|
211
|
+
"dueDate": "2026-04-01",
|
|
212
|
+
"status": "draft",
|
|
213
|
+
"totalNet": 1999.00,
|
|
214
|
+
"totalGross": 2378.81,
|
|
215
|
+
"currency": "EUR",
|
|
216
|
+
"lineItems": [
|
|
217
|
+
{ "name": "Beratung", "quantity": 10, "unitPrice": 150.00, "taxRate": 19 },
|
|
218
|
+
{ "name": "Softwarelizenz", "quantity": 1, "unitPrice": 499.00, "taxRate": 19 }
|
|
219
|
+
],
|
|
220
|
+
"backend": "lexoffice",
|
|
221
|
+
"raw": { "...": "..." }
|
|
222
|
+
}
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
### get_invoice
|
|
228
|
+
|
|
229
|
+
Ruft eine Rechnung per ID ab.
|
|
230
|
+
|
|
231
|
+
**Parameter:**
|
|
232
|
+
|
|
233
|
+
| Parameter | Typ | Pflicht | Default | Beschreibung |
|
|
234
|
+
|-----------|-----|---------|---------|-------------|
|
|
235
|
+
| `id` | string | Ja | — | Rechnungs-ID |
|
|
236
|
+
| `backend` | string | Nein | Default-Backend | Backend |
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
### list_invoices
|
|
241
|
+
|
|
242
|
+
Listet Rechnungen auf. Kann nach Status und Kontakt gefiltert werden.
|
|
243
|
+
|
|
244
|
+
**Parameter:**
|
|
245
|
+
|
|
246
|
+
| Parameter | Typ | Pflicht | Default | Beschreibung |
|
|
247
|
+
|-----------|-----|---------|---------|-------------|
|
|
248
|
+
| `status` | `"draft"` \| `"open"` \| `"paid"` \| `"overdue"` | Nein | — | Nach Status filtern |
|
|
249
|
+
| `contactId` | string | Nein | — | Nach Kontakt filtern |
|
|
250
|
+
| `limit` | number | Nein | 25 | Maximale Anzahl |
|
|
251
|
+
| `backend` | string | Nein | Default-Backend | Backend |
|
|
252
|
+
|
|
253
|
+
**Beispiel-Input:**
|
|
254
|
+
|
|
255
|
+
```json
|
|
256
|
+
{
|
|
257
|
+
"status": "open",
|
|
258
|
+
"limit": 10
|
|
259
|
+
}
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
### get_invoice_pdf
|
|
265
|
+
|
|
266
|
+
Laedt eine Rechnung als PDF herunter (Base64-kodiert). Die Rechnung muss finalisiert sein (Status "open" oder "paid").
|
|
267
|
+
|
|
268
|
+
**Parameter:**
|
|
269
|
+
|
|
270
|
+
| Parameter | Typ | Pflicht | Default | Beschreibung |
|
|
271
|
+
|-----------|-----|---------|---------|-------------|
|
|
272
|
+
| `id` | string | Ja | — | Rechnungs-ID |
|
|
273
|
+
| `backend` | string | Nein | Default-Backend | Backend |
|
|
274
|
+
|
|
275
|
+
**Beispiel-Output:**
|
|
276
|
+
|
|
277
|
+
```json
|
|
278
|
+
{
|
|
279
|
+
"filename": "RE-2026-0042.pdf",
|
|
280
|
+
"size_bytes": 45231
|
|
281
|
+
}
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
Zusaetzlich wird die PDF als Base64-kodierte Ressource zurueckgegeben.
|
|
285
|
+
|
|
286
|
+
---
|
|
287
|
+
|
|
288
|
+
### update_invoice
|
|
289
|
+
|
|
290
|
+
Aktualisiert eine bestehende Rechnung. Nur Entwuerfe (Status "draft") koennen aktualisiert werden.
|
|
291
|
+
|
|
292
|
+
**Parameter:**
|
|
293
|
+
|
|
294
|
+
| Parameter | Typ | Pflicht | Default | Beschreibung |
|
|
295
|
+
|-----------|-----|---------|---------|-------------|
|
|
296
|
+
| `id` | string | Ja | — | Rechnungs-ID |
|
|
297
|
+
| `title` | string | Nein | — | Neuer Titel |
|
|
298
|
+
| `introduction` | string | Nein | — | Neuer Einleitungstext |
|
|
299
|
+
| `remark` | string | Nein | — | Neuer Schlusstext |
|
|
300
|
+
| `backend` | string | Nein | Default-Backend | Backend |
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
304
|
+
## Belege
|
|
305
|
+
|
|
306
|
+
### create_voucher
|
|
307
|
+
|
|
308
|
+
Erstellt einen neuen Beleg (Eingangsrechnung oder Gutschrift).
|
|
309
|
+
|
|
310
|
+
**Parameter:**
|
|
311
|
+
|
|
312
|
+
| Parameter | Typ | Pflicht | Default | Beschreibung |
|
|
313
|
+
|-----------|-----|---------|---------|-------------|
|
|
314
|
+
| `type` | `"purchaseinvoice"` \| `"purchasecreditnote"` \| `"any"` | Ja | — | Belegtyp |
|
|
315
|
+
| `date` | string | Ja | — | Belegdatum (ISO 8601) |
|
|
316
|
+
| `totalGross` | number | Ja | — | Bruttobetrag |
|
|
317
|
+
| `taxRate` | number | Nein | 19 | Steuersatz in Prozent |
|
|
318
|
+
| `contactId` | string | Nein | — | Kontakt-ID (optional) |
|
|
319
|
+
| `remark` | string | Nein | — | Bemerkung |
|
|
320
|
+
| `backend` | string | Nein | Default-Backend | Backend |
|
|
321
|
+
|
|
322
|
+
**Beispiel-Input:**
|
|
323
|
+
|
|
324
|
+
```json
|
|
325
|
+
{
|
|
326
|
+
"type": "purchaseinvoice",
|
|
327
|
+
"date": "2026-03-15",
|
|
328
|
+
"totalGross": 119.00,
|
|
329
|
+
"taxRate": 19,
|
|
330
|
+
"remark": "Bueromaterial"
|
|
331
|
+
}
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
**Beispiel-Output:**
|
|
335
|
+
|
|
336
|
+
```json
|
|
337
|
+
{
|
|
338
|
+
"id": "voucher-abc-123",
|
|
339
|
+
"type": "purchaseinvoice",
|
|
340
|
+
"date": "2026-03-15",
|
|
341
|
+
"totalGross": 119.00,
|
|
342
|
+
"taxRate": 19,
|
|
343
|
+
"backend": "lexoffice",
|
|
344
|
+
"raw": { "...": "..." }
|
|
345
|
+
}
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
---
|
|
349
|
+
|
|
350
|
+
### get_voucher
|
|
351
|
+
|
|
352
|
+
Ruft einen Beleg per ID ab.
|
|
353
|
+
|
|
354
|
+
**Parameter:**
|
|
355
|
+
|
|
356
|
+
| Parameter | Typ | Pflicht | Default | Beschreibung |
|
|
357
|
+
|-----------|-----|---------|---------|-------------|
|
|
358
|
+
| `id` | string | Ja | — | Beleg-ID |
|
|
359
|
+
| `backend` | string | Nein | Default-Backend | Backend |
|
|
360
|
+
|
|
361
|
+
---
|
|
362
|
+
|
|
363
|
+
### list_vouchers
|
|
364
|
+
|
|
365
|
+
Listet Belege auf mit optionalen Filtern.
|
|
366
|
+
|
|
367
|
+
**Parameter:**
|
|
368
|
+
|
|
369
|
+
| Parameter | Typ | Pflicht | Default | Beschreibung |
|
|
370
|
+
|-----------|-----|---------|---------|-------------|
|
|
371
|
+
| `type` | `"purchaseinvoice"` \| `"purchasecreditnote"` \| `"any"` | Nein | — | Nach Typ filtern |
|
|
372
|
+
| `limit` | number | Nein | 25 | Maximale Anzahl |
|
|
373
|
+
| `backend` | string | Nein | Default-Backend | Backend |
|
|
374
|
+
|
|
375
|
+
---
|
|
376
|
+
|
|
377
|
+
## Angebote
|
|
378
|
+
|
|
379
|
+
### create_quotation
|
|
380
|
+
|
|
381
|
+
Erstellt ein neues Angebot mit Positionen.
|
|
382
|
+
|
|
383
|
+
**Parameter:**
|
|
384
|
+
|
|
385
|
+
| Parameter | Typ | Pflicht | Default | Beschreibung |
|
|
386
|
+
|-----------|-----|---------|---------|-------------|
|
|
387
|
+
| `contactId` | string | Ja | — | Kontakt-ID |
|
|
388
|
+
| `date` | string | Ja | — | Angebotsdatum (ISO 8601) |
|
|
389
|
+
| `lineItems` | Array | Ja | — | Angebotspositionen (mind. 1) |
|
|
390
|
+
| `lineItems[].name` | string | Ja | — | Positionsname |
|
|
391
|
+
| `lineItems[].quantity` | number | Nein | 1 | Menge |
|
|
392
|
+
| `lineItems[].unitPrice` | number | Ja | — | Einzelpreis netto |
|
|
393
|
+
| `lineItems[].taxRate` | number | Nein | 19 | Steuersatz in Prozent |
|
|
394
|
+
| `expirationDate` | string | Nein | — | Gueltig bis (ISO 8601) |
|
|
395
|
+
| `title` | string | Nein | — | Angebotstitel |
|
|
396
|
+
| `introduction` | string | Nein | — | Einleitungstext |
|
|
397
|
+
| `remark` | string | Nein | — | Schlusstext |
|
|
398
|
+
| `finalize` | boolean | Nein | `false` | Angebot direkt finalisieren |
|
|
399
|
+
| `backend` | string | Nein | Default-Backend | Backend |
|
|
400
|
+
|
|
401
|
+
**Beispiel-Input:**
|
|
402
|
+
|
|
403
|
+
```json
|
|
404
|
+
{
|
|
405
|
+
"contactId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
|
406
|
+
"date": "2026-03-18",
|
|
407
|
+
"expirationDate": "2026-04-18",
|
|
408
|
+
"lineItems": [
|
|
409
|
+
{ "name": "Webseiten-Redesign", "quantity": 1, "unitPrice": 4500.00 },
|
|
410
|
+
{ "name": "SEO-Optimierung", "quantity": 1, "unitPrice": 1200.00 }
|
|
411
|
+
],
|
|
412
|
+
"title": "Angebot Webprojekt",
|
|
413
|
+
"introduction": "Gerne unterbreiten wir Ihnen folgendes Angebot."
|
|
414
|
+
}
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
**Beispiel-Output:**
|
|
418
|
+
|
|
419
|
+
```json
|
|
420
|
+
{
|
|
421
|
+
"id": "quot-9876-abcd",
|
|
422
|
+
"contactId": "a1b2c3d4-...",
|
|
423
|
+
"date": "2026-03-18",
|
|
424
|
+
"expirationDate": "2026-04-18",
|
|
425
|
+
"totalNet": 5700.00,
|
|
426
|
+
"totalGross": 6783.00,
|
|
427
|
+
"lineItems": [
|
|
428
|
+
{ "name": "Webseiten-Redesign", "quantity": 1, "unitPrice": 4500.00, "taxRate": 19 },
|
|
429
|
+
{ "name": "SEO-Optimierung", "quantity": 1, "unitPrice": 1200.00, "taxRate": 19 }
|
|
430
|
+
],
|
|
431
|
+
"backend": "lexoffice",
|
|
432
|
+
"raw": { "...": "..." }
|
|
433
|
+
}
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
---
|
|
437
|
+
|
|
438
|
+
### get_quotation
|
|
439
|
+
|
|
440
|
+
Ruft ein Angebot per ID ab.
|
|
441
|
+
|
|
442
|
+
**Parameter:**
|
|
443
|
+
|
|
444
|
+
| Parameter | Typ | Pflicht | Default | Beschreibung |
|
|
445
|
+
|-----------|-----|---------|---------|-------------|
|
|
446
|
+
| `id` | string | Ja | — | Angebots-ID |
|
|
447
|
+
| `backend` | string | Nein | Default-Backend | Backend |
|
|
448
|
+
|
|
449
|
+
---
|
|
450
|
+
|
|
451
|
+
## Ueberfaellige Rechnungen
|
|
452
|
+
|
|
453
|
+
### get_overdue_invoices
|
|
454
|
+
|
|
455
|
+
Listet alle ueberfaelligen Rechnungen mit Betrag, Faelligkeitsdatum und Tagen ueberfaellig auf.
|
|
456
|
+
|
|
457
|
+
**Parameter:**
|
|
458
|
+
|
|
459
|
+
| Parameter | Typ | Pflicht | Default | Beschreibung |
|
|
460
|
+
|-----------|-----|---------|---------|-------------|
|
|
461
|
+
| `days_overdue` | number | Nein | 0 | Mindestens X Tage ueberfaellig (0 = alle ueberfaelligen) |
|
|
462
|
+
| `limit` | number | Nein | 50 | Maximale Anzahl |
|
|
463
|
+
| `backend` | string | Nein | Default-Backend | Backend |
|
|
464
|
+
|
|
465
|
+
**Beispiel-Input:**
|
|
466
|
+
|
|
467
|
+
```json
|
|
468
|
+
{
|
|
469
|
+
"days_overdue": 30
|
|
470
|
+
}
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
**Beispiel-Output:**
|
|
474
|
+
|
|
475
|
+
```json
|
|
476
|
+
{
|
|
477
|
+
"count": 2,
|
|
478
|
+
"total_overdue_amount": 3456.78,
|
|
479
|
+
"currency": "EUR",
|
|
480
|
+
"invoices": [
|
|
481
|
+
{
|
|
482
|
+
"id": "inv-1111-aaaa",
|
|
483
|
+
"number": "RE-2026-0031",
|
|
484
|
+
"totalGross": 2380.00,
|
|
485
|
+
"dueDate": "2026-02-01",
|
|
486
|
+
"daysOverdue": 45
|
|
487
|
+
},
|
|
488
|
+
{
|
|
489
|
+
"id": "inv-2222-bbbb",
|
|
490
|
+
"number": "RE-2026-0035",
|
|
491
|
+
"totalGross": 1076.78,
|
|
492
|
+
"dueDate": "2026-02-15",
|
|
493
|
+
"daysOverdue": 31
|
|
494
|
+
}
|
|
495
|
+
]
|
|
496
|
+
}
|
|
497
|
+
```
|
package/package.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "buchpilot-mcp",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "MCP Server fuer DACH-Buchhaltung (Lexoffice, Billomat, sevDesk)",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"buchpilot-mcp": "dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"start": "node dist/index.js",
|
|
13
|
+
"dev": "tsx src/index.ts"
|
|
14
|
+
},
|
|
15
|
+
"dependencies": {
|
|
16
|
+
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
17
|
+
"zod": "^3.23.0"
|
|
18
|
+
},
|
|
19
|
+
"devDependencies": {
|
|
20
|
+
"@types/node": "^22.0.0",
|
|
21
|
+
"tsx": "^4.0.0",
|
|
22
|
+
"typescript": "^5.5.0"
|
|
23
|
+
}
|
|
24
|
+
}
|