# Google Tasks

Google Tasks provides a simple to-do list and task management system integrated into Gmail and Google Calendar for quick and easy tracking

- **Category:** task management
- **Auth:** OAUTH2
- **Composio Managed App Available?** Yes
- **Tools:** 18
- **Triggers:** 5
- **Slug:** `GOOGLETASKS`
- **Version:** 20260316_00

## Frequently Asked Questions

### How do I set up custom Google OAuth credentials for Google Tasks?

For a step-by-step guide on creating and configuring your own Google OAuth credentials with Composio, see [How to create OAuth2 credentials for Google Apps](https://composio.dev/auth/googleapps).

### Why am I seeing "App is blocked" when connecting Google Tasks?

The OAuth client is requesting scopes that Google hasn't verified for that client. This usually happens when you add extra scopes beyond the defaults.

Remove the additional scopes from your auth config, or create your own OAuth app and submit the scopes for verification. See [How to create OAuth2 credentials for Google Apps](https://composio.dev/auth/googleapps).

### Why am I getting "Google Tasks API has not been used in project" error?

When using custom OAuth credentials, the Google Tasks API must be enabled in the Google Cloud project that owns those credentials. Enable it in Google Cloud Console under APIs & Services, wait a few minutes, and retry.

### Why am I getting "Error 400: invalid_scope"?

The requested scopes are invalid or incorrectly formatted in the authorization URL. Verify your scope values against the [Google OAuth scopes docs](https://developers.google.com/identity/protocols/oauth2). If you're creating auth configs programmatically, see the [programmatic auth config guide](/docs/auth-configuration/programmatic-auth-configs).

### Why does the OAuth consent screen show "Composio" instead of my app?

By default, the consent screen uses Composio's OAuth app. To show your own app name and logo, create your own OAuth app and set a custom redirect URL. See [White-labeling authentication](/docs/white-labeling-authentication#using-your-own-oauth-apps).

### Why am I getting 401 errors on tool calls?

The user's access token is no longer valid. Common causes: the user revoked access, changed their password or 2FA, a Workspace admin policy changed, or Google's refresh token limit (~50 per account) was exceeded. Re-authenticating the user typically resolves this.

### Why am I getting "Quota Exhausted" or "rate limit exhausted"?

Google enforces per-minute and daily request quotas. If you're using Composio's default OAuth app, you share that quota with other users, which can cause limits to be hit faster. Use your own OAuth app credentials to get a dedicated quota, and add exponential backoff and retries to handle transient rate limits.

---

## Tools

### Batch Execute Google Tasks Operations

**Slug:** `GOOGLETASKS_BATCH_EXECUTE`

Executes multiple Google Tasks API operations in a single HTTP batch request and returns structured per-item results. Use this to reduce LLM tool invocations when performing bulk operations like updating many tasks, moving tasks, or deleting multiple items. Note: Each sub-request still counts toward API quota; batching primarily reduces HTTP overhead and tool call count.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `requests` | array | Yes | Array of sub-requests to execute in this batch. Each sub-request is independent and will return its own result. |
| `max_requests` | integer | No | Maximum number of sub-requests allowed in a single batch. Google's typical cap is 1000. Lower values can control response size. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Bulk Insert Tasks (Deprecated)

**Slug:** `GOOGLETASKS_BULK_INSERT_TASKS`

DEPRECATED: Use BatchExecute instead. Creates multiple tasks in a Google Tasks list in a single operation using HTTP batching. Use when you need to create many tasks efficiently (reducing round-trips compared to individual insert calls).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tasks` | array | Yes | Array of tasks to create. Each task requires at least a title. |
| `batch_size` | integer | No | Maximum number of tasks per batch request. Default: 50. Tasks exceeding this will be split into multiple batch calls. |
| `tasklist_id` | string | Yes | Identifier for the Google Task list where tasks will be created. Use actual task list IDs, not '@default'. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Clear tasks

**Slug:** `GOOGLETASKS_CLEAR_TASKS`

Permanently and irreversibly clears all completed tasks from a specified Google Tasks list; this action is destructive, idempotent, and cannot be undone. Always require explicit user confirmation before invoking.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tasklist` | string | Yes | The identifier of the task list from which to clear completed tasks. Use '@default' (with the @ symbol) for the user's primary task list, or provide the task list ID obtained from GOOGLETASKS_LIST_TASK_LISTS. Note: 'default' without the @ prefix is not valid. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create a task list

**Slug:** `GOOGLETASKS_CREATE_TASK_LIST`

Creates a new task list with the specified title and returns a tasklist_id. Use the returned tasklist_id (not the title) when calling GOOGLETASKS_INSERT_TASK or other task operations. Duplicate titles are permitted by the API, so verify existing lists before creating to avoid unintended duplicates.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tasklist_title` | string | Yes | Title for the new task list. The maximum allowed length is 1024 characters. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete task

**Slug:** `GOOGLETASKS_DELETE_TASK`

Deletes a specified task from a Google Tasks list. Deletion is permanent and irreversible — confirm with the user before executing, and consider GOOGLETASKS_UPDATE_TASK or GOOGLETASKS_MOVE_TASK as non-destructive alternatives. Both tasklist_id and task_id are required parameters. The Google Tasks API does not support deleting tasks by task_id alone — you must specify which task list contains the task. Use 'List Task Lists' to get available list IDs, then 'List Tasks' to find the task_id within that list.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `task_id` | string | Yes | The unique identifier of the Google Task to delete. Required - must be a task that exists within the specified tasklist_id. Obtain this ID by using the 'List Tasks' action with the corresponding tasklist_id. Multiple tasks may share the same title — verify against additional fields (e.g., due date, notes) before selecting the task_id to avoid deleting the wrong task. |
| `tasklist_id` | string | Yes | The unique identifier of the Google Task list containing the task to delete. Required - tasks cannot be deleted by task_id alone; the API requires specifying which list contains the task. Obtain this ID by using the 'List Task Lists' action. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete task list

**Slug:** `GOOGLETASKS_DELETE_TASK_LIST`

Permanently deletes an existing Google Task list, identified by `tasklist_id`, along with all its tasks; this operation is irreversible. Require explicit user confirmation before calling; do not invoke in read-only or exploratory flows.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tasklist_id` | string | Yes | Unique identifier of the Google Task list to be deleted. This field is required and cannot be empty. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Task

**Slug:** `GOOGLETASKS_GET_TASK`

Retrieve a specific Google Task. REQUIRES both `tasklist_id` and `task_id`. Tasks cannot be retrieved by ID alone - you must always specify which task list contains the task. Use this to refresh task details before display or edits rather than relying on potentially stale results from GOOGLETASKS_LIST_TASKS.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `task_id` | string | Yes | REQUIRED. Unique identifier of the Google Task to retrieve. Must be used together with tasklist_id. |
| `tasklist_id` | string | Yes | REQUIRED. Unique identifier of the Google Tasks list containing the task. You must always provide this parameter - tasks cannot be retrieved by task_id alone. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get task list

**Slug:** `GOOGLETASKS_GET_TASK_LIST`

Retrieves a specific task list from the user's Google Tasks if the `tasklist_id` exists for the authenticated user.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tasklist_id` | string | Yes | The unique identifier of the task list to retrieve, assigned by Google Tasks when the list is created. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Insert Task

**Slug:** `GOOGLETASKS_INSERT_TASK`

Creates a new task in a given `tasklist_id`, optionally as a subtask of an existing `task_parent` or positioned after an existing `task_previous` sibling, where both `task_parent` and `task_previous` must belong to the same `tasklist_id` if specified. IMPORTANT: Date fields (due, completed) accept various formats like '28 Sep 2025', '11:59 PM, 22 Sep 2025', or ISO format '2025-09-21T15:30:00Z' and will automatically convert them to RFC3339 format required by the API. Not idempotent — repeated calls with identical parameters create duplicate tasks; track returned task IDs to avoid duplication. High-volume inserts may trigger 403 rateLimitExceeded or 429; apply exponential backoff.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | No | Unique identifier for the task. Generated by Google Tasks API when creating a task. Used for updating or deleting existing tasks. |
| `due` | string | No | Due date for the task (optional). NOTE: Google Tasks only stores the date portion (YYYY-MM-DD) - any time component provided will be automatically stripped before sending to the API.  Google Tasks API requires dates in RFC3339 format (e.g., 2025-09-22T13:48:27Z). We automatically convert various human-readable formats to RFC3339:  Accepted formats: • 2025-09-28T23:59:00Z → RFC3339/ISO-8601 format (preferred) - September 28, 2025 at 11:59 PM UTC • 28 Sep 2025 → Simple date format - Will be converted to midnight UTC on that date • 11:59 PM, 22 Sep 2025 → Time with date - Assumes UTC timezone if not specified • 1:00 PM, 21 Sep 2025 → 12-hour format with date - Converted to 13:00 UTC • UTC-5:30, 6:50 PM → With timezone offset - Converted to UTC automatically • UTC+1, 11:59 PM, 31 Dec → Timezone with date - Next occurrence of Dec 31 • 2025-09-21T15:30:00+02:00 → RFC3339 with timezone offset  Note: If no timezone is specified, UTC is assumed. Dates without times default to midnight UTC. |
| `etag` | string | No | ETag of the resource for concurrency control. Prevents accidental overwrites when multiple clients modify the same task. Auto-generated by the API. |
| `notes` | string | No | Additional details or description for the task. Supports plain text only (no HTML/markdown). Maximum 8192 characters. Example: 'Include Q3 sales data and projections' |
| `title` | string | Yes | Title/name of the task (REQUIRED). This is the main text displayed for the task. Maximum 1024 characters. Example: 'Complete quarterly report' |
| `hidden` | boolean | No | Whether the task is hidden from the default view. Hidden tasks can still be accessed via API but won't show in UI. Default: false |
| `status` | string ("needsAction" | "completed") | No | Status of the task. Must be either 'needsAction' (task is pending) or 'completed' (task is done). Defaults to 'needsAction' if not provided. |
| `deleted` | boolean | No | Whether the task has been deleted. Deleted tasks are marked but not immediately removed, allowing for recovery. Default: false |
| `completed` | string | No | Date/time when the task was marked as completed. Only applicable when status='completed'. Unlike 'due', this field preserves the time component.  Google Tasks API requires dates in RFC3339 format (e.g., 2025-09-22T13:48:27Z). We automatically convert various human-readable formats to RFC3339:  Accepted formats: • 2025-09-28T23:59:00Z → RFC3339/ISO-8601 format (preferred) - September 28, 2025 at 11:59 PM UTC • 28 Sep 2025 → Simple date format - Will be converted to midnight UTC on that date • 11:59 PM, 22 Sep 2025 → Time with date - Assumes UTC timezone if not specified • 1:00 PM, 21 Sep 2025 → 12-hour format with date - Converted to 13:00 UTC • UTC-5:30, 6:50 PM → With timezone offset - Converted to UTC automatically • UTC+1, 11:59 PM, 31 Dec → Timezone with date - Next occurrence of Dec 31 • 2025-09-21T15:30:00+02:00 → RFC3339 with timezone offset  Note: If no timezone is specified, UTC is assumed. Dates without times default to midnight UTC. |
| `task_parent` | string | No | Identifier of an existing task to serve as parent; if provided, creates a subtask, otherwise a top-level task in the specified list. |
| `tasklist_id` | string | Yes | Task list identifier where the new task will be created. Valid values: (1) '@default' - special identifier that references the user's default/primary task list, or (2) an actual task list ID obtained from the 'List Task Lists' action (GOOGLETASKS_LIST_TASK_LISTS). Task list IDs are opaque strings generated by Google (typically base64-encoded, e.g., 'MDQ1NTEzMjc4OTM5MzM0NTY4NzE6MDow'). |
| `task_previous` | string | No | Identifier of an existing task after which the new task will be placed, at the same hierarchical level (as a sibling). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List All Tasks Across All Lists

**Slug:** `GOOGLETASKS_LIST_ALL_TASKS`

Tool to list all tasks across all of the user's task lists with optional filters. Use when the agent needs to see all tasks without knowing which list to query first. Each returned task is annotated with its tasklist_id and tasklist_title for context.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `dueMax` | string | No | Only include tasks due on or before this date.  Google Tasks API requires dates in RFC3339 format (e.g., 2025-09-22T13:48:27Z). We automatically convert various human-readable formats to RFC3339:  Accepted formats: • 2025-09-28T23:59:00Z → RFC3339/ISO-8601 format (preferred) - September 28, 2025 at 11:59 PM UTC • 28 Sep 2025 → Simple date format - Will be converted to midnight UTC on that date • 11:59 PM, 22 Sep 2025 → Time with date - Assumes UTC timezone if not specified • 1:00 PM, 21 Sep 2025 → 12-hour format with date - Converted to 13:00 UTC • UTC-5:30, 6:50 PM → With timezone offset - Converted to UTC automatically • UTC+1, 11:59 PM, 31 Dec → Timezone with date - Next occurrence of Dec 31 • 2025-09-21T15:30:00+02:00 → RFC3339 with timezone offset  Note: If no timezone is specified, UTC is assumed. Dates without times default to midnight UTC. |
| `dueMin` | string | No | Only include tasks due on or after this date.  Google Tasks API requires dates in RFC3339 format (e.g., 2025-09-22T13:48:27Z). We automatically convert various human-readable formats to RFC3339:  Accepted formats: • 2025-09-28T23:59:00Z → RFC3339/ISO-8601 format (preferred) - September 28, 2025 at 11:59 PM UTC • 28 Sep 2025 → Simple date format - Will be converted to midnight UTC on that date • 11:59 PM, 22 Sep 2025 → Time with date - Assumes UTC timezone if not specified • 1:00 PM, 21 Sep 2025 → 12-hour format with date - Converted to 13:00 UTC • UTC-5:30, 6:50 PM → With timezone offset - Converted to UTC automatically • UTC+1, 11:59 PM, 31 Dec → Timezone with date - Next occurrence of Dec 31 • 2025-09-21T15:30:00+02:00 → RFC3339 with timezone offset  Note: If no timezone is specified, UTC is assumed. Dates without times default to midnight UTC. |
| `showHidden` | boolean | No | Include hidden tasks in results. Defaults to false. |
| `updatedMin` | string | No | Only include tasks updated on or after this date.  Google Tasks API requires dates in RFC3339 format (e.g., 2025-09-22T13:48:27Z). We automatically convert various human-readable formats to RFC3339:  Accepted formats: • 2025-09-28T23:59:00Z → RFC3339/ISO-8601 format (preferred) - September 28, 2025 at 11:59 PM UTC • 28 Sep 2025 → Simple date format - Will be converted to midnight UTC on that date • 11:59 PM, 22 Sep 2025 → Time with date - Assumes UTC timezone if not specified • 1:00 PM, 21 Sep 2025 → 12-hour format with date - Converted to 13:00 UTC • UTC-5:30, 6:50 PM → With timezone offset - Converted to UTC automatically • UTC+1, 11:59 PM, 31 Dec → Timezone with date - Next occurrence of Dec 31 • 2025-09-21T15:30:00+02:00 → RFC3339 with timezone offset  Note: If no timezone is specified, UTC is assumed. Dates without times default to midnight UTC. |
| `showDeleted` | boolean | No | Include deleted tasks in results. Defaults to false. |
| `completedMax` | string | No | Only include tasks completed on or before this date.  Google Tasks API requires dates in RFC3339 format (e.g., 2025-09-22T13:48:27Z). We automatically convert various human-readable formats to RFC3339:  Accepted formats: • 2025-09-28T23:59:00Z → RFC3339/ISO-8601 format (preferred) - September 28, 2025 at 11:59 PM UTC • 28 Sep 2025 → Simple date format - Will be converted to midnight UTC on that date • 11:59 PM, 22 Sep 2025 → Time with date - Assumes UTC timezone if not specified • 1:00 PM, 21 Sep 2025 → 12-hour format with date - Converted to 13:00 UTC • UTC-5:30, 6:50 PM → With timezone offset - Converted to UTC automatically • UTC+1, 11:59 PM, 31 Dec → Timezone with date - Next occurrence of Dec 31 • 2025-09-21T15:30:00+02:00 → RFC3339 with timezone offset  Note: If no timezone is specified, UTC is assumed. Dates without times default to midnight UTC. |
| `completedMin` | string | No | Only include tasks completed on or after this date.  Google Tasks API requires dates in RFC3339 format (e.g., 2025-09-22T13:48:27Z). We automatically convert various human-readable formats to RFC3339:  Accepted formats: • 2025-09-28T23:59:00Z → RFC3339/ISO-8601 format (preferred) - September 28, 2025 at 11:59 PM UTC • 28 Sep 2025 → Simple date format - Will be converted to midnight UTC on that date • 11:59 PM, 22 Sep 2025 → Time with date - Assumes UTC timezone if not specified • 1:00 PM, 21 Sep 2025 → 12-hour format with date - Converted to 13:00 UTC • UTC-5:30, 6:50 PM → With timezone offset - Converted to UTC automatically • UTC+1, 11:59 PM, 31 Dec → Timezone with date - Next occurrence of Dec 31 • 2025-09-21T15:30:00+02:00 → RFC3339 with timezone offset  Note: If no timezone is specified, UTC is assumed. Dates without times default to midnight UTC. |
| `showAssigned` | boolean | No | Include tasks assigned to the current user in results. Defaults to false. |
| `showCompleted` | boolean | No | Include completed tasks in results. Defaults to true. |
| `max_tasks_total` | integer | No | Hard limit on total number of tasks returned across all lists to prevent large payloads. Defaults to 1000. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List task lists

**Slug:** `GOOGLETASKS_LIST_TASK_LISTS`

Fetches the authenticated user's task lists from Google Tasks; results may be paginated. Response contains task lists under the `items` key. Multiple lists may share similar names — confirm the correct list by ID before passing to other tools.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `pageToken` | string | No | Token for the page of results to return; omit for the first page, use `nextPageToken` from a previous response for subsequent pages. |
| `maxResults` | integer | No | Maximum number of task lists to return per page. Capped at 100; values above 100 are silently truncated to 100. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Tasks

**Slug:** `GOOGLETASKS_LIST_TASKS`

Retrieves tasks from a Google Tasks list; all date/time strings must be RFC3339 UTC, and `showCompleted` must be true if `completedMin` or `completedMax` are specified. Response key for tasks is `tasks` (not `items`). No full-text search; filter client-side by title/notes. Results ordered by position, not by date.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `dueMax` | string | No | Exclude tasks due after this date.  Google Tasks API requires dates in RFC3339 format (e.g., 2025-09-22T13:48:27Z). We automatically convert various human-readable formats to RFC3339:  Accepted formats: • 2025-09-28T23:59:00Z → RFC3339/ISO-8601 format (preferred) - September 28, 2025 at 11:59 PM UTC • 28 Sep 2025 → Simple date format - Will be converted to midnight UTC on that date • 11:59 PM, 22 Sep 2025 → Time with date - Assumes UTC timezone if not specified • 1:00 PM, 21 Sep 2025 → 12-hour format with date - Converted to 13:00 UTC • UTC-5:30, 6:50 PM → With timezone offset - Converted to UTC automatically • UTC+1, 11:59 PM, 31 Dec → Timezone with date - Next occurrence of Dec 31 • 2025-09-21T15:30:00+02:00 → RFC3339 with timezone offset  Note: If no timezone is specified, UTC is assumed. Dates without times default to midnight UTC. |
| `dueMin` | string | No | Exclude tasks due before this date.  Google Tasks API requires dates in RFC3339 format (e.g., 2025-09-22T13:48:27Z). We automatically convert various human-readable formats to RFC3339:  Accepted formats: • 2025-09-28T23:59:00Z → RFC3339/ISO-8601 format (preferred) - September 28, 2025 at 11:59 PM UTC • 28 Sep 2025 → Simple date format - Will be converted to midnight UTC on that date • 11:59 PM, 22 Sep 2025 → Time with date - Assumes UTC timezone if not specified • 1:00 PM, 21 Sep 2025 → 12-hour format with date - Converted to 13:00 UTC • UTC-5:30, 6:50 PM → With timezone offset - Converted to UTC automatically • UTC+1, 11:59 PM, 31 Dec → Timezone with date - Next occurrence of Dec 31 • 2025-09-21T15:30:00+02:00 → RFC3339 with timezone offset  Note: If no timezone is specified, UTC is assumed. Dates without times default to midnight UTC. |
| `pageToken` | string | No | Token from a previous list operation for fetching a specific page; if omitted, retrieves the first page. |
| `maxResults` | integer | No | Maximum number of tasks to return. API default: 20, maximum: 100. Use `nextPageToken` from the response in successive calls until absent to avoid missing tasks beyond the first page. |
| `showHidden` | boolean | No | Include hidden tasks. Defaults to false. |
| `updatedMin` | string | No | Lower bound for task's last modification time (for syncing).  Google Tasks API requires dates in RFC3339 format (e.g., 2025-09-22T13:48:27Z). We automatically convert various human-readable formats to RFC3339:  Accepted formats: • 2025-09-28T23:59:00Z → RFC3339/ISO-8601 format (preferred) - September 28, 2025 at 11:59 PM UTC • 28 Sep 2025 → Simple date format - Will be converted to midnight UTC on that date • 11:59 PM, 22 Sep 2025 → Time with date - Assumes UTC timezone if not specified • 1:00 PM, 21 Sep 2025 → 12-hour format with date - Converted to 13:00 UTC • UTC-5:30, 6:50 PM → With timezone offset - Converted to UTC automatically • UTC+1, 11:59 PM, 31 Dec → Timezone with date - Next occurrence of Dec 31 • 2025-09-21T15:30:00+02:00 → RFC3339 with timezone offset  Note: If no timezone is specified, UTC is assumed. Dates without times default to midnight UTC. |
| `showDeleted` | boolean | No | Include deleted tasks. Defaults to false. |
| `tasklist_id` | string | Yes | Identifier of the task list. IMPORTANT: For the user's primary/default task list, you MUST use the literal string '@default' (NOT 'primary', 'default', or any other variation). The value 'primary' is NOT valid and will be rejected by the API. Either use '@default' for the primary list or provide a valid task list ID obtained from list_task_lists. |
| `completedMax` | string | No | Exclude tasks completed after this date.  Google Tasks API requires dates in RFC3339 format (e.g., 2025-09-22T13:48:27Z). We automatically convert various human-readable formats to RFC3339:  Accepted formats: • 2025-09-28T23:59:00Z → RFC3339/ISO-8601 format (preferred) - September 28, 2025 at 11:59 PM UTC • 28 Sep 2025 → Simple date format - Will be converted to midnight UTC on that date • 11:59 PM, 22 Sep 2025 → Time with date - Assumes UTC timezone if not specified • 1:00 PM, 21 Sep 2025 → 12-hour format with date - Converted to 13:00 UTC • UTC-5:30, 6:50 PM → With timezone offset - Converted to UTC automatically • UTC+1, 11:59 PM, 31 Dec → Timezone with date - Next occurrence of Dec 31 • 2025-09-21T15:30:00+02:00 → RFC3339 with timezone offset  Note: If no timezone is specified, UTC is assumed. Dates without times default to midnight UTC. |
| `completedMin` | string | No | Exclude tasks completed before this date.  Google Tasks API requires dates in RFC3339 format (e.g., 2025-09-22T13:48:27Z). We automatically convert various human-readable formats to RFC3339:  Accepted formats: • 2025-09-28T23:59:00Z → RFC3339/ISO-8601 format (preferred) - September 28, 2025 at 11:59 PM UTC • 28 Sep 2025 → Simple date format - Will be converted to midnight UTC on that date • 11:59 PM, 22 Sep 2025 → Time with date - Assumes UTC timezone if not specified • 1:00 PM, 21 Sep 2025 → 12-hour format with date - Converted to 13:00 UTC • UTC-5:30, 6:50 PM → With timezone offset - Converted to UTC automatically • UTC+1, 11:59 PM, 31 Dec → Timezone with date - Next occurrence of Dec 31 • 2025-09-21T15:30:00+02:00 → RFC3339 with timezone offset  Note: If no timezone is specified, UTC is assumed. Dates without times default to midnight UTC. |
| `showCompleted` | boolean | No | Include completed tasks. Defaults to true. (See action docstring for interaction with `completedMin`/`Max`). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Move Task

**Slug:** `GOOGLETASKS_MOVE_TASK`

Moves the specified task to another position in the task list or to a different task list. Use cases: - Reorder tasks within a list (use 'previous' parameter) - Create subtasks by moving a task under a parent (use 'parent' parameter) - Move tasks between different task lists (use 'destinationTasklist' parameter) - Move a subtask back to top-level (omit 'parent' parameter)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `task` | string | Yes | Task identifier of the task to move. Must be a valid task ID from the source tasklist. Obtain this from 'List Tasks' or 'Insert Task' actions. |
| `parent` | string | No | New parent task identifier. If provided, the task becomes a subtask of this parent. The parent must exist in the destination list (or source list if no destinationTasklist is specified). Omit to move task to top level. |
| `previous` | string | No | New previous sibling task identifier. The task will be positioned immediately after this sibling. Omit to position the task first among its siblings. Must exist in the same list as the task's destination (destinationTasklist if specified, otherwise source tasklist). Cross-list sibling references are unsupported. |
| `tasklist` | string | Yes | Source task list identifier where the task currently exists. Use '@default' for the user's primary task list, or provide a specific task list ID obtained from 'List Task Lists'. The task must exist in this list. |
| `destinationTasklist` | string | No | Destination task list identifier. If set, the task is moved from the source tasklist to this list. Omit to reorder within the same list. Note: Recurrent tasks cannot be moved between lists. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Patch Task

**Slug:** `GOOGLETASKS_PATCH_TASK`

Partially updates an existing task (identified by `task_id`) within a specific Google Task list (identified by `tasklist_id`), modifying only the provided attributes from `TaskInput` (e.g., `title`, `notes`, `due` date, `status`) and requiring both the task and list to exist.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | No | Unique identifier for the task. Generated by Google Tasks API when creating a task. Used for updating or deleting existing tasks. |
| `due` | string | No | Due date for the task (optional). NOTE: Google Tasks only stores the date portion (YYYY-MM-DD) - any time component provided will be automatically stripped before sending to the API. Accepts RFC3339 format (e.g., '2025-09-28T23:59:00Z') or various human-readable formats like '28 Sep 2025', '11:59 PM, 22 Sep 2025'. Normalized to midnight UTC — naive local dates without timezone offset may shift ±1 day. Time-based reminders are not supported via this field. |
| `etag` | string | No | ETag of the resource for concurrency control. Prevents accidental overwrites when multiple clients modify the same task. Auto-generated by the API. |
| `notes` | string | No | Additional details or description for the task. Supports plain text only (no HTML/markdown). Maximum 8192 characters. Example: 'Include Q3 sales data and projections' |
| `title` | string | No | Title/name of the task. This is the main text displayed for the task. Maximum 1024 characters. Example: 'Complete quarterly report' |
| `hidden` | boolean | No | Whether the task is hidden from the default view. Hidden tasks can still be accessed via API but won't show in UI. Default: false |
| `status` | string ("needsAction" | "completed") | No | Current status of the task. Must be either 'needsAction' (task is pending) or 'completed' (task is done). |
| `deleted` | boolean | No | Whether the task has been deleted. Deleted tasks are marked but not immediately removed, allowing for recovery. Default: false |
| `task_id` | string | Yes | Identifier of the Google Task to be updated within the specified task list. |
| `completed` | string | No | Date/time when the task was marked as completed. Only applicable when status='completed'. Unlike 'due', this field preserves the time component. Accepts RFC3339 format or human-readable date formats. Malformed or non-RFC3339 values will be rejected. |
| `tasklist_id` | string | Yes | Identifier of the Google Task list that contains the task to be updated. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Patch task list

**Slug:** `GOOGLETASKS_PATCH_TASK_LIST`

Updates the title of an existing Google Tasks task list.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tasklist_id` | string | Yes | The unique identifier of the task list to be updated. |
| `updated_title` | string | No | The new title for the task list. Optional for PATCH semantics - only include if you want to update the title. Maximum length: 1024 characters. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Task (Deprecated)

**Slug:** `GOOGLETASKS_UPDATE_TASK`

DEPRECATED: Use GOOGLETASKS_PATCH_TASK instead. Full-update (PUT-style) operation that overwrites unspecified fields with empty/default values, which can cause data loss. Prefer GOOGLETASKS_PATCH_TASK unless a complete field replacement is explicitly required.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `due` | string | No | Due date of the task (RFC 3339 timestamp). |
| `notes` | string | No | Notes describing the task. |
| `title` | string | No | Title of the task. |
| `status` | string | No | Status of the task. Valid values: "needsAction" or "completed". When setting to "completed", the completion date will be auto-set to the current time if not explicitly provided via the completed field. |
| `task_id` | string | Yes | Task identifier. |
| `completed` | string | No | Completion date of the task (RFC 3339 timestamp). |
| `tasklist_id` | string | Yes | Task list identifier. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Task (Full Replacement)

**Slug:** `GOOGLETASKS_UPDATE_TASK_FULL`

Tool to fully replace an existing Google Task using PUT method. Use when you need to update the entire task resource, not just specific fields. This method requires all required fields (id, title) and replaces the complete task, unlike PATCH which supports partial updates.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Task identifier (REQUIRED). Must match the task_id parameter. This field is required by the Google Tasks API for PUT operations. |
| `due` | string | No | Due date for the task. NOTE: Google Tasks only stores the date portion (YYYY-MM-DD). Accepts RFC3339 format (e.g., '2025-09-28T00:00:00Z') or date strings like '2025-09-28'. |
| `etag` | string | No | ETag of the resource for concurrency control. Prevents accidental overwrites when multiple clients modify the same task. |
| `links` | array | No | Collection of links attached to the task. This collection is read-only. |
| `notes` | string | No | Additional details or description for the task. Supports plain text only. Maximum 8192 characters. |
| `title` | string | Yes | Title/name of the task (REQUIRED). This is the main text displayed for the task. Maximum 1024 characters. |
| `hidden` | boolean | No | Whether the task is hidden. This is read-only and set by the API when task list is cleared. Default: false |
| `parent` | string | No | Parent task identifier for subtasks. This field is read-only. Use the 'move' method to change parent. |
| `status` | string ("needsAction" | "completed") | No | Current status of the task. Must be either 'needsAction' (task is pending) or 'completed' (task is done). |
| `deleted` | boolean | No | Whether the task has been deleted. Deleted tasks are marked but not immediately removed. Default: false |
| `task_id` | string | Yes | Identifier of the Google Task to be fully replaced within the specified task list. This must also be included in the 'id' field of the request body. |
| `position` | string | No | Position of the task among siblings. This field is read-only. Use the 'move' method to change position. |
| `completed` | string | No | Date/time when the task was marked as completed. Only applicable when status='completed'. Unlike 'due', this field preserves the time component. Accepts RFC3339 format. |
| `tasklist_id` | string | Yes | Identifier of the Google Task list that contains the task to be updated. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Task List

**Slug:** `GOOGLETASKS_UPDATE_TASK_LIST`

Updates the authenticated user's specified task list.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `title` | string | Yes | Title of the task list. Maximum length allowed: 1024 characters. |
| `tasklist_id` | string | Yes | Task list identifier. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |


## Triggers

### New Task Created

**Slug:** `GOOGLETASKS_NEW_TASK_CREATED_TRIGGER`

**Type:** poll

Triggers when a new task is created in a Google Tasks list.
    Uses timestamp filtering (updatedMin) to efficiently detect new tasks.

#### Configuration

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `interval` | number | No | Periodic Interval to Check for Updates & Send a Trigger in Minutes |
| `max_results` | integer | No | Maximum number of tasks to check in each poll (1-100) |
| `tasklist_id` | string | No | Identifier of the task list to monitor. Use '@default' for the primary task list or provide a specific task list ID from list_task_lists action. |

#### Payload

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `event_type` | string | No | Type of event that occurred |
| `task` | object | Yes | The newly created task |

### New Task List Created

**Slug:** `GOOGLETASKS_NEW_TASK_LIST_CREATED_TRIGGER`

**Type:** poll

Triggers when a new Google Tasks task list is created.
    This trigger monitors Google Tasks and fires when new task lists are detected.

#### Configuration

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `interval` | number | No | Periodic Interval to Check for Updates & Send a Trigger in Minutes |
| `max_results` | integer | No | Maximum number of task lists to check in each poll (1-100) |

#### Payload

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `event_type` | string | No | Type of event that occurred |
| `task_list` | object | Yes | The newly created task list |

### Task Details Changed

**Slug:** `GOOGLETASKS_TASK_DETAILS_CHANGED_TRIGGER`

**Type:** poll

Triggers when a specific task's details change.
    This trigger monitors a single Google Task and fires when any of its details
    (title, notes, status, due date, completion, position) are modified.

#### Configuration

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `interval` | number | No | Periodic Interval to Check for Updates & Send a Trigger in Minutes |
| `task_id` | string | Yes | The ID of the specific task to monitor for changes |
| `tasklist_id` | string | Yes | The ID of the task list containing the task to monitor |

#### Payload

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `changed_fields` | array | Yes | List of field names that changed |
| `event_type` | string | No | Type of event that occurred |
| `previous_task` | object | No | The previous task snapshot (None on first poll) |
| `task` | object | Yes | The current task with all details |

### Task List Changed

**Slug:** `GOOGLETASKS_TASK_LIST_CHANGED_TRIGGER`

**Type:** poll

Triggers when a task list changes (title or content updates).
    This trigger monitors a specific Google Tasks list and fires when changes are detected.

#### Configuration

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `interval` | number | No | Periodic Interval to Check for Updates & Send a Trigger in Minutes |
| `tasklist_id` | string | Yes | The unique identifier of the task list to monitor for changes. Use '@default' for the default task list. |

#### Payload

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `changed_fields` | array | No | List of fields that changed (e.g., 'title', 'updated') |
| `event_type` | string | No | Type of event that occurred |
| `task_list` | object | Yes | The task list with changed state |

### Task Updated

**Slug:** `GOOGLETASKS_TASK_UPDATED_TRIGGER`

**Type:** poll

Triggers when an existing task is updated in a Google Tasks list.
    This trigger monitors a specific task list and fires when tasks are modified.

#### Configuration

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `interval` | number | No | Periodic Interval to Check for Updates & Send a Trigger in Minutes |
| `max_results` | integer | No | Maximum number of tasks to check in each poll (1-100) |
| `show_completed` | boolean | No | Include completed tasks in the monitoring. Defaults to true. |
| `show_deleted` | boolean | No | Include deleted tasks in the monitoring. Defaults to false. |
| `tasklist_id` | string | No | Identifier of the task list to monitor. Use '@default' for the primary task list, or provide a specific task list ID from list_task_lists action. |

#### Payload

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `event_type` | string | No | Type of event that occurred |
| `task` | object | Yes | The updated task |
