Create a Task via MCP: Required Fields, Defaults, and Safety Checks

Developer reference for the create_task MCP tool. Learn how to create new tasks with required and optional fields, understand defaults, implement safety checks, and use confirmation patterns. Includes example tool calls, natural language prompts, edge cases, and troubleshooting.

Tool Overview

Purpose

The create_task tool creates a new task in your Corcava workspace. Use this tool to capture new work, create follow-ups, or convert ideas into actionable tasks.

⚠️ Write operation: This tool modifies data - always use confirmation patterns before calling it.

Input Parameters

Some fields are required, others are optional with sensible defaults.

Output Format

The tool returns the newly created task object with all fields populated:

{
  "id": 789,
  "title": "Follow up with Acme Corp",
  "description": "Schedule a call to discuss the proposal",
  "status": "open",
  "priority": "high",
  "due_date": "2026-03-10",
  "project_id": 456,
  "board_id": 123,
  "assignee_id": 101,
  "created_at": "2026-03-03T10:30:00Z",
  "updated_at": "2026-03-03T10:30:00Z",
  "created_by_id": 99
}

Safety Checks and Confirmation Patterns

⚠️ Always Confirm Before Creating

Never let AI create tasks without explicit confirmation. Use these patterns:

  • Preview First: Show what task will be created before executing
  • Confirmation Token: Require "CONFIRM" before calling create_task
  • Review Fields: Display all fields (title, description, due_date, project) for review

Learn more about safe write workflows →

Safe Prompt Pattern

✅ Safe Prompt Template:

"I want to create a task: [description]. 
Show me exactly what you'll create (title, description, project, due date) 
and wait for me to type CONFIRM before creating it. 
If I don't type CONFIRM, don't create anything."

Example Tool Calls

Example 1: Minimal Task (Title Only)

Tool Call (JSON):

{
  "tool": "create_task",
  "arguments": {
    "title": "Follow up with Acme Corp"
  }
}

Returns: Task created with default project, board, status="open", priority="medium"

Example 2: Complete Task

Tool Call (JSON):

{
  "tool": "create_task",
  "arguments": {
    "title": "Implement login feature",
    "description": "Add user authentication with email/password and OAuth support",
    "project_id": 456,
    "board_id": 789,
    "due_date": "2026-03-15",
    "assignee_id": 101,
    "status": "open",
    "priority": "high",
    "tags": ["authentication", "backend"]
  }
}

Returns: Fully specified task with all fields set

Example 3: Task with Due Date

Tool Call (JSON):

{
  "tool": "create_task",
  "arguments": {
    "title": "Review API design doc",
    "description": "Review and provide feedback on the new API design",
    "due_date": "2026-03-05",
    "priority": "high"
  }
}

Returns: Task with due date and priority, other fields use defaults

Natural Language Prompt Examples

Safe Creation with Confirmation

User Prompt:

"Create a task to follow up with Acme Corp next week. Show me what you'll create before creating it."

AI Behavior:

  1. AI proposes task: "Title: Follow up with Acme Corp, Due: [next week], Project: [suggested]"
  2. AI shows preview and asks for confirmation
  3. User types "CONFIRM"
  4. AI calls create_task with the proposed fields
  5. AI confirms task was created

From Meeting Notes

User Prompt:

"I have these action items from a meeting: [list]. Create tasks for each, but show me all tasks first. Don't create until I approve."

AI Behavior:

  1. AI analyzes action items
  2. AI proposes list of tasks with details
  3. AI shows preview: "I'll create these 5 tasks: [list]"
  4. User reviews and approves
  5. AI calls create_task for each approved task

Common Use Cases

Edge Cases

Missing Required Field

Situation: title is missing or empty

Response:

{
  "error": "validation_error",
  "message": "Title is required",
  "field": "title"
}

Handling: Always provide a title when creating tasks

Invalid Project ID

Situation: project_id doesn't exist

Response:

{
  "error": "validation_error",
  "message": "Project with ID 999 not found",
  "field": "project_id"
}

Handling: Verify project_id exists using list_projects first

Invalid Date Format

Situation: due_date is not in ISO format (YYYY-MM-DD)

Response:

{
  "error": "validation_error",
  "message": "Invalid date format. Use YYYY-MM-DD",
  "field": "due_date"
}

Handling: Use ISO date format: YYYY-MM-DD (e.g., "2026-03-15")

Invalid Status Value

Situation: status is not one of: open, in_progress, done, blocked

**Response:

{
  "error": "validation_error",
  "message": "Invalid status. Must be: open, in_progress, done, or blocked",
  "field": "status"
}

Handling: Use only valid status values

Troubleshooting

Validation Errors (400)

Symptom: 400 Bad Request with validation error

Causes:

  • Missing required field (title)
  • Invalid field format (date, status, priority)
  • Invalid ID (project_id, board_id, assignee_id doesn't exist)

Fix:

  • Ensure title is provided and non-empty
  • Verify all IDs exist before using them
  • Use correct formats (ISO dates, valid status/priority values)

Read validation troubleshooting →

Project Not Found

Symptom: Validation error about project_id

Causes:

  • Project ID doesn't exist
  • Project belongs to different workspace
  • Project was deleted

Fix:

  • Use list_projects to find valid project IDs
  • Verify project exists in your workspace
  • Omit project_id to use default project

Best Practices

Using create_task Safely

  • ✅ Always preview task details before creating
  • ✅ Require explicit confirmation (CONFIRM token)
  • ✅ Verify project_id and board_id exist before using
  • ✅ Use descriptive titles (not just "Task" or "New task")
  • ✅ Include descriptions for complex tasks
  • ✅ Set appropriate due dates when known
  • ✅ Use tags for organization and filtering
  • ✅ Add audit comments after creation when appropriate

Often used together with:

Related Articles