Skip to main content
Glama

update-task

Destructive

Modify existing Dooray project tasks by changing assignees, tags, workflow status, priority, due date, milestone, or parent task while preserving fields you do not provide.

Instructions

Update an existing task in a Dooray project.

RECOMMENDED WORKFLOW (guide for AI assistants):

  1. Fetch Current Task: Call get-task to retrieve current values before updating

    • Preserves existing data when only updating specific fields

    • Shows current assignees, tags, milestone, workflow status

    • Use returned data to know what values to preserve

  2. Determine Changes: Identify what needs updating

    • If changing assignees/cc: Get options from get-my-member-info, get-project-member-list, get-project-member-group-list

    • Member types: {"id": "...", "type": "member|group|email"}

    • "member": organizationMemberId, "group": group id, "email": email address

  3. Handle Tags: Call get-tag-list if updating tags

    • CRITICAL: Check tagGroup.mandatory=true - MUST include tags from all mandatory groups or update fails (500 error)

    • tagGroup.selectOne=true: Select exactly ONE tag from group

    • tagGroup.selectOne=false: Select one or MORE tags from group

    • IMPORTANT: tagIds is a COMPLETE replacement, not additive

  4. Handle Workflow: Use get-project-workflow-list to see available statuses

    • Provide workflowId to change task status

    • Workflow classes: backlog (대기), registered (등록/할 일), working (진행 중), closed (완료)

  5. Handle Parent Post (상위 업무): Provide parentPostId to set a parent task

    • Nested hierarchy is NOT allowed: a task that already has sub-tasks cannot be set as a parent

IMPORTANT NOTES:

  • Complete Replacement: assignees, cc, and tagIds completely REPLACE existing values (not merged)

  • Add / Remove: addAssignees, removeAssignees, addCc, removeCc, addTagIds, removeTagIds change only what you list and keep the rest. The tool reads the current task itself, so get-task is not needed first. Do not combine them with the replacement option of the same field

  • Preserve Data: Only provide fields you want to change; unprovided fields remain unchanged

  • Korean Terms: "to" = 담당자 (assignee), "cc" = 참조 (reference)

  • Priority: Use "none" to remove priority

URL Pattern Recognition: When given a Dooray task URL like "https://nhnent.dooray.com/task/PROJECT_ID/TASK_ID":

  • Extract the first numeric ID after "/task/" as projectId

  • Extract the second numeric ID as taskId

Examples:

  • Change priority: {"projectId": "123", "taskId": "42", "priority": "high"}

  • Update assignees: {"projectId": "123", "taskId": "42", "assignees": [{"id": "user123", "type": "member"}]}

  • Change status: {"projectId": "123", "taskId": "42", "workflowId": "working"}

  • Update tags: {"projectId": "123", "taskId": "42", "tagIds": ["tag1", "tag2"]}

  • Clear milestone: {"projectId": "123", "taskId": "42", "milestoneId": null}

  • Set parent task: {"projectId": "123", "taskId": "42", "parentPostId": "99"}

  • Add a CC, keep others: {"projectId": "123", "taskId": "42", "addCc": [{"id": "user456", "type": "member"}]}

  • Add and remove tags: {"projectId": "123", "taskId": "42", "addTagIds": ["tag3"], "removeTagIds": ["tag1"]}

Returns: Updated task with all current details.

Input Schema

NameRequiredDescriptionDefault
ccNoNew complete list of CC recipients (참조). REPLACES all existing CC recipients. To get options: (1) use get-my-member-info for current user, (2) use get-project-member-list for project members, (3) use get-project-member-group-list for member groups. Each CC object has {id: string, type: "member"|"group"|"email"}.
bodyNoNew task body content
addCcNoCC recipients to add, keeping current ones. Cannot be combined with assignees or cc.
tagIdsNoNew complete array of tag IDs. REPLACES all existing tags. IMPORTANT: Check for mandatory tag groups using get-tag-list tool. Projects may require specific tags from mandatory tag groups, or update will fail with 500 error.
taskIdYesTask ID to update
dueDateNoNew due date in ISO 8601 format
subjectNoNew task subject/title
priorityNoTask priority level (highest, high, normal, low, lowest, none)
removeCcNoCC recipients to remove. Cannot be combined with assignees or cc.
addTagIdsNoTag IDs to add, keeping current tags. Cannot be combined with tagIds.
assigneesNoNew complete list of assignees (담당자). REPLACES all existing assignees. To get options: (1) use get-my-member-info for current user, (2) use get-project-member-list for project members, (3) use get-project-member-group-list for member groups. Each assignee object has {id: string, type: "member"|"group"|"email"}.
projectIdYesProject ID where the task belongs
workflowIdNoNew workflow ID (status). Use get-project-workflow-list to see available workflow statuses for this project. Workflow classes: backlog (대기), registered (등록/할 일), working (진행 중), closed (완료).
milestoneIdNoNew milestone ID, or null to remove milestone
addAssigneesNoAssignees to add, keeping current ones. Cannot be combined with assignees or cc.
parentPostIdNoParent task ID to set as parent (상위 업무 설정). Nested hierarchy is NOT allowed: a task that already has sub-tasks cannot be set as a parent.
removeTagIdsNoTag IDs to remove. Cannot be combined with tagIds.
removeAssigneesNoAssignees to remove. Cannot be combined with assignees or cc.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed10 schema fields changedv0.2.0
    • addedInput schema / properties / addAssignees
      Added value: +{
      +  "description": "Assignees to add, keeping current ones. Cannot be combined with assignees or cc.",
      +  "items": {
      +    "properties": {
      +      "id": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "enum": [
      +          "member",
      +          "group",
      +          "email"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / addCc
      Added value: +{
      +  "description": "CC recipients to add, keeping current ones. Cannot be combined with assignees or cc.",
      +  "items": {
      +    "properties": {
      +      "id": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "enum": [
      +          "member",
      +          "group",
      +          "email"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / addTagIds
      Added value: +{
      +  "description": "Tag IDs to add, keeping current tags. Cannot be combined with tagIds.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / parentPostId
      Added value: +{
      +  "description": "Parent task ID to set as parent (상위 업무 설정). Nested hierarchy is NOT allowed: a task that already has sub-tasks cannot be set as a parent.",
      +  "type": "string"
      +}
    • addedInput schema / properties / removeAssignees
      Added value: +{
      +  "description": "Assignees to remove. Cannot be combined with assignees or cc.",
      +  "items": {
      +    "properties": {
      +      "id": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "enum": [
      +          "member",
      +          "group",
      +          "email"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / removeCc
      Added value: +{
      +  "description": "CC recipients to remove. Cannot be combined with assignees or cc.",
      +  "items": {
      +    "properties": {
      +      "id": {
      +        "type": "string"
      +      },
      +      "type": {
      +        "enum": [
      +          "member",
      +          "group",
      +          "email"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / removeTagIds
      Added value: +{
      +  "description": "Tag IDs to remove. Cannot be combined with tagIds.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / taskId
      Added value: +{
      +  "description": "Task ID to update",
      +  "type": "string"
      +}
    • removedInput schema / properties / taskNumber
      Removed value: -{
      -  "description": "Task number to update",
      -  "type": "number"
      -}
    • changedInput schema / required
      Previous value: -[
      -  "projectId",
      -  "taskNumber"
      -]New value: +[
      +  "projectId",
      +  "taskId"
      +]
  2. First observedv1.0.0

TDQS

A4.9/5.0
Behavior5/5

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

The description goes well beyond the annotations by explaining replacement-vs-add/remove semantics, mandatory tag-group failure conditions, and parent-task hierarchy restrictions. It also clarifies that unprovided fields remain unchanged and that the response returns the updated task.

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 long but appropriately structured for an 18-parameter destructive update tool, with the purpose and workflow front-loaded. There is some repetition between the workflow notes, schema descriptions, and examples, but it remains usable and well organized.

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

Completeness5/5

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

For a complex destructive update tool with no output schema, the description covers prerequisites, parameter interactions, failure modes, preservation behavior, URL parsing, examples, and the return value. An agent has enough information to invoke it correctly without first inspecting sibling schemas.

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

Parameters5/5

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

Although schema coverage is already 100%, the description adds cross-parameter meaning and invocation examples for priority, assignees, tags, workflow, milestone clearing, parentPostId, and add/remove combinations. It also explains member object types and mandatory tag-group constraints in context.

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

Purpose5/5

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

The description states a specific verb and resource: 'Update an existing task in a Dooray project.' It is clearly distinguishable from siblings like create-task, update-task-body, and task-comment tools.

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

Usage Guidelines5/5

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

It gives an explicit recommended workflow, including when to call get-task first and when add/remove helpers avoid that need. It also names specific sibling tools for member, tag, and workflow lookups, and explains when each applies.

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