Skip to main content
Glama

google-tasks-mcp

A local MCP server that lets Claude read and manage your Google Tasks. TypeScript, MCP SDK v2, stdio transport, Google Tasks API v1. No third-party Google libraries.

Tools

Tool

What it does

gtasks_list_task_lists

List your task lists

gtasks_create_task_list

Create a list

gtasks_delete_task_list

Delete a list and all its tasks (destructive)

gtasks_list_tasks

List tasks; filter by completed state and due/completed date range; paginated

gtasks_get_task

Get one task

gtasks_create_task

Create a task (title, notes, due date, optional parent)

gtasks_update_task

Change title, notes, due date or status (can clear due/notes with null, or reopen)

gtasks_complete_task

Mark a task as done

gtasks_delete_task

Delete a task (destructive)

All tools take response_format (markdown default, or json). list_id defaults to @default (your main list).

Google Tasks limits: due holds a day only (no time of day), there are no timed reminders, and tasks cannot be assigned to other people.

Related MCP server: Google Tasks MCP Server

Setup

Requires Node 20.3+.

npm install
npm run build

1. Create the Google OAuth client (one time, ~5 min)

  1. Open https://console.cloud.google.com/ and create a project (e.g. google-tasks-mcp).

  2. APIs & Services → Library → search Google Tasks API → Enable.

  3. APIs & Services → OAuth consent screen (or Google Auth platform):

    • User type External, fill app name and your email.

    • Audience / Test users: add your own Google account. (Leave the app in Testing; for a single user that is fine. Note that in Testing mode Google expires refresh tokens after 7 days. To avoid that, click Publish app; an unverified personal app still works for you, with a warning screen.)

    • Scopes: add https://www.googleapis.com/auth/tasks.

  4. APIs & Services → Credentials → Create credentials → OAuth client ID → application type Desktop app.

  5. Download JSON and save it as:

    • Windows: %USERPROFILE%\.google-tasks-mcp\credentials.json

    • macOS/Linux: ~/.google-tasks-mcp/credentials.json

    (Override the folder with the GOOGLE_TASKS_MCP_DIR environment variable.)

2. Authorize (one time)

npm run auth

Your browser opens on Google's consent page. The redirect comes back to a temporary 127.0.0.1 port on your machine, and the tokens are saved to ~/.google-tasks-mcp/token.json. Nothing is pasted into a chat or a prompt, and the tokens never live inside this repository (.gitignore also blocks credentials.json and token.json just in case).

To revoke access: https://myaccount.google.com/permissions.

3. Verify end to end

npm run smoke

Creates a throwaway list in your account, exercises every tool, then deletes the list.

Connect to Claude

Claude Code (local, stdio)

claude mcp add google-tasks --scope user -- node /absolute/path/to/google_tasks_mcp/dist/index.js

On Windows use the full path, e.g. node C:\Users\you\Documents\proyectos\google_tasks_mcp\dist\index.js. Check with claude mcp list.

Claude Desktop (local, stdio)

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "google-tasks": {
      "command": "node",
      "args": ["C:\\path\\to\\google_tasks_mcp\\dist\\index.js"]
    }
  }
}

claude.ai (web) and scheduled/cloud runs

claude.ai custom connectors only accept remote MCP servers, so this local stdio server cannot be added there directly. The options:

Option

Needs

Local (this repo): Claude Code / Claude Desktop

Nothing beyond the setup above. Tokens stay on your machine.

Remote custom connector for claude.ai

A public HTTPS URL serving MCP over Streamable HTTP, plus an OAuth 2.1 authorization layer of your own in front of it (so claude.ai can authenticate to your server), which in turn holds the Google tokens. That means hosting, TLS, token storage, and implementing the MCP authorization flow (the SDK has requireBearerAuth and OAuth examples). Substantially more work and a larger security surface.

If your automated daily summary runs locally (Claude Code or Claude Desktop on your PC), the local server is enough. Only a summary that runs in claude.ai's cloud needs the remote variant, which this repo does not implement yet.

Security notes

  • Scope is https://www.googleapis.com/auth/tasks (read and write Tasks only).

  • OAuth uses the authorization-code flow with PKCE and a random state, over a loopback redirect.

  • Tokens are written with mode 0600 outside the repo; they are never logged. Logging goes to stderr only.

  • Deleting a list deletes its tasks; the delete tools are marked destructiveHint, so clients can ask for confirmation.

Development

npm run dev      # run from source
npm run build    # compile to dist/
npx @modelcontextprotocol/inspector node dist/index.js

License

MIT

Available Tools

9 tools
gtasks_complete_taskComplete TaskA
Idempotent

Mark a task as completed. Example: "mark the bank call as done".

NameRequiredDescriptionDefault
list_idNoTask list ID from gtasks_list_task_lists. '@default' is the user's main list ('My Tasks').@default
task_idYesTask ID from gtasks_list_tasks
response_formatNo'markdown' for readable text, 'json' for structured datamarkdown

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the important behavioral traits: not read-only, open-world, idempotent, and not destructive. The description adds only the core action, without extra context such as whether completion is reversible or what happens if the task is already completed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences, front-loads the action, and uses a concrete example without unnecessary wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple three-parameter operation with full schema coverage and clear annotations, the description is adequate. It does not mention return behavior, but no output schema exists and the main action is clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so task_id, list_id, and response_format are already documented in the schema. The description does not add meaning beyond the schema, which is acceptable at the baseline for fully covered parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: "Mark a task as completed." This clearly distinguishes completion from sibling operations like update_task or delete_task, though it does not explicitly name those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The example "mark the bank call as done" implies the intended use case, but it does not explain when to use this instead of gtasks_update_task or when not to use it. Guidance is present only by example.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtasks_create_taskCreate TaskA

Create a task in a list.

The due date is a day only (YYYY-MM-DD); Google Tasks cannot store a time or a reminder. Example: "remind me to call the bank on 2026-11-10" -> title="Call the bank", due="2026-11-10".

NameRequiredDescriptionDefault
dueNoDate as YYYY-MM-DD. Google Tasks stores the day only, never a time.
notesNoLonger description or details
titleYesTask title
parentNoParent task ID, to create this as a subtask
list_idNoTask list ID from gtasks_list_task_lists. '@default' is the user's main list ('My Tasks').@default
response_formatNo'markdown' for readable text, 'json' for structured datamarkdown

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is supplied. The description adds one genuinely non-obvious behavior beyond that: Google Tasks cannot store a time or a reminder. It does not mention that repeating the call duplicates tasks (relevant given idempotentHint=false) or what the call returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short paragraphs plus a single arrow-style example, with the core action front-loaded and the date constraint immediately after. No sentence is redundant; the example is the only elaboration and it carries real information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter create tool with no output schema and full schema coverage, the description fills the highest-risk gap (day-only due dates, no reminders) and shows a realistic invocation. It is nearly sufficient, with the only real omission being the absence of any note about duplicate creation on retry.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage the baseline is 3, and the example earns a step up because it demonstrates how to decompose a natural-language request: the action becomes title="Call the bank" and the date becomes due="2026-11-10", while the word "remind" is correctly dropped. That mapping guidance is meaningfully beyond the field descriptions, though other parameters (notes, parent, list_id, response_format) get no mention.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource ("Create a task in a list") that an agent can distinguish from gtasks_create_task_list, gtasks_update_task, and gtasks_get_task without opening the schema. It stops short of naming any sibling explicitly, so differentiation is inferred from the verb rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the name and the worked example make clear this is for creating new tasks, and the example shows how to map a user utterance into title/due. There is no explicit when-to-use or when-not-to-use guidance, e.g. no pointer to gtasks_update_task for modifying an existing task or a warning that a re-run creates a duplicate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtasks_create_task_listCreate Task ListB

Create a new Google Tasks list. Example: "create a list called Groceries".

NameRequiredDescriptionDefault
titleYesName of the new list
response_formatNo'markdown' for readable text, 'json' for structured datamarkdown

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=false, openWorldHint=true, and destructiveHint=false, so the mutation and safety profile are covered. The description adds no behavioral context beyond that — nothing about duplicate-name handling, the 1024-character title limit, whether the list is created in the authenticated user's account, or what happens on failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action, with zero filler. The example is brief and reinforces the required parameter, though it occupies space without adding much the schema does not already say.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter create tool with full schema coverage and annotations, the description is minimally sufficient. It omits what the tool returns (no output schema exists) and any note about duplicate or conflicting list names, which an agent would benefit from knowing before invoking a non-idempotent create.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including constraints (minLength 1, maxLength 1024) and the response_format enum, so the schema does the heavy lifting. The example clarifies that 'title' is a human-readable list name, which is a small but real addition. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ("Create a new Google Tasks list"), which is clearly distinguishable from siblings such as gtasks_list_task_lists and gtasks_delete_task_list. It does not explicitly name those siblings, but the create-vs-list-vs-delete contrast is unambiguous from the verb alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The example phrase "create a list called Groceries" implicitly signals when to use it, but there is no statement about when not to use it, no mention of checking for existing lists first, and no reference to alternatives. Usage is inferable rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtasks_delete_taskDelete TaskA
DestructiveIdempotent

Delete a task (and its subtasks). To keep a record, use gtasks_complete_task instead. Confirm with the user first.

NameRequiredDescriptionDefault
list_idNoTask list ID from gtasks_list_task_lists. '@default' is the user's main list ('My Tasks').@default
task_idYesTask ID from gtasks_list_tasks

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds genuinely new behavior: deletion cascades to subtasks and user confirmation is expected before invoking — both beyond what the annotations convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action and its cascade effect, followed by the alternative and the confirmation requirement. No wasted wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive two-parameter tool with full schema coverage and rich annotations, the description covers the key risks (subtask cascade, irreversibility implied by the alternative suggestion) and the confirmation step. No output schema exists, but a delete operation's return value is not critical to explain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both list_id and task_id documented in the schema including their source tools and the '@default' meaning. The description adds no parameter-level detail, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Delete a task') and adds the crucial scope detail that subtasks are deleted too. It is clearly distinguishable from gtasks_complete_task, which it names explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit alternative for the 'keep a record' case (gtasks_complete_task) and a prerequisite ('Confirm with the user first'). It does not spell out when deletion is inappropriate beyond that, but the routing guidance is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtasks_delete_task_listDelete Task ListA
DestructiveIdempotent

Permanently delete a task list AND all the tasks in it. Cannot be undone. The default list cannot be deleted. Confirm with the user first.

NameRequiredDescriptionDefault
list_idYesID of the list to delete (from gtasks_list_task_lists)

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true, but the description adds information annotations cannot convey: the deletion cascades to all contained tasks, it is irreversible, and the default list is protected. The confirmation requirement also signals a human-in-the-loop expectation, which is meaningful behavioral context beyond the hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the destructive outcome and cascade, followed by the irreversibility warning, the exclusion, and the confirmation requirement. No filler or repetition of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter delete operation with no output schema, everything an agent needs is present: what is destroyed, that it is permanent, what cannot be targeted, and that user confirmation is required. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter already documents its provenance ('from gtasks_list_task_lists'), so the description need not re-explain list_id. Baseline 3 applies because the description adds no additional semantics about the identifier.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Permanently delete a task list') plus the cascade scope ('AND all the tasks in it'), which clearly separates it from the sibling gtasks_delete_task that removes a single task. An agent can pick correctly without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a required precondition ('Confirm with the user first') and a hard exclusion ('The default list cannot be deleted'), which prevents the most likely misuse. It does not name sibling alternatives (e.g., gtasks_delete_task for single tasks), but for a delete tool the exclusions are the practically important part.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtasks_get_taskGet TaskB
Read-onlyIdempotent

Get one task by ID, including notes and due date.

NameRequiredDescriptionDefault
list_idNoTask list ID from gtasks_list_task_lists. '@default' is the user's main list ('My Tasks').@default
task_idYesTask ID from gtasks_list_tasks
response_formatNo'markdown' for readable text, 'json' for structured datamarkdown

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is fully covered elsewhere. The description adds that notes and due date are part of the payload, which is useful return-shape context given there is no output schema, but it does not mention failure behavior for a missing or invalid task_id.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence with the key identifier constraint front-loaded and no filler. It is efficient, though the brevity leaves it close to under-specified rather than genuinely tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, fully annotated read tool with complete schema coverage, the description covers the core fetch and hints at returned fields. It omits what happens on a not-found task and does not note that list_id scopes the lookup, both of which an agent would want when calling it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with task_id, list_id (including the '@default' meaning) and the response_format enum all documented in the schema itself. The description only echoes the ID-based lookup and adds no format or scoping detail beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get one task by ID') and names the two fields the caller receives, so an agent can distinguish a single-record fetch from the sibling gtasks_list_tasks. It stops short of explicitly naming that sibling as the alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'by ID' implies a lookup when the identifier is already known, but there is no explicit statement of when to use this versus gtasks_list_tasks, nor any prerequisite that the ID must come from gtasks_list_tasks (that detail lives only in the schema).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtasks_list_task_listsList Task ListsA
Read-onlyIdempotent

List the user's Google Tasks lists (id and title).

Use the returned id as list_id in the other tools. Example: "what lists do I have?"

NameRequiredDescriptionDefault
limitNoMaximum lists to return
page_tokenNonext_page_token from a previous call
response_formatNo'markdown' for readable text, 'json' for structured datamarkdown

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, so the safety profile needs no restating. The description adds the useful fact that results carry id and title and that the id is the join key for siblings, but it says nothing about pagination or result caps despite exposing a page_token and a 100-item limit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences plus a short example, with the core action front-loaded and every element earning its place. Nothing is repeated from the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-required-parameter list tool with a fully documented schema and no output schema, the description covers purpose, return fields, and the cross-tool linkage. Only pagination behavior is unaddressed, a minor omission given page_token's own schema description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so limit, page_token, and response_format are each documented in the schema itself and the baseline is 3. The description adds no additional meaning about when to raise the limit or how to page, so it neither compensates nor detracts.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"List the user's Google Tasks lists" gives a specific verb and resource, and "(id and title)" discloses what comes back, which cleanly separates it from gtasks_list_tasks and gtasks_get_task. It stops short of naming a sibling explicitly, but the resource distinction is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description supplies a concrete trigger example ("what lists do I have?") and explains the downstream usage of the returned id as list_id in the other tools, which is strong chaining guidance. It offers no when-not conditions or note on when to re-fetch versus cache, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtasks_list_tasksList TasksA
Read-onlyIdempotent

List tasks in one list, optionally filtered by completion and due date.

By default only pending (not completed) tasks are returned. Dates are YYYY-MM-DD and inclusive. Examples:

  • "what is due today or overdue?" -> due_to=

  • "pending this week" -> due_from=, due_to=

  • "what did I finish this week?" -> include_completed=true, completed_from= Tasks without a due date are returned only when no due_from/due_to filter is set.

NameRequiredDescriptionDefault
limitNoMaximum tasks to return
due_toNoOnly tasks due on or before this day (YYYY-MM-DD)
list_idNoTask list ID from gtasks_list_task_lists. '@default' is the user's main list ('My Tasks').@default
due_fromNoOnly tasks due on or after this day (YYYY-MM-DD)
page_tokenNonext_page_token from a previous call
completed_toNoOnly tasks completed on or before this day (YYYY-MM-DD)
completed_fromNoOnly tasks completed on or after this day (YYYY-MM-DD)
response_formatNo'markdown' for readable text, 'json' for structured datamarkdown
include_completedNoAlso return completed tasks

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description wisely spends its budget on behavior instead: the pending-only default, inclusive date semantics, and the non-obvious rule that undated tasks vanish once a due_from/due_to filter is set. It omits any mention of pagination or result-size behavior, which is the remaining behavioral gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the one-sentence purpose, followed by default behavior and then three intent-to-parameter examples that each carry routing value. Slightly repetitive between the prose default and the example lines, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With nine optional parameters and no output schema, the description adequately covers default filtering, date format, and the undated-task edge case. It leaves pagination (page_token, next_page_token) unaddressed, so an agent has no description-level cue that results may be truncated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are already documented; the description nevertheless adds real meaning beyond the schema by clarifying that due ranges are inclusive and by demonstrating how date filters and include_completed combine in practice. The interaction between include_completed and the completed_from/completed_to range is only shown by example rather than stated as a rule.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource plus the scoping constraint ('in one list'), which distinguishes it from gtasks_get_task (single task) and gtasks_list_task_lists (lists themselves). It stops short of naming those siblings explicitly, so an agent infers the boundary rather than being told it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear default (pending only) and maps concrete user intents to parameter combinations ('what is due today or overdue?' -> due_to=<today>), which is strong when-to-use guidance. It does not state when to prefer a different tool or what to do when the list_id is unknown beyond the schema note pointing at gtasks_list_task_lists.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gtasks_update_taskUpdate TaskA
Idempotent

Change a task's title, notes, due date or status. Only the fields you pass are changed.

Pass due=null to remove the due date and notes=null to clear the notes. Set status='needsAction' to reopen a completed task. To simply finish a task use gtasks_complete_task.

NameRequiredDescriptionDefault
dueNoNew due date YYYY-MM-DD, or null to clear
notesNoNew notes, or null to clear
titleNoNew title
statusNo'completed' or 'needsAction' (reopen)
list_idNoTask list ID from gtasks_list_task_lists. '@default' is the user's main list ('My Tasks').@default
task_idYesTask ID from gtasks_list_tasks
response_formatNo'markdown' for readable text, 'json' for structured datamarkdown

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-read-only, idempotent, non-destructive, open-world behavior, but they say nothing about partial-update semantics. The description adds the key trait that unspecified fields are left untouched, plus that due=null and notes=null actively clear data and that status='needsAction' reopens. It does not mention response shape or what happens on an invalid task_id, which keeps it off a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core mutation semantics, then the null-clearing edge cases, then the sibling redirect. No filler and no restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter mutation tool with full schema coverage and no output schema, the description covers partial updates, clearing, reopening, and the sibling alternative. It leaves the return value and error behavior unstated, which is the only real gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds a distinction the schema does not encode: omitting a field leaves it unchanged versus passing null clears it. The reopen behavior of status='needsAction' is repeated from the schema and adds no new meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Change a task's title, notes, due date or status') and immediately narrows scope with 'Only the fields you pass are changed.' The explicit pointer to gtasks_complete_task separates it from the nearest sibling without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names an alternative tool (gtasks_complete_task) and the exact condition that should route the agent there instead ('to simply finish a task'). It also gives the when-to-use rule for the null arguments, so both the tool choice and the invocation mode are covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updatesv1.0.0
    • First observedgtasks_complete_task
    • First observedgtasks_create_task
    • First observedgtasks_create_task_list
    • First observedgtasks_delete_task
    • First observedgtasks_delete_task_list
    • First observedgtasks_get_task
    • First observedgtasks_list_task_lists
    • First observedgtasks_list_tasks
    • First observedgtasks_update_task

TDQS

A3.9/5.0

Scored across 9 tools

Disambiguation4/5

Each tool targets a distinct resource+action pair, and descriptions explicitly route overlapping cases (e.g. update_task says to use gtasks_complete_task for finishing a task, delete_task says to use complete_task to keep a record). The only real overlap is that update_task can set status, which duplicates complete_task, but the descriptions handle it well.

Naming Consistency5/5

Every tool follows the same gtasks_<verb>_<noun> snake_case pattern (create/delete/list/get/update/complete). No style mixing or inconsistent verb conventions.

Tool Count5/5

Nine tools cleanly cover the domain: three for lists, six for tasks. Each tool earns its place with no redundant or filler operations.

Completeness4/5

Full lifecycle coverage for tasks (create, get, list, update, complete, delete) and near-full for lists (create, list, delete). Minor gaps: no way to rename a task list, and no explicit tools for subtasks, moving/reordering tasks, or clearing completed tasks, though most can be worked around.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers