Skip to main content
Glama
kazuph

@kazuph/mcp-taskmanager

by kazuph

update_task

Modify the title or description of an uncompleted task in the task manager. Displays a progress table with the updated task details after changes are applied.

Instructions

Update an existing task's title and/or description. Only uncompleted tasks can be updated.

A progress table will be displayed showing the updated task information.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
descriptionNo
requestIdYes
taskIdYes
titleNo

Implementation Reference

  • Implements the core logic for updating an uncompleted task's title and/or description, persists changes, and provides a progress table.
    public async updateTask(
      requestId: string,
      taskId: string,
      updates: { title?: string; description?: string }
    ) {
      await this.loadTasks();
      const req = this.data.requests.find((r) => r.requestId === requestId);
      if (!req) return { status: "error", message: "Request not found" };
    
      const task = req.tasks.find((t) => t.id === taskId);
      if (!task) return { status: "error", message: "Task not found" };
      if (task.done)
        return { status: "error", message: "Cannot update completed task" };
    
      if (updates.title) task.title = updates.title;
      if (updates.description) task.description = updates.description;
    
      await this.saveTasks();
    
      const progressTable = this.formatTaskProgressTable(requestId);
      return {
        status: "task_updated",
        message: `Task ${taskId} has been updated.\n${progressTable}`,
        task: {
          id: task.id,
          title: task.title,
          description: task.description,
        },
      };
    }
  • Zod schema defining the input parameters for the update_task tool.
    const UpdateTaskSchema = z.object({
      requestId: z.string(),
      taskId: z.string(),
      title: z.string().optional(),
      description: z.string().optional(),
    });
  • index.ts:250-265 (registration)
    Defines the Tool object for 'update_task' including name, description, and input schema, used for registration.
    const UPDATE_TASK_TOOL: Tool = {
      name: "update_task",
      description:
        "Update an existing task's title and/or description. Only uncompleted tasks can be updated.\n\n" +
        "A progress table will be displayed showing the updated task information.",
      inputSchema: {
        type: "object",
        properties: {
          requestId: { type: "string" },
          taskId: { type: "string" },
          title: { type: "string" },
          description: { type: "string" },
        },
        required: ["requestId", "taskId"],
      },
    };
  • index.ts:684-696 (registration)
    Registers UPDATE_TASK_TOOL in the list returned by ListToolsRequestHandler.
      tools: [
        REQUEST_PLANNING_TOOL,
        GET_NEXT_TASK_TOOL,
        MARK_TASK_DONE_TOOL,
        APPROVE_TASK_COMPLETION_TOOL,
        APPROVE_REQUEST_COMPLETION_TOOL,
        OPEN_TASK_DETAILS_TOOL,
        LIST_REQUESTS_TOOL,
        ADD_TASKS_TO_REQUEST_TOOL,
        UPDATE_TASK_TOOL,
        DELETE_TASK_TOOL,
      ],
    }));
  • MCP server request handler for 'update_task': validates args with schema and delegates to TaskManagerServer.updateTask.
    case "update_task": {
      const parsed = UpdateTaskSchema.safeParse(args);
      if (!parsed.success) {
        throw new Error(`Invalid arguments: ${parsed.error}`);
      }
      const { requestId, taskId, title, description } = parsed.data;
      const result = await taskManagerServer.updateTask(requestId, taskId, {
        title,
        description,
      });
      return {
        content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
      };
    }
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that updates are limited to uncompleted tasks and mentions a 'progress table will be displayed' as output behavior. However, it doesn't cover important aspects like whether this requires specific permissions, if changes are reversible, error handling, or rate limits. The description adds some behavioral context but leaves significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately concise with two sentences. The first sentence clearly states the purpose and constraint, while the second describes output behavior. There's no unnecessary information, though it could be slightly more structured by separating constraints from output details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (mutation operation with 4 parameters), no annotations, and no output schema, the description is partially complete. It covers the update scope and a constraint but lacks details on parameter meanings, error conditions, permissions, and full output specification. The description provides a basic foundation but leaves important gaps for a mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It mentions that 'title and/or description' can be updated, which maps to two of the four parameters. However, it doesn't explain the purpose of 'requestId' and 'taskId' (the required parameters) or provide any format/validation details. The description adds minimal value beyond what's implied by parameter names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Update an existing task's title and/or description.' It specifies the verb (update) and resource (task) with the specific fields that can be modified. However, it doesn't explicitly differentiate from sibling tools like 'mark_task_done' or 'delete_task' beyond mentioning that only uncompleted tasks can be updated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool: 'Only uncompleted tasks can be updated.' This establishes a key precondition. However, it doesn't explicitly mention when NOT to use it (e.g., for completed tasks) or name alternatives like 'delete_task' for removal or 'mark_task_done' for completion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Related Tools

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/kazuph/mcp-taskmanager'

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