Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
DOORAY_API_TOKENYesYour Dooray API token (can be generated from Dooray personal settings > API > Personal authentication token menu)

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{}
prompts
{}
resources
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get-my-member-infoA

Get information about the authenticated user.

This tool retrieves your Dooray member profile using your API token. Most importantly, it returns your member ID which is needed for other operations like filtering tasks by assignee.

No parameters needed - it automatically uses your authentication token.

Examples:

  • Get my info: {} (empty parameters)

  • "What's my Dooray member ID?"

  • "Show my Dooray profile"

Returns your complete member profile including:

  • id: Your member ID (important for task queries)

  • name, email, organization

  • locale, timezone settings

  • display preferences

This is often the first tool to call to get your member ID for use in other tools like list-tasks.

get-member-listA

Search members across the whole Dooray organization (조직 전체 멤버 검색).

Unlike get-project-member-list, this is not limited to one project. Use it to find the organizationMemberId of someone outside the project (e.g. to add them as CC by email or member ID).

Search Conditions (combine as needed):

  • name: Member name

  • userCode: User ID, like match

  • userCodeExact: User ID, exact match

  • externalEmailAddresses: Email addresses, exact match only (not a like search)

  • idProviderUserId: SSO user ID (e.g. employee number)

Examples:

  • By name: {"name": "홍길동"}

  • By email: {"externalEmailAddresses": ["user@example.com"]}

  • By user ID: {"userCodeExact": "gildong.hong"}

Returns: totalCount and members with id (organizationMemberId), name, userCode, externalEmailAddress. Use get-member for full details.

get-memberA

Get details of a Dooray organization member (멤버 상세).

Use the organizationMemberId found in task assignees, comment creators, calendar attendees, or get-member-list results.

Examples:

  • {"memberId": "1234567890123456789"}

Returns: id, name, userCode, externalEmailAddress, englishName, nickname, locale, timezoneName and more.

get-project-listA

Get list of active projects that you belong to.

This tool retrieves only active projects where you are a member. Archived projects are excluded.

Note: Returns compact response with essential fields only. For complete project details, use get-project.

IMPORTANT: When the user provides a specific Dooray URL (e.g., "https://nhnent.dooray.com/task/PROJECT_ID"), do NOT use this tool. Instead, extract the PROJECT_ID from the URL and call get-project directly to get information about that specific project.

This tool is for browsing your active projects when no specific project URL or ID is provided.

Examples:

  • Get all your active projects: {} (empty parameters)

  • Get second page with 50 items: {"page": 1, "size": 50}

Returns a paginated list with project id and name (project code) for each project.

get-projectA

Get detailed information about a specific Dooray project.

This tool retrieves complete details of a single project including its configuration, scope, organization, and category information.

URL Pattern Recognition: When given a Dooray URL like "https://nhnent.dooray.com/task/PROJECT_ID" or "https://nhnent.dooray.com/task/PROJECT_ID/TASK_ID", extract the PROJECT_ID (the first numeric ID after "/task/") and use it as the projectId parameter.

IMPORTANT: When a specific project URL is provided, use this tool directly instead of calling get-project-list first.

Examples:

Returns project information including:

  • id, code, name: Basic project identifiers

  • description: Project description

  • scope: private or public

  • organizationId: Organization this project belongs to

  • projectCategoryId: Category ID (null if no category)

  • projectType: default, task, or issue

  • state: active or archived

Use this to get full details about a specific project when you have its project ID or URL.

get-task-listA

Get list of tasks in a Dooray project with powerful filtering and sorting.

IMPORTANT: projectId is REQUIRED. This tool fetches tasks from a specific project.

Note: Returns compact response with essential fields only. For complete task details, use get-task.

URL Pattern Recognition: When given a Dooray URL like "https://nhnent.dooray.com/task/PROJECT_ID" or "https://nhnent.dooray.com/task/PROJECT_ID/TASK_ID", extract the PROJECT_ID (the first numeric ID after "/task/") and use it as the projectId parameter. When a URL is provided, use get-project for project info instead of get-project-list.

Member ID Filters (use organizationMemberId from get-my-member-info):

  • toMemberIds: Tasks assigned to specific members

  • ccMemberIds: Tasks where members are in CC

  • fromMemberIds: Tasks created by specific members

Workflow Filters:

  • postWorkflowClasses: ["backlog", "registered", "working", "closed"]

  • postWorkflowIds: Project-specific workflow IDs

Date Filters (flexible patterns):

  • "today" - Today's tasks

  • "thisweek" - This week's tasks

  • "prev-7d" - Last 7 days

  • "next-7d" - Next 7 days

  • ISO8601 range: "2021-01-01T00:00:00+09:00~2021-01-10T00:00:00+09:00"

Examples:

  1. All tasks in project: {"projectId": "123456"}

  2. Tasks assigned to me: {"projectId": "123456", "toMemberIds": ["my-org-member-id"]}

  3. Tasks in "working" status: {"projectId": "123456", "postWorkflowClasses": ["working"]}

  4. Tasks due today: {"projectId": "123456", "dueAt": "today"}

  5. Recent tasks (sorted by update time): {"projectId": "123456", "updatedAt": "prev-7d", "order": "-postUpdatedAt"}

  6. Tasks with specific milestone and tags: {"projectId": "123456", "milestoneIds": ["milestone123"], "tagIds": ["tag456"]}

Sorting:

  • Default: Tasks are sorted by most recently updated first (-postUpdatedAt)

  • Custom: Use order parameter with: postDueAt, postUpdatedAt, createdAt

  • Prefix with - for descending (e.g., "-createdAt")

Returns paginated task list with id, number, subject, status, priority, dueDate, assignees, tags, and milestone.

get-taskA

Get detailed information about a specific task.

This tool retrieves complete details of a task including its full body content, attachments, workflow status, assignees, and all metadata.

URL Pattern Recognition - Two formats supported:

  1. Project-scoped URL: "https://nhnent.dooray.com/task/PROJECT_ID/TASK_ID"

  2. Task-only URL: "https://nhnent.dooray.com/project/tasks/TASK_ID"

IMPORTANT:

  • taskId is REQUIRED, projectId is OPTIONAL

  • The taskId is the unique identifier (ID) from the URL, NOT the sequential task number shown in the UI

  • You can fetch task details with just the taskId without knowing the projectId

  • When a specific task URL is provided, use this tool directly instead of calling get-project-list first

  • To find taskId from task descriptions, use get-task-list to search and get task IDs

Examples:

  • From URL pattern 1: {"taskId": "4206132384174602537", "projectId": "1769381697328002548"}

  • From URL pattern 2: {"taskId": "4206132384174602537"}

  • Just taskId: {"taskId": "789012345"}

  • With both IDs: {"taskId": "789012345", "projectId": "123456"}

Returns complete task information including:

  • Basic info: id, number, subject, taskNumber (PROJECT-CODE/NUMBER format)

  • Project: project object with id and code

  • Status: workflowClass (registered/working/closed), workflow (id and name), closed flag, priority

  • Dates: createdAt, updatedAt, dueDate, dueDateFlag

  • Content: body with mimeType (text/x-markdown or text/html) and content

  • Hierarchy: parent task information (id, number, subject) if this is a subtask

  • People: users object with from (creator), to (assignees), cc (watchers)

  • Organization: milestone (id, name), tags array (id, name)

  • Files: files array with attachments (id, name, size)

create-taskA

Create a new task (업무) in a Dooray project. Required: projectId, subject.

DRAFT vs REGULAR: ASK USER which type to create:

  • Draft (isDraft: true): Returns URL to continue editing in browser. Use for complex tasks or when user wants to review.

  • Regular (isDraft: false, default): Saves immediately. Use when all info is available.

INTERACTIVE WORKFLOW:

  1. Templates: Ask about get-project-template-list. If yes, use get-project-template for defaults.

  2. Content: Get subject and body. If no template and no body, ask user for details.

  3. Assignees/CC: Use get-my-member-info, get-project-member-list, or get-project-member-group-list. Format: {id, type: "member|group|email"}

  4. Tags: Call get-tag-list. CRITICAL: Check mandatory tag groups - must select or creation fails (500 error). selectOne=true requires exactly ONE tag from group.

Key Points:

Examples:

  • Draft: {"projectId": "123", "subject": "Bug fix", "isDraft": true}

  • Regular: {"projectId": "123", "subject": "Deploy", "assignees": [{"id": "user1", "type": "member"}], "tagIds": ["tag1"], "priority": "high"}

Returns: Task object (regular) or {id, url, message} (draft).

update-taskA

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.

update-task-bodyA

Replace part of a task body (업무 본문 일부 치환).

Use this instead of update-task when only a few spots in a long body change. It reads the current body, replaces oldText with newText, and saves it with the same mimeType. The rest of the body (including inline images and file links) stays as it is.

Rules:

  • oldText must match the current body exactly (copy it from get-task)

  • Fails if oldText is not found

  • Fails if oldText appears more than once, unless replaceAll is true. Add surrounding text to make it unique

Examples:

  • {"projectId": "123", "taskId": "456", "oldText": "2. 배포", "newText": "2. 카나리 배포"}

  • {"projectId": "123", "taskId": "456", "oldText": "TODO", "newText": "완료", "replaceAll": true}

Returns: replacedCount and the body mimeType.

create-task-commentA

Add a comment (댓글) to an existing Dooray task.

This tool creates a comment on a task, separate from editing the task body itself. Use this for:

  • Adding progress updates or status notes

  • Responding to questions or discussions

  • Logging information related to the task

  • Attaching files with context

When to Use:

  • create-task-comment: For adding discussion, updates, or notes (댓글)

  • update-task: For modifying the task description, title, or metadata

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

File Attachments:

Content Format:

  • Use "text/x-markdown" for markdown formatting (recommended)

  • Use "text/html" for rich HTML content

  • Body format: {"mimeType": "text/x-markdown", "content": "..."}

Examples:

  • Simple comment: { "projectId": "123456", "taskId": "789012", "body": {"mimeType": "text/x-markdown", "content": "Progress update: Completed initial implementation"} }

  • With markdown: { "projectId": "123456", "taskId": "789012", "body": { "mimeType": "text/x-markdown", "content": "## Test Results\n\n- ✅ All unit tests passing\n- ✅ Integration tests passed\n- ⏳ Performance testing in progress" } }

  • With file attachments: { "projectId": "123456", "taskId": "789012", "body": {"mimeType": "text/x-markdown", "content": "See attached screenshots"}, "attachFileIds": ["file123", "file456"] }

Returns: Created comment with ID.

get-task-comment-listA

Get list of comments (댓글) on a specific Dooray task.

This tool fetches all comments that have been added to a task. Comments are discussions, updates, or notes added by team members.

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

  • Extract the first numeric ID after "/task/" as projectId (if present)

  • Extract the second numeric ID (or the ID after "/tasks/") as taskId

IMPORTANT: Both projectId and taskId are REQUIRED.

Pagination:

  • Default page size is 20 (maximum: 100)

  • Use page parameter to get additional pages if totalCount > size

Sorting:

  • Default: createdAt (oldest comments first)

  • Use "-createdAt" to get newest comments first

Note: Returns filtered response with essential fields only (id, creator, body).

Examples:

  • Get all comments (first page): {"projectId": "123456", "taskId": "789012"}

  • Get newest comments first: {"projectId": "123456", "taskId": "789012", "order": "-createdAt"}

  • Get second page: {"projectId": "123456", "taskId": "789012", "page": 1, "size": 20}

Returns a paginated response with totalCount and array of comments containing:

  • id: Comment ID

  • creator: Who wrote the comment (member or emailUser)

    • For members: {"type": "member", "member": {"organizationMemberId": "..."}}

    • For email users: {"type": "emailUser", "emailUser": {"emailAddress": "...", "name": "..."}}

  • body: Comment content with mimeType and content

Use this tool to view discussion history, progress updates, or notes on a task.

update-task-commentA

Update an existing comment (댓글) on a Dooray task.

This tool modifies the content or attachments of an existing task comment.

IMPORTANT LIMITATION: Comments created from incoming emails CANNOT be modified. Only regular comments can be updated.

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

  • Extract the first numeric ID after "/task/" as projectId (if present)

  • Extract the second numeric ID (or the ID after "/tasks/") as taskId

  • Use get-task-comment-list to find the comment ID you want to update

REQUIRED: projectId, taskId, and commentId are all required.

Optional Parameters: You can provide either body, attachFileIds, or both. If you only want to update the text, just provide body. If you only want to update attachments, just provide attachFileIds.

File Attachments:

Workflow:

  1. Use get-task-comment-list to find the comment you want to update and get its ID

  2. Call update-task-comment with the comment ID and new content/attachments

  3. The comment will be modified immediately

Content Format:

  • Use "text/x-markdown" for markdown formatting (recommended)

  • Use "text/html" for rich HTML content

  • Body format: {"mimeType": "text/x-markdown", "content": "..."}

Examples:

  • Update comment text only: { "projectId": "123456", "taskId": "789012", "commentId": "4219415732999317024", "body": { "mimeType": "text/x-markdown", "content": "## Updated Comment\n\nThis comment has been revised" } }

  • Update with new attachments: { "projectId": "123456", "taskId": "789012", "commentId": "4219415732999317024", "body": { "mimeType": "text/x-markdown", "content": "See updated files" }, "attachFileIds": ["file123", "file456"] }

Returns: Success message upon completion.

get-task-commentA

Get a single comment (댓글) on a Dooray task with its full body.

Use the comment ID from get-task-comment-list. Call this before update-task-comment to get the current body.

Examples:

  • {"projectId": "123", "taskId": "456", "commentId": "789"}

Returns: comment with id, type, subtype, createdAt, creator, body {mimeType, content}, files.

delete-task-commentA

Delete a comment (댓글) on a Dooray task. This cannot be undone.

Confirm the target with get-task-comment before deleting.

Examples:

  • {"projectId": "123", "taskId": "456", "commentId": "789"}

Returns: success message.

get-milestone-listA

Get list of milestones for a project.

Milestones are used to organize and track tasks by release or sprint. This tool retrieves all milestones in a project.

Note: Returns compact response with essential fields only.

URL Pattern Recognition: When given a Dooray URL like "https://nhnent.dooray.com/task/PROJECT_ID", extract the PROJECT_ID (the first numeric ID after "/task/") and use it as the projectId parameter.

Examples:

  • Get all milestones: {"projectId": "123456"}

  • Get only open milestones: {"projectId": "123456", "status": "open"}

  • Get only closed milestones: {"projectId": "123456", "status": "closed"}

Returns an array of milestones with id, name, description, dates, and status. Use milestone IDs when creating or updating tasks.

get-tag-listA

Get list of tags for a project, grouped by tag groups.

Tags are used to categorize and label tasks. This tool retrieves all available tags organized by their tag groups for better clarity.

Response Format: Returns tags grouped by their tagGroup:

{
  "tagGroups": [
    {
      "id": "group1",
      "name": "Type",
      "mandatory": true,
      "selectOne": true,
      "tags": [
        { "id": "tag1", "name": "Bug" },
        { "id": "tag2", "name": "Feature" }
      ]
    }
  ]
}

CRITICAL - Mandatory Tag Groups: When creating/updating tasks, you MUST include tags from all mandatory tag groups:

  • mandatory: true - At least one tag from this group is required

  • selectOne: true - Exactly ONE tag must be selected from this group

  • selectOne: false - One OR MORE tags must be selected from this group

Failing to provide required tags will result in a 500 error.

URL Pattern Recognition: When given a Dooray URL like "https://nhnent.dooray.com/task/PROJECT_ID", extract the PROJECT_ID (the first numeric ID after "/task/") and use it as the projectId parameter.

Pagination:

  • Default page size is 100 (maximum) to retrieve all tags

  • Use page parameter to get additional pages if totalCount > 100

Examples:

  • Get all tags: {"projectId": "123456"}

  • Get second page: {"projectId": "123456", "page": 1, "size": 100}

Use tag IDs when creating or updating tasks with create-task or update-task tools.

get-tagA

Get details of a specific tag in a Dooray project.

Response Format:

{
  "id": "12345",
  "name": "Priority:High",
  "color": "ff0000",
  "tagGroup": {
    "id": "group123",
    "name": "Priority",
    "mandatory": true,
    "selectOne": true
  }
}

Response Fields:

  • id: Tag ID

  • name: Tag name (includes group prefix if it's a group tag)

  • color: Hex color code without #

  • tagGroup: Tag group information (null for individual tags)

    • id: Group ID

    • name: Group name

    • mandatory: If true, at least one tag from this group is required when creating tasks

    • selectOne: If true, exactly one tag must be selected; if false, multiple tags can be selected

Examples:

  • Get tag: {"projectId": "123", "tagId": "456"}

Use Cases:

  • Check tag details before assigning to a task

  • Verify tag group settings (mandatory, selectOne)

  • Get tag color and group information

create-tagA

Create a new tag in a Dooray project.

Tag Types:

  1. Individual Tag: A standalone tag without a group

    • Example: {"name": "urgent", "color": "ff0000"}

  2. Group Tag: A tag belonging to a tag group (using "groupName:tagName" format)

    • Example: {"name": "Priority:High", "color": "ff0000"}

    • Example: {"name": "Priority:Medium", "color": "ffff00"}

    • Tags with the same group name prefix will be grouped together

Color Format:

  • 6-character hex color code without the # symbol

  • Examples: "ffffff" (white), "ff0000" (red), "c6eab3" (light green)

  • If not specified, a default color will be assigned

Response: Returns the created tag's ID:

{
  "id": "12345"
}

Tag Groups: After creating group tags, you can configure the group's behavior (mandatory, selectOne) using the update-tag-group tool.

Examples:

  • Individual tag: {"projectId": "123", "name": "Bug", "color": "ff0000"}

  • Group tag: {"projectId": "123", "name": "Type:Feature", "color": "00ff00"}

update-tag-groupA

Update tag group settings in a Dooray project.

Tag Group Settings:

  • mandatory: When true, at least one tag from this group must be assigned when creating/updating tasks

  • selectOne: When true, exactly ONE tag from this group can be selected. When false, multiple tags can be selected

Common Configurations:

  1. Required single selection (e.g., Priority, Status): {"mandatory": true, "selectOne": true}

    • User MUST select exactly one tag

  2. Required multiple selection (e.g., Categories, Skills): {"mandatory": true, "selectOne": false}

    • User MUST select at least one tag, can select multiple

  3. Optional single selection: {"mandatory": false, "selectOne": true}

    • User can optionally select one tag

  4. Optional multiple selection (default): {"mandatory": false, "selectOne": false}

    • User can optionally select multiple tags

Finding Tag Group ID: Use get-tag-list to find tags and their tagGroup information:

{
  "tagGroup": {
    "id": "group123",  // Use this as tagGroupId
    "name": "Priority",
    "mandatory": false,
    "selectOne": false
  }
}

Examples:

  • Make group required with single selection: {"projectId": "123", "tagGroupId": "group456", "mandatory": true, "selectOne": true}

  • Allow multiple selections: {"projectId": "123", "tagGroupId": "group456", "selectOne": false}

Note: Only provide the settings you want to change. Omitted settings will not be modified.

get-project-template-listA

Get list of project task templates.

Templates are pre-created task structures with predefined title and body content. This tool retrieves all available templates in a project.

URL Pattern Recognition: When given a Dooray URL like "https://nhnent.dooray.com/task/PROJECT_ID", extract the PROJECT_ID (the first numeric ID after "/task/") and use it as the projectId parameter.

Note: Returns compact response with essential fields only (id and templateName).

Pagination:

  • Default page size is 20 (maximum: 100)

  • Use page parameter to get additional pages if totalCount > size

  • Set size parameter to control items per page (max: 100)

Examples:

  • Get all templates (first page): {"projectId": "123456"}

  • Get second page: {"projectId": "123456", "page": 1, "size": 20}

  • Get with custom page size: {"projectId": "123456", "page": 0, "size": 50}

Returns a paginated response with totalCount and an array of templates containing id and templateName.

Templates help users quickly create tasks with predefined structure and content, useful for common task types like bug reports, feature requests, or documentation tasks.

get-project-templateA

Get detailed information about a specific project template.

This tool retrieves complete template details including body, guide, subject, users, tags, and milestone. The returned data is intended for creating new tasks from templates.

IMPORTANT - Full Details Returned: This tool returns ALL template fields (not filtered) because:

  • Template data will be used for creating new tasks

  • Need body, guide, subject, users, tags, milestone for task creation

  • This is a detail view, not a list view

Template Macros: Template macros like ${year}, ${month}, etc. are returned as-is (not interpolated). These can be processed when creating tasks if needed.

URL Pattern Recognition: When given a Dooray URL like "https://nhnent.dooray.com/task/PROJECT_ID", extract the PROJECT_ID (the first numeric ID after "/task/") and use it as the projectId parameter.

How to get template IDs: Use the get-project-template-list tool to list all templates in a project and get their IDs.

Examples:

  • Get template details: {"projectId": "123456", "templateId": "789012"}

  • "Show me details of template 789012 in project 123456"

Returns complete template information including:

  • id: Template ID

  • templateName: Template name

  • project: Project info (id, code)

  • body: Template body with mimeType and content (markdown or HTML)

  • guide: Template guide/instructions with mimeType and content

  • subject: Default task subject

  • users: Default assignees (to) and CC

  • tags: Default tag IDs

  • milestone: Default milestone (id, name)

  • priority: Default priority level

  • dueDate, dueDateFlag: Default due date settings

  • isDefault: Whether this is the default template

Use this tool to get full template details before creating a new task from the template.

create-project-templateA

Create a new task template in a Dooray project.

Templates are pre-created task structures that help users quickly create tasks with predefined content.

Required Field:

  • templateName: The name of the template

Optional Fields:

  • users: Default assignees (to) and CC recipients

  • body: Default task body content (markdown or HTML)

  • guide: Instructions shown when creating tasks from this template

  • subject: Default task subject/title

  • dueDate: Default due date (ISO 8601 format)

  • dueDateFlag: Whether due date is enabled

  • milestoneId: Default milestone

  • tagIds: Default tags

  • priority: Default priority (highest, high, normal, low, lowest, none)

  • isDefault: Set as default template (auto-fills when creating new tasks)

Due Date Flags:

  • dueDateFlag: false → No schedule

  • dueDateFlag: true, dueDate: null → Schedule exists but date is TBD

  • dueDateFlag: true, dueDate: "2024-01-15T12:00:00+09:00" → Schedule with specific date

Examples:

  • Simple template: {"projectId": "123", "templateName": "Bug Report"}

  • With body: {"projectId": "123", "templateName": "Feature Request", "body": {"mimeType": "text/x-markdown", "content": "## Description\n\n## Expected Behavior\n\n## Steps to Reproduce"}}

  • With defaults: {"projectId": "123", "templateName": "Sprint Task", "priority": "normal", "tagIds": ["tag1"], "isDefault": true}

Returns the created template ID.

update-project-templateA

Update an existing task template in a Dooray project.

Required Fields:

  • projectId: Project ID where the template belongs

  • templateId: Template ID to update

  • templateName: Template name (required even for updates)

Optional Fields:

  • users: Default assignees (to) and CC recipients

  • body: Default task body content (markdown or HTML)

  • guide: Instructions shown when creating tasks from this template

  • subject: Default task subject/title

  • dueDate: Default due date (ISO 8601 format)

  • dueDateFlag: Whether due date is enabled

  • milestoneId: Default milestone

  • tagIds: Default tags

  • priority: Default priority (highest, high, normal, low, lowest, none)

  • isDefault: Set as default template (auto-fills when creating new tasks)

How to get template IDs: Use the get-project-template-list tool to list all templates and get their IDs.

Examples:

  • Update name: {"projectId": "123", "templateId": "456", "templateName": "Updated Bug Report"}

  • Update body: {"projectId": "123", "templateId": "456", "templateName": "Bug Report", "body": {"mimeType": "text/x-markdown", "content": "## New Format"}}

  • Set as default: {"projectId": "123", "templateId": "456", "templateName": "Main Template", "isDefault": true}

Returns success status.

delete-project-templateA

Delete an existing task template from a Dooray project.

CAUTION: This action cannot be undone. Make sure you want to permanently delete the template.

Required Fields:

  • projectId: Project ID where the template belongs

  • templateId: Template ID to delete

How to get template IDs: Use the get-project-template-list tool to list all templates and get their IDs.

Example:

  • Delete template: {"projectId": "123456", "templateId": "789012"}

Returns success status.

get-project-member-listA

Get list of members in a project with their details.

This tool fetches project members and enriches each member with detailed information including name and email address.

URL Pattern Recognition: When given a Dooray URL like "https://nhnent.dooray.com/task/PROJECT_ID", extract the PROJECT_ID (the first numeric ID after "/task/") and use it as the projectId parameter.

Role Filtering:

  • Optionally filter by roles: ["admin"], ["member"], or ["admin", "member"]

  • If not specified, returns all members regardless of role

Pagination:

  • Default page size is 20 (maximum: 100)

  • Use page parameter to get additional pages if totalCount > size

Note: Returns compact response with essential fields only (id, name, externalEmailAddress).

Examples:

  • Get all members: {"projectId": "123456"}

  • Get only admins: {"projectId": "123456", "roles": ["admin"]}

  • Get with pagination: {"projectId": "123456", "page": 0, "size": 50}

Returns a paginated response with totalCount and array of members containing:

  • id: Member ID (organizationMemberId)

  • name: Member's display name

  • externalEmailAddress: Member's email address

Use this tool to find project members for assigning tasks or understanding team composition.

get-project-member-group-listA

Get list of member groups in a project.

Member groups are collections of members that can be assigned to tasks as a group. This tool retrieves all member groups configured in a project.

URL Pattern Recognition: When given a Dooray URL like "https://nhnent.dooray.com/task/PROJECT_ID", extract the PROJECT_ID (the first numeric ID after "/task/") and use it as the projectId parameter.

Pagination:

  • Default page size is 20 (maximum: 100)

  • Use page parameter to get additional pages if totalCount > size

Note: Returns compact response with essential fields only (id and code).

Examples:

  • Get all member groups: {"projectId": "123456"}

  • Get with pagination: {"projectId": "123456", "page": 0, "size": 50}

Returns a paginated response with totalCount and array of member groups containing:

  • id: Member group ID

  • code: Member group name/code

Use this tool to find member groups for assigning tasks to groups of members.

get-project-workflow-listA

Get list of workflow statuses (업무 상태) for a project.

Workflows represent the task statuses available in a project. There are four workflow classes:

  • backlog: 대기 (waiting/backlog)

  • registered: 등록/할 일 (registered/to-do)

  • working: 진행 중 (in progress)

  • closed: 완료 (completed/done)

Each project may have custom workflows within these classes. Use workflow IDs when creating or updating tasks (e.g., in create-task or update-task tools).

URL Pattern Recognition: When given a Dooray URL like "https://nhnent.dooray.com/task/PROJECT_ID", extract the PROJECT_ID (the numeric ID after "/task/") and use it as the projectId parameter.

Examples:

  • Get all workflows: {"projectId": "1769381697328002548"}

Returns: Array of workflows with id, name, order, and class.

upload-attachmentA

Upload a file attachment to a Dooray task.

Required Parameters:

  • projectId: The project ID

  • taskId: The task ID (post ID) to attach the file to

  • filePath: Absolute path to the file to upload (e.g., "/Users/name/document.pdf")

Example: { "projectId": "123456", "taskId": "789012", "filePath": "/Users/nhn/Downloads/report.pdf" }

Returns: File ID of the uploaded attachment.

Note: The file must exist at the specified path. Maximum file size depends on Dooray's server limits.

get-attachment-listB

Get list of file attachments for a Dooray task.

Required Parameters:

  • projectId: The project ID

  • taskId: The task ID (post ID)

Note: This API returns only "general" type files attached to the task.

Example: { "projectId": "123456", "taskId": "789012" }

Returns: List of attachments with id, name, size, mimeType, createdAt, and creator info.

Response Fields:

  • totalCount: Total number of files

  • data[]: Array of file objects

    • id: File ID

    • name: File name

    • size: File size

    • mimeType: MIME type

    • createdAt: Creation timestamp (ISO-8601)

    • creator: Creator info (type, member.organizationMemberId)

get-attachment-metadataA

Get metadata of a specific file attachment in a Dooray task.

Required Parameters:

  • projectId: The project ID

  • taskId: The task ID (post ID)

  • fileId: The file ID (get from get-attachment-list)

Example: { "projectId": "123456", "taskId": "789012", "fileId": "abc123" }

Returns: File metadata including id, name, size, mimeType, createdAt, and creator info.

Response Fields:

  • id: File ID

  • name: File name

  • size: File size

  • mimeType: MIME type

  • createdAt: Creation timestamp (ISO-8601)

  • creator: Creator info (type, member.organizationMemberId)

Note: This returns metadata only, not the file content. Use download-attachment to get the actual file.

download-attachmentA

Download a file attachment from a Dooray task.

Required Parameters:

  • projectId: The project ID

  • taskId: The task ID (post ID)

  • fileId: The file ID (get from get-attachment-list)

Optional:

  • savePath: Local path to save the file. Can be a directory (filename auto-detected) or full file path. Recommended for large files.

Examples:

  • Save to file: { "projectId": "123", "taskId": "456", "fileId": "789", "savePath": "/tmp/downloads/" }

  • Base64 (small files): { "projectId": "123", "taskId": "456", "fileId": "789" }

Response Fields:

  • success: Whether download succeeded

  • fileId: The file ID

  • filename: Original filename

  • contentType: MIME type of the file

  • contentLength: File size in bytes

  • savedTo: (when savePath used) Local path where file was saved

  • base64Data: (when savePath omitted) Base64 encoded file content

delete-attachmentA

Delete a file attachment from a Dooray task.

Required Parameters:

  • projectId: The project ID

  • taskId: The task ID (post ID)

  • fileId: The file ID to delete (get from get-attachment-list)

Example: { "projectId": "123456", "taskId": "789012", "fileId": "abc123" }

Returns: Success message confirming deletion.

Note: This action is irreversible. The file will be permanently removed from the task.

download-all-attachmentsA

Download every file attached to a Dooray task into a local directory (첨부 일괄 다운로드).

Files are saved with their original names. Existing files are not overwritten unless overwrite is true. If some files fail, the others are still downloaded and the result lists both succeeded and failed files.

Examples:

  • {"projectId": "123", "taskId": "456", "saveDir": "/tmp/task-456/"}

Returns: count, succeeded [{fileId, savedTo, size}], failed [{fileId, name, error}].

get-drive-listA

Get list of accessible Dooray drives.

Drive Types:

  • private: Personal drive (default)

  • project: Project drives (use scope to filter private/public projects)

Examples:

  • Personal drive: { "type": "private" }

  • Project drives: { "type": "project", "scope": "private" }

  • Public project drives: { "type": "project", "scope": "public" }

Returns: drive ID, name, type, and associated project info.

get-drive-file-listA

Get list of files and folders in a Dooray drive.

Required: driveId Optional: parentId (use "root" for top-level), type filter, pagination

Examples:

  • Top-level: { "driveId": "123", "parentId": "root" }

  • Subfolder: { "driveId": "123", "parentId": "456" }

  • Only folders: { "driveId": "123", "parentId": "root", "type": "folder" }

  • With pagination: { "driveId": "123", "parentId": "root", "page": 0, "size": 20 }

Returns: file/folder ID, name, type, size, dates, creator info.

get-drive-file-metaA

Get file metadata by file ID (without needing drive ID).

Required: fileId

Returns: file ID, driveId, name, version, type, subType, mimeType, size, creator, parent info.

Note: Use the returned driveId for download or other operations that require it.

create-drive-folderA

Create a new folder in a Dooray drive.

Required:

  • driveId: The drive ID

  • folderId: Parent folder ID (where the new folder will be created)

  • name: Folder name

Example: { "driveId": "123", "folderId": "456", "name": "New Folder" }

Returns: ID of the created folder.

rename-drive-fileC

Rename a file or folder in a Dooray drive.

Required:

  • driveId: The drive ID

  • fileId: File or folder ID to rename

  • name: New name

Example: { "driveId": "123", "fileId": "456", "name": "new-name.txt" }

move-drive-fileA

Move a file or folder in a Dooray drive.

Required:

  • driveId: The drive ID

  • fileId: File or folder ID to move

  • destinationFileId: Target folder ID, or "trash" to move to trash

Examples:

  • Move to folder: { "driveId": "123", "fileId": "456", "destinationFileId": "789" }

  • Move to trash: { "driveId": "123", "fileId": "456", "destinationFileId": "trash" }

Note: To permanently delete, first move to trash, then use delete-drive-file.

copy-drive-fileB

Copy a file in a Dooray drive to another location.

Required:

  • driveId: Source drive ID

  • fileId: File ID to copy

  • destinationDriveId: Target drive ID (can be same or different drive)

  • destinationFileId: Target folder ID

Example: { "driveId": "123", "fileId": "456", "destinationDriveId": "123", "destinationFileId": "789" }

delete-drive-fileA

Permanently delete a file from a Dooray drive trash.

Important: The file must already be in the trash folder. To move a file to trash first, use move-drive-file with destinationFileId="trash".

Required:

  • driveId: The drive ID

  • fileId: File ID to permanently delete

Example: { "driveId": "123", "fileId": "456" }

upload-drive-fileA

Upload a file to a Dooray drive folder.

Required:

  • driveId: The drive ID

  • parentId: Parent folder ID to upload the file into

  • filePath: Absolute path to the file to upload

Example: { "driveId": "123", "parentId": "456", "filePath": "/Users/name/document.pdf" }

Returns: File ID of the uploaded file.

Note: The file must exist at the specified path.

download-drive-fileA

Download a file from a Dooray drive.

Required:

  • driveId: The drive ID

  • fileId: The file ID to download

Optional:

  • savePath: Local path to save the file. Can be a directory (filename auto-detected) or full file path. Recommended for large files.

Examples:

  • Save to file: { "driveId": "123", "fileId": "456", "savePath": "/tmp/downloads/" }

  • Save with name: { "driveId": "123", "fileId": "456", "savePath": "/tmp/myfile.pdf" }

  • Base64 (small files): { "driveId": "123", "fileId": "456" }

Tip: If you only have a file ID, use get-drive-file-meta first to get the driveId.

update-drive-fileA

Upload a new version of an existing file in a Dooray drive.

Required:

  • driveId: The drive ID

  • fileId: The file ID to update

  • filePath: Absolute path to the new version of the file

Example: { "driveId": "123", "fileId": "456", "filePath": "/Users/name/updated-document.pdf" }

Returns: File ID and new version number.

Note: This replaces the file content with a new version. The file must exist at the specified path.

get-wiki-listA

Get list of accessible wikis.

Wiki vs WikiPage:

  • Wiki is a container that groups related wiki pages together (similar to how Project groups Tasks)

  • Each wiki has a home page and can contain multiple wiki pages in a tree structure

  • Use get-wiki-page-list to get pages within a specific wiki

Returns: wiki ID, name, project, type, scope, and home page ID.

get-wiki-page-listA

Get wiki pages at one depth level (siblings). Use parentPageId to get child pages, omit for root pages.

get-wiki-pageA

Get wiki page details including body content.

Two API endpoints supported:

  1. With pageId only: GET /wiki/v1/pages/{page-id}

  2. With wikiId + pageId: GET /wiki/v1/wikis/{wiki-id}/pages/{page-id}

Returns: id, wikiId, version, subject, body (mimeType, content), creator, referrers, files, images.

create-wiki-pageA

Create a new wiki page.

Required: wikiId, subject, content Optional: attachFileIds, referrers

IMPORTANT - parentPageId:

  • parentPageId is practically required for creating new pages

  • Without parentPageId, API returns 400 error ("입력한 내용에 오류가 있습니다")

  • To create a page, first use get-wiki-page-list to find the parent page (e.g., Home page)

  • Then provide that page's ID as parentPageId

Workflow:

  1. Call get-wiki-list to get wikiId

  2. Call get-wiki-page-list with wikiId to find parent page (usually "Home")

  3. Call create-wiki-page with parentPageId set to the Home page ID

Content is in markdown format. Returns: id, wikiId, parentPageId, version.

update-wiki-pageA

Update wiki page title and/or content.

Required: wikiId, pageId, subject Optional: content, referrers

IMPORTANT - subject is required:

  • Even when only updating content, subject MUST be provided

  • Without subject, API returns 400 error ("Requested subject can not be null")

  • If you want to keep the existing title, first call get-wiki-page to get the current subject, then include it in the update

Workflow for content-only update:

  1. Call get-wiki-page with wikiId and pageId to get current page info

  2. Call update-wiki-page with the existing subject and new content

Set referrers to null to clear all referrers.

update-wiki-page-bodyA

Replace part of a wiki page body (위키 본문 일부 치환).

Use this instead of update-wiki-page when only a few spots in a long page change. The title and the rest of the body stay as they are.

Rules:

  • oldText must match the current body exactly (copy it from get-wiki-page)

  • Fails if oldText is not found

  • Fails if oldText appears more than once, unless replaceAll is true

Examples:

  • {"wikiId": "123", "pageId": "456", "oldText": "v1.2", "newText": "v1.3"}

  • {"wikiId": "123", "pageId": "456", "oldText": "TODO", "newText": "완료", "replaceAll": true}

move-wiki-pageA

Move a wiki page (위키 페이지 이동).

Moves the page under another parent page, into another wiki (targetWikiId), or changes its order among siblings (beforePageId). Child pages move together by default. Set withChildren=false to move only this page.

Examples:

  • Change parent: {"wikiId": "123", "pageId": "456", "targetParentPageId": "789"}

  • Move only this page: {"wikiId": "123", "pageId": "456", "targetParentPageId": "789", "withChildren": false}

  • Move to the top of siblings: {"wikiId": "123", "pageId": "456", "targetParentPageId": "789", "beforePageId": "0"}

delete-wiki-pageA

Delete a wiki page (위키 페이지 삭제).

Confirm the target with get-wiki-page before deleting, and check child pages with get-wiki-page-tree.

get-wiki-page-treeA

Get the wiki page hierarchy as a tree (위키 페이지 트리).

get-wiki-page-list returns only one level. This tool walks down the levels and returns nested {id, subject, children}. Each level costs one API call per page, so keep depth small for large wikis. The walk stops at 500 pages (truncated=true).

Examples:

  • Top 3 levels: {"wikiId": "123"}

  • Under a page, 2 levels: {"wikiId": "123", "parentPageId": "456", "depth": 2}

get-wiki-page-comment-listA

Get comments on a wiki page. Returns newest first. Each comment has: id, page, createdAt, modifiedAt, creator, body.

get-wiki-page-commentA

Get a specific comment on a wiki page. Returns: id, page, createdAt, modifiedAt, creator, body.

create-wiki-page-commentB

Create a comment on a wiki page. Content is in markdown format. Returns: id.

update-wiki-page-commentC

Update a comment on a wiki page.

delete-wiki-page-commentC

Delete a comment on a wiki page.

upload-wiki-page-fileA

Upload a file to an existing Dooray wiki page.

Required Parameters:

  • wikiId: The wiki ID

  • pageId: The wiki page ID to attach the file to

  • filePath: Absolute path to the file to upload (e.g., "/Users/name/document.pdf")

Example: { "wikiId": "123456", "pageId": "789012", "filePath": "/Users/nhn/Downloads/report.pdf" }

Returns: File ID and attach file ID of the uploaded file.

Note: The file must exist at the specified path. The type is set to "general" automatically.

download-wiki-page-fileA

Download a file attached to a Dooray wiki page.

Required Parameters:

  • wikiId: The wiki ID

  • pageId: The wiki page ID

  • fileId: The file ID (get from wiki page detail API: $.result.files.id or $.result.images.id)

Optional:

  • savePath: Local path to save the file. Can be a directory (filename auto-detected) or full file path. Recommended for large files.

Examples:

  • Save to file: { "wikiId": "123", "pageId": "456", "fileId": "789", "savePath": "/tmp/downloads/" }

  • Base64 (small files): { "wikiId": "123", "pageId": "456", "fileId": "789" }

Response Fields:

  • success: Whether download succeeded

  • fileId: The file ID

  • filename: Original filename

  • contentType: MIME type of the file

  • contentLength: File size in bytes

  • savedTo: (when savePath used) Local path where file was saved

  • base64Data: (when savePath omitted) Base64 encoded file content

delete-wiki-page-fileA

Delete a file attached to a Dooray wiki page.

Required Parameters:

  • wikiId: The wiki ID

  • pageId: The wiki page ID

  • fileId: The file ID to delete (get from wiki page detail API: $.result.files.id or $.result.images.id)

Example: { "wikiId": "123456", "pageId": "789012", "fileId": "abc123" }

Returns: Success message confirming deletion.

Note: This action is irreversible. The file will be permanently removed from the wiki page.

upload-wiki-fileA

Upload a file to a Dooray wiki (not page-specific).

This is useful for pre-uploading files before creating a wiki page. The returned attachFileId can be used in create-wiki-page's attachFileIds parameter.

Required Parameters:

  • wikiId: The wiki ID

  • filePath: Absolute path to the file to upload (e.g., "/Users/name/document.pdf")

Example: { "wikiId": "123456", "filePath": "/Users/nhn/Downloads/report.pdf" }

Workflow:

  1. Upload file with this tool -> get attachFileId

  2. Create wiki page with create-wiki-page using attachFileIds: [attachFileId]

Returns: File ID and attach file ID of the uploaded file.

download-wiki-attach-fileA

Download a file from a Dooray wiki using attach file ID.

Required Parameters:

  • wikiId: The wiki ID

  • attachFileId: The attach file ID (get from wiki page detail API: $.result.files.attachFileId or $.result.images.attachFileId)

Optional:

  • savePath: Local path to save the file. Can be a directory (filename auto-detected) or full file path. Recommended for large files.

Examples:

  • Save to file: { "wikiId": "123", "attachFileId": "456", "savePath": "/tmp/downloads/" }

  • Base64 (small files): { "wikiId": "123", "attachFileId": "456" }

Note: The attachFileId is different from fileId. Use this endpoint when you have an attachFileId from the page detail API's $.result.files.attachFileId or $.result.images.attachFileId field.

get-calendar-listA

Get the list of Dooray calendars (캘린더 목록) the user can access.

Subscription calendars are not included. The calendar marked default=true is the user's own default calendar.

Use the returned calendar id for create-calendar-event, or to filter get-calendar-event-list.

Examples:

  • {} (first 20 calendars)

  • {"size": 100}

Returns: totalCount and calendars with id, name, type (private, project), default, role.

get-calendar-event-listA

Get Dooray calendar events (일정 목록) in a time range.

Required: timeMin (inclusive) and timeMax (exclusive). The range must be 1 year or less.

The list does not include event body or attendees. Use get-calendar-event for details. Subscription calendars are not included.

Filters:

  • calendars: Calendar IDs from get-calendar-list (default: all calendars)

  • postType: toMe (I am an attendee), toCcMe (attendee or CC), fromToCcMe (organizer, attendee or CC)

  • category: general (일반 일정), post (업무 마감일), milestone

Examples:

  • Today: {"timeMin": "2026-10-22T00:00:00+09:00", "timeMax": "2026-10-23T00:00:00+09:00"}

  • This month in one calendar: {"timeMin": "2026-10-01T00:00:00+09:00", "timeMax": "2026-11-01T00:00:00+09:00", "calendars": ["123"]}

Returns: events with id, calendar {id, name}, subject, startedAt, endedAt, wholeDayFlag, location, category, recurrenceType.

get-calendar-eventA

Get details of a Dooray calendar event (일정 상세).

Both calendarId and eventId are required. Take them from get-calendar-event-list (calendar.id and id).

Examples:

  • {"calendarId": "123", "eventId": "456"}

Returns: event with body, users (from = organizer, to = attendees, cc) and each attendee status (accepted, declined, tentative, not_confirmed), recurrenceRule and files.

create-calendar-eventA

Create an event (일정 등록) in a Dooray calendar.

Required: calendarId, subject, startedAt, endedAt. Get calendarId from get-calendar-list (default=true is the user's own calendar).

Time Format:

  • Timed event: "2026-10-22T10:00:00+09:00"

  • Whole day event: set wholeDayFlag=true and use date format "2026-10-22+09:00". endedAt is the next day ("2026-10-23+09:00" for a one day event)

Attendees: {id, type} where type is "member" (organizationMemberId) or "email" (email address). Use get-my-member-info, get-project-member-list, get-member-list to find member IDs.

Examples:

  • Meeting: {"calendarId": "123", "subject": "주간 회의", "startedAt": "2026-10-22T10:00:00+09:00", "endedAt": "2026-10-22T11:00:00+09:00", "location": "4-5 회의실", "attendees": [{"id": "456", "type": "member"}]}

  • Whole day: {"calendarId": "123", "subject": "휴가", "startedAt": "2026-10-22+09:00", "endedAt": "2026-10-23+09:00", "wholeDayFlag": true}

  • Weekly: add "recurrenceRule": {"frequency": "weekly", "byday": "MO", "timezoneName": "Asia/Seoul"}

Returns: {id} of the created event.

update-calendar-eventA

Update a Dooray calendar event (일정 수정).

Only the fields you provide are changed. Unprovided fields keep their current values.

IMPORTANT:

  • attendees and cc REPLACE the current lists. Call get-calendar-event first and include existing attendees you want to keep

  • When changing time, provide both startedAt and endedAt

Examples:

  • Change time: {"calendarId": "123", "eventId": "456", "startedAt": "2026-10-22T14:00:00+09:00", "endedAt": "2026-10-22T15:00:00+09:00"}

  • Change location: {"calendarId": "123", "eventId": "456", "location": "7층 회의실"}

Returns: success message.

delete-calendar-eventA

Delete a Dooray calendar event (일정 삭제).

Recurring Events (deleteType):

  • this: Only this occurrence (default)

  • wholeFromThis: This and following occurrences

  • whole: All occurrences

For a recurring event, use the occurrence event ID from get-calendar-event-list.

Examples:

  • {"calendarId": "123", "eventId": "456"}

  • {"calendarId": "123", "eventId": "456", "deleteType": "whole"}

Returns: success message.

Prompts

Interactive templates invoked by user choice

NameDescription
create-task-with-templateCreate a new task using a structured template with all necessary fields
weekly-task-summaryGenerate a summary of tasks assigned to you for the current week
project-status-reportGenerate a project status report including task counts by workflow status
task-review-checklistCreate a review checklist for a specific task

Resources

Contextual data attached and managed by the client

NameDescription
Dooray API InformationInformation about the Dooray API and available endpoints
Workflow Status ReferenceReference guide for Dooray workflow statuses (backlog, registered, working, closed)
Priority ReferenceReference guide for Dooray task priorities

TDQS

B3.3/5.0

Scored across 70 tools

Disambiguation3/5

Most tools are scoped to distinct resources and actions, but there are several near-duplicate file tools across task attachments, drive files, and wiki pages that can cause misselection. In particular, upload-wiki-file vs upload-wiki-page-file and download-wiki-page-file vs download-wiki-attach-file require careful reading to distinguish.

Naming Consistency4/5

Almost all tools follow a consistent kebab-case verb_noun pattern (get-, create-, update-, delete-, upload-, download-, move-). Minor deviations like get-drive-file-meta versus get-attachment-metadata and get-wiki-list versus get-wiki-page-list are noticeable but still readable.

Tool Count2/5

Seventy tools is very heavy, even for a broad collaboration suite spanning tasks, wiki, drive, and calendar. Many niche operations and overlapping file variants could be consolidated to reduce the surface area.

Completeness3/5

Core workflows are well covered: tasks, comments, templates, drive files, wiki pages, calendar events, projects, and members all have substantial CRUD support. However, there is no delete-task tool, milestones are list-only, and tags lack update/delete operations, leaving notable lifecycle gaps.

Maintenance

ActivityMaintained
ResponsivenessNo issues