Skip to main content
Glama

add_todo

Create a new task with title, optional description, priority, due date, and tags for organized task management.

Instructions

Add a new todo item

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
titleYesThe title of the todo
descriptionNoOptional description of the todo
priorityNoPriority level (default: normal)
dueDateNoDue date in ISO format (YYYY-MM-DD)
tagsNoTags for categorization

Implementation Reference

  • The handler function for the 'add_todo' MCP tool. It destructures input parameters, calls the storage addTodo function, and returns a formatted tool response or error.
    async ({ title, description, priority, dueDate, tags }) => {
      try {
        const todo = await addTodo(title, description, priority, dueDate, tags);
        return createToolResponse({
          ok: true,
          result: {
            item: todo,
            summary: `Added todo "${todo.title}"`,
            nextActions: ['list_todos', 'update_todo', 'complete_todo'],
          },
        });
      } catch (err) {
        return createErrorResponse('E_ADD_TODO', getErrorMessage(err));
      }
    }
  • Registration of the 'add_todo' tool with the MCP server, including metadata, schemas, and inline handler.
    export function registerAddTodo(server: McpServer): void {
      server.registerTool(
        'add_todo',
        {
          title: 'Add Todo',
          description: 'Add a new todo item',
          inputSchema: AddTodoSchema,
          outputSchema: DefaultOutputSchema,
          annotations: {
            readOnlyHint: false,
            idempotentHint: false,
          },
        },
        async ({ title, description, priority, dueDate, tags }) => {
          try {
            const todo = await addTodo(title, description, priority, dueDate, tags);
            return createToolResponse({
              ok: true,
              result: {
                item: todo,
                summary: `Added todo "${todo.title}"`,
                nextActions: ['list_todos', 'update_todo', 'complete_todo'],
              },
            });
          } catch (err) {
            return createErrorResponse('E_ADD_TODO', getErrorMessage(err));
          }
        }
      );
    }
  • Zod schema for 'add_todo' input validation (TodoInputSchema aliased as AddTodoSchema).
    const TodoInputSchema: ZodType<TodoInput> = z.strictObject({
      title: z.string().min(1).max(200).describe('The title of the todo'),
      description: z
        .string()
        .max(2000)
        .optional()
        .describe('Optional description of the todo'),
      priority: z
        .enum(['low', 'normal', 'high'])
        .optional()
        .describe('Priority level (default: normal)'),
      dueDate: IsoDateSchema.optional().describe(
        'Due date in ISO format (YYYY-MM-DD)'
      ),
      tags: z
        .array(TagSchema)
        .max(50)
        .optional()
        .describe('Tags for categorization'),
    });
    
    export const AddTodoSchema: ZodType<TodoInput> = TodoInputSchema;
  • Helper function that adds a single todo item by wrapping the batch addTodos function from storage layer.
    export async function addTodo(
      title: string,
      description?: string,
      priority: 'low' | 'normal' | 'high' = 'normal',
      dueDate?: string,
      tags: string[] = []
    ): Promise<Todo> {
      const [todo] = await addTodos([
        { title, description, priority, dueDate, tags },
      ]);
      if (!todo) {
        throw new Error('Failed to create todo');
      }
      return todo;
    }
  • Top-level call to register the 'add_todo' tool as part of all tools registration.
    registerAddTodo(server);

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