mark_started
Update project cards to started status in Codecks by providing their UUIDs. This tool helps teams track work progress and maintain project timelines.
Instructions
Mark cards as started.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| card_ids | Yes | Full 36-char UUIDs |
Implementation Reference
- src/tools/mutation.ts:153-180 (handler)Tool registration and handler for mark_started. Validates card_ids input, calls client.markStarted, and formats the response.server.registerTool( "mark_started", { title: "Mark Started", description: "Mark cards as started.", inputSchema: z.object({ card_ids: z.array(z.string()).describe("Full 36-char UUIDs"), }), }, async (args) => { try { validateUuidList(args.card_ids); const result = await client.markStarted(args.card_ids); return { content: [{ type: "text", text: JSON.stringify(finalizeToolResult(result)) }], }; } catch (err) { return { content: [ { type: "text", text: JSON.stringify(finalizeToolResult(handleError(err))), }, ], }; } }, );
- src/tools/mutation.ts:158-160 (schema)Input schema defining the card_ids parameter as an array of UUID strings.inputSchema: z.object({ card_ids: z.array(z.string()).describe("Full 36-char UUIDs"), }),
- src/client.ts:454-456 (handler)Client method that wraps updateCards to mark cards as started by setting status to 'started'.async markStarted(cardIds: string[]): Promise<Record<string, unknown>> { return this.updateCards({ cardIds, status: "started" }); }
- src/client.ts:403-448 (handler)Core implementation that handles the actual card updates via dispatch API calls, iterating through card IDs with error handling.async updateCards(options: { cardIds: string[]; status?: string; priority?: string; effort?: string; deck?: string; title?: string; content?: string; milestone?: string; hero?: string; owner?: string; tags?: string; doc?: string; continueOnError?: boolean; }): Promise<Record<string, unknown>> { const updates: Record<string, unknown> = {}; if (options.status) updates.status = options.status; if (options.priority) { updates.priority = options.priority === "null" ? null : options.priority; } if (options.effort) { updates.effort = options.effort === "null" ? null : parseInt(options.effort, 10); } if (options.title) updates.title = options.title; if (options.content !== undefined) updates.content = options.content; const results: Record<string, unknown>[] = []; let updated = 0; for (const cardId of options.cardIds) { try { const r = await dispatch("cards/update", { cardId, update: updates, }); results.push({ card_id: cardId, ok: true, result: r }); updated++; } catch (err) { const msg = err instanceof Error ? err.message : String(err); results.push({ card_id: cardId, ok: false, error: msg }); if (!options.continueOnError) break; } } return { ok: updated > 0, updated, results }; }