Skip to main content
Glama

update_todo_interactive

Modify existing todo items through guided prompts to update task details, status, or priorities in your todo management system.

Instructions

Update an existing todo item with interactive prompts

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
authTokenNoAuthentication token from Kinde (optional if saved)

Implementation Reference

  • Handler for the 'update_todo' tool, which provides interactive prompting by listing the user's todos and asking for the todo ID and update details.
    case 'update_todo': { // Try to get token from args or stored token let token = args?.authToken as string; if (!token) { token = getStoredToken() || ''; } if (!token) { return { content: [ { type: 'text', text: `❌ No authentication token found. Please:\n1. Type "login" to get the authentication URL\n2. Complete login at http://localhost:3000\n3. Copy your token and use "save_token" to store it\n4. Then try "update todo" again`, }, ], }; } const user = await verifyToken(token); if (!user) { return { content: [{ type: 'text', text: 'Error: Invalid authentication token' }], }; } // Get user's todos to show them const todos = await sql` SELECT * FROM todos WHERE user_id = ${user.userId} ORDER BY created_at DESC `; if (todos.length === 0) { return { content: [{ type: 'text', text: '❌ No todos found. Create a todo first!' }], }; } let todoList = '📋 **Your Todos:**\n\n'; todos.forEach((todo, index) => { todoList += `${index + 1}. **ID: ${todo.id}** - ${todo.title}\n`; if (todo.description) todoList += ` Description: ${todo.description}\n`; todoList += ` Status: ${todo.completed ? '✅ Completed' : '⏳ Pending'}\n\n`; }); return { content: [ { type: 'text', text: `${todoList}**Which todo would you like to update?**\n\nPlease respond with the todo ID and new details in this format:\n\`\`\`\ntodoId: 1\ntitle: New title (optional)\ndescription: New description (optional)\ncompleted: true (optional)\n\`\`\``, }, ], }; }
  • Tool schema/registration for 'update_todo', defining name, description, and input schema. Note: No exact 'update_todo_interactive' found, but this matches the interactive update functionality.
    { name: 'update_todo', description: 'Update an existing todo item with interactive prompts', inputSchema: { type: 'object', properties: { authToken: { type: 'string', description: 'Authentication token from Kinde (optional if saved)', }, }, }, },
  • src/server.ts:218-379 (registration)
    Registration of all tools including 'update_todo' via the ListToolsRequestSchema handler.
    server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools: [ { name: 'login', description: 'Login with Kinde to get authentication token', inputSchema: { type: 'object', properties: {}, }, }, { name: 'save_token', description: 'Save your Kinde authentication token for future use', inputSchema: { type: 'object', properties: { token: { type: 'string', description: 'Your Kinde JWT token', }, }, required: ['token'], }, }, { name: 'list_todos', description: 'List all todos for the authenticated user', inputSchema: { type: 'object', properties: { authToken: { type: 'string', description: 'Authentication token from Kinde (optional if saved)', }, }, }, }, { name: 'get_subscription_status', description: 'Get the user\'s subscription status and todo usage', inputSchema: { type: 'object', properties: { authToken: { type: 'string', description: 'Authentication token from Kinde', }, }, required: ['authToken'], }, }, { name: 'upgrade_subscription', description: 'Upgrade user subscription to paid plan', inputSchema: { type: 'object', properties: { authToken: { type: 'string', description: 'Authentication token from Kinde', }, }, required: ['authToken'], }, }, { name: 'create_todo', description: 'Create a new todo item with interactive prompts', inputSchema: { type: 'object', properties: { authToken: { type: 'string', description: 'Authentication token from Kinde (optional if saved)', }, title: { type: 'string', description: 'Title of the todo item', }, description: { type: 'string', description: 'Optional description of the todo item', }, completed: { type: 'boolean', description: 'Completion status of the todo', }, }, }, }, { name: 'update_todo', description: 'Update an existing todo item with interactive prompts', inputSchema: { type: 'object', properties: { authToken: { type: 'string', description: 'Authentication token from Kinde (optional if saved)', }, }, }, }, { name: 'delete_todo', description: 'Delete a todo item with interactive prompts', inputSchema: { type: 'object', properties: { authToken: { type: 'string', description: 'Authentication token from Kinde (optional if saved)', }, }, }, }, { name: 'logout', description: 'Logout and clear stored authentication token', inputSchema: { type: 'object', properties: {}, }, }, { name: 'get_kinde_billing', description: 'Get Kinde billing information and subscription status', inputSchema: { type: 'object', properties: { authToken: { type: 'string', description: 'Authentication token from Kinde (optional if saved)', }, }, }, }, { name: 'refresh_billing_status', description: 'Force refresh billing status from Kinde (useful after plan changes)', inputSchema: { type: 'object', properties: { authToken: { type: 'string', description: 'Authentication token from Kinde (optional if saved)', }, }, }, }, { name: 'logout', description: 'Logout and clear stored authentication token', inputSchema: { type: 'object', properties: {}, }, }, ], }; });

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/sholajegede/todo_mcp_server'

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