Skip to content

Task Management

Create a new task with properties and relationships.

ParameterTypeRequiredDescription
titlestringYesTask title (max 500 chars)
dartboardstringYesDartboard dart_id (use get_config to find)
descriptionstringNoTask description (markdown supported)
statusstringNoStatus name or dart_id
priorityintegerNoPriority 1-5 (1=lowest, 5=highest)
sizeintegerNoSize estimate 1-5
assigneesstring[]NoAssignee dart_ids
tagsstring[]NoTag dart_ids
due_atstringNoDue date (ISO 8601)
start_atstringNoStart date (ISO 8601)
parentstringNoParent task dart_id
subtasksstring[]NoSubtask dart_ids. Setting this mirrors parent onto each child.
blocked_bystring[]NoTasks that block this task. Setting this mirrors blocks onto each listed task.
blocksstring[]NoTasks this task blocks. Setting this mirrors blocked_by onto each listed task.
duplicatesstring[]NoDuplicate task dart_ids. Bidirectional mirror.
relatedstring[]NoRelated task dart_ids. Bidirectional mirror.
commentstringNoComment to add after creation

The legacy _ids-suffixed names (parent_task, subtask_ids, blocker_ids, blocking_ids, duplicate_ids, related_ids) are accepted as deprecated aliases and are scheduled for removal in 0.13.0. Use the canonical names above in new code.

Returns the full created task object with dart_id, title, status, mirror_applied (inverse-side tasks patched by relationship mirroring), and all set fields.

Create a simple task:

create_task({
title: "Fix login page redirect",
dartboard: "duid_abc123"
})

Create a task with relationships and metadata:

create_task({
title: "Implement OAuth flow",
dartboard: "duid_abc123",
description: "Add Google and GitHub OAuth providers",
priority: 4,
assignees: ["duid_user1"],
tags: ["duid_auth"],
blocked_by: ["duid_task_design"],
comment: "Spec approved in design review"
})

Retrieve a task by dart_id with optional comments and relationship expansion.

ParameterTypeRequiredDescription
dart_idstringYesTask dart_id
include_commentsbooleanNoInclude comments (default: false)
include_relationshipsbooleanNoInclude relationship fields and counts (default: true)
expand_relationshipsbooleanNoFetch titles for related tasks (default: false, adds API calls)

Returns the full task object. When include_relationships is true, includes subtask_ids, blocker_ids, blocking_ids, duplicate_ids, related_ids, and relationship_counts.

Get task details:

get_task({ dart_id: "duid_abc123" })

Get task with comments and expanded relationships:

get_task({
dart_id: "duid_abc123",
include_comments: true,
expand_relationships: true
})

Update task properties. Uses flat parameters (not nested). Relationship arrays use full replacement unless using add_to/remove_from.

ParameterTypeRequiredDescription
dart_idstringYesTask dart_id
titlestringNoNew title
descriptionstringNoNew description (markdown)
dartboardstringNoDartboard dart_id or name
statusstringNoStatus dart_id or name
priorityintegerNoPriority 1-5
sizeintegerNoSize 1-5
assigneesstring[]NoAssignee dart_ids, names, or emails
tagsstring[]NoTag dart_ids or names
due_atstringNoDue date (ISO 8601)
start_atstringNoStart date (ISO 8601)
parentstringNoParent task dart_id
subtasksstring[]NoFull replacement of subtask IDs ([] to clear)
blocked_bystring[]NoFull replacement of blocker IDs ([] to clear)
blocksstring[]NoFull replacement of blocking IDs ([] to clear)
duplicatesstring[]NoFull replacement of duplicate IDs ([] to clear)
relatedstring[]NoFull replacement of related IDs ([] to clear)
commentstringNoComment to add after updating
add_toobjectNoAppend IDs to relationship arrays (merges and deduplicates)
remove_fromobjectNoRemove IDs from relationship arrays

The legacy _ids-suffixed names (parent_task, subtask_ids, blocker_ids, blocking_ids, duplicate_ids, related_ids) are accepted as deprecated aliases for the fields above and are scheduled for removal in 0.13.0.

The add_to and remove_from objects accept only the legacy key names: subtask_ids, blocker_ids, blocking_ids, duplicate_ids, related_ids.

Returns the updated task object with updated_fields listing which fields changed.

Change status and add a comment:

update_task({
dart_id: "duid_abc123",
status: "Done",
comment: "Completed after code review"
})

Add a blocker without replacing existing blockers:

update_task({
dart_id: "duid_abc123",
add_to: { blocker_ids: ["duid_new_blocker"] }
})

Clear all related tasks:

update_task({
dart_id: "duid_abc123",
related: []
})

Move a task to trash. Recoverable from the Dart web UI.

ParameterTypeRequiredDescription
dart_idstringYesTask dart_id

Returns confirmation with the deleted task’s dart_id and title.

delete_task({ dart_id: "duid_abc123" })

Add a comment to a task. Supports markdown formatting.

ParameterTypeRequiredDescription
dart_idstringYesTask dart_id
textstringYesComment text (markdown supported)

Returns the created comment with id, text, and created_at.

Add a status update:

add_task_comment({
dart_id: "duid_abc123",
text: "## Progress Update\n\nAPI integration complete. Starting frontend work."
})

List comments on a task with pagination.

ParameterTypeRequiredDescription
task_idstringYesTask dart_id
limitintegerNoMax comments to return (default: 50, max: 100)
offsetintegerNoPagination offset (default: 0)

Returns an array of comments with id, text, created_at, and author.

list_comments({ task_id: "duid_abc123" })
list_comments({ task_id: "duid_abc123", limit: 10, offset: 20 })

Move or reposition a task within a dartboard or to a different dartboard.

ParameterTypeRequiredDescription
dart_idstringYesTask dart_id
dartboardstringNoTarget dartboard (dart_id or name)
orderintegerNoPosition index (0-based)
after_idstringNoPlace after this task dart_id
before_idstringNoPlace before this task dart_id

Returns the updated task object at its new position.

Move task to another dartboard:

move_task({
dart_id: "duid_abc123",
dartboard: "Backlog"
})

Position task after another task:

move_task({
dart_id: "duid_abc123",
after_id: "duid_other_task"
})

Add a time tracking entry to a task.

ParameterTypeRequiredDescription
dart_idstringYesTask dart_id
started_atstringYesStart time (ISO 8601)
finished_atstringNoEnd time (ISO 8601, optional if duration_minutes provided)
duration_minutesintegerNoDuration in minutes (optional if finished_at provided)
notestringNoNote about the time entry

Returns the created time tracking entry.

Track time with start and end:

add_time_tracking({
dart_id: "duid_abc123",
started_at: "2026-01-25T10:00:00Z",
finished_at: "2026-01-25T11:30:00Z",
note: "Code review session"
})

Track time with duration:

add_time_tracking({
dart_id: "duid_abc123",
started_at: "2026-01-25T14:00:00Z",
duration_minutes: 45
})

Attach a file from a public URL to a task.

ParameterTypeRequiredDescription
dart_idstringYesTask dart_id
urlstringYesPublic URL of file to attach
filenamestringNoOptional filename override

Returns the attachment metadata including URL and filename.

attach_url({
dart_id: "duid_abc123",
url: "https://example.com/design-spec.pdf",
filename: "v2-design-spec.pdf"
})