boondmanager-mcp-server 2.16.0 → 2.18.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 (285) hide show
  1. package/README.md +57 -4
  2. package/dist/config/access-policy.d.ts.map +1 -1
  3. package/dist/config/access-policy.js +6 -18
  4. package/dist/config/access-policy.js.map +1 -1
  5. package/dist/config/dictionary-overrides.d.ts.map +1 -1
  6. package/dist/config/dictionary-overrides.js +2 -12
  7. package/dist/config/dictionary-overrides.js.map +1 -1
  8. package/dist/config/env.d.ts +63 -0
  9. package/dist/config/env.d.ts.map +1 -0
  10. package/dist/config/env.js +116 -0
  11. package/dist/config/env.js.map +1 -0
  12. package/dist/config/profiles.d.ts +22 -8
  13. package/dist/config/profiles.d.ts.map +1 -1
  14. package/dist/config/profiles.js +48 -4
  15. package/dist/config/profiles.js.map +1 -1
  16. package/dist/config/transport-kind.d.ts +8 -0
  17. package/dist/config/transport-kind.d.ts.map +1 -0
  18. package/dist/config/transport-kind.js +13 -0
  19. package/dist/config/transport-kind.js.map +1 -0
  20. package/dist/constants.d.ts +20 -2
  21. package/dist/constants.d.ts.map +1 -1
  22. package/dist/constants.js +32 -1
  23. package/dist/constants.js.map +1 -1
  24. package/dist/icons.d.ts.map +1 -1
  25. package/dist/icons.js +6 -1
  26. package/dist/icons.js.map +1 -1
  27. package/dist/index.js +32 -20
  28. package/dist/index.js.map +1 -1
  29. package/dist/instructions.d.ts +1 -1
  30. package/dist/instructions.d.ts.map +1 -1
  31. package/dist/instructions.js +6 -6
  32. package/dist/instructions.js.map +1 -1
  33. package/dist/prompts/index.d.ts +19 -1
  34. package/dist/prompts/index.d.ts.map +1 -1
  35. package/dist/prompts/index.js +495 -25
  36. package/dist/prompts/index.js.map +1 -1
  37. package/dist/prompts/periods.d.ts +45 -0
  38. package/dist/prompts/periods.d.ts.map +1 -0
  39. package/dist/prompts/periods.js +154 -0
  40. package/dist/prompts/periods.js.map +1 -0
  41. package/dist/resources/index.d.ts +14 -0
  42. package/dist/resources/index.d.ts.map +1 -1
  43. package/dist/resources/index.js +285 -0
  44. package/dist/resources/index.js.map +1 -1
  45. package/dist/resources/templates.d.ts +1 -1
  46. package/dist/resources/templates.d.ts.map +1 -1
  47. package/dist/resources/templates.js +2 -0
  48. package/dist/resources/templates.js.map +1 -1
  49. package/dist/schema-dialect.js.map +1 -1
  50. package/dist/schemas/filter-aliases.d.ts +1 -1
  51. package/dist/schemas/filter-aliases.d.ts.map +1 -1
  52. package/dist/schemas/filter-aliases.js +101 -2
  53. package/dist/schemas/filter-aliases.js.map +1 -1
  54. package/dist/schemas/index.d.ts +1045 -163
  55. package/dist/schemas/index.d.ts.map +1 -1
  56. package/dist/schemas/index.js +979 -330
  57. package/dist/schemas/index.js.map +1 -1
  58. package/dist/server.d.ts.map +1 -1
  59. package/dist/server.js +10 -3
  60. package/dist/server.js.map +1 -1
  61. package/dist/services/boond-client.d.ts +29 -213
  62. package/dist/services/boond-client.d.ts.map +1 -1
  63. package/dist/services/boond-client.js +29 -1168
  64. package/dist/services/boond-client.js.map +1 -1
  65. package/dist/services/dictionary.d.ts +27 -3
  66. package/dist/services/dictionary.d.ts.map +1 -1
  67. package/dist/services/dictionary.js +60 -23
  68. package/dist/services/dictionary.js.map +1 -1
  69. package/dist/services/document-text.d.ts +32 -0
  70. package/dist/services/document-text.d.ts.map +1 -0
  71. package/dist/services/document-text.js +120 -0
  72. package/dist/services/document-text.js.map +1 -0
  73. package/dist/services/format/detail.d.ts +16 -0
  74. package/dist/services/format/detail.d.ts.map +1 -0
  75. package/dist/services/format/detail.js +36 -0
  76. package/dist/services/format/detail.js.map +1 -0
  77. package/dist/services/format/html.d.ts +19 -0
  78. package/dist/services/format/html.d.ts.map +1 -0
  79. package/dist/services/format/html.js +87 -0
  80. package/dist/services/format/html.js.map +1 -0
  81. package/dist/services/format/list.d.ts +3 -0
  82. package/dist/services/format/list.d.ts.map +1 -0
  83. package/dist/services/format/list.js +44 -0
  84. package/dist/services/format/list.js.map +1 -0
  85. package/dist/services/format/summary.d.ts +23 -0
  86. package/dist/services/format/summary.d.ts.map +1 -0
  87. package/dist/services/format/summary.js +194 -0
  88. package/dist/services/format/summary.js.map +1 -0
  89. package/dist/services/format/tab.d.ts +9 -0
  90. package/dist/services/format/tab.d.ts.map +1 -0
  91. package/dist/services/format/tab.js +32 -0
  92. package/dist/services/format/tab.js.map +1 -0
  93. package/dist/services/http/auth.d.ts +44 -0
  94. package/dist/services/http/auth.d.ts.map +1 -0
  95. package/dist/services/http/auth.js +146 -0
  96. package/dist/services/http/auth.js.map +1 -0
  97. package/dist/services/http/download.d.ts +60 -0
  98. package/dist/services/http/download.d.ts.map +1 -0
  99. package/dist/services/http/download.js +160 -0
  100. package/dist/services/http/download.js.map +1 -0
  101. package/dist/services/http/errors.d.ts +45 -0
  102. package/dist/services/http/errors.d.ts.map +1 -0
  103. package/dist/services/http/errors.js +188 -0
  104. package/dist/services/http/errors.js.map +1 -0
  105. package/dist/services/http/rate-limit.d.ts +40 -0
  106. package/dist/services/http/rate-limit.d.ts.map +1 -0
  107. package/dist/services/http/rate-limit.js +92 -0
  108. package/dist/services/http/rate-limit.js.map +1 -0
  109. package/dist/services/http/retry.d.ts +46 -0
  110. package/dist/services/http/retry.d.ts.map +1 -0
  111. package/dist/services/http/retry.js +101 -0
  112. package/dist/services/http/retry.js.map +1 -0
  113. package/dist/services/http/transport.d.ts +85 -0
  114. package/dist/services/http/transport.d.ts.map +1 -0
  115. package/dist/services/http/transport.js +283 -0
  116. package/dist/services/http/transport.js.map +1 -0
  117. package/dist/services/logger.d.ts +53 -2
  118. package/dist/services/logger.d.ts.map +1 -1
  119. package/dist/services/logger.js +82 -21
  120. package/dist/services/logger.js.map +1 -1
  121. package/dist/services/oauth.d.ts +12 -0
  122. package/dist/services/oauth.d.ts.map +1 -1
  123. package/dist/services/oauth.js +21 -8
  124. package/dist/services/oauth.js.map +1 -1
  125. package/dist/services/rate-limiter.d.ts +9 -2
  126. package/dist/services/rate-limiter.d.ts.map +1 -1
  127. package/dist/services/rate-limiter.js +18 -6
  128. package/dist/services/rate-limiter.js.map +1 -1
  129. package/dist/services/request-context.d.ts +47 -0
  130. package/dist/services/request-context.d.ts.map +1 -0
  131. package/dist/services/request-context.js +112 -0
  132. package/dist/services/request-context.js.map +1 -0
  133. package/dist/services/search.d.ts +26 -0
  134. package/dist/services/search.d.ts.map +1 -0
  135. package/dist/services/search.js +98 -0
  136. package/dist/services/search.js.map +1 -0
  137. package/dist/services/update-checker.d.ts.map +1 -1
  138. package/dist/services/update-checker.js +15 -8
  139. package/dist/services/update-checker.js.map +1 -1
  140. package/dist/services/upload-source.d.ts +31 -0
  141. package/dist/services/upload-source.d.ts.map +1 -0
  142. package/dist/services/upload-source.js +180 -0
  143. package/dist/services/upload-source.js.map +1 -0
  144. package/dist/tools/absences.d.ts +9 -0
  145. package/dist/tools/absences.d.ts.map +1 -1
  146. package/dist/tools/absences.js +65 -20
  147. package/dist/tools/absences.js.map +1 -1
  148. package/dist/tools/actions.d.ts.map +1 -1
  149. package/dist/tools/actions.js +11 -27
  150. package/dist/tools/actions.js.map +1 -1
  151. package/dist/tools/advantages.d.ts +2 -0
  152. package/dist/tools/advantages.d.ts.map +1 -1
  153. package/dist/tools/advantages.js +66 -13
  154. package/dist/tools/advantages.js.map +1 -1
  155. package/dist/tools/alerts.d.ts +18 -0
  156. package/dist/tools/alerts.d.ts.map +1 -0
  157. package/dist/tools/alerts.js +82 -0
  158. package/dist/tools/alerts.js.map +1 -0
  159. package/dist/tools/application.d.ts +2 -1
  160. package/dist/tools/application.d.ts.map +1 -1
  161. package/dist/tools/application.js +9 -3
  162. package/dist/tools/application.js.map +1 -1
  163. package/dist/tools/candidates.d.ts +7 -0
  164. package/dist/tools/candidates.d.ts.map +1 -1
  165. package/dist/tools/candidates.js +96 -1
  166. package/dist/tools/candidates.js.map +1 -1
  167. package/dist/tools/contacts.d.ts.map +1 -1
  168. package/dist/tools/contacts.js +3 -7
  169. package/dist/tools/contacts.js.map +1 -1
  170. package/dist/tools/contracts.d.ts +22 -0
  171. package/dist/tools/contracts.d.ts.map +1 -1
  172. package/dist/tools/contracts.js +185 -52
  173. package/dist/tools/contracts.js.map +1 -1
  174. package/dist/tools/crud-factory.d.ts +33 -2
  175. package/dist/tools/crud-factory.d.ts.map +1 -1
  176. package/dist/tools/crud-factory.js +45 -17
  177. package/dist/tools/crud-factory.js.map +1 -1
  178. package/dist/tools/deliveries.d.ts +3 -0
  179. package/dist/tools/deliveries.d.ts.map +1 -1
  180. package/dist/tools/deliveries.js +50 -94
  181. package/dist/tools/deliveries.js.map +1 -1
  182. package/dist/tools/description-builders.d.ts +0 -1
  183. package/dist/tools/description-builders.d.ts.map +1 -1
  184. package/dist/tools/description-builders.js +47 -4
  185. package/dist/tools/description-builders.js.map +1 -1
  186. package/dist/tools/documents.d.ts.map +1 -1
  187. package/dist/tools/documents.js +113 -27
  188. package/dist/tools/documents.js.map +1 -1
  189. package/dist/tools/expenses.d.ts.map +1 -1
  190. package/dist/tools/expenses.js +2 -11
  191. package/dist/tools/expenses.js.map +1 -1
  192. package/dist/tools/find.d.ts +61 -0
  193. package/dist/tools/find.d.ts.map +1 -0
  194. package/dist/tools/find.js +221 -0
  195. package/dist/tools/find.js.map +1 -0
  196. package/dist/tools/flags.d.ts +5 -0
  197. package/dist/tools/flags.d.ts.map +1 -1
  198. package/dist/tools/flags.js +116 -1
  199. package/dist/tools/flags.js.map +1 -1
  200. package/dist/tools/forms.d.ts +5 -0
  201. package/dist/tools/forms.d.ts.map +1 -0
  202. package/dist/tools/forms.js +64 -0
  203. package/dist/tools/forms.js.map +1 -0
  204. package/dist/tools/groupments.d.ts +5 -0
  205. package/dist/tools/groupments.d.ts.map +1 -0
  206. package/dist/tools/groupments.js +68 -0
  207. package/dist/tools/groupments.js.map +1 -0
  208. package/dist/tools/inactivities.d.ts +5 -0
  209. package/dist/tools/inactivities.d.ts.map +1 -0
  210. package/dist/tools/inactivities.js +59 -0
  211. package/dist/tools/inactivities.js.map +1 -0
  212. package/dist/tools/index.d.ts +4 -0
  213. package/dist/tools/index.d.ts.map +1 -1
  214. package/dist/tools/index.js +4 -0
  215. package/dist/tools/index.js.map +1 -1
  216. package/dist/tools/invoices.d.ts.map +1 -1
  217. package/dist/tools/invoices.js +27 -2
  218. package/dist/tools/invoices.js.map +1 -1
  219. package/dist/tools/linked-entity-filters.d.ts +48 -0
  220. package/dist/tools/linked-entity-filters.d.ts.map +1 -0
  221. package/dist/tools/linked-entity-filters.js +64 -0
  222. package/dist/tools/linked-entity-filters.js.map +1 -0
  223. package/dist/tools/notifications.d.ts.map +1 -1
  224. package/dist/tools/notifications.js +0 -5
  225. package/dist/tools/notifications.js.map +1 -1
  226. package/dist/tools/orders.d.ts.map +1 -1
  227. package/dist/tools/orders.js +33 -4
  228. package/dist/tools/orders.js.map +1 -1
  229. package/dist/tools/parameter-disclosure.js.map +1 -1
  230. package/dist/tools/payments.d.ts +3 -0
  231. package/dist/tools/payments.d.ts.map +1 -1
  232. package/dist/tools/payments.js +43 -109
  233. package/dist/tools/payments.js.map +1 -1
  234. package/dist/tools/positionings.d.ts.map +1 -1
  235. package/dist/tools/positionings.js +9 -39
  236. package/dist/tools/positionings.js.map +1 -1
  237. package/dist/tools/projects.d.ts.map +1 -1
  238. package/dist/tools/projects.js +5 -12
  239. package/dist/tools/projects.js.map +1 -1
  240. package/dist/tools/provider-invoices.d.ts +2 -0
  241. package/dist/tools/provider-invoices.d.ts.map +1 -1
  242. package/dist/tools/provider-invoices.js +30 -111
  243. package/dist/tools/provider-invoices.js.map +1 -1
  244. package/dist/tools/purchases.d.ts +2 -0
  245. package/dist/tools/purchases.d.ts.map +1 -1
  246. package/dist/tools/purchases.js +50 -104
  247. package/dist/tools/purchases.js.map +1 -1
  248. package/dist/tools/registration-decorators.d.ts +28 -0
  249. package/dist/tools/registration-decorators.d.ts.map +1 -1
  250. package/dist/tools/registration-decorators.js +107 -0
  251. package/dist/tools/registration-decorators.js.map +1 -1
  252. package/dist/tools/resources.d.ts.map +1 -1
  253. package/dist/tools/resources.js +27 -5
  254. package/dist/tools/resources.js.map +1 -1
  255. package/dist/tools/rights.d.ts +101 -0
  256. package/dist/tools/rights.d.ts.map +1 -0
  257. package/dist/tools/rights.js +75 -0
  258. package/dist/tools/rights.js.map +1 -0
  259. package/dist/tools/tab-tools.js +3 -3
  260. package/dist/tools/tab-tools.js.map +1 -1
  261. package/dist/tools/timesheets.d.ts +29 -0
  262. package/dist/tools/timesheets.d.ts.map +1 -1
  263. package/dist/tools/timesheets.js +196 -126
  264. package/dist/tools/timesheets.js.map +1 -1
  265. package/dist/tools/todolists.d.ts +2 -0
  266. package/dist/tools/todolists.d.ts.map +1 -1
  267. package/dist/tools/todolists.js +64 -1
  268. package/dist/tools/todolists.js.map +1 -1
  269. package/dist/tools/usage-guidance.d.ts.map +1 -1
  270. package/dist/tools/usage-guidance.js +12 -3
  271. package/dist/tools/usage-guidance.js.map +1 -1
  272. package/dist/tools/validations.d.ts +9 -0
  273. package/dist/tools/validations.d.ts.map +1 -1
  274. package/dist/tools/validations.js +86 -9
  275. package/dist/tools/validations.js.map +1 -1
  276. package/dist/tools/workflows.js +1 -1
  277. package/dist/tools/workflows.js.map +1 -1
  278. package/dist/transports/http.d.ts +116 -0
  279. package/dist/transports/http.d.ts.map +1 -1
  280. package/dist/transports/http.js +422 -92
  281. package/dist/transports/http.js.map +1 -1
  282. package/dist/types.d.ts +3 -3
  283. package/dist/types.d.ts.map +1 -1
  284. package/manifest.json +2 -2
  285. package/package.json +6 -5
@@ -1,28 +1,32 @@
1
- import { PaymentSearchSchema, IdSchema } from "../schemas/index.js";
2
- import { apiRequest, buildSearchQuery, formatListResponse, formatDetailResponse } from "../services/boond-client.js";
3
- import { buildJsonApiBody } from "./crud-factory.js";
4
- import { z } from "zod";
5
- import { composeDescription, defaultGetDescription } from "./description-builders.js";
6
- const PaymentCreateSchema = z
7
- .object({
8
- purchaseId: z.string().min(1).describe("ID de l'achat regle"),
9
- paymentDate: z.string().optional().describe("Date du paiement (YYYY-MM-DD), mappee vers date"),
10
- performedDate: z.string().optional().describe("Date de paiement effectif (YYYY-MM-DD)"),
11
- expectedDate: z.string().optional().describe("Date de paiement attendu (YYYY-MM-DD)"),
12
- startDate: z.string().optional().describe("Date de debut couverte (YYYY-MM-DD)"),
13
- endDate: z.string().optional().describe("Date de fin couverte (YYYY-MM-DD)"),
14
- amount: z.number().optional().describe("Montant HT du paiement, mappe vers amountExcludingTax"),
15
- amountExcludingTax: z.number().optional().describe("Montant HT du paiement"),
16
- state: z.number().int().optional().describe("Etat du paiement / achat"),
17
- paymentMethod: z.number().int().optional().describe("Methode de paiement"),
18
- taxRates: z.array(z.number()).optional().describe("Taux de taxes Boond"),
19
- reference: z.string().optional().describe("Reference bancaire ou reglement"),
20
- note: z.string().optional().describe("Note interne, mappee vers informationComments"),
21
- })
22
- .strict();
1
+ import { PaymentCreateSchema, PaymentSearchSchema, PaymentUpdateSchema } from "../schemas/index.js";
2
+ import { buildJsonApiBody, registerCreateTool, registerDeleteTool, registerGetTool, registerSearchTool, registerUpdateTool, } from "./crud-factory.js";
3
+ import { composeDescription } from "./description-builders.js";
4
+ const OPTS = { entityName: "paiement", entityNamePlural: "paiements", apiPath: "/payments", prefix: "boond_payments" };
5
+ /** `/payments` payload: convenience names → API attributes, `purchaseId` → the mandatory `purchase` relationship. */
6
+ function paymentAttributes(params) {
7
+ const { paymentDate, amount, reference, note, ...attrs } = params;
8
+ return {
9
+ ...attrs,
10
+ ...(paymentDate ? { date: paymentDate } : {}),
11
+ ...(amount !== undefined && attrs.amountExcludingTax === undefined ? { amountExcludingTax: amount } : {}),
12
+ ...(reference ? { number: reference } : {}),
13
+ ...(note ? { informationComments: note } : {}),
14
+ };
15
+ }
16
+ export function buildPaymentBody(params) {
17
+ const { purchaseId, ...rest } = params;
18
+ return buildJsonApiBody("payment", paymentAttributes(rest), undefined, {
19
+ purchase: { id: String(purchaseId), type: "purchase" },
20
+ });
21
+ }
22
+ /** PUT /payments/{id}: attributes only — the purchase attachment is never moved by an update (issue #252). */
23
+ export function buildPaymentUpdateBody(params) {
24
+ const { id, ...rest } = params;
25
+ return buildJsonApiBody("payment", paymentAttributes(rest), String(id));
26
+ }
23
27
  export function registerPaymentTools(server) {
24
- server.registerTool("boond_payments_create", {
25
- title: "Creer un paiement",
28
+ registerCreateTool(server, OPTS, PaymentCreateSchema, buildPaymentBody, {
29
+ title: "Créer un paiement",
26
30
  description: composeDescription({
27
31
  purpose: "Enregistre un paiement / règlement fournisseur adossé à un achat.",
28
32
  when: "pour solder tout ou partie d'un achat existant.",
@@ -31,94 +35,24 @@ export function registerPaymentTools(server) {
31
35
  "L'API `/payments` **exige** une relation `purchase` : sans ID d'achat valide, l'appel est refusé.",
32
36
  "Écriture non idempotente : deux appels identiques enregistrent deux règlements.",
33
37
  ],
34
- returns: "confirmation et fiche du paiement créé.",
38
+ returns: "confirmation et fiche du paiement créé, avec son ID dans `structuredContent.id`.",
35
39
  }),
36
- inputSchema: PaymentCreateSchema,
37
- annotations: {
38
- readOnlyHint: false,
39
- destructiveHint: false,
40
- idempotentHint: false,
41
- openWorldHint: false,
42
- },
43
- }, async (params) => {
44
- const { purchaseId, paymentDate, amount, reference, note, ...attrs } = params;
45
- const apiAttrs = {
46
- ...attrs,
47
- ...(paymentDate ? { date: paymentDate } : {}),
48
- ...(amount !== undefined && attrs.amountExcludingTax === undefined ? { amountExcludingTax: amount } : {}),
49
- ...(reference ? { number: reference } : {}),
50
- ...(note ? { informationComments: note } : {}),
51
- };
52
- const body = buildJsonApiBody("payment", apiAttrs);
53
- body.data.relationships = {
54
- purchase: { data: { id: purchaseId, type: "purchase" } },
55
- };
56
- const response = await apiRequest("/payments", "POST", body);
57
- const entity = Array.isArray(response.data) ? response.data[0] : response.data;
58
- return {
59
- content: [
60
- {
61
- type: "text",
62
- text: `Paiement cree avec succes.\nID: ${entity?.id}\n\n${formatDetailResponse(response)}`,
63
- },
64
- ],
65
- };
66
40
  });
67
- server.registerTool("boond_payments_search", {
68
- title: "Rechercher des paiements",
69
- description: `Recherche des paiements / reglements dans BoondManager.
70
-
71
- Args:
72
- - keywords (string, optional): Termes de recherche. Utiliser ACH<id>, CSOC<id>, PRJ<id> selon la doc Boond pour filtrer par achat, societe ou projet.
73
- - invoiceId, companyId (string, optional): Conserves pour compatibilite, transmis comme query params si fournis.
74
- - startDate, endDate (string, optional): Periode (YYYY-MM-DD)
75
- - page, pageSize: Pagination
76
-
77
- Returns: Liste des paiements correspondants.`,
78
- inputSchema: PaymentSearchSchema,
79
- annotations: {
80
- readOnlyHint: true,
81
- destructiveHint: false,
82
- idempotentHint: true,
83
- openWorldHint: true,
84
- },
85
- }, async (params) => {
86
- const { purchaseId, companyId, projectId, resourceId, keywords, ...rest } = params;
87
- const tokens = [];
88
- if (keywords)
89
- tokens.push(keywords);
90
- if (purchaseId)
91
- tokens.push(`ACH${purchaseId}`);
92
- if (companyId)
93
- tokens.push(`CSOC${companyId}`);
94
- if (projectId)
95
- tokens.push(`PRJ${projectId}`);
96
- if (resourceId)
97
- tokens.push(`COMP${resourceId}`);
98
- const query = buildSearchQuery(tokens.length > 0 ? { ...rest, keywords: tokens.join(" ") } : rest);
99
- const response = await apiRequest("/payments", "GET", undefined, query);
100
- return {
101
- content: [{ type: "text", text: formatListResponse(response, "paiement", params.fields) }],
102
- };
103
- });
104
- server.registerTool("boond_payments_get", {
105
- title: "Details d'un paiement",
106
- description: defaultGetDescription({
107
- ...{ entityName: "paiement", entityNamePlural: "paiements", prefix: "boond_payments" },
108
- withTab: false,
41
+ registerSearchTool(server, OPTS, {
42
+ schema: PaymentSearchSchema,
43
+ description: composeDescription({
44
+ purpose: "Recherche des paiements / règlements fournisseur dans BoondManager.",
45
+ when: "pour retrouver les règlements adossés à un achat, une société, un projet ou une ressource, ceux d'un état (`paymentStates`), d'une période (`period: \"expected\"` + dates) ou d'un périmètre (`perimeter*`).",
46
+ instead: "`boond_purchases_search` pour les achats eux-mêmes, `boond_provider_invoices_search` pour les factures fournisseur.",
47
+ behaviour: [
48
+ "`purchaseId`, `companyId`, `projectId` et `resourceId` sont convertis en préfixes `keywords` (`ACH<id>`, `CSOC<id>`, `PRJ<id>`, `COMP<id>`) et concaténés aux `keywords` fournis — l'API n'a pas de paramètre dédié. Pas de filtre par facture : `/payments` ne connaît pas de référence `FACT<id>`.",
49
+ ],
50
+ returns: "page de résumés des paiements (ID + libellé principal). Lecture seule.",
109
51
  }),
110
- inputSchema: IdSchema,
111
- annotations: {
112
- readOnlyHint: true,
113
- destructiveHint: false,
114
- idempotentHint: true,
115
- openWorldHint: false,
116
- },
117
- }, async (params) => {
118
- const response = await apiRequest(`/payments/${params.id}`);
119
- return {
120
- content: [{ type: "text", text: formatDetailResponse(response) }],
121
- };
122
52
  });
53
+ registerGetTool(server, OPTS, { withTab: false });
54
+ // Issue #252: regularise a payment (performed date, amount, state).
55
+ registerUpdateTool(server, OPTS, PaymentUpdateSchema, buildPaymentUpdateBody, { method: "PUT" });
56
+ registerDeleteTool(server, OPTS);
123
57
  }
124
58
  //# sourceMappingURL=payments.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"payments.js","sourceRoot":"","sources":["../../src/tools/payments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"payments.js","sourceRoot":"","sources":["../../src/tools/payments.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"positionings.d.ts","sourceRoot":"","sources":["../../src/tools/positionings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAWzE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6LhE"}
1
+ {"version":3,"file":"positionings.d.ts","sourceRoot":"","sources":["../../src/tools/positionings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAYzE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqKhE"}
@@ -1,3 +1,4 @@
1
+ import { toKeywordReferences } from "./linked-entity-filters.js";
1
2
  import { PositioningSearchSchema, PositioningCreateSchema, PositioningUpdateSchema, IdSchema, } from "../schemas/index.js";
2
3
  import { apiRequest, buildSearchQuery, formatListResponse, formatDetailResponse } from "../services/boond-client.js";
3
4
  import { buildJsonApiBody, registerDeleteTool, MutationOutputSchema } from "./crud-factory.js";
@@ -8,12 +9,7 @@ export function registerPositioningTools(server) {
8
9
  title: "Rechercher des positionnements",
9
10
  description: `Recherche des positionnements (placement de candidats/ressources sur des projets/opportunités) dans BoondManager.
10
11
 
11
- L'API ne propose pas de paramètres de filtre dédiés : le filtrage par entité liée passe par des références dans \`keywords\` (AO<id>=opportunité, CAND<id>=candidat, COMP<id>=ressource, CSOC<id>=société, CCON<id>=contact, PROD<id>=produit). Les filtres *Id ci-dessous sont convertis automatiquement en ces références.
12
-
13
- Args:
14
- - keywords (string, optional): Termes de recherche (références d'entités acceptées)
15
- - candidateId, resourceId, opportunityId, companyId, contactId, productId (string, optional): Filtrer par entité liée (convertis en références keywords)
16
- - page, pageSize: Pagination
12
+ L'API ne propose pas de paramètres de filtre dédiés : le filtrage par entité liée passe par des références dans \`keywords\` (AO<id>=opportunité, CAND<id>=candidat, COMP<id>=ressource, CSOC<id>=société, CCON<id>=contact, PROD<id>=produit). Les filtres *Id du schéma sont convertis automatiquement en ces références.
17
13
 
18
14
  Returns: Liste des positionnements correspondants.`,
19
15
  inputSchema: PositioningSearchSchema,
@@ -27,23 +23,7 @@ Returns: Liste des positionnements correspondants.`,
27
23
  // L'API GET /positionings n'a pas de paramètres candidateId/resourceId/... :
28
24
  // le filtrage par entité passe par des références dans `keywords`
29
25
  // (cf. RAML officiel). Les paramètres bruts seraient silencieusement ignorés.
30
- const { candidateId, resourceId, opportunityId, companyId, contactId, productId, keywords, ...rest } = params;
31
- const tokens = [];
32
- if (keywords)
33
- tokens.push(keywords);
34
- if (opportunityId)
35
- tokens.push(`AO${opportunityId}`);
36
- if (candidateId)
37
- tokens.push(`CAND${candidateId}`);
38
- if (resourceId)
39
- tokens.push(`COMP${resourceId}`);
40
- if (companyId)
41
- tokens.push(`CSOC${companyId}`);
42
- if (contactId)
43
- tokens.push(`CCON${contactId}`);
44
- if (productId)
45
- tokens.push(`PROD${productId}`);
46
- const query = buildSearchQuery(tokens.length > 0 ? { ...rest, keywords: tokens.join(" ") } : rest);
26
+ const query = buildSearchQuery(toKeywordReferences(params));
47
27
  const response = await apiRequest("/positionings", "GET", undefined, query);
48
28
  return {
49
29
  content: [{ type: "text", text: formatListResponse(response, "positionnement", params.fields) }],
@@ -91,19 +71,16 @@ Returns: Liste des positionnements correspondants.`,
91
71
  },
92
72
  }, async (params) => {
93
73
  const { candidateId, resourceId, projectId, opportunityId, ...attrs } = params;
94
- const body = buildJsonApiBody("positioning", attrs);
95
74
  const relationships = {};
96
75
  if (candidateId)
97
- relationships.dependsOn = { data: { id: candidateId, type: "candidate" } };
76
+ relationships.dependsOn = { id: candidateId, type: "candidate" };
98
77
  if (resourceId)
99
- relationships.dependsOn = { data: { id: resourceId, type: "resource" } };
78
+ relationships.dependsOn = { id: resourceId, type: "resource" };
100
79
  if (projectId)
101
- relationships.project = { data: { id: projectId, type: "project" } };
80
+ relationships.project = { id: projectId, type: "project" };
102
81
  if (opportunityId)
103
- relationships.opportunity = { data: { id: opportunityId, type: "opportunity" } };
104
- if (Object.keys(relationships).length > 0) {
105
- body.data.relationships = relationships;
106
- }
82
+ relationships.opportunity = { id: opportunityId, type: "opportunity" };
83
+ const body = buildJsonApiBody("positioning", attrs, undefined, relationships);
107
84
  const response = await apiRequest("/positionings", "POST", body);
108
85
  const entity = Array.isArray(response.data) ? response.data[0] : response.data;
109
86
  return {
@@ -121,14 +98,7 @@ Returns: Liste des positionnements correspondants.`,
121
98
  // MutationOutputSchema, structuredContent) reproduit celui de la factory.
122
99
  server.registerTool("boond_positionings_update", {
123
100
  title: "Modifier un positionnement",
124
- description: `Met à jour un positionnement existant dans BoondManager (PUT /positionings/{id}). Seuls les champs fournis sont modifiés.
125
-
126
- Args:
127
- - id (string): ID du positionnement
128
- - state (number, optional): État du positionnement (ID du dictionnaire setting.state.positioning)
129
- - stateReasonTypeOf, stateReasonDetail (optional): Motif d'état (repliés en stateReason {typeOf, detail})
130
- - startDate, endDate (string, optional): Dates au format YYYY-MM-DD (chaîne vide pour effacer)
131
- - informationComments (string, optional): Commentaires (max 250 caractères)
101
+ description: `Met à jour un positionnement existant dans BoondManager (PUT /positionings/{id}). Seuls les champs fournis sont modifiés ; \`stateReasonTypeOf\` / \`stateReasonDetail\` sont repliés en \`stateReason: { typeOf, detail }\`.
132
102
 
133
103
  Returns: Données mises à jour du positionnement.`,
134
104
  inputSchema: PositioningUpdateSchema,
@@ -1 +1 @@
1
- {"version":3,"file":"positionings.js","sourceRoot":"","sources":["../../src/tools/positionings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"positionings.js","sourceRoot":"","sources":["../../src/tools/positionings.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4FzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuC5D"}
1
+ {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4FzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmC5D"}
@@ -85,18 +85,11 @@ export function registerProjectTools(server) {
85
85
  registerCreateTool(server, OPTS, ProjectCreateSchema, (params) => {
86
86
  const { companyId, contactId, opportunityId, name, ...attrs } = params;
87
87
  const apiAttrs = { ...attrs, ...(name ? { title: name } : {}) };
88
- const body = buildJsonApiBody("project", apiAttrs);
89
- const relationships = {};
90
- if (companyId)
91
- relationships.company = { data: { id: companyId, type: "company" } };
92
- if (contactId)
93
- relationships.contact = { data: { id: contactId, type: "contact" } };
94
- if (opportunityId)
95
- relationships.opportunity = { data: { id: opportunityId, type: "opportunity" } };
96
- if (Object.keys(relationships).length > 0) {
97
- body.data.relationships = relationships;
98
- }
99
- return body;
88
+ return buildJsonApiBody("project", apiAttrs, undefined, {
89
+ company: typeof companyId === "string" ? { id: companyId, type: "company" } : undefined,
90
+ contact: typeof contactId === "string" ? { id: contactId, type: "contact" } : undefined,
91
+ opportunity: typeof opportunityId === "string" ? { id: opportunityId, type: "opportunity" } : undefined,
92
+ });
100
93
  });
101
94
  // Updates go through PUT /projects/{id}/information — the base resource
102
95
  // returns 405 on PATCH (issue #134, same root cause as #124). buildJsonApiBody
@@ -1 +1 @@
1
- {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACpG,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGlD,MAAM,IAAI,GAAG;IACX,UAAU,EAAE,QAAQ;IACpB,gBAAgB,EAAE,SAAS;IAC3B,OAAO,EAAE,WAAW;IACpB,MAAM,EAAE,gBAAgB;CACzB,CAAC;AAEF,MAAM,YAAY,GAAoB;IACpC;QACE,IAAI,EAAE,aAAa;QACnB,GAAG,EAAE,aAAa;QAClB,KAAK,EAAE,oCAAoC;QAC3C,OAAO,EAAE,4BAA4B;QACrC,OAAO,EAAE,+CAA+C;QACxD,OAAO,EAAE,kBAAkB;KAC5B;IACD;QACE,IAAI,EAAE,SAAS;QACf,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,2BAA2B;QAClC,OAAO,EAAE,aAAa;QACtB,OAAO,EAAE,4BAA4B;QACrC,OAAO,EAAE,yCAAyC;KACnD;IACD;QACE,IAAI,EAAE,YAAY;QAClB,GAAG,EAAE,YAAY;QACjB,KAAK,EAAE,mCAAmC;QAC1C,OAAO,EAAE,0BAA0B;QACnC,OAAO,EAAE,+BAA+B;QACxC,OAAO,EAAE,sBAAsB;KAChC;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,GAAG,EAAE,uBAAuB;QAC5B,KAAK,EAAE,uCAAuC;QAC9C,OAAO,EAAE,qCAAqC;QAC9C,OAAO,EAAE,yCAAyC;QAClD,OAAO,EACL,qHAAqH;KACxH;IACD;QACE,IAAI,EAAE,QAAQ;QACd,GAAG,EAAE,QAAQ;QACb,KAAK,EAAE,8BAA8B;QACrC,OAAO,EAAE,sBAAsB;QAC/B,OAAO,EAAE,+CAA+C;KACzD;IACD;QACE,IAAI,EAAE,WAAW;QACjB,GAAG,EAAE,WAAW;QAChB,KAAK,EAAE,oBAAoB;QAC3B,OAAO,EAAE,iCAAiC;QAC1C,OAAO,EAAE,qCAAqC;KAC/C;IACD;QACE,IAAI,EAAE,cAAc;QACpB,GAAG,EAAE,cAAc;QACnB,KAAK,EAAE,0BAA0B;QACjC,OAAO,EAAE,6BAA6B;QACtC,OAAO,EAAE,8BAA8B;QACvC,OAAO,EAAE,+EAA+E;KACzF;CACF,CAAC;AAEF,MAAM,0BAA0B,GAAG;;;;;;;;;;;;6GAY0E,CAAC;AAE9G,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE;QAC/B,MAAM,EAAE,mBAAmB;QAC3B,WAAW,EAAE,0BAA0B;KACxC,CAAC,CAAC;IACH,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE9B,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,MAAM,EAAE,EAAE;QAC/D,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;QACvE,MAAM,QAAQ,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,GAAG,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACnD,MAAM,aAAa,GAA4B,EAAE,CAAC;QAClD,IAAI,SAAS;YAAE,aAAa,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;QACpF,IAAI,SAAS;YAAE,aAAa,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;QACpF,IAAI,aAAa;YAAE,aAAa,CAAC,WAAW,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC;QACpG,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,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,wEAAwE;IACxE,+EAA+E;IAC/E,yEAAyE;IACzE,kBAAkB,CAChB,MAAM,EACN,IAAI,EACJ,mBAAmB,EACnB,CAAC,MAAM,EAAE,EAAE;QACT,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;QACtC,MAAM,QAAQ,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAChE,OAAO,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAY,CAAC,CAAC;IAC7D,CAAC,EACD,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,CAC7C,CAAC;IAEF,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAEjC,gBAAgB,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC;AAC3E,CAAC"}
1
+ {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ /** `/provider-invoices` payload: `resource` is mandatory, `providerCompany` / `providerContact` optional. */
3
+ export declare function buildProviderInvoiceBody(params: Record<string, unknown>): unknown;
2
4
  export declare function registerProviderInvoiceTools(server: McpServer): void;
3
5
  //# sourceMappingURL=provider-invoices.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider-invoices.d.ts","sourceRoot":"","sources":["../../src/tools/provider-invoices.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsCzE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0GpE"}
1
+ {"version":3,"file":"provider-invoices.d.ts","sourceRoot":"","sources":["../../src/tools/provider-invoices.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAuBzE,6GAA6G;AAC7G,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAOjF;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyCpE"}
@@ -1,40 +1,24 @@
1
- import { IdSchema, fieldsField } from "../schemas/index.js";
2
- import { apiRequest, buildSearchQuery, formatListResponse, formatDetailResponse } from "../services/boond-client.js";
3
- import { buildJsonApiBody } from "./crud-factory.js";
4
- import { z } from "zod";
5
- import { DEFAULT_PAGE_SIZE, MAX_PAGE_SIZE, MAX_SEARCH_PAGE } from "../constants.js";
6
- import { composeDescription, defaultGetDescription } from "./description-builders.js";
7
- const ProviderInvoiceSearchSchema = z
8
- .object({
9
- keywords: z.string().optional().describe("Mots-cles de recherche"),
10
- companyId: z.string().optional().describe("Filtrer par ID societe fournisseur"),
11
- resourceId: z.string().optional().describe("Filtrer par ID ressource via mot-cle COMP<id>"),
12
- page: z.number().int().min(1).max(MAX_SEARCH_PAGE).default(1).describe(`Numero de page (max: ${MAX_SEARCH_PAGE})`),
13
- pageSize: z.number().int().min(1).max(MAX_PAGE_SIZE).default(DEFAULT_PAGE_SIZE).describe("Resultats par page"),
14
- fields: fieldsField,
15
- })
16
- .strict();
17
- const ProviderInvoiceCreateSchema = z
18
- .object({
19
- reference: z.string().min(1).describe("Reference de la facture fournisseur"),
20
- resourceId: z.string().min(1).describe("ID de la ressource portee par la facture fournisseur"),
21
- companyId: z.string().optional().describe("ID de la societe fournisseur, mappe vers providerCompany"),
22
- contactId: z.string().optional().describe("ID du contact fournisseur, mappe vers providerContact"),
23
- invoiceDate: z.string().optional().describe("Date de facture (YYYY-MM-DD)"),
24
- startDate: z.string().min(1).describe("Date de debut de periode (YYYY-MM-DD)"),
25
- endDate: z.string().min(1).describe("Date de fin de periode (YYYY-MM-DD)"),
26
- amountExcludingTax: z.number().optional().describe("Montant HT"),
27
- amountIncludingTax: z.number().optional().describe("Montant TTC"),
28
- currency: z.number().optional().describe("Devise Boond"),
29
- exchangeRate: z.number().optional().describe("Taux de change"),
30
- currencyAgency: z.number().optional().describe("Devise agence"),
31
- exchangeRateAgency: z.number().optional().describe("Taux de change agence"),
32
- state: z.number().int().optional().describe("Etat de la facture fournisseur"),
33
- })
34
- .strict();
1
+ import { ProviderInvoiceCreateSchema, ProviderInvoiceSearchSchema, ProviderInvoiceUpdateSchema, } from "../schemas/index.js";
2
+ import { buildJsonApiBody, registerCreateTool, registerDeleteTool, registerGetTool, registerSearchTool, registerUpdateTool, } from "./crud-factory.js";
3
+ import { composeDescription } from "./description-builders.js";
4
+ const OPTS = {
5
+ entityName: "facture fournisseur",
6
+ entityNamePlural: "factures fournisseur",
7
+ apiPath: "/provider-invoices",
8
+ prefix: "boond_provider_invoices",
9
+ };
10
+ /** `/provider-invoices` payload: `resource` is mandatory, `providerCompany` / `providerContact` optional. */
11
+ export function buildProviderInvoiceBody(params) {
12
+ const { companyId, contactId, resourceId, ...attrs } = params;
13
+ return buildJsonApiBody("providerinvoice", attrs, undefined, {
14
+ resource: { id: String(resourceId), type: "resource" },
15
+ providerCompany: companyId ? { id: String(companyId), type: "company" } : undefined,
16
+ providerContact: contactId ? { id: String(contactId), type: "contact" } : undefined,
17
+ });
18
+ }
35
19
  export function registerProviderInvoiceTools(server) {
36
- server.registerTool("boond_provider_invoices_create", {
37
- title: "Creer une facture fournisseur",
20
+ registerCreateTool(server, OPTS, ProviderInvoiceCreateSchema, buildProviderInvoiceBody, {
21
+ title: "Créer une facture fournisseur",
38
22
  description: composeDescription({
39
23
  purpose: "Crée une facture fournisseur (facture reçue d'un prestataire).",
40
24
  when: "pour enregistrer la facture émise par un sous-traitant.",
@@ -43,89 +27,24 @@ export function registerProviderInvoiceTools(server) {
43
27
  "`resource`, `providerCompany` et `providerContact` sont attendus sous forme d'ID numériques.",
44
28
  "Écriture non idempotente.",
45
29
  ],
46
- returns: "confirmation et fiche de la facture fournisseur créée.",
30
+ returns: "confirmation et fiche de la facture fournisseur créée, avec son ID dans `structuredContent.id`.",
47
31
  }),
48
- inputSchema: ProviderInvoiceCreateSchema,
49
- annotations: {
50
- readOnlyHint: false,
51
- destructiveHint: false,
52
- idempotentHint: false,
53
- openWorldHint: false,
54
- },
55
- }, async (params) => {
56
- const { companyId, contactId, resourceId, ...attrs } = params;
57
- const body = buildJsonApiBody("providerinvoice", attrs);
58
- const relationships = {
59
- resource: { data: { id: resourceId, type: "resource" } },
60
- };
61
- if (companyId)
62
- relationships.providerCompany = { data: { id: companyId, type: "company" } };
63
- if (contactId)
64
- relationships.providerContact = { data: { id: contactId, type: "contact" } };
65
- body.data.relationships = relationships;
66
- const response = await apiRequest("/provider-invoices", "POST", body);
67
- const entity = Array.isArray(response.data) ? response.data[0] : response.data;
68
- return {
69
- content: [
70
- {
71
- type: "text",
72
- text: `Facture fournisseur creee avec succes.\nID: ${entity?.id}\n\n${formatDetailResponse(response)}`,
73
- },
74
- ],
75
- };
76
32
  });
77
- server.registerTool("boond_provider_invoices_search", {
78
- title: "Rechercher des factures fournisseur",
33
+ registerSearchTool(server, OPTS, {
34
+ schema: ProviderInvoiceSearchSchema,
79
35
  description: composeDescription({
80
36
  purpose: "Liste et recherche les factures fournisseur (factures reçues des prestataires).",
81
37
  when: "pour suivre les factures d'achat, par fournisseur, état ou période.",
82
38
  instead: "`boond_invoices_search` pour les factures de vente adressées aux clients — sens opposé, endpoint distinct.",
83
39
  returns: "page de résumés de factures fournisseur (référence, date, montants). Lecture seule.",
84
40
  }),
85
- inputSchema: ProviderInvoiceSearchSchema,
86
- annotations: {
87
- readOnlyHint: true,
88
- destructiveHint: false,
89
- idempotentHint: true,
90
- openWorldHint: true,
91
- },
92
- }, async (params) => {
93
- const { resourceId, companyId, keywords, ...rest } = params;
94
- const tokens = [];
95
- if (keywords)
96
- tokens.push(keywords);
97
- if (resourceId)
98
- tokens.push(`COMP${resourceId}`);
99
- if (companyId)
100
- tokens.push(`CSOC${companyId}`);
101
- const query = buildSearchQuery(tokens.length > 0 ? { ...rest, keywords: tokens.join(" ") } : rest);
102
- const response = await apiRequest("/provider-invoices", "GET", undefined, query);
103
- return {
104
- content: [{ type: "text", text: formatListResponse(response, "facture fournisseur", params.fields) }],
105
- };
106
- });
107
- server.registerTool("boond_provider_invoices_get", {
108
- title: "Details d'une facture fournisseur",
109
- description: defaultGetDescription({
110
- ...{
111
- entityName: "facture fournisseur",
112
- entityNamePlural: "factures fournisseur",
113
- prefix: "boond_provider_invoices",
114
- },
115
- withTab: false,
116
- }),
117
- inputSchema: IdSchema,
118
- annotations: {
119
- readOnlyHint: true,
120
- destructiveHint: false,
121
- idempotentHint: true,
122
- openWorldHint: false,
123
- },
124
- }, async (params) => {
125
- const response = await apiRequest(`/provider-invoices/${params.id}`);
126
- return {
127
- content: [{ type: "text", text: formatDetailResponse(response) }],
128
- };
129
41
  });
42
+ registerGetTool(server, OPTS, { withTab: false, title: "Détails d'une facture fournisseur" });
43
+ // Issue #252: mark a provider invoice paid (paidDate / state), fix a period or an amount.
44
+ registerUpdateTool(server, OPTS, ProviderInvoiceUpdateSchema, (params) => {
45
+ const { id, ...attrs } = params;
46
+ return buildJsonApiBody("providerinvoice", attrs, String(id));
47
+ }, { method: "PUT", title: "Modifier une facture fournisseur" });
48
+ registerDeleteTool(server, OPTS, { title: "Supprimer une facture fournisseur" });
130
49
  }
131
50
  //# sourceMappingURL=provider-invoices.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider-invoices.js","sourceRoot":"","sources":["../../src/tools/provider-invoices.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider-invoices.js","sourceRoot":"","sources":["../../src/tools/provider-invoices.ts"],"names":[],"mappings":"AACA,OAAO,EACL,2BAA2B,EAC3B,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,MAAM,IAAI,GAAG;IACX,UAAU,EAAE,qBAAqB;IACjC,gBAAgB,EAAE,sBAAsB;IACxC,OAAO,EAAE,oBAAoB;IAC7B,MAAM,EAAE,yBAAyB;CAClC,CAAC;AAEF,6GAA6G;AAC7G,MAAM,UAAU,wBAAwB,CAAC,MAA+B;IACtE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;IAC9D,OAAO,gBAAgB,CAAC,iBAAiB,EAAE,KAAK,EAAE,SAAS,EAAE;QAC3D,QAAQ,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE;QACtD,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS;QACnF,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS;KACpF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,MAAiB;IAC5D,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,2BAA2B,EAAE,wBAAwB,EAAE;QACtF,KAAK,EAAE,+BAA+B;QACtC,WAAW,EAAE,kBAAkB,CAAC;YAC9B,OAAO,EAAE,gEAAgE;YACzE,IAAI,EAAE,yDAAyD;YAC/D,OAAO,EACL,qHAAqH;YACvH,SAAS,EAAE;gBACT,8FAA8F;gBAC9F,2BAA2B;aAC5B;YACD,OAAO,EAAE,iGAAiG;SAC3G,CAAC;KACH,CAAC,CAAC;IAEH,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE;QAC/B,MAAM,EAAE,2BAA2B;QACnC,WAAW,EAAE,kBAAkB,CAAC;YAC9B,OAAO,EAAE,iFAAiF;YAC1F,IAAI,EAAE,qEAAqE;YAC3E,OAAO,EACL,4GAA4G;YAC9G,OAAO,EAAE,qFAAqF;SAC/F,CAAC;KACH,CAAC,CAAC;IAEH,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAC,CAAC;IAE9F,0FAA0F;IAC1F,kBAAkB,CAChB,MAAM,EACN,IAAI,EACJ,2BAA2B,EAC3B,CAAC,MAAM,EAAE,EAAE;QACT,MAAM,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;QAChC,OAAO,gBAAgB,CAAC,iBAAiB,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC,EACD,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAC7D,CAAC;IACF,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAC,CAAC;AACnF,CAAC"}
@@ -1,3 +1,5 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ /** `/purchases` payload: the three optional ids become relationships; `id` (update) lands on `data.id`. */
3
+ export declare function buildPurchaseBody(params: Record<string, unknown>): unknown;
2
4
  export declare function registerPurchaseTools(server: McpServer): void;
3
5
  //# sourceMappingURL=purchases.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"purchases.d.ts","sourceRoot":"","sources":["../../src/tools/purchases.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAuCzE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgH7D"}
1
+ {"version":3,"file":"purchases.d.ts","sourceRoot":"","sources":["../../src/tools/purchases.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA8BzE,2GAA2G;AAC3G,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAY1E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmD7D"}