# 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
- **Tools:** 17
- **Triggers:** 0
- **Slug:** `GOOGLETASKS`
- **Version:** 20260217_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 Devcaster, see [How to create OAuth2 credentials for Google Apps](https://devcaster.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://devcaster.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 "Devcaster" instead of my app?

By default, the consent screen uses Devcaster'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 the OAuth consent screen](/docs/auth-configuration/custom-auth-configs#white-labeling-the-oauth-consent-screen).

### 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 Devcaster'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.

### Bulk Insert Tasks

**Slug:** `GOOGLETASKS_BULK_INSERT_TASKS`

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).

### Clear tasks

**Slug:** `GOOGLETASKS_CLEAR_TASKS`

Permanently clears all completed tasks from a specified Google Tasks list; this action is destructive and idempotent.

### Create a task list

**Slug:** `GOOGLETASKS_CREATE_TASK_LIST`

Creates a new task list with the specified title.

### Delete task

**Slug:** `GOOGLETASKS_DELETE_TASK`

Deletes a specified task from a Google Tasks list. Both tasklist_id and task_id are required parameters. Important: 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.

### 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.

### 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.

### 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.

### 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.

### 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.

### List task lists

**Slug:** `GOOGLETASKS_LIST_TASK_LISTS`

Fetches the authenticated user's task lists from Google Tasks; results may be paginated.

### 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.

### 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)

### 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.

### Patch task list

**Slug:** `GOOGLETASKS_PATCH_TASK_LIST`

Updates the title of an existing Google Tasks task list.

### Update Task

**Slug:** `GOOGLETASKS_UPDATE_TASK`

Updates the specified task.

### Update Task List

**Slug:** `GOOGLETASKS_UPDATE_TASK_LIST`

Updates the authenticated user's specified task list.
