Skip to main content
Glama

complete_todo

Mark a todo item as completed to track task progress and maintain an organized task list.

Instructions

Set completion status for a todo item

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • Core handler function that processes input, calls storage completeTodoBySelector, handles outcomes, and returns appropriate tool responses.
    async function handleCompleteTodo( input: CompleteTodoInput ): Promise<CallToolResult> { const targetCompleted = resolveTargetCompleted(input); const outcome = await completeTodoBySelector( toResolveInput({ id: input.id, query: input.query }), targetCompleted ); if (outcome.kind === 'error') return outcome.response; if (outcome.kind === 'ambiguous') return outcome.response; if (outcome.kind === 'already') { return buildAlreadyStatusResponse(outcome.todo, targetCompleted); } return buildCompletionResponse(outcome.todo, targetCompleted); }
  • Zod schema defining the input for the complete_todo tool, including id or query selector and optional completed flag.
    export const CompleteTodoSchema = z .object({ id: z .string() .min(1) .max(100) .optional() .describe('The ID of the todo to complete'), query: z .string() .min(1) .max(200) .optional() .describe('Search text to find a single todo to complete'), completed: z .boolean() .optional() .describe('Set completion status (default: true)'), }) .strict() .refine((value) => Boolean(value.id ?? value.query), { message: 'Provide id or query to identify the todo', });
  • Registers the 'complete_todo' tool with the MCP server, specifying schema, description, and handler.
    export function registerCompleteTodo(server: McpServer): void { server.registerTool( 'complete_todo', { title: 'Complete Todo', description: 'Set completion status for a todo item', inputSchema: CompleteTodoSchema, outputSchema: DefaultOutputSchema, annotations: { readOnlyHint: false, idempotentHint: true, }, }, async (input) => { try { return await handleCompleteTodo(input); } catch (err) { return createErrorResponse('E_COMPLETE_TODO', getErrorMessage(err)); } } ); }
  • Storage layer function that resolves the todo by selector, toggles completion status atomically, and persists changes.
    export async function completeTodoBySelector( input: ResolveTodoInput, completed: boolean ): Promise<CompleteTodoOutcome> { return queueWrite(async () => { const todos = await readTodosFromDisk(); const outcome = unwrapResolution(resolveTodoTargetFromTodos(todos, input)); if (outcome.kind !== 'match') return outcome; const result = completeTodoInList(todos, outcome.todo.id, completed); if (result.kind === 'match') { await persistTodos(todos); } return result; }); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/j0hanz/todokit-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server