Skip to main content
Glama

update_task

Modify a specific task by ID with new information or context, appending or replacing details as needed. Supports research-backed updates and integrates with project directories for efficient task management in AI-driven development.

Instructions

Updates a single task by ID with new information or context provided in the prompt.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
appendNoAppend timestamped information to task details instead of full update
fileNoAbsolute path to the tasks file
idYesID of the task (e.g., '15') to update. Subtasks are supported using the update-subtask tool.
projectRootYesThe directory of the project. Must be an absolute path.
promptYesNew information or context to incorporate into the task
researchNoUse Perplexity AI for research-backed updates
tagNoTag context to operate on

Implementation Reference

  • Registers the 'update_task' MCP tool on the server, including schema, description, and execute handler function.
    export function registerUpdateTaskTool(server) { server.addTool({ name: 'update_task', description: 'Updates a single task by ID with new information or context provided in the prompt.', parameters: z.object({ id: z .string() // ID can be number or string like "1.2" .describe( "ID of the task (e.g., '15') to update. Subtasks are supported using the update-subtask tool." ), prompt: z .string() .describe('New information or context to incorporate into the task'), research: z .boolean() .optional() .describe('Use Perplexity AI for research-backed updates'), append: z .boolean() .optional() .describe( 'Append timestamped information to task details instead of full update' ), file: z.string().optional().describe('Absolute path to the tasks file'), projectRoot: z .string() .describe('The directory of the project. Must be an absolute path.'), tag: z.string().optional().describe('Tag context to operate on') }), execute: withNormalizedProjectRoot(async (args, { log, session }) => { const toolName = 'update_task'; try { const resolvedTag = resolveTag({ projectRoot: args.projectRoot, tag: args.tag }); log.info( `Executing ${toolName} tool with args: ${JSON.stringify(args)}` ); let tasksJsonPath; try { tasksJsonPath = findTasksPath( { projectRoot: args.projectRoot, file: args.file }, log ); log.info(`${toolName}: Resolved tasks path: ${tasksJsonPath}`); } catch (error) { log.error(`${toolName}: Error finding tasks.json: ${error.message}`); return createErrorResponse( `Failed to find tasks.json: ${error.message}` ); } // 3. Call Direct Function - Include projectRoot const result = await updateTaskByIdDirect( { tasksJsonPath: tasksJsonPath, id: args.id, prompt: args.prompt, research: args.research, append: args.append, projectRoot: args.projectRoot, tag: resolvedTag }, log, { session } ); // 4. Handle Result log.info( `${toolName}: Direct function result: success=${result.success}` ); return handleApiResult({ result, log: log, errorPrefix: 'Error updating task', projectRoot: args.projectRoot }); } catch (error) { log.error( `Critical error in ${toolName} tool execute: ${error.message}` ); return createErrorResponse( `Internal tool error (${toolName}): ${error.message}` ); } }) }); }
  • The execute handler for the update_task tool. Resolves project paths, finds tasks.json, calls the direct update function, and handles the API result.
    execute: withNormalizedProjectRoot(async (args, { log, session }) => { const toolName = 'update_task'; try { const resolvedTag = resolveTag({ projectRoot: args.projectRoot, tag: args.tag }); log.info( `Executing ${toolName} tool with args: ${JSON.stringify(args)}` ); let tasksJsonPath; try { tasksJsonPath = findTasksPath( { projectRoot: args.projectRoot, file: args.file }, log ); log.info(`${toolName}: Resolved tasks path: ${tasksJsonPath}`); } catch (error) { log.error(`${toolName}: Error finding tasks.json: ${error.message}`); return createErrorResponse( `Failed to find tasks.json: ${error.message}` ); } // 3. Call Direct Function - Include projectRoot const result = await updateTaskByIdDirect( { tasksJsonPath: tasksJsonPath, id: args.id, prompt: args.prompt, research: args.research, append: args.append, projectRoot: args.projectRoot, tag: resolvedTag }, log, { session } ); // 4. Handle Result log.info( `${toolName}: Direct function result: success=${result.success}` ); return handleApiResult({ result, log: log, errorPrefix: 'Error updating task', projectRoot: args.projectRoot }); } catch (error) { log.error( `Critical error in ${toolName} tool execute: ${error.message}` ); return createErrorResponse( `Internal tool error (${toolName}): ${error.message}` ); } })
  • Input parameter schema (Zod) for the update_task tool defining id, prompt, optional research, append, file, projectRoot, and tag.
    parameters: z.object({ id: z .string() // ID can be number or string like "1.2" .describe( "ID of the task (e.g., '15') to update. Subtasks are supported using the update-subtask tool." ), prompt: z .string() .describe('New information or context to incorporate into the task'), research: z .boolean() .optional() .describe('Use Perplexity AI for research-backed updates'), append: z .boolean() .optional() .describe( 'Append timestamped information to task details instead of full update' ), file: z.string().optional().describe('Absolute path to the tasks file'), projectRoot: z .string() .describe('The directory of the project. Must be an absolute path.'), tag: z.string().optional().describe('Tag context to operate on') }),
  • Response schema for update_task tool, defining the structure of the updated task object.
    import { z } from 'zod'; import { UpdatedTaskSchema } from './update-tasks.js'; export const UpdateTaskResponseSchema = z.object({ task: UpdatedTaskSchema });
  • Maps 'update_task' to its registration function in the central tool registry.
    update_task: registerUpdateTaskTool,

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/eyaltoledano/claude-task-master'

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