boondmanager-mcp-server 2.3.0 → 2.4.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 (56) hide show
  1. package/dist/constants.d.ts +3 -1
  2. package/dist/constants.d.ts.map +1 -1
  3. package/dist/constants.js +7 -0
  4. package/dist/constants.js.map +1 -1
  5. package/dist/schemas/index.d.ts +38 -0
  6. package/dist/schemas/index.d.ts.map +1 -1
  7. package/dist/schemas/index.js +59 -0
  8. package/dist/schemas/index.js.map +1 -1
  9. package/dist/server.d.ts.map +1 -1
  10. package/dist/server.js +2 -1
  11. package/dist/server.js.map +1 -1
  12. package/dist/services/boond-client.d.ts +27 -1
  13. package/dist/services/boond-client.d.ts.map +1 -1
  14. package/dist/services/boond-client.js +134 -4
  15. package/dist/services/boond-client.js.map +1 -1
  16. package/dist/tools/absences.d.ts.map +1 -1
  17. package/dist/tools/absences.js +12 -20
  18. package/dist/tools/absences.js.map +1 -1
  19. package/dist/tools/actions.d.ts.map +1 -1
  20. package/dist/tools/actions.js +4 -16
  21. package/dist/tools/actions.js.map +1 -1
  22. package/dist/tools/crud-factory.d.ts +40 -2
  23. package/dist/tools/crud-factory.d.ts.map +1 -1
  24. package/dist/tools/crud-factory.js +164 -16
  25. package/dist/tools/crud-factory.js.map +1 -1
  26. package/dist/tools/documents.d.ts +3 -0
  27. package/dist/tools/documents.d.ts.map +1 -0
  28. package/dist/tools/documents.js +118 -0
  29. package/dist/tools/documents.js.map +1 -0
  30. package/dist/tools/expenses.d.ts.map +1 -1
  31. package/dist/tools/expenses.js +17 -20
  32. package/dist/tools/expenses.js.map +1 -1
  33. package/dist/tools/index.d.ts +1 -0
  34. package/dist/tools/index.d.ts.map +1 -1
  35. package/dist/tools/index.js +1 -0
  36. package/dist/tools/index.js.map +1 -1
  37. package/dist/tools/invoices.d.ts.map +1 -1
  38. package/dist/tools/invoices.js +12 -20
  39. package/dist/tools/invoices.js.map +1 -1
  40. package/dist/tools/orders.d.ts.map +1 -1
  41. package/dist/tools/orders.js +12 -20
  42. package/dist/tools/orders.js.map +1 -1
  43. package/dist/tools/positionings.d.ts.map +1 -1
  44. package/dist/tools/positionings.js +13 -18
  45. package/dist/tools/positionings.js.map +1 -1
  46. package/dist/tools/purchases.d.ts.map +1 -1
  47. package/dist/tools/purchases.js +16 -21
  48. package/dist/tools/purchases.js.map +1 -1
  49. package/dist/tools/resources.d.ts.map +1 -1
  50. package/dist/tools/resources.js +12 -1
  51. package/dist/tools/resources.js.map +1 -1
  52. package/dist/transports/http.d.ts.map +1 -1
  53. package/dist/transports/http.js +15 -0
  54. package/dist/transports/http.js.map +1 -1
  55. package/manifest.json +11 -3
  56. package/package.json +1 -1
@@ -1,9 +1,131 @@
1
- import { apiRequest, buildSearchQuery, formatListResponse, formatDetailResponse } from "../services/boond-client.js";
1
+ import { z } from "zod";
2
+ import { apiRequest, buildSearchQuery, formatListResponse, formatDetailResponse, formatEntitySummary, } from "../services/boond-client.js";
2
3
  import { SearchSchema, IdSchema, IdTabSchema } from "../schemas/index.js";
4
+ // ---- Structured output schemas (MCP outputSchema / structuredContent) ----
5
+ // Deliberately compact: the structured payload mirrors the text summary
6
+ // (ids + one-line summaries, or the caller-selected `fields`), never the full
7
+ // JSON:API resources — duplicating those would defeat the token economy of
8
+ // the text formatters. Detail (`get`) tools keep text-only output for the
9
+ // same reason: their text is already the machine-parseable JSON.
10
+ export const SearchOutputSchema = z.object({
11
+ total: z.number().optional().describe("Nombre total de résultats côté BoondManager"),
12
+ count: z.number().describe("Nombre d'éléments retournés sur cette page"),
13
+ items: z.array(z.object({
14
+ id: z.string().optional(),
15
+ type: z.string().optional(),
16
+ summary: z.string().optional().describe("Résumé standard (absent si `fields` est fourni)"),
17
+ attributes: z
18
+ .record(z.string(), z.unknown())
19
+ .optional()
20
+ .describe("Attributs projetés (présent si `fields` est fourni)"),
21
+ })),
22
+ });
23
+ export const MutationOutputSchema = z.object({
24
+ id: z.string().optional().describe("Identifiant de l'entité créée/modifiée"),
25
+ type: z.string().optional(),
26
+ });
27
+ export const DeleteOutputSchema = z.object({
28
+ id: z.string(),
29
+ deleted: z.boolean(),
30
+ reason: z.string().optional().describe("Présent quand la suppression n'a pas eu lieu (ex: refus utilisateur)"),
31
+ });
32
+ /** Build the compact structured payload for a search result page. Exported for unit testing. */
33
+ export function buildListStructured(response, fields) {
34
+ const data = (Array.isArray(response.data) ? response.data : [response.data]).filter((e) => e !== null && e !== undefined);
35
+ const projected = fields !== undefined && fields.length > 0;
36
+ const items = data.map((entity) => {
37
+ const item = {};
38
+ if (entity.id !== undefined)
39
+ item.id = String(entity.id);
40
+ if (entity.type !== undefined)
41
+ item.type = String(entity.type);
42
+ if (projected) {
43
+ const attrs = (entity.attributes ?? {});
44
+ const selected = {};
45
+ for (const field of fields) {
46
+ if (attrs[field] !== undefined)
47
+ selected[field] = attrs[field];
48
+ }
49
+ item.attributes = selected;
50
+ }
51
+ else {
52
+ item.summary = formatEntitySummary(entity);
53
+ }
54
+ return item;
55
+ });
56
+ const total = response.meta?.totals?.rows;
57
+ return {
58
+ ...(typeof total === "number" ? { total } : {}),
59
+ count: items.length,
60
+ items,
61
+ };
62
+ }
63
+ function entityRef(response) {
64
+ const entity = Array.isArray(response.data) ? response.data[0] : response.data;
65
+ const ref = {};
66
+ if (entity?.id !== undefined)
67
+ ref.id = String(entity.id);
68
+ if (entity?.type !== undefined)
69
+ ref.type = String(entity.type);
70
+ return ref;
71
+ }
72
+ // ---- Delete confirmation via MCP elicitation ----
73
+ /** `BOOND_MCP_CONFIRM_DELETE=0|false|no|off` opts out of the confirmation prompt. */
74
+ function deleteConfirmationDisabled() {
75
+ const v = process.env.BOOND_MCP_CONFIRM_DELETE;
76
+ if (!v)
77
+ return false;
78
+ return ["0", "false", "no", "off"].includes(v.trim().toLowerCase());
79
+ }
80
+ /**
81
+ * Ask the end user to confirm a destructive delete through MCP elicitation
82
+ * (spec 2025-06-18). Clients that don't declare the `elicitation` capability
83
+ * keep the legacy behaviour (delete proceeds — `destructiveHint` already lets
84
+ * hosts gate the call). A failed elicitation round-trip (e.g. stateless HTTP
85
+ * quirks) also falls back to legacy rather than breaking deletes; only an
86
+ * explicit decline/cancel/`confirm=false` aborts.
87
+ */
88
+ export async function confirmDeletion(server, entityName, id) {
89
+ if (deleteConfirmationDisabled())
90
+ return { confirmed: true };
91
+ let supportsElicitation;
92
+ try {
93
+ supportsElicitation = Boolean(server.server.getClientCapabilities()?.elicitation);
94
+ }
95
+ catch {
96
+ return { confirmed: true };
97
+ }
98
+ if (!supportsElicitation)
99
+ return { confirmed: true };
100
+ try {
101
+ const result = await server.server.elicitInput({
102
+ message: `Confirmer la suppression définitive de ${entityName} #${id} dans BoondManager ? Cette action est irréversible.`,
103
+ requestedSchema: {
104
+ type: "object",
105
+ properties: {
106
+ confirm: {
107
+ type: "boolean",
108
+ title: "Confirmer la suppression",
109
+ description: `Supprimer ${entityName} #${id}`,
110
+ },
111
+ },
112
+ required: ["confirm"],
113
+ },
114
+ });
115
+ if (result.action === "accept" && result.content?.confirm === true) {
116
+ return { confirmed: true };
117
+ }
118
+ return { confirmed: false, reason: result.action === "accept" ? "confirm=false" : result.action };
119
+ }
120
+ catch {
121
+ return { confirmed: true };
122
+ }
123
+ }
3
124
  export function registerSearchTool(server, opts, overrides = {}) {
4
125
  const schema = overrides.schema ?? SearchSchema;
5
126
  const title = overrides.title ?? `Rechercher des ${opts.entityNamePlural}`;
6
- const description = overrides.description ?? `Recherche des ${opts.entityNamePlural} dans BoondManager par mots-clés avec pagination.
127
+ const description = overrides.description ??
128
+ `Recherche des ${opts.entityNamePlural} dans BoondManager par mots-clés avec pagination.
7
129
 
8
130
  Args:
9
131
  - keywords (string, optional): Termes de recherche (nom, email, compétences...)
@@ -15,6 +137,7 @@ Returns: Liste des ${opts.entityNamePlural} correspondants avec leur ID, nom et
15
137
  title,
16
138
  description,
17
139
  inputSchema: schema,
140
+ outputSchema: SearchOutputSchema,
18
141
  annotations: {
19
142
  readOnlyHint: true,
20
143
  destructiveHint: false,
@@ -22,11 +145,13 @@ Returns: Liste des ${opts.entityNamePlural} correspondants avec leur ID, nom et
22
145
  openWorldHint: true,
23
146
  },
24
147
  }, async (params) => {
25
- const query = buildSearchQuery(params);
148
+ const p = params;
149
+ const query = buildSearchQuery(p);
26
150
  const response = await apiRequest(opts.apiPath, "GET", undefined, query);
27
- const text = formatListResponse(response, opts.entityName);
151
+ const text = formatListResponse(response, opts.entityName, p.fields);
28
152
  return {
29
153
  content: [{ type: "text", text }],
154
+ structuredContent: buildListStructured(response, p.fields),
30
155
  };
31
156
  });
32
157
  }
@@ -48,9 +173,7 @@ Returns: Données JSON complètes de l'entité.`,
48
173
  openWorldHint: false,
49
174
  },
50
175
  }, async (params) => {
51
- const path = params.tab
52
- ? `${opts.apiPath}/${params.id}/${params.tab}`
53
- : `${opts.apiPath}/${params.id}`;
176
+ const path = params.tab ? `${opts.apiPath}/${params.id}/${params.tab}` : `${opts.apiPath}/${params.id}`;
54
177
  const response = await apiRequest(path);
55
178
  const text = formatDetailResponse(response);
56
179
  return {
@@ -65,6 +188,7 @@ export function registerCreateTool(server, opts, schema, buildBody) {
65
188
 
66
189
  Returns: Données du/de la ${opts.entityName} créé(e) avec son ID.`,
67
190
  inputSchema: schema,
191
+ outputSchema: MutationOutputSchema,
68
192
  annotations: {
69
193
  readOnlyHint: false,
70
194
  destructiveHint: false,
@@ -76,10 +200,13 @@ Returns: Données du/de la ${opts.entityName} créé(e) avec son ID.`,
76
200
  const response = await apiRequest(opts.apiPath, "POST", body);
77
201
  const entity = Array.isArray(response.data) ? response.data[0] : response.data;
78
202
  return {
79
- content: [{
203
+ content: [
204
+ {
80
205
  type: "text",
81
206
  text: `✅ ${opts.entityName} créé(e) avec succès.\nID: ${entity?.id}\n\n${formatDetailResponse(response)}`,
82
- }],
207
+ },
208
+ ],
209
+ structuredContent: entityRef(response),
83
210
  };
84
211
  });
85
212
  }
@@ -90,6 +217,7 @@ export function registerUpdateTool(server, opts, schema, buildBody) {
90
217
 
91
218
  Returns: Données mises à jour du/de la ${opts.entityName}.`,
92
219
  inputSchema: schema,
220
+ outputSchema: MutationOutputSchema,
93
221
  annotations: {
94
222
  readOnlyHint: false,
95
223
  destructiveHint: false,
@@ -102,21 +230,26 @@ Returns: Données mises à jour du/de la ${opts.entityName}.`,
102
230
  const body = buildBody(p);
103
231
  const response = await apiRequest(`${opts.apiPath}/${id}`, "PATCH", body);
104
232
  return {
105
- content: [{
233
+ content: [
234
+ {
106
235
  type: "text",
107
236
  text: `✅ ${opts.entityName} #${id} mis(e) à jour.\n\n${formatDetailResponse(response)}`,
108
- }],
237
+ },
238
+ ],
239
+ structuredContent: { id, ...entityRef(response) },
109
240
  };
110
241
  });
111
242
  }
112
- export function registerDeleteTool(server, opts) {
243
+ export function registerDeleteTool(server, opts, overrides = {}) {
113
244
  server.registerTool(`${opts.prefix}_delete`, {
114
- title: `Supprimer un(e) ${opts.entityName}`,
115
- description: `Supprime un(e) ${opts.entityName} de BoondManager. ⚠️ Action irréversible.
245
+ title: overrides.title ?? `Supprimer un(e) ${opts.entityName}`,
246
+ description: overrides.description ??
247
+ `Supprime un(e) ${opts.entityName} de BoondManager. ⚠️ Action irréversible. Si le client MCP supporte l'élicitation, une confirmation est demandée à l'utilisateur avant la suppression.
116
248
 
117
249
  Args:
118
250
  - id (string): Identifiant de l'entité à supprimer`,
119
251
  inputSchema: IdSchema,
252
+ outputSchema: DeleteOutputSchema,
120
253
  annotations: {
121
254
  readOnlyHint: false,
122
255
  destructiveHint: true,
@@ -124,12 +257,27 @@ Args:
124
257
  openWorldHint: false,
125
258
  },
126
259
  }, async (params) => {
260
+ const confirmation = await confirmDeletion(server, opts.entityName, params.id);
261
+ if (!confirmation.confirmed) {
262
+ return {
263
+ content: [
264
+ {
265
+ type: "text",
266
+ text: `❌ Suppression de ${opts.entityName} #${params.id} annulée par l'utilisateur.`,
267
+ },
268
+ ],
269
+ structuredContent: { id: params.id, deleted: false, reason: confirmation.reason ?? "declined" },
270
+ };
271
+ }
127
272
  await apiRequest(`${opts.apiPath}/${params.id}`, "DELETE");
128
273
  return {
129
- content: [{
274
+ content: [
275
+ {
130
276
  type: "text",
131
277
  text: `🗑️ ${opts.entityName} #${params.id} supprimé(e).`,
132
- }],
278
+ },
279
+ ],
280
+ structuredContent: { id: params.id, deleted: true },
133
281
  };
134
282
  });
135
283
  }
@@ -1 +1 @@
1
- {"version":3,"file":"crud-factory.js","sourceRoot":"","sources":["../../src/tools/crud-factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crud-factory.js","sourceRoot":"","sources":["../../src/tools/crud-factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerDocumentTools(server: McpServer): void;
3
+ //# sourceMappingURL=documents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../src/tools/documents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAYzE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0H7D"}
@@ -0,0 +1,118 @@
1
+ import { apiDownload, apiUploadForm, formatDetailResponse } from "../services/boond-client.js";
2
+ import { IdSchema, DocumentCreateSchema } from "../schemas/index.js";
3
+ import { MAX_DOCUMENT_BYTES, CHARACTER_LIMIT } from "../constants.js";
4
+ import { registerDeleteTool, MutationOutputSchema } from "./crud-factory.js";
5
+ /** Mime types rendered as plain text instead of a base64 blob. */
6
+ function isTextMime(mime) {
7
+ return mime.startsWith("text/") || /[+/](json|xml)$|^application\/(json|xml|csv)$/.test(mime);
8
+ }
9
+ export function registerDocumentTools(server) {
10
+ // Download a document (CV, justificatif, contrat...)
11
+ server.registerTool("boond_documents_get", {
12
+ title: "Télécharger un document",
13
+ description: `Télécharge le contenu d'un document BoondManager (CV de candidat/ressource, justificatif, contrat, facture...) par son ID.
14
+
15
+ Où trouver les IDs de documents : dans les onglets des entités — ex. boond_candidates_information expose les relations 'resumes' (CV) et 'files' (dossier administratif).
16
+
17
+ Le contenu est retourné en ressource MCP embarquée (base64 pour les binaires type PDF/DOCX, texte brut pour les fichiers texte). Taille max: ${Math.round(MAX_DOCUMENT_BYTES / 1024 / 1024)} Mo — à n'utiliser que lorsque le contenu du fichier est réellement nécessaire (un CV en base64 occupe beaucoup de contexte).
18
+
19
+ Args:
20
+ - id (string): Identifiant du document`,
21
+ inputSchema: IdSchema,
22
+ annotations: {
23
+ readOnlyHint: true,
24
+ destructiveHint: false,
25
+ idempotentHint: true,
26
+ openWorldHint: false,
27
+ },
28
+ }, async (params) => {
29
+ const doc = await apiDownload(`/documents/${params.id}`);
30
+ const uri = `boond://documents/${params.id}`;
31
+ const name = doc.filename ?? `document-${params.id}`;
32
+ if (doc.data.length > MAX_DOCUMENT_BYTES) {
33
+ return {
34
+ isError: true,
35
+ content: [
36
+ {
37
+ type: "text",
38
+ text: `❌ Document #${params.id} (${name}) trop volumineux pour être retourné inline: ${(doc.data.length / 1024 / 1024).toFixed(1)} Mo (max ${Math.round(MAX_DOCUMENT_BYTES / 1024 / 1024)} Mo).`,
39
+ },
40
+ ],
41
+ };
42
+ }
43
+ if (isTextMime(doc.contentType)) {
44
+ let text = doc.data.toString("utf8");
45
+ if (text.length > CHARACTER_LIMIT) {
46
+ text = text.substring(0, CHARACTER_LIMIT) + "\n\n[Contenu tronqué...]";
47
+ }
48
+ return {
49
+ content: [
50
+ { type: "text", text: `Document #${params.id} — ${name} (${doc.contentType})\n\n${text}` },
51
+ ],
52
+ };
53
+ }
54
+ return {
55
+ content: [
56
+ {
57
+ type: "text",
58
+ text: `Document #${params.id} — ${name} (${doc.contentType}, ${(doc.data.length / 1024).toFixed(0)} Ko), contenu joint en ressource embarquée.`,
59
+ },
60
+ {
61
+ type: "resource",
62
+ resource: {
63
+ uri,
64
+ mimeType: doc.contentType,
65
+ blob: doc.data.toString("base64"),
66
+ },
67
+ },
68
+ ],
69
+ };
70
+ });
71
+ // Upload a document by URL
72
+ server.registerTool("boond_documents_create", {
73
+ title: "Téléverser un document",
74
+ description: `Attache un document à une entité BoondManager à partir d'une URL (l'API BoondManager télécharge elle-même le fichier — aucun fichier local n'est lu).
75
+
76
+ Cas d'usage typiques : attacher un CV à un candidat (parentType=candidateResume, parsing=true pour lancer l'analyse IA Boond), joindre un justificatif à une note de frais (expensesReport), un document à un projet/une société...
77
+
78
+ Returns: Métadonnées du document créé (ID).`,
79
+ inputSchema: DocumentCreateSchema,
80
+ outputSchema: MutationOutputSchema,
81
+ annotations: {
82
+ readOnlyHint: false,
83
+ destructiveHint: false,
84
+ idempotentHint: false,
85
+ openWorldHint: false,
86
+ },
87
+ }, async (params) => {
88
+ const fields = {
89
+ parentType: params.parentType,
90
+ parentId: String(params.parentId),
91
+ fileUrl: params.fileUrl,
92
+ };
93
+ if (params.parsing !== undefined)
94
+ fields.parsing = String(params.parsing);
95
+ const response = await apiUploadForm("/documents", fields);
96
+ const entity = Array.isArray(response.data) ? response.data[0] : response.data;
97
+ const structured = {};
98
+ if (entity?.id !== undefined)
99
+ structured.id = String(entity.id);
100
+ if (entity?.type !== undefined)
101
+ structured.type = String(entity.type);
102
+ return {
103
+ content: [
104
+ {
105
+ type: "text",
106
+ text: `✅ Document créé avec succès.\nID: ${entity?.id}\n\n${formatDetailResponse(response)}`,
107
+ },
108
+ ],
109
+ structuredContent: structured,
110
+ };
111
+ });
112
+ // Delete a document — factory: élicitation de confirmation + structuredContent
113
+ registerDeleteTool(server, { entityName: "document", entityNamePlural: "documents", apiPath: "/documents", prefix: "boond_documents" }, {
114
+ title: "Supprimer un document",
115
+ description: `Supprime un document de BoondManager. ⚠️ Action irréversible. Si le client MCP supporte l'élicitation, une confirmation est demandée avant la suppression.`,
116
+ });
117
+ }
118
+ //# sourceMappingURL=documents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documents.js","sourceRoot":"","sources":["../../src/tools/documents.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"expenses.d.ts","sourceRoot":"","sources":["../../src/tools/expenses.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwI5D"}
1
+ {"version":3,"file":"expenses.d.ts","sourceRoot":"","sources":["../../src/tools/expenses.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqI5D"}
@@ -1,6 +1,6 @@
1
1
  import { ExpenseSearchSchema, ExpenseCreateSchema, ExpenseUpdateSchema, IdSchema } from "../schemas/index.js";
2
2
  import { apiRequest, buildSearchQuery, formatListResponse, formatDetailResponse } from "../services/boond-client.js";
3
- import { buildJsonApiBody } from "./crud-factory.js";
3
+ import { buildJsonApiBody, registerDeleteTool } from "./crud-factory.js";
4
4
  export function registerExpenseTools(server) {
5
5
  // Search expenses
6
6
  server.registerTool("boond_expenses_search", {
@@ -70,10 +70,12 @@ Returns: Liste des notes de frais correspondantes.`,
70
70
  const response = await apiRequest("/expenses-reports", "POST", body);
71
71
  const entity = Array.isArray(response.data) ? response.data[0] : response.data;
72
72
  return {
73
- content: [{
73
+ content: [
74
+ {
74
75
  type: "text",
75
76
  text: `✅ Note de frais créée avec succès.\nID: ${entity?.id}\n\n${formatDetailResponse(response)}`,
76
- }],
77
+ },
78
+ ],
77
79
  };
78
80
  });
79
81
  // Update expense
@@ -92,28 +94,23 @@ Returns: Liste des notes de frais correspondantes.`,
92
94
  const body = buildJsonApiBody("expense", attrs, id);
93
95
  const response = await apiRequest(`/expenses-reports/${id}`, "PUT", body);
94
96
  return {
95
- content: [{
97
+ content: [
98
+ {
96
99
  type: "text",
97
100
  text: `✅ Note de frais #${id} mise à jour.\n\n${formatDetailResponse(response)}`,
98
- }],
101
+ },
102
+ ],
99
103
  };
100
104
  });
101
- // Delete expense
102
- server.registerTool("boond_expenses_delete", {
105
+ // Delete expense — via la factory pour l'élicitation de confirmation + structuredContent
106
+ registerDeleteTool(server, {
107
+ entityName: "note de frais",
108
+ entityNamePlural: "notes de frais",
109
+ apiPath: "/expenses-reports",
110
+ prefix: "boond_expenses",
111
+ }, {
103
112
  title: "Supprimer une note de frais",
104
- description: `Supprime une note de frais de BoondManager. ⚠️ Action irréversible.`,
105
- inputSchema: IdSchema,
106
- annotations: {
107
- readOnlyHint: false,
108
- destructiveHint: true,
109
- idempotentHint: false,
110
- openWorldHint: false,
111
- },
112
- }, async (params) => {
113
- await apiRequest(`/expenses-reports/${params.id}`, "DELETE");
114
- return {
115
- content: [{ type: "text", text: `🗑️ Note de frais #${params.id} supprimée.` }],
116
- };
113
+ description: `Supprime une note de frais de BoondManager. ⚠️ Action irréversible. Si le client MCP supporte l'élicitation, une confirmation est demandée avant la suppression.`,
117
114
  });
118
115
  }
119
116
  //# sourceMappingURL=expenses.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"expenses.js","sourceRoot":"","sources":["../../src/tools/expenses.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC9G,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACrH,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,kBAAkB;IAClB,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,KAAK,EAAE,+BAA+B;QACtC,WAAW,EAAE;;;;;;;;mDAQgC;QAC7C,WAAW,EAAE,mBAAmB;QAChC,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACxE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,kBAAkB,CAAC,QAAQ,EAAE,eAAe,CAAC,EAAE,CAAC;SAC1F,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,sBAAsB;IACtB,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,KAAK,EAAE,6BAA6B;QACpC,WAAW,EAAE,sEAAsE;QACnF,WAAW,EAAE,QAAQ;QACrB,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,qBAAqB,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QACpE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;SAC3E,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,iBAAiB;IACjB,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,KAAK,EAAE,yBAAyB;QAChC,WAAW,EAAE,uGAAuG;QACpH,WAAW,EAAE,mBAAmB;QAChC,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;QACnD,MAAM,IAAI,GAAG,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAChD,MAAM,aAAa,GAA4B,EAAE,CAAC;QAClD,IAAI,UAAU;YAAE,aAAa,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC;QACxF,IAAI,SAAS;YAAE,aAAa,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;QACpF,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzC,IAAgD,CAAC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACvF,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,mBAAmB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC/E,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,2CAA2C,MAAM,EAAE,EAAE,OAAO,oBAAoB,CAAC,QAAQ,CAAC,EAAE;iBACnG,CAAC;SACH,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,iBAAiB;IACjB,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,KAAK,EAAE,4BAA4B;QACnC,WAAW,EAAE,iFAAiF;QAC9F,WAAW,EAAE,mBAAmB;QAChC,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;QAChC,MAAM,IAAI,GAAG,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,qBAAqB,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC1E,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,oBAAoB,EAAE,oBAAoB,oBAAoB,CAAC,QAAQ,CAAC,EAAE;iBACjF,CAAC;SACH,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,iBAAiB;IACjB,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,KAAK,EAAE,6BAA6B;QACpC,WAAW,EAAE,qEAAqE;QAClF,WAAW,EAAE,QAAQ;QACrB,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,IAAI;YACrB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,UAAU,CAAC,qBAAqB,MAAM,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC7D,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,sBAAsB,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;SACzF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"expenses.js","sourceRoot":"","sources":["../../src/tools/expenses.ts"],"names":[],"mappings":"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"}
@@ -34,5 +34,6 @@ export { registerValidationTools } from "./validations.js";
34
34
  export { registerPoleTools } from "./poles.js";
35
35
  export { registerReportingTools } from "./reporting.js";
36
36
  export { registerPlanningAbsenceTools } from "./planning-absences.js";
37
+ export { registerDocumentTools } from "./documents.js";
37
38
  export { registerWorkflowTools } from "./workflows.js";
38
39
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -34,5 +34,6 @@ export { registerValidationTools } from "./validations.js";
34
34
  export { registerPoleTools } from "./poles.js";
35
35
  export { registerReportingTools } from "./reporting.js";
36
36
  export { registerPlanningAbsenceTools } from "./planning-absences.js";
37
+ export { registerDocumentTools } from "./documents.js";
37
38
  export { registerWorkflowTools } from "./workflows.js";
38
39
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"invoices.d.ts","sourceRoot":"","sources":["../../src/tools/invoices.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2I5D"}
1
+ {"version":3,"file":"invoices.d.ts","sourceRoot":"","sources":["../../src/tools/invoices.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmI5D"}
@@ -1,6 +1,6 @@
1
1
  import { InvoiceSearchSchema, InvoiceCreateSchema, InvoiceUpdateSchema, IdSchema } from "../schemas/index.js";
2
2
  import { apiRequest, buildSearchQuery, formatListResponse, formatDetailResponse } from "../services/boond-client.js";
3
- import { buildJsonApiBody } from "./crud-factory.js";
3
+ import { buildJsonApiBody, registerDeleteTool } from "./crud-factory.js";
4
4
  export function registerInvoiceTools(server) {
5
5
  // Search invoices
6
6
  server.registerTool("boond_invoices_search", {
@@ -75,10 +75,12 @@ Returns: Liste des factures correspondantes.`,
75
75
  const response = await apiRequest("/invoices", "POST", body);
76
76
  const entity = Array.isArray(response.data) ? response.data[0] : response.data;
77
77
  return {
78
- content: [{
78
+ content: [
79
+ {
79
80
  type: "text",
80
81
  text: `✅ Facture créée avec succès.\nID: ${entity?.id}\n\n${formatDetailResponse(response)}`,
81
- }],
82
+ },
83
+ ],
82
84
  };
83
85
  });
84
86
  // Update invoice
@@ -97,28 +99,18 @@ Returns: Liste des factures correspondantes.`,
97
99
  const body = buildJsonApiBody("invoice", attrs, id);
98
100
  const response = await apiRequest(`/invoices/${id}`, "PATCH", body);
99
101
  return {
100
- content: [{
102
+ content: [
103
+ {
101
104
  type: "text",
102
105
  text: `✅ Facture #${id} mise à jour.\n\n${formatDetailResponse(response)}`,
103
- }],
106
+ },
107
+ ],
104
108
  };
105
109
  });
106
- // Delete invoice
107
- server.registerTool("boond_invoices_delete", {
110
+ // Delete invoice — via la factory pour l'élicitation de confirmation + structuredContent
111
+ registerDeleteTool(server, { entityName: "facture", entityNamePlural: "factures", apiPath: "/invoices", prefix: "boond_invoices" }, {
108
112
  title: "Supprimer une facture",
109
- description: `Supprime une facture de BoondManager. ⚠️ Action irréversible.`,
110
- inputSchema: IdSchema,
111
- annotations: {
112
- readOnlyHint: false,
113
- destructiveHint: true,
114
- idempotentHint: false,
115
- openWorldHint: false,
116
- },
117
- }, async (params) => {
118
- await apiRequest(`/invoices/${params.id}`, "DELETE");
119
- return {
120
- content: [{ type: "text", text: `🗑️ Facture #${params.id} supprimée.` }],
121
- };
113
+ description: `Supprime une facture de BoondManager. ⚠️ Action irréversible. Si le client MCP supporte l'élicitation, une confirmation est demandée avant la suppression.`,
122
114
  });
123
115
  }
124
116
  //# sourceMappingURL=invoices.js.map