Skip to main content
AgenticPal integrates with Google Tasks to help you manage your todo lists. Create, complete, update, and delete tasks using conversational commands.

Available Operations

Create Tasks

Add new tasks to your todo list:
# Natural language examples
"Create a task: buy groceries"
"Add a todo: finish project report"
"Remind me to call the dentist"
"Create task 'Review PR' due tomorrow"
Tool: create_task Parameters:
  • title (required): Task title/description
  • tasklist (optional): Task list ID (defaults to primary list)
  • due (optional): Due date in RFC 3339 format (e.g., “2026-02-15T00:00:00Z”)
  • notes (optional): Additional task notes
Response Format:
{
  "success": true,
  "task_id": "task_abc123",
  "message": "Task 'Buy groceries' created successfully.",
  "task": {
    "id": "task_abc123",
    "title": "Buy groceries",
    "status": "needsAction",
    "due": "2026-03-10T00:00:00Z",
    "notes": "milk, eggs, bread"
  }
}

List Tasks

View your current todo list:
"Show me my tasks"
"What's on my todo list?"
"List all my incomplete tasks"
Tool: list_tasks Parameters:
  • tasklist (optional): Task list ID (defaults to primary)
  • show_completed (optional): Include completed tasks (default: false)
  • max_results (optional): Maximum tasks to return (default: 20)
Response Format:
{
  "success": true,
  "message": "Found 3 task(s).",
  "tasks": [
    {
      "id": "task_abc123",
      "title": "Buy groceries",
      "status": "needsAction",
      "due": "2026-03-10T00:00:00Z",
      "notes": "milk, eggs, bread",
      "updated": "2026-03-08T10:30:00Z"
    }
  ],
  "list_id": "primary_list_id"
}

Mark Task Complete

Check off completed tasks:
"Mark 'buy groceries' as done"
"I finished the project report"
"Complete the dentist task"
Tool: mark_task_complete Parameters:
  • task_id (required): The task ID
  • tasklist (optional): Task list ID (defaults to primary)
Changes task status from needsAction to completed.

Mark Task Incomplete

Reopen a completed task:
"Mark 'buy groceries' as incomplete"
"Reopen the project task"
"Uncomplete that task"
Tool: mark_task_incomplete Parameters:
  • task_id (required): The task ID
  • tasklist (optional): Task list ID (defaults to primary)
Changes task status from completed back to needsAction.

Update Tasks

Modify task details:
"Change the title of my task to 'Buy groceries and supplies'"
"Update the due date to next Friday"
"Add notes to the project task: 'needs review from Sarah'"
Tool: update_task Parameters:
  • task_id (required): The task ID
  • tasklist (optional): Task list ID (defaults to primary)
  • title (optional): New task title
  • due (optional): New due date (RFC 3339 format)
  • notes (optional): New task notes
Only provided fields are updated; others remain unchanged.

Delete Tasks

Remove tasks from your list:
"Delete the groceries task"
"Remove my dentist reminder"
"Delete task XYZ"
Tool: delete_task Parameters:
  • task_id (required): The task ID
  • tasklist (optional): Task list ID (defaults to primary)
Deleting tasks requires confirmation. See Confirmations for details.

Get Task Lists

View all available task lists:
"Show me my task lists"
"What task lists do I have?"
"List all my todo lists"
Tool: get_task_lists Response Format:
{
  "success": true,
  "message": "Found 3 task list(s).",
  "lists": [
    {
      "id": "list_abc123",
      "title": "My Tasks",
      "updated": "2026-03-08T12:00:00Z"
    },
    {
      "id": "list_def456",
      "title": "Work Projects",
      "updated": "2026-03-07T09:30:00Z"
    }
  ]
}

Task Status

Google Tasks uses two status values:
  • needsAction: Task is incomplete (default for new tasks)
  • completed: Task is finished
The mark_task_complete and mark_task_incomplete tools toggle between these states.

Due Dates

Format

Due dates must be in RFC 3339 format:
2026-03-15T00:00:00Z
AgenticPal’s date parsing utilities automatically convert natural language to this format:
from agent.date_utils import parse_datetime

# Natural language input
date_str = "tomorrow"
iso_date, is_all_day = parse_datetime(date_str)
# Returns: ("2026-03-09T00:00:00", True)

No Time Component

Task due dates typically don’t include specific times—only dates. The time is usually set to 00:00:00Z (midnight UTC).

Implementation Details

Task operations are handled by services/tasks.py:TasksService:
class TasksService:
    def __init__(self, service):
        """Initialize with authenticated Google Tasks service."""
        self.service = service
        self._default_list_id = None

Default Task List

The service caches the default (primary) task list ID:
def _get_default_list_id(self) -> Optional[str]:
    """Get the default task list ID (cached)."""
    if self._default_list_id:
        return self._default_list_id
    
    try:
        lists = self.service.tasklists().list().execute()
        items = lists.get("items", [])
        if items:
            self._default_list_id = items[0]["id"]
            return self._default_list_id
    except Exception:
        pass
    return None
If no tasklist parameter is provided, methods automatically use this default list.

Common Use Cases

Quick Task Capture

User: "Create a task: buy groceries"
Agent: "Task 'buy groceries' created successfully."

Task with Due Date

User: "Add a todo: finish report, due Friday"
Agent: [Parses "Friday" to ISO date]
"Task 'finish report' created with due date March 12, 2026."

Complete Multiple Tasks

User: "Show me my tasks"
Agent: "You have 5 tasks:
1. Buy groceries
2. Call dentist
3. Finish report
..."

User: "Mark tasks 1 and 2 as done"
Agent: "Marked 'Buy groceries' as completed.
Marked 'Call dentist' as completed."

Update Task Details

User: "List my tasks"
Agent: "Task 'Buy milk' is on your list."

User: "Change it to 'Buy milk and eggs'"
Agent: [Updates task title]
"Task updated successfully."

Multi-List Management

User: "Show me my task lists"
Agent: "You have 2 lists:
1. My Tasks
2. Work Projects"

User: "Create a task 'Review code' in Work Projects"
Agent: [Creates task in specified list]
"Task created in 'Work Projects' list."

Error Handling

The service handles various error conditions:
try:
    result = tasks_service.mark_task_complete(
        task_id="invalid_id"
    )
except HttpError as error:
    if error.resp.status == 404:
        return {
            "success": False,
            "message": f"Task '{task_id}' not found.",
            "error": str(error)
        }
Common errors:
  • 404: Task or task list not found
  • 401: Authentication failed (token expired)
  • 403: Insufficient permissions
  • 400: Invalid parameters (e.g., malformed due date)

Task Organization

Multiple Lists

Google Tasks supports multiple task lists (e.g., “Personal”, “Work”, “Shopping”). Use the get_task_lists tool to discover available lists, then specify the tasklist parameter when creating or managing tasks.

Task Hierarchy

Google Tasks API supports subtasks, but AgenticPal doesn’t currently expose this feature. Tasks are managed at a flat hierarchy level.

Best Practices

Descriptive Titles

Good: “Buy groceries: milk, eggs, bread” Avoid: “TODO” Use task titles that clearly describe what needs to be done.

Use Notes for Details

For complex tasks, put additional context in the notes field:
create_task(
    title="Review PR #123",
    notes="Check for test coverage, security issues, and code style"
)

Set Due Dates

Tasks with due dates are easier to prioritize:
"Create task 'Submit report' due Friday"

Regular Review

Periodically list tasks to stay organized:
"Show me my tasks"  # Daily review
"List completed tasks"  # Weekly cleanup

Limitations

Current limitations:
  • No subtask support
  • Cannot move tasks between lists
  • Cannot set priority/importance
  • Cannot add attachments
  • Cannot set reminders/notifications
These features may be added in future versions.

Next Steps

Calendar

Manage calendar events and appointments

Multi-turn Conversations

See how context is maintained

Build docs developers (and LLMs) love