batch_complete_tasks
Batch complete tasks in Microsoft To Do by marking up to 100 items as done in a single request.
Instructions
Mark several tasks as completed in a single $batch HTTP call (up to 100 items).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | ||
| verbose | No | If true: returns full JSON. Otherwise: compact text format (default, saves tokens). |
Implementation Reference
- src/graph.ts:776-787 (handler)Actual implementation of batchCompleteTasks: creates PATCH requests for each task with status='completed' and sends via graphBatch, then parses responses.
export async function batchCompleteTasks( items: Array<{ listId: string; taskId: string }> ): Promise<Array<BatchResultItem<TodoTask>>> { const requests: BatchRequest[] = items.map((item, idx) => ({ id: String(idx), method: "PATCH", url: `/me/todo/lists/${enc(item.listId)}/tasks/${enc(item.taskId)}`, body: { status: "completed" }, })); const responses = await graphBatch(requests); return parseBatchResponses<TodoTask>(responses, items.length); } - src/index.ts:277-283 (schema)Zod schema for batch_complete_tasks input validation (items array of list_id/task_id, min 1, max 100).
batch_complete_tasks: z.object({ items: z .array(z.object({ list_id: z.string(), task_id: z.string() })) .min(1) .max(100), ...verboseField, }), - src/index.ts:788-810 (registration)Tool registration in ListToolsRequestSchema handler: defines name, description, and JSON inputSchema for batch_complete_tasks.
name: "batch_complete_tasks", description: "Mark several tasks as completed in a single $batch HTTP call (up to 100 items).", inputSchema: { type: "object", properties: { items: { type: "array", maxItems: 100, items: { type: "object", properties: { list_id: { type: "string" }, task_id: { type: "string" }, }, required: ["list_id", "task_id"], }, }, ...verboseJsonProp, }, required: ["items"], }, }, - src/index.ts:1148-1153 (handler)CallToolRequestSchema handler case for batch_complete_tasks: parses args with Zod, maps snake_case to camelCase, calls batchCompleteTasks, formats output.
case "batch_complete_tasks": { const a = schemas.batch_complete_tasks.strict().parse(args); const results = await batchCompleteTasks( a.items.map((it) => ({ listId: it.list_id, taskId: it.task_id })) ); return out(results, a.verbose, (rs) => formatBatchCompact(rs, formatTaskCompact)); - src/index.ts:482-482 (registration)Tool annotation registration: batch_complete_tasks marked as WRITE_UPDATE (readOnlyHint=false, destructiveHint=false, idempotentHint=true, openWorldHint=true).
batch_complete_tasks: { ...WRITE_UPDATE, title: "Batch complete tasks" },