bulkCreateTask
Create multiple tasks simultaneously in Godspeed by specifying titles, due dates, durations, and labels. Ideal for efficiently managing task workflows using the Godspeed API.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| tasks | Yes |
Implementation Reference
- src/index.ts:267-279 (handler)Handler function for the 'bulkCreateTask' tool that creates multiple tasks in parallel by mapping over the input tasks array and calling godspeedApi.createTask for each.async ({ tasks }) => { try { const results = await Promise.all( tasks.map(taskParams => godspeedApi.createTask(taskParams)) ); return { content: [{ type: "text", text: JSON.stringify(results, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: `Error: ${error instanceof Error ? error.message : String(error)}` }] }; }
- src/index.ts:252-265 (schema)Zod input schema for the bulkCreateTask tool, defining an array of up to 60 task objects with optional fields matching single createTask.tasks: z.array(z.object({ title: z.string(), list_id: z.string().optional(), location: z.enum(["start", "end"]).optional(), notes: z.string().optional(), due_at: z.date().optional(), timeless_due_at: z.string().optional(), starts_at: z.date().optional(), timeless_starts_at: z.string().optional(), duration_minutes: z.number().int().nonnegative().optional(), label_names: z.array(z.string()).optional(), label_ids: z.array(z.string()).optional(), metadata: z.record(z.any()).optional() })).max(60)
- src/index.ts:249-281 (registration)Registration of the 'bulkCreateTask' MCP tool using server.tool, including the tool name, input schema, and inline handler function.server.tool( "bulkCreateTask", { tasks: z.array(z.object({ title: z.string(), list_id: z.string().optional(), location: z.enum(["start", "end"]).optional(), notes: z.string().optional(), due_at: z.date().optional(), timeless_due_at: z.string().optional(), starts_at: z.date().optional(), timeless_starts_at: z.string().optional(), duration_minutes: z.number().int().nonnegative().optional(), label_names: z.array(z.string()).optional(), label_ids: z.array(z.string()).optional(), metadata: z.record(z.any()).optional() })).max(60) }, async ({ tasks }) => { try { const results = await Promise.all( tasks.map(taskParams => godspeedApi.createTask(taskParams)) ); return { content: [{ type: "text", text: JSON.stringify(results, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: `Error: ${error instanceof Error ? error.message : String(error)}` }] }; } } );