@doist/todoist-ai 4.4.0 → 4.6.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 (80) hide show
  1. package/dist/index.d.ts +168 -35
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +24 -16
  4. package/dist/mcp-helpers.d.ts.map +1 -1
  5. package/dist/mcp-helpers.js +1 -1
  6. package/dist/mcp-server.d.ts.map +1 -1
  7. package/dist/mcp-server.js +78 -17
  8. package/dist/tool-helpers.d.ts +4 -0
  9. package/dist/tool-helpers.d.ts.map +1 -1
  10. package/dist/tool-helpers.js +2 -0
  11. package/dist/tools/__tests__/add-projects.test.js +1 -1
  12. package/dist/tools/__tests__/add-sections.test.js +1 -1
  13. package/dist/tools/__tests__/add-tasks.test.js +182 -13
  14. package/dist/tools/__tests__/assignment-integration.test.d.ts +2 -0
  15. package/dist/tools/__tests__/assignment-integration.test.d.ts.map +1 -0
  16. package/dist/tools/__tests__/assignment-integration.test.js +415 -0
  17. package/dist/tools/__tests__/find-projects.test.js +1 -1
  18. package/dist/tools/__tests__/find-sections.test.js +1 -1
  19. package/dist/tools/__tests__/find-tasks-by-date.test.js +1 -1
  20. package/dist/tools/__tests__/find-tasks.test.js +3 -3
  21. package/dist/tools/__tests__/get-overview.test.js +1 -1
  22. package/dist/tools/__tests__/update-tasks.test.js +82 -6
  23. package/dist/tools/__tests__/user-info.test.js +1 -1
  24. package/dist/tools/add-comments.d.ts +3 -3
  25. package/dist/tools/add-comments.d.ts.map +1 -1
  26. package/dist/tools/add-comments.js +1 -1
  27. package/dist/tools/add-projects.d.ts.map +1 -1
  28. package/dist/tools/add-projects.js +1 -1
  29. package/dist/tools/add-sections.d.ts.map +1 -1
  30. package/dist/tools/add-sections.js +1 -1
  31. package/dist/tools/add-tasks.d.ts +17 -7
  32. package/dist/tools/add-tasks.d.ts.map +1 -1
  33. package/dist/tools/add-tasks.js +51 -4
  34. package/dist/tools/find-comments.d.ts +2 -2
  35. package/dist/tools/find-completed-tasks.d.ts +4 -2
  36. package/dist/tools/find-completed-tasks.d.ts.map +1 -1
  37. package/dist/tools/find-completed-tasks.js +2 -2
  38. package/dist/tools/find-project-collaborators.d.ts +64 -0
  39. package/dist/tools/find-project-collaborators.d.ts.map +1 -0
  40. package/dist/tools/find-project-collaborators.js +151 -0
  41. package/dist/tools/find-tasks-by-date.d.ts +2 -0
  42. package/dist/tools/find-tasks-by-date.d.ts.map +1 -1
  43. package/dist/tools/find-tasks-by-date.js +2 -2
  44. package/dist/tools/find-tasks.d.ts +7 -2
  45. package/dist/tools/find-tasks.d.ts.map +1 -1
  46. package/dist/tools/find-tasks.js +128 -33
  47. package/dist/tools/get-overview.d.ts +2 -2
  48. package/dist/tools/get-overview.d.ts.map +1 -1
  49. package/dist/tools/get-overview.js +1 -1
  50. package/dist/tools/manage-assignments.d.ts +52 -0
  51. package/dist/tools/manage-assignments.d.ts.map +1 -0
  52. package/dist/tools/manage-assignments.js +337 -0
  53. package/dist/tools/update-comments.d.ts.map +1 -1
  54. package/dist/tools/update-comments.js +1 -1
  55. package/dist/tools/update-sections.d.ts.map +1 -1
  56. package/dist/tools/update-sections.js +1 -1
  57. package/dist/tools/update-tasks.d.ts +17 -7
  58. package/dist/tools/update-tasks.d.ts.map +1 -1
  59. package/dist/tools/update-tasks.js +40 -10
  60. package/dist/utils/assignment-validator.d.ts +69 -0
  61. package/dist/utils/assignment-validator.d.ts.map +1 -0
  62. package/dist/utils/assignment-validator.js +253 -0
  63. package/dist/utils/duration-parser.d.ts +2 -2
  64. package/dist/utils/duration-parser.d.ts.map +1 -1
  65. package/dist/utils/priorities.d.ts +8 -0
  66. package/dist/utils/priorities.d.ts.map +1 -0
  67. package/dist/utils/priorities.js +15 -0
  68. package/dist/utils/response-builders.d.ts +2 -2
  69. package/dist/utils/response-builders.d.ts.map +1 -1
  70. package/dist/utils/response-builders.js +8 -1
  71. package/dist/utils/test-helpers.d.ts +2 -0
  72. package/dist/utils/test-helpers.d.ts.map +1 -1
  73. package/dist/utils/test-helpers.js +2 -0
  74. package/dist/utils/tool-names.d.ts +2 -0
  75. package/dist/utils/tool-names.d.ts.map +1 -1
  76. package/dist/utils/tool-names.js +3 -0
  77. package/dist/utils/user-resolver.d.ts +39 -0
  78. package/dist/utils/user-resolver.d.ts.map +1 -0
  79. package/dist/utils/user-resolver.js +179 -0
  80. package/package.json +6 -6
package/dist/index.d.ts CHANGED
@@ -1,21 +1,23 @@
1
1
  import { getMcpServer } from './mcp-server.js';
2
+ import { addComments } from './tools/add-comments.js';
3
+ import { addProjects } from './tools/add-projects.js';
4
+ import { addSections } from './tools/add-sections.js';
2
5
  import { addTasks } from './tools/add-tasks.js';
3
6
  import { completeTasks } from './tools/complete-tasks.js';
7
+ import { deleteObject } from './tools/delete-object.js';
8
+ import { findComments } from './tools/find-comments.js';
4
9
  import { findCompletedTasks } from './tools/find-completed-tasks.js';
5
- import { findTasksByDate } from './tools/find-tasks-by-date.js';
6
- import { findTasks } from './tools/find-tasks.js';
7
- import { updateTasks } from './tools/update-tasks.js';
8
- import { addProjects } from './tools/add-projects.js';
10
+ import { findProjectCollaborators } from './tools/find-project-collaborators.js';
9
11
  import { findProjects } from './tools/find-projects.js';
10
- import { updateProjects } from './tools/update-projects.js';
11
- import { addSections } from './tools/add-sections.js';
12
12
  import { findSections } from './tools/find-sections.js';
13
- import { updateSections } from './tools/update-sections.js';
14
- import { addComments } from './tools/add-comments.js';
15
- import { findComments } from './tools/find-comments.js';
16
- import { updateComments } from './tools/update-comments.js';
17
- import { deleteObject } from './tools/delete-object.js';
13
+ import { findTasks } from './tools/find-tasks.js';
14
+ import { findTasksByDate } from './tools/find-tasks-by-date.js';
18
15
  import { getOverview } from './tools/get-overview.js';
16
+ import { manageAssignments } from './tools/manage-assignments.js';
17
+ import { updateComments } from './tools/update-comments.js';
18
+ import { updateProjects } from './tools/update-projects.js';
19
+ import { updateSections } from './tools/update-sections.js';
20
+ import { updateTasks } from './tools/update-tasks.js';
19
21
  import { userInfo } from './tools/user-info.js';
20
22
  declare const tools: {
21
23
  addTasks: {
@@ -25,42 +27,50 @@ declare const tools: {
25
27
  tasks: import("zod").ZodArray<import("zod").ZodObject<{
26
28
  content: import("zod").ZodString;
27
29
  description: import("zod").ZodOptional<import("zod").ZodString>;
28
- priority: import("zod").ZodOptional<import("zod").ZodNumber>;
30
+ priority: import("zod").ZodOptional<import("zod").ZodEnum<["p1", "p2", "p3", "p4"]>>;
29
31
  dueString: import("zod").ZodOptional<import("zod").ZodString>;
30
32
  duration: import("zod").ZodOptional<import("zod").ZodString>;
33
+ labels: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
31
34
  projectId: import("zod").ZodOptional<import("zod").ZodString>;
32
35
  sectionId: import("zod").ZodOptional<import("zod").ZodString>;
33
36
  parentId: import("zod").ZodOptional<import("zod").ZodString>;
37
+ responsibleUser: import("zod").ZodOptional<import("zod").ZodString>;
34
38
  }, "strip", import("zod").ZodTypeAny, {
35
39
  content: string;
36
40
  description?: string | undefined;
37
- parentId?: string | undefined;
38
41
  projectId?: string | undefined;
42
+ parentId?: string | undefined;
39
43
  sectionId?: string | undefined;
44
+ labels?: string[] | undefined;
40
45
  duration?: string | undefined;
41
- priority?: number | undefined;
46
+ priority?: "p1" | "p2" | "p3" | "p4" | undefined;
42
47
  dueString?: string | undefined;
48
+ responsibleUser?: string | undefined;
43
49
  }, {
44
50
  content: string;
45
51
  description?: string | undefined;
46
- parentId?: string | undefined;
47
52
  projectId?: string | undefined;
53
+ parentId?: string | undefined;
48
54
  sectionId?: string | undefined;
55
+ labels?: string[] | undefined;
49
56
  duration?: string | undefined;
50
- priority?: number | undefined;
57
+ priority?: "p1" | "p2" | "p3" | "p4" | undefined;
51
58
  dueString?: string | undefined;
59
+ responsibleUser?: string | undefined;
52
60
  }>, "many">;
53
61
  };
54
62
  execute({ tasks }: {
55
63
  tasks: {
56
64
  content: string;
57
65
  description?: string | undefined;
58
- parentId?: string | undefined;
59
66
  projectId?: string | undefined;
67
+ parentId?: string | undefined;
60
68
  sectionId?: string | undefined;
69
+ labels?: string[] | undefined;
61
70
  duration?: string | undefined;
62
- priority?: number | undefined;
71
+ priority?: "p1" | "p2" | "p3" | "p4" | undefined;
63
72
  dueString?: string | undefined;
73
+ responsibleUser?: string | undefined;
64
74
  }[];
65
75
  }, client: import("@doist/todoist-api-typescript").TodoistApi): Promise<{
66
76
  content: {
@@ -80,6 +90,8 @@ declare const tools: {
80
90
  parentId: string | null;
81
91
  labels: string[];
82
92
  duration: string | null;
93
+ responsibleUid: string | null;
94
+ assignedByUid: string | null;
83
95
  }[];
84
96
  totalCount: number;
85
97
  };
@@ -145,30 +157,36 @@ declare const tools: {
145
157
  sectionId: import("zod").ZodOptional<import("zod").ZodString>;
146
158
  parentId: import("zod").ZodOptional<import("zod").ZodString>;
147
159
  order: import("zod").ZodOptional<import("zod").ZodNumber>;
148
- priority: import("zod").ZodOptional<import("zod").ZodNumber>;
160
+ priority: import("zod").ZodOptional<import("zod").ZodEnum<["p1", "p2", "p3", "p4"]>>;
149
161
  dueString: import("zod").ZodOptional<import("zod").ZodString>;
150
162
  duration: import("zod").ZodOptional<import("zod").ZodString>;
163
+ responsibleUser: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
164
+ labels: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
151
165
  }, "strip", import("zod").ZodTypeAny, {
152
166
  id: string;
153
167
  content?: string | undefined;
154
168
  description?: string | undefined;
155
- parentId?: string | undefined;
156
169
  projectId?: string | undefined;
170
+ parentId?: string | undefined;
157
171
  sectionId?: string | undefined;
172
+ labels?: string[] | undefined;
158
173
  duration?: string | undefined;
159
- priority?: number | undefined;
174
+ priority?: "p1" | "p2" | "p3" | "p4" | undefined;
160
175
  dueString?: string | undefined;
176
+ responsibleUser?: string | null | undefined;
161
177
  order?: number | undefined;
162
178
  }, {
163
179
  id: string;
164
180
  content?: string | undefined;
165
181
  description?: string | undefined;
166
- parentId?: string | undefined;
167
182
  projectId?: string | undefined;
183
+ parentId?: string | undefined;
168
184
  sectionId?: string | undefined;
185
+ labels?: string[] | undefined;
169
186
  duration?: string | undefined;
170
- priority?: number | undefined;
187
+ priority?: "p1" | "p2" | "p3" | "p4" | undefined;
171
188
  dueString?: string | undefined;
189
+ responsibleUser?: string | null | undefined;
172
190
  order?: number | undefined;
173
191
  }>, "many">;
174
192
  };
@@ -177,12 +195,14 @@ declare const tools: {
177
195
  id: string;
178
196
  content?: string | undefined;
179
197
  description?: string | undefined;
180
- parentId?: string | undefined;
181
198
  projectId?: string | undefined;
199
+ parentId?: string | undefined;
182
200
  sectionId?: string | undefined;
201
+ labels?: string[] | undefined;
183
202
  duration?: string | undefined;
184
- priority?: number | undefined;
203
+ priority?: "p1" | "p2" | "p3" | "p4" | undefined;
185
204
  dueString?: string | undefined;
205
+ responsibleUser?: string | null | undefined;
186
206
  order?: number | undefined;
187
207
  }[];
188
208
  }, client: import("@doist/todoist-api-typescript").TodoistApi): Promise<{
@@ -203,6 +223,8 @@ declare const tools: {
203
223
  parentId: string | null;
204
224
  labels: string[];
205
225
  duration: string | null;
226
+ responsibleUid: string | null;
227
+ assignedByUid: string | null;
206
228
  }[];
207
229
  totalCount: number;
208
230
  updatedTaskIds: string[];
@@ -234,16 +256,18 @@ declare const tools: {
234
256
  projectId: import("zod").ZodOptional<import("zod").ZodString>;
235
257
  sectionId: import("zod").ZodOptional<import("zod").ZodString>;
236
258
  parentId: import("zod").ZodOptional<import("zod").ZodString>;
259
+ responsibleUser: import("zod").ZodOptional<import("zod").ZodString>;
237
260
  limit: import("zod").ZodDefault<import("zod").ZodNumber>;
238
261
  cursor: import("zod").ZodOptional<import("zod").ZodString>;
239
262
  };
240
263
  execute(args: {
241
264
  limit: number;
242
- parentId?: string | undefined;
243
265
  projectId?: string | undefined;
266
+ parentId?: string | undefined;
244
267
  sectionId?: string | undefined;
245
268
  labels?: string[] | undefined;
246
269
  cursor?: string | undefined;
270
+ responsibleUser?: string | undefined;
247
271
  labelsOperator?: "and" | "or" | undefined;
248
272
  searchText?: string | undefined;
249
273
  }, client: import("@doist/todoist-api-typescript").TodoistApi): Promise<{
@@ -264,17 +288,20 @@ declare const tools: {
264
288
  parentId: string | null;
265
289
  labels: string[];
266
290
  duration: string | null;
291
+ responsibleUid: string | null;
292
+ assignedByUid: string | null;
267
293
  }[];
268
294
  nextCursor: string | null;
269
295
  totalCount: number;
270
296
  hasMore: boolean;
271
297
  appliedFilters: {
272
298
  limit: number;
273
- parentId?: string | undefined;
274
299
  projectId?: string | undefined;
300
+ parentId?: string | undefined;
275
301
  sectionId?: string | undefined;
276
302
  labels?: string[] | undefined;
277
303
  cursor?: string | undefined;
304
+ responsibleUser?: string | undefined;
278
305
  labelsOperator?: "and" | "or" | undefined;
279
306
  searchText?: string | undefined;
280
307
  };
@@ -328,6 +355,8 @@ declare const tools: {
328
355
  parentId: string | null;
329
356
  labels: string[];
330
357
  duration: string | null;
358
+ responsibleUid: string | null;
359
+ assignedByUid: string | null;
331
360
  }[];
332
361
  nextCursor: string | null;
333
362
  totalCount: number;
@@ -375,9 +404,9 @@ declare const tools: {
375
404
  getBy: "due" | "completion";
376
405
  since: string;
377
406
  until: string;
407
+ projectId?: string | undefined;
378
408
  parentId?: string | undefined;
379
409
  workspaceId?: string | undefined;
380
- projectId?: string | undefined;
381
410
  sectionId?: string | undefined;
382
411
  labels?: string[] | undefined;
383
412
  cursor?: string | undefined;
@@ -400,6 +429,8 @@ declare const tools: {
400
429
  parentId: string | null;
401
430
  labels: string[];
402
431
  duration: string | null;
432
+ responsibleUid: string | null;
433
+ assignedByUid: string | null;
403
434
  }[];
404
435
  nextCursor: string | null;
405
436
  totalCount: number;
@@ -409,9 +440,9 @@ declare const tools: {
409
440
  getBy: "due" | "completion";
410
441
  since: string;
411
442
  until: string;
443
+ projectId?: string | undefined;
412
444
  parentId?: string | undefined;
413
445
  workspaceId?: string | undefined;
414
- projectId?: string | undefined;
415
446
  sectionId?: string | undefined;
416
447
  labels?: string[] | undefined;
417
448
  cursor?: string | undefined;
@@ -832,19 +863,19 @@ declare const tools: {
832
863
  content: import("zod").ZodString;
833
864
  }, "strip", import("zod").ZodTypeAny, {
834
865
  content: string;
835
- projectId?: string | undefined;
836
866
  taskId?: string | undefined;
867
+ projectId?: string | undefined;
837
868
  }, {
838
869
  content: string;
839
- projectId?: string | undefined;
840
870
  taskId?: string | undefined;
871
+ projectId?: string | undefined;
841
872
  }>, "many">;
842
873
  };
843
874
  execute(args: {
844
875
  comments: {
845
876
  content: string;
846
- projectId?: string | undefined;
847
877
  taskId?: string | undefined;
878
+ projectId?: string | undefined;
848
879
  }[];
849
880
  }, client: import("@doist/todoist-api-typescript").TodoistApi): Promise<{
850
881
  content: {
@@ -974,10 +1005,10 @@ declare const tools: {
974
1005
  limit: import("zod").ZodOptional<import("zod").ZodNumber>;
975
1006
  };
976
1007
  execute(args: {
977
- projectId?: string | undefined;
978
1008
  limit?: number | undefined;
979
- cursor?: string | undefined;
980
1009
  taskId?: string | undefined;
1010
+ projectId?: string | undefined;
1011
+ cursor?: string | undefined;
981
1012
  commentId?: string | undefined;
982
1013
  }, client: import("@doist/todoist-api-typescript").TodoistApi): Promise<{
983
1014
  content: {
@@ -1114,7 +1145,109 @@ declare const tools: {
1114
1145
  structuredContent?: undefined;
1115
1146
  }>;
1116
1147
  };
1148
+ findProjectCollaborators: {
1149
+ name: "find-project-collaborators";
1150
+ description: string;
1151
+ parameters: {
1152
+ projectId: import("zod").ZodString;
1153
+ searchTerm: import("zod").ZodOptional<import("zod").ZodString>;
1154
+ };
1155
+ execute(args: {
1156
+ projectId: string;
1157
+ searchTerm?: string | undefined;
1158
+ }, client: import("@doist/todoist-api-typescript").TodoistApi): Promise<{
1159
+ content: {
1160
+ type: "text";
1161
+ text: string;
1162
+ }[];
1163
+ structuredContent: {
1164
+ collaborators: never[];
1165
+ projectInfo: {
1166
+ id: string;
1167
+ name: string;
1168
+ isShared: boolean;
1169
+ };
1170
+ totalCount: number;
1171
+ appliedFilters: {
1172
+ projectId: string;
1173
+ searchTerm?: string | undefined;
1174
+ };
1175
+ };
1176
+ } | {
1177
+ content: ({
1178
+ type: "text";
1179
+ text: string;
1180
+ mimeType?: undefined;
1181
+ } | {
1182
+ type: "text";
1183
+ mimeType: string;
1184
+ text: string;
1185
+ })[];
1186
+ structuredContent?: undefined;
1187
+ } | {
1188
+ content: {
1189
+ type: "text";
1190
+ text: string;
1191
+ }[];
1192
+ structuredContent: {
1193
+ collaborators: import("./utils/user-resolver.js").ProjectCollaborator[];
1194
+ projectInfo: {
1195
+ id: string;
1196
+ name: string;
1197
+ isShared: boolean;
1198
+ };
1199
+ totalCount: number;
1200
+ totalAvailable: number;
1201
+ appliedFilters: {
1202
+ projectId: string;
1203
+ searchTerm?: string | undefined;
1204
+ };
1205
+ };
1206
+ }>;
1207
+ };
1208
+ manageAssignments: {
1209
+ name: "manage-assignments";
1210
+ description: string;
1211
+ parameters: {
1212
+ operation: import("zod").ZodEnum<["assign", "unassign", "reassign"]>;
1213
+ taskIds: import("zod").ZodArray<import("zod").ZodString, "many">;
1214
+ responsibleUser: import("zod").ZodOptional<import("zod").ZodString>;
1215
+ fromAssigneeUser: import("zod").ZodOptional<import("zod").ZodString>;
1216
+ dryRun: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>;
1217
+ };
1218
+ execute(args: {
1219
+ operation: "assign" | "unassign" | "reassign";
1220
+ taskIds: string[];
1221
+ dryRun: boolean;
1222
+ responsibleUser?: string | undefined;
1223
+ fromAssigneeUser?: string | undefined;
1224
+ }, client: import("@doist/todoist-api-typescript").TodoistApi): Promise<{
1225
+ content: {
1226
+ type: "text";
1227
+ text: string;
1228
+ }[];
1229
+ structuredContent: {
1230
+ operation: "assign" | "unassign" | "reassign";
1231
+ results: import("./tools/manage-assignments.js").OperationResult[];
1232
+ totalRequested: number;
1233
+ successful: number;
1234
+ failed: number;
1235
+ dryRun: boolean;
1236
+ };
1237
+ } | {
1238
+ content: ({
1239
+ type: "text";
1240
+ text: string;
1241
+ mimeType?: undefined;
1242
+ } | {
1243
+ type: "text";
1244
+ mimeType: string;
1245
+ text: string;
1246
+ })[];
1247
+ structuredContent?: undefined;
1248
+ }>;
1249
+ };
1117
1250
  };
1118
1251
  export { tools, getMcpServer };
1119
- export { addTasks, completeTasks, updateTasks, findTasks, findTasksByDate, findCompletedTasks, addProjects, updateProjects, findProjects, addSections, updateSections, findSections, addComments, updateComments, findComments, getOverview, deleteObject, userInfo, };
1252
+ export { addTasks, completeTasks, updateTasks, findTasks, findTasksByDate, findCompletedTasks, addProjects, updateProjects, findProjects, addSections, updateSections, findSections, addComments, updateComments, findComments, getOverview, deleteObject, userInfo, findProjectCollaborators, manageAssignments, };
1120
1253
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,26 +1,29 @@
1
1
  import { getMcpServer } from './mcp-server.js';
2
- // Task management tools
3
- import { addTasks } from './tools/add-tasks.js';
4
- import { completeTasks } from './tools/complete-tasks.js';
5
- import { findCompletedTasks } from './tools/find-completed-tasks.js';
6
- import { findTasksByDate } from './tools/find-tasks-by-date.js';
7
- import { findTasks } from './tools/find-tasks.js';
8
- import { updateTasks } from './tools/update-tasks.js';
2
+ // Comment management tools
3
+ import { addComments } from './tools/add-comments.js';
9
4
  // Project management tools
10
5
  import { addProjects } from './tools/add-projects.js';
11
- import { findProjects } from './tools/find-projects.js';
12
- import { updateProjects } from './tools/update-projects.js';
13
6
  // Section management tools
14
7
  import { addSections } from './tools/add-sections.js';
15
- import { findSections } from './tools/find-sections.js';
16
- import { updateSections } from './tools/update-sections.js';
17
- // Comment management tools
18
- import { addComments } from './tools/add-comments.js';
19
- import { findComments } from './tools/find-comments.js';
20
- import { updateComments } from './tools/update-comments.js';
8
+ // Task management tools
9
+ import { addTasks } from './tools/add-tasks.js';
10
+ import { completeTasks } from './tools/complete-tasks.js';
21
11
  // General tools
22
12
  import { deleteObject } from './tools/delete-object.js';
13
+ import { findComments } from './tools/find-comments.js';
14
+ import { findCompletedTasks } from './tools/find-completed-tasks.js';
15
+ // Assignment and collaboration tools
16
+ import { findProjectCollaborators } from './tools/find-project-collaborators.js';
17
+ import { findProjects } from './tools/find-projects.js';
18
+ import { findSections } from './tools/find-sections.js';
19
+ import { findTasks } from './tools/find-tasks.js';
20
+ import { findTasksByDate } from './tools/find-tasks-by-date.js';
23
21
  import { getOverview } from './tools/get-overview.js';
22
+ import { manageAssignments } from './tools/manage-assignments.js';
23
+ import { updateComments } from './tools/update-comments.js';
24
+ import { updateProjects } from './tools/update-projects.js';
25
+ import { updateSections } from './tools/update-sections.js';
26
+ import { updateTasks } from './tools/update-tasks.js';
24
27
  import { userInfo } from './tools/user-info.js';
25
28
  const tools = {
26
29
  // Task management tools
@@ -46,6 +49,9 @@ const tools = {
46
49
  getOverview,
47
50
  deleteObject,
48
51
  userInfo,
52
+ // Assignment and collaboration tools
53
+ findProjectCollaborators,
54
+ manageAssignments,
49
55
  };
50
56
  export { tools, getMcpServer };
51
57
  export {
@@ -58,4 +64,6 @@ addSections, updateSections, findSections,
58
64
  // Comment management tools
59
65
  addComments, updateComments, findComments,
60
66
  // General tools
61
- getOverview, deleteObject, userInfo, };
67
+ getOverview, deleteObject, userInfo,
68
+ // Assignment and collaboration tools
69
+ findProjectCollaborators, manageAssignments, };
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-helpers.d.ts","sourceRoot":"","sources":["../src/mcp-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,yCAAyC,CAAA;AACtF,OAAO,KAAK,EAAc,CAAC,EAAE,MAAM,KAAK,CAAA;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAkBpD;;;;;;;GAOG;AACH,iBAAS,aAAa,CAAC,iBAAiB,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACtE,WAAW,EACX,iBAAiB,GACpB,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,iBAAiB,CAAA;CAAE;;;;;;;;;;;;;;;;;EAe/D;AASD;;;;;GAKG;AACH,iBAAS,YAAY,CAAC,MAAM,SAAS,CAAC,CAAC,WAAW,EAC9C,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,EACzB,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,UAAU,QAqBrB;AAED,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,CAAA"}
1
+ {"version":3,"file":"mcp-helpers.d.ts","sourceRoot":"","sources":["../src/mcp-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,yCAAyC,CAAA;AACtF,OAAO,KAAK,EAAc,CAAC,EAAE,MAAM,KAAK,CAAA;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAkBpD;;;;;;;GAOG;AACH,iBAAS,aAAa,CAAC,iBAAiB,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACtE,WAAW,EACX,iBAAiB,GACpB,EAAE;IACC,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,iBAAiB,CAAA;CACvC;;;;;;;;;;;;;;;;;EAeA;AASD;;;;;GAKG;AACH,iBAAS,YAAY,CAAC,MAAM,SAAS,CAAC,CAAC,WAAW,EAC9C,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,EACzB,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,UAAU,QAqBrB;AAED,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,CAAA"}
@@ -48,7 +48,7 @@ function getErrorOutput(error) {
48
48
  * @param client - The Todoist API client to use to execute the tool.
49
49
  */
50
50
  function registerTool(tool, server, client) {
51
- // @ts-ignore I give up
51
+ // @ts-expect-error I give up
52
52
  const cb = async (args, _context) => {
53
53
  try {
54
54
  const result = await tool.execute(args, client);
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAmCnE;;;;;GAKG;AACH,iBAAS,YAAY,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,aA0C5F;AAED,OAAO,EAAE,YAAY,EAAE,CAAA"}
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAwFnE;;;;;GAKG;AACH,iBAAS,YAAY,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,aA8C5F;AAED,OAAO,EAAE,YAAY,EAAE,CAAA"}
@@ -1,31 +1,89 @@
1
1
  import { TodoistApi } from '@doist/todoist-api-typescript';
2
2
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
3
  import { registerTool } from './mcp-helpers.js';
4
- // Task management tools
4
+ import { addComments } from './tools/add-comments.js';
5
+ import { addProjects } from './tools/add-projects.js';
6
+ import { addSections } from './tools/add-sections.js';
5
7
  import { addTasks } from './tools/add-tasks.js';
6
8
  import { completeTasks } from './tools/complete-tasks.js';
9
+ import { deleteObject } from './tools/delete-object.js';
10
+ import { findComments } from './tools/find-comments.js';
7
11
  import { findCompletedTasks } from './tools/find-completed-tasks.js';
8
- import { findTasksByDate } from './tools/find-tasks-by-date.js';
9
- import { findTasks } from './tools/find-tasks.js';
10
- import { updateTasks } from './tools/update-tasks.js';
11
- // Project management tools
12
- import { addProjects } from './tools/add-projects.js';
12
+ import { findProjectCollaborators } from './tools/find-project-collaborators.js';
13
13
  import { findProjects } from './tools/find-projects.js';
14
- import { updateProjects } from './tools/update-projects.js';
15
- // Section management tools
16
- import { addSections } from './tools/add-sections.js';
17
14
  import { findSections } from './tools/find-sections.js';
18
- import { updateSections } from './tools/update-sections.js';
19
- // Comment management tools
20
- import { addComments } from './tools/add-comments.js';
21
- import { findComments } from './tools/find-comments.js';
22
- import { updateComments } from './tools/update-comments.js';
23
- // General tools
24
- import { deleteObject } from './tools/delete-object.js';
15
+ import { findTasks } from './tools/find-tasks.js';
16
+ import { findTasksByDate } from './tools/find-tasks-by-date.js';
25
17
  import { getOverview } from './tools/get-overview.js';
18
+ import { manageAssignments } from './tools/manage-assignments.js';
19
+ import { updateComments } from './tools/update-comments.js';
20
+ import { updateProjects } from './tools/update-projects.js';
21
+ import { updateSections } from './tools/update-sections.js';
22
+ import { updateTasks } from './tools/update-tasks.js';
26
23
  import { userInfo } from './tools/user-info.js';
27
24
  const instructions = `
28
- Tools to help you manage your todoist tasks.
25
+ ## Todoist Task and Project Management Tools
26
+
27
+ You have access to comprehensive Todoist management tools for personal productivity and team collaboration. Use these tools to help users manage tasks, projects, sections, comments, and assignments effectively.
28
+
29
+ ### Core Capabilities:
30
+ - Create, update, complete, and search tasks with rich metadata (priorities, due dates, durations, assignments)
31
+ - Manage projects and sections with flexible organization
32
+ - Handle comments and collaboration features
33
+ - Bulk assignment operations for team workflows
34
+ - Get overviews and insights about workload and progress
35
+
36
+ ### Tool Usage Guidelines:
37
+
38
+ **Task Management:**
39
+ - **add-tasks**: Create tasks with content, description, priority (p1=highest, p2=high, p3=medium, p4=lowest/default), dueString (natural language like "tomorrow", "next Friday", "2024-12-25"), duration (formats like "2h", "90m", "2h30m"), and assignments to project collaborators
40
+ - **update-tasks**: Modify existing tasks - get task IDs from search results first, only include fields that need changes
41
+ - **complete-tasks**: Mark tasks as done using task IDs
42
+ - **find-tasks**: Search by text, project/section/parent container, responsible user, or labels. Requires at least one search parameter
43
+ - **find-tasks-by-date**: Get tasks by date range (startDate: YYYY-MM-DD, 'today', or 'overdue') or specific day counts
44
+ - **find-completed-tasks**: View completed tasks by completion date or original due date
45
+
46
+ **Project & Organization:**
47
+ - **add-projects/update-projects/find-projects**: Manage project lifecycle with names, favorites, and view styles (list/board/calendar)
48
+ - **add-sections/update-sections/find-sections**: Organize tasks within projects using sections
49
+ - **get-overview**: Get comprehensive Markdown overview of entire account or specific project with task hierarchies
50
+
51
+ **Collaboration & Comments:**
52
+ - **add-comments/update-comments/find-comments**: Manage task and project discussions
53
+ - **find-project-collaborators**: Find team members by name or email for assignments
54
+ - **manage-assignments**: Bulk assign/unassign/reassign up to 50 tasks with atomic operations and dry-run validation
55
+
56
+ **General Operations:**
57
+ - **delete-object**: Remove projects, sections, tasks, or comments by type and ID
58
+ - **user-info**: Get user details including timezone, goals, and plan information
59
+
60
+ ### Best Practices:
61
+
62
+ 1. **Task Creation**: Write clear, actionable task titles. Use natural language for due dates ("tomorrow", "next Monday"). Set appropriate priorities and include detailed descriptions when needed.
63
+
64
+ 2. **Search Strategy**: Use specific search queries combining multiple filters for precise results. When searching for tasks, start with broader queries and narrow down as needed.
65
+
66
+ 3. **Assignments**: Always validate project collaborators exist before assigning tasks. Use find-project-collaborators to verify user access.
67
+
68
+ 4. **Bulk Operations**: When working with multiple items, prefer bulk tools (complete-tasks, manage-assignments) over individual operations for better performance.
69
+
70
+ 5. **Date Handling**: All dates respect user timezone settings. Use 'today' and 'overdue' keywords for dynamic date filtering.
71
+
72
+ 6. **Labels**: Use label filtering with AND/OR operators for advanced task organization. Most search tools support labels parameter.
73
+
74
+ 7. **Pagination**: Large result sets use cursor-based pagination. Use limit parameter to control result size (default varies by tool).
75
+
76
+ 8. **Error Handling**: All tools provide detailed error messages and next-step suggestions. Pay attention to validation feedback for corrective actions.
77
+
78
+ ### Common Workflows:
79
+
80
+ - **Daily Planning**: Use find-tasks-by-date with 'today' and get-overview for project status
81
+ - **Team Assignment**: find-project-collaborators → add-tasks with responsibleUser → manage-assignments for bulk changes
82
+ - **Task Search**: find-tasks with multiple filters → update-tasks or complete-tasks based on results
83
+ - **Project Organization**: add-projects → add-sections → add-tasks with projectId and sectionId
84
+ - **Progress Reviews**: find-completed-tasks with date ranges → get-overview for project summaries
85
+
86
+ Always provide clear, actionable task titles and descriptions. Use the overview tools to give users context about their workload and project status.
29
87
  `;
30
88
  /**
31
89
  * Create the MCP server.
@@ -64,6 +122,9 @@ function getMcpServer({ todoistApiKey, baseUrl }) {
64
122
  registerTool(getOverview, server, todoist);
65
123
  registerTool(deleteObject, server, todoist);
66
124
  registerTool(userInfo, server, todoist);
125
+ // Assignment and collaboration tools
126
+ registerTool(findProjectCollaborators, server, todoist);
127
+ registerTool(manageAssignments, server, todoist);
67
128
  return server;
68
129
  }
69
130
  export { getMcpServer };
@@ -29,6 +29,8 @@ declare function mapTask(task: Task): {
29
29
  parentId: string | null;
30
30
  labels: string[];
31
31
  duration: string | null;
32
+ responsibleUid: string | null;
33
+ assignedByUid: string | null;
32
34
  };
33
35
  /**
34
36
  * Map a single Todoist project to a more structured format, for LLM consumption.
@@ -63,6 +65,8 @@ declare function getTasksByFilter({ client, query, limit, cursor, }: {
63
65
  parentId: string | null;
64
66
  labels: string[];
65
67
  duration: string | null;
68
+ responsibleUid: string | null;
69
+ assignedByUid: string | null;
66
70
  }[];
67
71
  nextCursor: string | null;
68
72
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"tool-helpers.d.ts","sourceRoot":"","sources":["../src/tool-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,IAAI,EACT,KAAK,UAAU,EACf,KAAK,gBAAgB,EAExB,MAAM,+BAA+B,CAAA;AAItC,MAAM,MAAM,OAAO,GAAG,eAAe,GAAG,gBAAgB,CAAA;AAExD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,eAAe,CAE9E;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,gBAAgB,CAEhF;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAC9B,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,GAClB,YAAY,CAsBd;AAED;;;;GAIG;AACH,iBAAS,OAAO,CAAC,IAAI,EAAE,IAAI;;;;;;;;;;;;EAc1B;AAED;;;;GAIG;AACH,iBAAS,UAAU,CAAC,OAAO,EAAE,OAAO;;;;;;;;;EAWnC;AAWD,iBAAe,gBAAgB,CAAC,EAC5B,MAAM,EACN,KAAK,EACL,KAAK,EACL,MAAM,GACT,EAAE;IACC,MAAM,EAAE,UAAU,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CAC7B;;;;;;;;;;;;;;;GAyBA;AAED,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAE,CAAA"}
1
+ {"version":3,"file":"tool-helpers.d.ts","sourceRoot":"","sources":["../src/tool-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,IAAI,EACT,KAAK,UAAU,EACf,KAAK,gBAAgB,EACxB,MAAM,+BAA+B,CAAA;AAItC,MAAM,MAAM,OAAO,GAAG,eAAe,GAAG,gBAAgB,CAAA;AAExD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,eAAe,CAE9E;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,gBAAgB,CAEhF;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAC9B,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,GAClB,YAAY,CAsBd;AAED;;;;GAIG;AACH,iBAAS,OAAO,CAAC,IAAI,EAAE,IAAI;;;;;;;;;;;;;;EAgB1B;AAED;;;;GAIG;AACH,iBAAS,UAAU,CAAC,OAAO,EAAE,OAAO;;;;;;;;;EAWnC;AAWD,iBAAe,gBAAgB,CAAC,EAC5B,MAAM,EACN,KAAK,EACL,KAAK,EACL,MAAM,GACT,EAAE;IACC,MAAM,EAAE,UAAU,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CAC7B;;;;;;;;;;;;;;;;;GAyBA;AAED,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAE,CAAA"}
@@ -53,6 +53,8 @@ function mapTask(task) {
53
53
  parentId: task.parentId,
54
54
  labels: task.labels,
55
55
  duration: task.duration ? formatDuration(task.duration.amount) : null,
56
+ responsibleUid: task.responsibleUid,
57
+ assignedByUid: task.assignedByUid,
56
58
  };
57
59
  }
58
60
  /**