motion_tasks
Manage Motion tasks through MCP: create, list, get, update, delete, move, unassign, and list all uncompleted tasks with filters for status, due date, assignee, priority, labels, and projects.
Instructions
Manage Motion tasks - supports create, list, get, update, delete, move, unassign, and list_all_uncompleted operations
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Task name (required for create, optional for list as case-insensitive substring search, filtered client-side) | |
| limit | No | Maximum number of tasks to return (for list and list_all_uncompleted) | |
| labels | No | Array of label names. Applied to the task on create/update; filters results on list | |
| status | No | Filter by status (for list). Single string or array of strings (e.g., ["Todo", "Completed"]). Without status or includeAllStatuses, only active (non-resolved) tasks are returned. Use motion_statuses to list valid values per workspace. | |
| taskId | No | Task ID (required for get/update/delete/move/unassign) | |
| dueDate | No | Due date (for create/update) or filter (for list and list_all_uncompleted). Format: YYYY-MM-DD, a full ISO 8601 timestamp with offset, or relative like 'today', 'tomorrow'. FILTER (list, list_all_uncompleted): an inclusive upper bound at day granularity in the account timezone — returns every task due ON OR BEFORE that day, which INCLUDES overdue tasks. So dueDate:'today' answers "what's due today?" (including anything overdue) in a single call. There is no exact-date or date-range filter; to show only tasks due exactly on a day, filter the returned results by their Due Date yourself. CREATE/UPDATE: a date-only value is stored as end of day (23:59:59) in the account's schedule timezone when all schedules agree on one, so it renders back as the same calendar day; it falls back to end-of-day UTC when no single zone is resolvable. Pass an explicit ISO timestamp with an offset to control the exact instant. Relative keywords resolve against the same account timezone, falling back to UTC otherwise. | |
| assignee | No | Assignee name, email, or the 'me' shortcut. Resolved to an ID automatically for list, list_all_uncompleted, create, update, and move. A name that cannot be resolved returns an error. Must be non-empty; use the unassign operation to clear a task's assignee. | |
| duration | No | Minutes (as number) or 'NONE'/'REMINDER' (as string) | |
| priority | No | Task priority: ASAP, HIGH, MEDIUM, LOW. Set on create/update; filters results on list and list_all_uncompleted (filtered client-side) | |
| operation | Yes | Operation to perform | |
| projectId | No | Filter by project (for list) | |
| assigneeId | No | Assignee user ID, or the 'me' shortcut for the current user. Filters on list/list_all_uncompleted; sets the assignee on create/update; reassigns on move. The 'me' shortcut is resolved to a concrete ID for all of these. Must be non-empty; use the unassign operation to clear a task's assignee. | |
| description | No | Task description | |
| projectName | No | Project name (alternative to projectId) | |
| workspaceId | No | Filter by workspace (for list). Ignored by list_all_uncompleted, which always spans every workspace. | |
| autoScheduled | No | Auto-scheduling configuration. Can be either: - A schedule name string: "Work Hours" (simple, no start date) - An object for full control: {"schedule": "Work Hours", "startDate": "2025-03-05", "deadlineType": "SOFT"} When the user specifies a start date, you MUST use the object form. Use motion_schedules to see available schedule names. | |
| workspaceName | No | Filter by workspace name (for list). Ignored by list_all_uncompleted, which always spans every workspace. | |
| completedAfter | No | Filter (for list): keep only tasks COMPLETED on or after this local calendar date. Format: YYYY-MM-DD or relative like 'today', 'yesterday'. Filtered client-side and auto-includes completed/resolved tasks, so 'what did I get done this week?' is completedAfter set to the week's start date. Combine with completedBefore for a window. Note: this filters on completion date, not due date; a very high-volume window can be capped by pagination (reported in the response), not silently. | |
| completedBefore | No | Filter (for list): keep only tasks COMPLETED on or before this local calendar date. Format: YYYY-MM-DD or relative like 'today'. Filtered client-side; pair with completedAfter to bound a completion window. | |
| targetWorkspaceId | No | Target workspace ID (required for move operation). Move transfers a task between workspaces — project-level targeting is not supported by the Motion API. | |
| includeAllStatuses | No | When true, returns tasks across all statuses including completed/resolved (for list). Cannot be combined with status filter. |