Skip to main content
Glama

create_task

Create tasks in ClickUp by specifying title, due date, assignees, priority, and list details. Streamline task management for project workflows.

Instructions

Create a new task in a specific list

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
assigneesNoUser IDs to assign
descriptionNoTask description
due_dateNoDue date (ISO 8601 format)
list_idNoID of the list (alternative to list_name)
list_nameNoName of the list to create task in
priorityNoPriority (1=urgent, 2=high, 3=normal, 4=low)
time_estimateNoTime estimate (e.g., '2h 30m')
titleYesTask title

Implementation Reference

  • The handler function that executes the create_task tool: resolves list ID from name if provided, builds CreateTaskRequest with provided parameters, calls client.create_task, and returns formatted task info including URL and custom_id if present.
    async def create_task( self, title: str, description: Optional[str] = None, list_name: Optional[str] = None, list_id: Optional[str] = None, assignees: Optional[List[int]] = None, priority: Optional[int] = None, due_date: Optional[str] = None, time_estimate: Optional[str] = None, **kwargs: Any, ) -> Dict[str, Any]: """Create a new task.""" # Find list ID if name provided if not list_id and not list_name: raise ValueError("Either list_id or list_name must be provided") if not list_id: lst = await self.client.find_list_by_name(list_name) if not lst: return {"error": f"List '{list_name}' not found"} list_id = lst.id # Build task request task_request = CreateTaskRequest(name=title) if description: task_request.description = description if assignees: task_request.assignees = assignees if priority: task_request.priority = priority if due_date: # Parse ISO date to unix timestamp dt = datetime.fromisoformat(due_date.replace("Z", "+00:00")) task_request.due_date = int(dt.timestamp() * 1000) task_request.due_date_time = True if time_estimate: task_request.time_estimate = parse_duration(time_estimate) # Create task task = await self.client.create_task(list_id, task_request) result = { "id": task.id, "name": task.name, "status": task.status.status, "url": format_task_url(task.id), "list": task.list.get("name", "Unknown"), "created": True, } if task.custom_id: result["custom_id"] = task.custom_id return result
  • The input schema definition for the create_task tool, specifying parameters like title (required), description, list_name or list_id, assignees, priority, due_date, time_estimate.
    Tool( name="create_task", description="Create a new task in a specific list", inputSchema={ "type": "object", "properties": { "title": {"type": "string", "description": "Task title"}, "description": {"type": "string", "description": "Task description"}, "list_name": { "type": "string", "description": "Name of the list to create task in", }, "list_id": { "type": "string", "description": "ID of the list (alternative to list_name)", }, "assignees": { "type": "array", "items": {"type": "integer"}, "description": "User IDs to assign", }, "priority": { "type": "integer", "description": "Priority (1=urgent, 2=high, 3=normal, 4=low)", }, "due_date": {"type": "string", "description": "Due date (ISO 8601 format)"}, "time_estimate": { "type": "string", "description": "Time estimate (e.g., '2h 30m')", }, }, "required": ["title"], }, ),
  • Registration of the create_task handler in the _tools dictionary within ClickUpTools __init__ method, mapping 'create_task' to self.create_task for use in call_tool.
    self._tools: Dict[str, Callable] = { "create_task": self.create_task, "get_task": self.get_task, "update_task": self.update_task, "delete_task": self.delete_task, "list_tasks": self.list_tasks, "search_tasks": self.search_tasks, "get_subtasks": self.get_subtasks, "get_task_comments": self.get_task_comments, "create_task_comment": self.create_task_comment, "get_task_status": self.get_task_status, "update_task_status": self.update_task_status, "get_assignees": self.get_assignees, "assign_task": self.assign_task, "list_spaces": self.list_spaces, "list_folders": self.list_folders, "list_lists": self.list_lists, "find_list_by_name": self.find_list_by_name, # Bulk operations "bulk_update_tasks": self.bulk_update_tasks, "bulk_move_tasks": self.bulk_move_tasks, # Time tracking "get_time_tracked": self.get_time_tracked, "log_time": self.log_time, # Templates "create_task_from_template": self.create_task_from_template, "create_task_chain": self.create_task_chain, # Analytics "get_team_workload": self.get_team_workload, "get_task_analytics": self.get_task_analytics, # User management "list_users": self.list_users, "get_current_user": self.get_current_user, "find_user_by_name": self.find_user_by_name, }

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/DiversioTeam/clickup-mcp'

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