Tasks
The Tasks module lets agents and humans create, list, and complete operational follow-ups.
What it does
Tasks make agent-created next steps visible and accountable. Agents can create follow-ups, list open work, and complete tasks after a business action is done.
Task statuses:
opencompletedcanceled
Resource model
The tasks resource is tenant-owned and follows the shared app-plane fields:
| Field | Purpose |
|---|---|
id | Task identifier. |
tenant_id | Workspace isolation boundary. |
title | Short action label. |
description | Optional details or context. |
status | open, completed, or canceled. |
due_at | Optional due date/time. |
assignee_id | Optional user or actor assignment. |
related_resource_type | Optional linked resource type: contact, company, deal, or support_ticket. |
related_resource_id | Optional linked resource ID. |
source | api, mcp, or admin. |
last_agent_actor_id | Agent actor that last touched the task. |
Permissions
Use tasks:write to create or complete tasks and tasks:read to list tasks.
Recommended agent scopes for follow-up workflows:
crm:read
tasks:read
tasks:write
activity:write
Example workflow
Prompt:
Create a follow-up task for Jane Doe next Friday and log that it came from a pricing email.
Expected operations:
search_contactscreate_tasklog_activity
Audit behavior
Task writes create audit events for create, complete, and status changes. A task completion should preserve:
- actor and source
- previous status
- new status
- linked resource
- request ID
- error status if completion failed
Task audit history is what lets a human see whether an agent merely suggested a task or actually changed workspace state.
MCP tools
create_task
Create a task for a user, agent, contact, company, or deal.
- Required scopes
- tasks:write
- API equivalent
- POST /v1/tasks
Example prompt
Input schema
| Property | Type | Required | Description |
|---|---|---|---|
| title | string | Yes | Short task title written for a human operator. |
| description | string | No | Optional task details or completion criteria. |
| due_at | string · date-time | No | Optional ISO 8601 due date and time. |
| assignee_id | string | No | User or agent ID responsible for the task. |
| related_resource_type | string · contact | company | deal | support_ticket | No | Resource type the task should be attached to. |
| related_resource_id | string | No | Resource ID matching related_resource_type. |
| idempotency_key | string | No | Stable client-generated key that makes retries safe for this write. |
Additional properties are rejected.
Example input
{
"title": "Follow up with Jane Doe",
"related_resource_type": "contact",
"related_resource_id": "con_123"
}Example response
{
"task": {
"id": "task_123",
"title": "Follow up with Jane Doe",
"status": "open"
},
"request_id": "req_129"
}Common errors
The token does not include the scope required for this operation.
The request payload failed schema validation.
The requested resource does not exist in this workspace.
list_tasks
List tasks by status, assignee, due date, or related resource.
- Required scopes
- tasks:read
- API equivalent
- GET /v1/tasks
Example prompt
Input schema
| Property | Type | Required | Description |
|---|---|---|---|
| status | string · open | completed | canceled | No | Filter tasks by lifecycle status. |
| assignee_id | string | No | Restrict results to tasks assigned to this user or agent. |
| limit | integer · min 1 · max 100 | No | Maximum number of tasks to return. |
| cursor | string | No | Opaque cursor from a previous response's next_cursor. |
Additional properties are rejected.
Example input
{
"status": "open",
"limit": 25
}Example response
{
"tasks": [
{
"id": "task_123",
"title": "Follow up with Jane Doe",
"status": "open"
}
],
"request_id": "req_130"
}Common errors
The token does not include the scope required for this operation.
The request payload failed schema validation.
complete_task
Mark a task complete in the current workspace. Deprecated in favor of update_task.
- Required scopes
- tasks:write
- API equivalent
- PATCH /v1/tasks/{task_id}
Example prompt
Input schema
| Property | Type | Required | Description |
|---|---|---|---|
| task_id | string | Yes | Task ID to mark complete. |
| completed_note | string | No | Optional note describing the completion outcome. |
| idempotency_key | string | No | Stable client-generated key that makes retries safe for this write. |
Additional properties are rejected.
Example input
{
"task_id": "task_123",
"completed_note": "Jane replied."
}Example response
{
"task": {
"id": "task_123",
"status": "completed"
},
"request_id": "req_131"
}Common errors
The token does not include the scope required for this operation.
The request payload failed schema validation.
The requested resource does not exist in this workspace.
update_task
Update a task status, including canceling or reopening it.
- Required scopes
- tasks:write
- API equivalent
- PATCH /v1/tasks/{task_id}
Example prompt
Input schema
| Property | Type | Required | Description |
|---|---|---|---|
| task_id | string | Yes | Task ID to update. |
| status | string · open | completed | canceled | No | Target task status. |
| completed_note | string | No | Optional completion note. |
| idempotency_key | string | No | Stable client-generated key that makes retries safe for this write. |
Additional properties are rejected.
Example input
{
"task_id": "task_123",
"status": "completed",
"completed_note": "Jane confirmed the next call."
}Example response
{
"task": {
"id": "task_123",
"status": "completed",
"completed_note": "Jane confirmed the next call."
},
"request_id": "req_131"
}Common errors
The token does not include the scope required for this operation.
The request payload failed schema validation.
The requested resource does not exist in this workspace.
