@codegame.dev/careerflow-mcp 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +398 -0
  3. package/dist/client.js +110 -0
  4. package/dist/client.js.map +1 -0
  5. package/dist/config.js +37 -0
  6. package/dist/config.js.map +1 -0
  7. package/dist/helpers.js +192 -0
  8. package/dist/helpers.js.map +1 -0
  9. package/dist/index.js +194 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/setup.js +296 -0
  12. package/dist/setup.js.map +1 -0
  13. package/dist/tools/admin.js +232 -0
  14. package/dist/tools/admin.js.map +1 -0
  15. package/dist/tools/benefit-funds.js +243 -0
  16. package/dist/tools/benefit-funds.js.map +1 -0
  17. package/dist/tools/chat-extra.js +172 -0
  18. package/dist/tools/chat-extra.js.map +1 -0
  19. package/dist/tools/chat.js +125 -0
  20. package/dist/tools/chat.js.map +1 -0
  21. package/dist/tools/cms.js +145 -0
  22. package/dist/tools/cms.js.map +1 -0
  23. package/dist/tools/crm-admin.js +269 -0
  24. package/dist/tools/crm-admin.js.map +1 -0
  25. package/dist/tools/crm.js +632 -0
  26. package/dist/tools/crm.js.map +1 -0
  27. package/dist/tools/dev-tickets.js +94 -0
  28. package/dist/tools/dev-tickets.js.map +1 -0
  29. package/dist/tools/forms.js +105 -0
  30. package/dist/tools/forms.js.map +1 -0
  31. package/dist/tools/hr.js +517 -0
  32. package/dist/tools/hr.js.map +1 -0
  33. package/dist/tools/kanban-extra.js +403 -0
  34. package/dist/tools/kanban-extra.js.map +1 -0
  35. package/dist/tools/misc.js +159 -0
  36. package/dist/tools/misc.js.map +1 -0
  37. package/dist/tools/projects.js +138 -0
  38. package/dist/tools/projects.js.map +1 -0
  39. package/dist/tools/tasks.js +342 -0
  40. package/dist/tools/tasks.js.map +1 -0
  41. package/dist/tools/time.js +129 -0
  42. package/dist/tools/time.js.map +1 -0
  43. package/dist/tools/workplace.js +110 -0
  44. package/dist/tools/workplace.js.map +1 -0
  45. package/dist/tools/workspace.js +199 -0
  46. package/dist/tools/workspace.js.map +1 -0
  47. package/package.json +61 -0
@@ -0,0 +1,403 @@
1
+ import { z } from "zod";
2
+ import { companyIdSchema, extractList, fetchTask, resolveCompanyId, safeHandler, summariseTask, textResult } from "../helpers.js";
3
+ /**
4
+ * Kanban tools beyond the daily task surface in tools/tasks.ts: boards, labels,
5
+ * checklists, attachments, recurring tasks, and the kanban activity log.
6
+ */
7
+ export function registerKanbanExtraTools(server, client) {
8
+ // --------------------------------------------------------------- boards
9
+ server.registerTool("create_board", {
10
+ title: "Create a kanban board",
11
+ description: "Add a board (column) to a project. New boards are appended to the end.",
12
+ inputSchema: {
13
+ company_id: companyIdSchema,
14
+ project_id: z.number().int(),
15
+ name: z.string().min(1),
16
+ description: z.string().optional()
17
+ }
18
+ }, safeHandler(async (args) => {
19
+ const companyId = resolveCompanyId(client, args.company_id);
20
+ const response = await client.post("kanbans/boards/create", {
21
+ company_id: companyId,
22
+ project_id: args.project_id,
23
+ name: args.name,
24
+ description: args.description
25
+ });
26
+ return textResult({ created: true, boards: response.data });
27
+ }));
28
+ server.registerTool("edit_board", {
29
+ title: "Rename or redescribe a board",
30
+ description: "Change a board's name or description.",
31
+ inputSchema: {
32
+ company_id: companyIdSchema,
33
+ project_id: z.number().int(),
34
+ board_id: z.number().int(),
35
+ name: z.string().min(1),
36
+ description: z.string().optional()
37
+ }
38
+ }, safeHandler(async (args) => {
39
+ const companyId = resolveCompanyId(client, args.company_id);
40
+ const response = await client.post("kanbans/boards/edit", {
41
+ company_id: companyId,
42
+ project_id: args.project_id,
43
+ board_id: args.board_id,
44
+ name: args.name,
45
+ description: args.description
46
+ });
47
+ return textResult({ updated: true, boards: response.data });
48
+ }));
49
+ server.registerTool("archive_board", {
50
+ title: "Archive or restore a board",
51
+ description: "Archive a board to hide it, or restore an archived one. System boards cannot be archived.",
52
+ inputSchema: {
53
+ company_id: companyIdSchema,
54
+ project_id: z.number().int(),
55
+ board_id: z.number().int(),
56
+ restore: z.boolean().optional().default(false)
57
+ }
58
+ }, safeHandler(async (args) => {
59
+ const companyId = resolveCompanyId(client, args.company_id);
60
+ const path = args.restore ? "kanbans/boards/restore" : "kanbans/boards/delete";
61
+ const response = await client.post(path, {
62
+ company_id: companyId,
63
+ project_id: args.project_id,
64
+ board_id: args.board_id
65
+ });
66
+ return textResult({ archived: !args.restore, boards: response.data });
67
+ }));
68
+ // --------------------------------------------------------------- labels
69
+ server.registerTool("list_labels", {
70
+ title: "List task labels",
71
+ description: "List the labels defined on a project.",
72
+ inputSchema: { company_id: companyIdSchema, project_id: z.number().int() }
73
+ }, safeHandler(async (args) => {
74
+ const companyId = resolveCompanyId(client, args.company_id);
75
+ // labels aren't returned by a dedicated list endpoint; a single project
76
+ // fetch embeds its labels, and label add/edit/delete/swap return the
77
+ // same array as a side effect
78
+ const response = await client.get(`projects/${args.project_id}`, {
79
+ company_id: companyId
80
+ });
81
+ return textResult(response.data?.labels ?? []);
82
+ }));
83
+ server.registerTool("create_label", {
84
+ title: "Create a task label",
85
+ description: "Add a label to a project's label set.",
86
+ inputSchema: {
87
+ company_id: companyIdSchema,
88
+ project_id: z.number().int(),
89
+ title: z.string().min(1),
90
+ color: z.string().min(1)
91
+ }
92
+ }, safeHandler(async (args) => {
93
+ const companyId = resolveCompanyId(client, args.company_id);
94
+ const response = await client.post("kanbans/labels/add", {
95
+ company_id: companyId,
96
+ project_id: args.project_id,
97
+ title: args.title,
98
+ color: args.color
99
+ });
100
+ return textResult({ created: true, labels: response.data?.labels });
101
+ }));
102
+ server.registerTool("delete_label", {
103
+ title: "Delete a task label",
104
+ description: "Remove a label from a project.",
105
+ inputSchema: { company_id: companyIdSchema, project_id: z.number().int(), label_id: z.number().int() }
106
+ }, safeHandler(async (args) => {
107
+ const companyId = resolveCompanyId(client, args.company_id);
108
+ const response = await client.post("kanbans/labels/delete", {
109
+ company_id: companyId,
110
+ project_id: args.project_id,
111
+ label_id: args.label_id
112
+ });
113
+ return textResult({ deleted: true, labels: response.data?.labels });
114
+ }));
115
+ // ----------------------------------------------------------- checklists
116
+ server.registerTool("add_task_checklist", {
117
+ title: "Add a checklist to a task",
118
+ description: "Add a checklist to a task.",
119
+ inputSchema: {
120
+ company_id: companyIdSchema,
121
+ project_id: z.number().int(),
122
+ board_id: z.number().int(),
123
+ task_id: z.number().int(),
124
+ title: z.string().min(1)
125
+ }
126
+ }, safeHandler(async (args) => {
127
+ const companyId = resolveCompanyId(client, args.company_id);
128
+ const response = await client.post("kanbans/tasks/checklists/add", {
129
+ company_id: companyId,
130
+ project_id: args.project_id,
131
+ board_id: args.board_id,
132
+ task_id: args.task_id,
133
+ title: args.title
134
+ });
135
+ return textResult({ created: true, task: summariseTask(response.data?.task ?? {}) });
136
+ }));
137
+ server.registerTool("add_checklist_item", {
138
+ title: "Add a checklist item",
139
+ description: "Add an item to a task checklist. due_date and user_id are only applied when the caller " +
140
+ "has full board access.",
141
+ inputSchema: {
142
+ company_id: companyIdSchema,
143
+ project_id: z.number().int(),
144
+ board_id: z.number().int(),
145
+ task_id: z.number().int(),
146
+ checklist_id: z.number().int(),
147
+ title: z.string().min(1),
148
+ due_date: z.string().optional(),
149
+ user_id: z.number().int().optional()
150
+ }
151
+ }, safeHandler(async (args) => {
152
+ const companyId = resolveCompanyId(client, args.company_id);
153
+ const response = await client.post("kanbans/tasks/checklists/items/add", {
154
+ company_id: companyId,
155
+ project_id: args.project_id,
156
+ board_id: args.board_id,
157
+ task_id: args.task_id,
158
+ checklist_id: args.checklist_id,
159
+ title: args.title,
160
+ due_date: args.due_date,
161
+ user_id: args.user_id
162
+ });
163
+ return textResult({ created: true, task: summariseTask(response.data?.task ?? {}) });
164
+ }));
165
+ server.registerTool("complete_checklist_item", {
166
+ title: "Complete or reopen a checklist item",
167
+ description: "Mark a checklist item done or not done.",
168
+ inputSchema: {
169
+ company_id: companyIdSchema,
170
+ project_id: z.number().int(),
171
+ board_id: z.number().int(),
172
+ task_id: z.number().int(),
173
+ checklist_id: z.number().int(),
174
+ item_id: z.number().int(),
175
+ title: z.string().min(1).describe("Required by the API even when only toggling completion."),
176
+ is_completed: z.boolean().default(true)
177
+ }
178
+ }, safeHandler(async (args) => {
179
+ const companyId = resolveCompanyId(client, args.company_id);
180
+ const response = await client.post("kanbans/tasks/checklists/items/edit", {
181
+ company_id: companyId,
182
+ project_id: args.project_id,
183
+ board_id: args.board_id,
184
+ task_id: args.task_id,
185
+ checklist_id: args.checklist_id,
186
+ item_id: args.item_id,
187
+ title: args.title,
188
+ is_completed: args.is_completed
189
+ });
190
+ return textResult({ updated: true, task: summariseTask(response.data?.task ?? {}) });
191
+ }));
192
+ server.registerTool("delete_checklist", {
193
+ title: "Delete a checklist or checklist item",
194
+ description: "Delete a checklist, or one item within it.",
195
+ inputSchema: {
196
+ company_id: companyIdSchema,
197
+ project_id: z.number().int(),
198
+ board_id: z.number().int(),
199
+ task_id: z.number().int(),
200
+ checklist_id: z.number().int(),
201
+ item_id: z.number().int().optional().describe("Omit to delete the whole checklist.")
202
+ }
203
+ }, safeHandler(async (args) => {
204
+ const companyId = resolveCompanyId(client, args.company_id);
205
+ const path = args.item_id ? "kanbans/tasks/checklists/items/delete" : "kanbans/tasks/checklists/delete";
206
+ const response = await client.post(path, {
207
+ company_id: companyId,
208
+ project_id: args.project_id,
209
+ board_id: args.board_id,
210
+ task_id: args.task_id,
211
+ checklist_id: args.checklist_id,
212
+ item_id: args.item_id
213
+ });
214
+ return textResult({ deleted: true, task: summariseTask(response.data?.task ?? {}) });
215
+ }));
216
+ // ---------------------------------------------------------- attachments
217
+ server.registerTool("add_task_link_attachment", {
218
+ title: "Attach a link to a task",
219
+ description: "Attach a URL to a task. File/image/video attachments require an uploaded asset id and " +
220
+ "are not supported from this tool — attach a link instead, or use the web app to upload.",
221
+ inputSchema: {
222
+ company_id: companyIdSchema,
223
+ project_id: z.number().int(),
224
+ board_id: z.number().int(),
225
+ task_id: z.number().int(),
226
+ link: z.string().url(),
227
+ name: z.string().optional()
228
+ }
229
+ }, safeHandler(async (args) => {
230
+ const companyId = resolveCompanyId(client, args.company_id);
231
+ const response = await client.post("kanbans/tasks/attachments/add", {
232
+ company_id: companyId,
233
+ project_id: args.project_id,
234
+ board_id: args.board_id,
235
+ task_id: args.task_id,
236
+ type: "link",
237
+ link: args.link,
238
+ name: args.name
239
+ });
240
+ return textResult({
241
+ created: true,
242
+ attachment: response.data?.attachment,
243
+ task: summariseTask(response.data?.task ?? {})
244
+ });
245
+ }));
246
+ server.registerTool("delete_task_attachment", {
247
+ title: "Delete a task attachment",
248
+ description: "Remove an attachment from a task.",
249
+ inputSchema: {
250
+ company_id: companyIdSchema,
251
+ project_id: z.number().int(),
252
+ board_id: z.number().int(),
253
+ task_id: z.number().int(),
254
+ attachment_id: z.number().int()
255
+ }
256
+ }, safeHandler(async (args) => {
257
+ const companyId = resolveCompanyId(client, args.company_id);
258
+ const response = await client.post("kanbans/tasks/attachments/delete", {
259
+ company_id: companyId,
260
+ project_id: args.project_id,
261
+ board_id: args.board_id,
262
+ task_id: args.task_id,
263
+ attachment_id: args.attachment_id
264
+ });
265
+ return textResult({ deleted: true, task: summariseTask(response.data?.task ?? {}) });
266
+ }));
267
+ // -------------------------------------------------------------- delete
268
+ server.registerTool("archive_task", {
269
+ title: "Archive or restore a task",
270
+ description: "Archive a task (soft-delete) to remove it from the board, or restore a previously archived one.",
271
+ inputSchema: {
272
+ company_id: companyIdSchema,
273
+ task_id: z.number().int(),
274
+ restore: z.boolean().optional().default(false)
275
+ }
276
+ }, safeHandler(async (args) => {
277
+ const companyId = resolveCompanyId(client, args.company_id);
278
+ const task = await fetchTask(client, companyId, args.task_id);
279
+ const path = args.restore ? "kanbans/tasks/restore" : "kanbans/tasks/delete";
280
+ await client.post(path, {
281
+ company_id: companyId,
282
+ project_id: task.project_id,
283
+ board_id: task.board_id,
284
+ task_id: args.task_id
285
+ });
286
+ return textResult({ task_id: args.task_id, archived: !args.restore, title: task.title });
287
+ }));
288
+ server.registerTool("duplicate_task", {
289
+ title: "Duplicate a task",
290
+ description: "Copy a task, optionally into a different project and board.",
291
+ inputSchema: {
292
+ company_id: companyIdSchema,
293
+ task_id: z.number().int(),
294
+ destination_project_id: z.number().int().optional().describe("Defaults to the task's current project."),
295
+ destination_board_id: z.number().int().optional().describe("Defaults to the task's current board.")
296
+ }
297
+ }, safeHandler(async (args) => {
298
+ const companyId = resolveCompanyId(client, args.company_id);
299
+ const task = await fetchTask(client, companyId, args.task_id);
300
+ const response = await client.post("kanbans/tasks/duplicate", {
301
+ company_id: companyId,
302
+ source_project_id: task.project_id,
303
+ source_board_id: task.board_id,
304
+ task_id: args.task_id,
305
+ destination_project_id: args.destination_project_id ?? task.project_id,
306
+ destination_board_id: args.destination_board_id ?? task.board_id
307
+ });
308
+ return textResult({
309
+ created: true,
310
+ task: summariseTask(response.data?.duplicated_task ?? {})
311
+ });
312
+ }));
313
+ // --------------------------------------------------------- recurring tasks
314
+ server.registerTool("list_recurring_tasks", {
315
+ title: "List recurring task templates",
316
+ description: "List the recurring task templates configured on a project.",
317
+ inputSchema: {
318
+ company_id: companyIdSchema,
319
+ project_id: z.number().int(),
320
+ is_archived: z.boolean().optional().default(false),
321
+ limit: z.number().int().min(1).max(50).optional().default(20),
322
+ page: z.number().int().min(1).optional().default(1)
323
+ }
324
+ }, safeHandler(async (args) => {
325
+ const companyId = resolveCompanyId(client, args.company_id);
326
+ const response = await client.get("kanbans/recurring-tasks/search", {
327
+ company_id: companyId,
328
+ project_id: args.project_id,
329
+ is_archived: args.is_archived,
330
+ limit: args.limit,
331
+ page: args.page
332
+ });
333
+ const { items, total } = extractList(response.data, "recurring_tasks");
334
+ return textResult({ count: total ?? items.length, recurring_tasks: items });
335
+ }));
336
+ server.registerTool("create_recurring_task", {
337
+ title: "Create a recurring task",
338
+ description: "Set up a task that regenerates on a schedule. frequency_days (0=Sunday..6=Saturday) only " +
339
+ "applies when frequency_type is 'week'.",
340
+ inputSchema: {
341
+ company_id: companyIdSchema,
342
+ project_id: z.number().int(),
343
+ board_id: z.number().int(),
344
+ title: z.string().min(1),
345
+ frequency_number: z.number().int().min(1),
346
+ frequency_type: z.enum(["day", "week", "month", "year"]),
347
+ frequency_days: z.array(z.number().int().min(0).max(6)).optional()
348
+ }
349
+ }, safeHandler(async (args) => {
350
+ const companyId = resolveCompanyId(client, args.company_id);
351
+ const response = await client.post("kanbans/recurring-tasks/add", {
352
+ company_id: companyId,
353
+ project_id: args.project_id,
354
+ board_id: args.board_id,
355
+ title: args.title,
356
+ frequency_number: args.frequency_number,
357
+ frequency_type: args.frequency_type,
358
+ frequency_days: args.frequency_days?.join(",")
359
+ });
360
+ return textResult({ created: true, recurring_task: response.data });
361
+ }));
362
+ server.registerTool("delete_recurring_task", {
363
+ title: "Delete a recurring task",
364
+ description: "Stop a recurring task template from regenerating further copies.",
365
+ inputSchema: { company_id: companyIdSchema, project_id: z.number().int(), recurring_id: z.number().int() }
366
+ }, safeHandler(async (args) => {
367
+ const companyId = resolveCompanyId(client, args.company_id);
368
+ await client.post("kanbans/recurring-tasks/delete", {
369
+ company_id: companyId,
370
+ project_id: args.project_id,
371
+ recurring_id: args.recurring_id
372
+ });
373
+ return textResult({ deleted: true, recurring_id: args.recurring_id });
374
+ }));
375
+ // ------------------------------------------------------------- activity
376
+ server.registerTool("list_kanban_activity", {
377
+ title: "List kanban activity",
378
+ description: "Read the activity log for a project, board, or task — who moved, edited, or archived what.",
379
+ inputSchema: {
380
+ company_id: companyIdSchema,
381
+ project_id: z.number().int().optional(),
382
+ board_id: z.number().int().optional(),
383
+ task_id: z.number().int().optional(),
384
+ user_id: z.number().int().optional(),
385
+ limit: z.number().int().min(1).max(50).optional().default(20),
386
+ page: z.number().int().min(1).optional().default(1)
387
+ }
388
+ }, safeHandler(async (args) => {
389
+ const companyId = resolveCompanyId(client, args.company_id);
390
+ const response = await client.get("kanbans/activities/search", {
391
+ company_id: companyId,
392
+ project_id: args.project_id,
393
+ board_id: args.board_id,
394
+ task_id: args.task_id,
395
+ user_id: args.user_id,
396
+ limit: args.limit,
397
+ page: args.page
398
+ });
399
+ const { items, total } = extractList(response.data, "activities");
400
+ return textResult({ count: total ?? items.length, activities: items });
401
+ }));
402
+ }
403
+ //# sourceMappingURL=kanban-extra.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kanban-extra.js","sourceRoot":"","sources":["../../src/tools/kanban-extra.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,159 @@
1
+ import { z } from "zod";
2
+ import { companyIdSchema, extractList, resolveCompanyId, safeHandler, textResult } from "../helpers.js";
3
+ /**
4
+ * Small standalone tools: the caller's own addresses, survey/announcement
5
+ * authoring, and billing history.
6
+ */
7
+ export function registerMiscTools(server, client) {
8
+ // ------------------------------------------------------------- addresses
9
+ server.registerTool("list_my_addresses", {
10
+ title: "List my addresses",
11
+ description: "List the authenticated user's saved addresses.",
12
+ inputSchema: {}
13
+ }, safeHandler(async () => {
14
+ const response = await client.get("addresses", {});
15
+ return textResult(response.data);
16
+ }));
17
+ server.registerTool("add_address", {
18
+ title: "Add an address",
19
+ description: "Save a new address for the authenticated user.",
20
+ inputSchema: {
21
+ city_id: z.number().int(),
22
+ postal_code: z.string().min(1),
23
+ details: z.string().min(1),
24
+ latitude: z.number().optional(),
25
+ longitude: z.number().optional()
26
+ }
27
+ }, safeHandler(async (args) => {
28
+ const response = await client.post("addresses/add", {
29
+ city_id: args.city_id,
30
+ postal_code: args.postal_code,
31
+ details: args.details,
32
+ latitude: args.latitude,
33
+ longitude: args.longitude
34
+ });
35
+ return textResult({ created: true, address: response.data });
36
+ }));
37
+ // --------------------------------------------------------------- surveys
38
+ server.registerTool("create_survey", {
39
+ title: "Create a survey",
40
+ description: "Create a survey. Build its questions afterward through the web app's form builder.",
41
+ inputSchema: {
42
+ company_id: companyIdSchema,
43
+ title: z.string().min(1),
44
+ description: z.string().optional()
45
+ }
46
+ }, safeHandler(async (args) => {
47
+ const companyId = resolveCompanyId(client, args.company_id);
48
+ const response = await client.post("surveys/create", {
49
+ company_id: companyId,
50
+ title: args.title,
51
+ description: args.description
52
+ });
53
+ return textResult({ created: true, survey: response.data });
54
+ }));
55
+ server.registerTool("delete_survey", {
56
+ title: "Delete a survey",
57
+ description: "Delete a survey.",
58
+ inputSchema: { company_id: companyIdSchema, survey_id: z.number().int() }
59
+ }, safeHandler(async (args) => {
60
+ const companyId = resolveCompanyId(client, args.company_id);
61
+ await client.post(`surveys/delete/${args.survey_id}`, { company_id: companyId });
62
+ return textResult({ deleted: true, survey_id: args.survey_id });
63
+ }));
64
+ server.registerTool("list_survey_answers", {
65
+ title: "List survey answers",
66
+ description: "List a survey's submitted answers.",
67
+ inputSchema: {
68
+ company_id: companyIdSchema,
69
+ survey_id: z.number().int(),
70
+ search: z.string().optional(),
71
+ limit: z.number().int().min(1).max(50).optional().default(10),
72
+ page: z.number().int().min(1).optional().default(1)
73
+ }
74
+ }, safeHandler(async (args) => {
75
+ const companyId = resolveCompanyId(client, args.company_id);
76
+ const response = await client.get("surveys/answers/search", {
77
+ company_id: companyId,
78
+ survey_id: args.survey_id,
79
+ search: args.search,
80
+ limit: args.limit,
81
+ page: args.page
82
+ });
83
+ const { items, total } = extractList(response.data, "answers");
84
+ return textResult({ count: total ?? items.length, answers: items });
85
+ }));
86
+ server.registerTool("answer_survey", {
87
+ title: "Answer a survey",
88
+ description: "Submit the authenticated user's answers to a survey. answer_data is keyed by the survey's " +
89
+ "question slugs — read the survey in the web app to see them. Submitting again replaces the " +
90
+ "previous answer.",
91
+ inputSchema: {
92
+ company_id: companyIdSchema,
93
+ survey_id: z.number().int(),
94
+ answer_data: z.record(z.string(), z.unknown())
95
+ }
96
+ }, safeHandler(async (args) => {
97
+ const companyId = resolveCompanyId(client, args.company_id);
98
+ const response = await client.post("surveys/answers/create", {
99
+ company_id: companyId,
100
+ id: args.survey_id,
101
+ answer_data: JSON.stringify(args.answer_data)
102
+ });
103
+ return textResult({ submitted: true, answer: response.data });
104
+ }));
105
+ // --------------------------------------------------------- announcements
106
+ server.registerTool("create_announcement", {
107
+ title: "Create an announcement",
108
+ description: "Post a company-wide announcement.",
109
+ inputSchema: { company_id: companyIdSchema, title: z.string().min(1), content: z.string().min(1) }
110
+ }, safeHandler(async (args) => {
111
+ const companyId = resolveCompanyId(client, args.company_id);
112
+ const response = await client.post("announcements/create", {
113
+ company_id: companyId,
114
+ title: args.title,
115
+ content: args.content
116
+ });
117
+ return textResult({ created: true, announcement: response.data });
118
+ }));
119
+ server.registerTool("delete_announcement", {
120
+ title: "Delete an announcement",
121
+ description: "Delete a company announcement.",
122
+ inputSchema: { company_id: companyIdSchema, announcement_id: z.number().int() }
123
+ }, safeHandler(async (args) => {
124
+ const companyId = resolveCompanyId(client, args.company_id);
125
+ await client.post(`announcements/delete/${args.announcement_id}`, { company_id: companyId });
126
+ return textResult({ deleted: true, announcement_id: args.announcement_id });
127
+ }));
128
+ // ---------------------------------------------------------------- billing
129
+ server.registerTool("list_transactions", {
130
+ title: "List billing transactions",
131
+ description: "List the authenticated user's or company's billing transaction history.",
132
+ inputSchema: {
133
+ limit: z.number().int().min(1).max(50).optional().default(20),
134
+ page: z.number().int().min(1).optional().default(1)
135
+ }
136
+ }, safeHandler(async (args) => {
137
+ const response = await client.get("transactions/search", {
138
+ limit: args.limit,
139
+ page: args.page
140
+ });
141
+ const { items, total } = extractList(response.data, "transactions");
142
+ return textResult({ count: total ?? items.length, transactions: items });
143
+ }));
144
+ server.registerTool("list_payment_orders", {
145
+ title: "List payment orders",
146
+ description: "List payment orders (invoices/purchases).",
147
+ inputSchema: {
148
+ limit: z.number().int().min(1).max(50).optional().default(20),
149
+ page: z.number().int().min(1).optional().default(1)
150
+ }
151
+ }, safeHandler(async (args) => {
152
+ const response = await client.get("payment-orders/search", {
153
+ limit: args.limit,
154
+ page: args.page
155
+ });
156
+ return textResult(response.data);
157
+ }));
158
+ }
159
+ //# sourceMappingURL=misc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"misc.js","sourceRoot":"","sources":["../../src/tools/misc.ts"],"names":[],"mappings":"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"}