Skip to main content
Glama

Google Tasks MCP

CI

概述

Google Tasks MCP 是一个本地 Python MCP 服务器,可让兼容的 AI 代理读取并管理已认证用户的 Google Tasks。它使用 Google 官方 Tasks API、OAuth 2.0 桌面应用凭据,以及基于 stdio 的 MCP Python SDK。

本仓库是 Google Services MCP collection 中的一个组件。

Git 仓库名为 google-task-mcp(单数),而 Python 发行包和命令行命令名为 google-tasks-mcp(复数)。下文的路径和命令均保留这些名称。

该包当前在 pyproject.toml 中被归类为 Alpha。

Related MCP server: Google Tasks MCP Server

功能

  • 列出、查看、创建、重命名和删除任务列表。

  • 使用分页列出和筛选任务。

  • 创建、编辑、完成、重新打开、移动、重新排序和删除任务。

  • 使用 parent 和 previous 创建和移动子任务。

  • 通过 Google Tasks 的 clear 操作隐藏已完成的任务。

  • 保留省略更新字段与使用显式 null 清除 notes 或 due 之间的区别。

  • 发布 MCP 安全注解,并要求对破坏性操作进行显式确认。

  • 将 OAuth 刷新令牌存储在仓库之外,并使用仅所有者(owner-only)权限。

  • 完全基于 Python 运行,无需 Node.js。

MCP 工具

工具

用途

list_task_lists

列出任务列表

get_task_list

获取一个任务列表

create_task_list

创建任务列表

update_task_list

重命名任务列表

delete_task_list

删除任务列表;需要 confirm: true

list_tasks

分页列出或筛选任务

get_task

获取单个任务

create_task

创建任务或子任务

update_task

修改标题、备注、截止日期或状态

complete_task

将任务标记为已完成

reopen_task

将任务标记为需要操作

move_task

对任务重新排序、重新设置父任务,或移动到另一个列表

delete_task

删除任务;需要 confirm: true

clear_completed_tasks

清除已完成的任务;需要 confirm: true

Google Tasks 只存储截止时间戳中的日期部分;API 会丢弃提供的时间部分。任务标题最多 1,024 个字符,备注最多 8,192 个字符。

所有输入对象都会拒绝未知字段。ID 和其他必需的字符串不能为空。完整的输入约定如下:

工具

参数

list_task_lists

max_results(整数 1–100,默认 100);可选的 page_token

get_task_list

task_list_id

create_task_list

title(去除首尾空格,1–1,024 个字符)

update_task_list

task_list_id、title(去除首尾空格,1–1,024 个字符)

delete_task_list

task_list_id、字面量 confirm: true

list_tasks

task_list_id;max_results(整数 1–100,默认 100);可选的 page_token;show_completed(默认 true)、show_deleted(默认 false)、show_hidden(默认 false);可选的 due_min、due_max、completed_min、completed_max 和 updated_min

get_task

task_list_id、task_id

create_task

task_list_id、title;可选的 notes(最多 8,192 个字符)、due、parent_task_id 和 previous_task_id

update_task

task_list_id、task_id,以及 title、notes、due 或 status(needsAction 或 completed)中的至少一项。

complete_task

task_list_id、task_id

reopen_task

task_list_id、task_id

move_task

task_list_id、task_id;可选的 destination_task_list_id、parent_task_id 和 previous_task_id

delete_task

task_list_id、task_id、字面量 confirm: true

clear_completed_tasks

task_list_id、字面量 confirm: true

list_tasks 的这五个时间过滤条件必须采用带时区的 RFC 3339 时间戳。due 的值也可以使用 YYYY-MM-DD;服务器会校验日历日期,并在调用 Google 之前将 due 值规范到 UTC。要在 Google 第一方客户端中看到已完成的任务,请同时将 show_completed 和 show_hidden 设为 true。

对于 update_task,省略应保持不变的字段,并且只在清除 notes 或 due 时才可显式使用 null。对 title 或 status 使用显式 null 会在任何 Google API 调用之前被拒绝。

列表操作返回 task_lists 或 tasks,以及 next_page_token。除删除操作和清除操作返回一个简短的确认结果外,其他成功的调用都返回 Google 的资源对象。结果以 MCP 文本内容中的 JSON 形式返回;校验、身份验证和 Google API 的错误会作为 MCP 工具错误返回。clear_completed_tasks 使用 Google Tasks 的 clear 操作,它只隐藏已完成的任务,而不会永久删除每个任务。

系统要求

  • Python 3.11 或更高版本,对应 pyproject.toml 中的 requires-python = ">=3.11"。如下显式指定解释器时,示例使用 Python 3.12。

  • uv 或其他 Python 包安装器。

  • 一个 Google 账号。

  • 一个启用了 Google Tasks API 的 Google Cloud 项目。

  • 一个支持 stdio 服务器的本地 MCP 客户端。

安装

克隆仓库并安装开发环境:

git clone https://github.com/phamviet86/google-task-mcp
cd google-task-mcp
uv sync --extra dev

要构建 wheel 和源码分发包:

uv build

对于不可变部署,专用虚拟环境中的特定 Git 提交:

uv venv --python /usr/bin/python3.12 /opt/google-tasks-mcp/venv
uv pip install \
  --python /opt/google-tasks-mcp/venv/bin/python \
  "git+https://github.com/phamviet86/google-task-mcp@<commit>"

安装后的服务器入口为 /opt/google-tasks-mcp/venv/bin/google-tasks-mcp。

Google Cloud 与 OAuth 设置

  1. 打开 Google Cloud Console。

  2. 创建或选择一个项目。

  3. 在 API 与服务 → 库 下启用 Google Tasks API。

  4. 配置 OAuth 同意屏幕。

  5. 在 API 与服务 → 凭据 下,创建应用类型为 桌面应用 的 OAuth 客户端 ID。

  6. 将 OAuth 桌面客户端 JSON 下载为 client_secret.json,并保护存放于本仓库之外。

从可以打开浏览器同意流程的桌面设备上授权:

uv run google-tasks-mcp-auth \
  --client-secret /secure/google/client_secret.json

该命令只接受包含顶层 installed 对象的 Google OAuth 桌面客户端 JSON。由于此服务器会暴露读写操作,因此它请求完整的 https://www.googleapis.com/auth/tasks 范围。令牌默认路径为:

~/.config/google-tasks-mcp/token.json

后续运行会自动刷新已过期的凭据。刷新在进程内受保护,因此并发工具调用不会重复刷新同一个其次,刷新后的授权用户令牌会在服务构建前通过仅所有者的权限以原子方式持久化。同一个 OAuth Desktop 客户端定义也可以用于授权其他本地应用,但每个服务都应保留自己精确匹配范围自己的令牌。不要将范围更宽的 Google Workspace 令牌用作本服务的令牌。

环境变量

变量

是否必填

默认值

用途

GOOGLE_TOKEN_FILE

否

~/.config/google-tasks-mcp/token.json

覆盖 Google Tasks OAuth 令牌路径

GOOGLE_API_NUM_RETRIES

否

3

每个请求的 Google 客户端重试次数;0 到 10 的整数

GOOGLE_TOKEN_FILE 中的 ~ 会被展开。相对路径的令牌覆盖相对于 MCP 子进程的工作目录,因此在客户端配置中请使用绝对路径。重试值作为 execute(num_retries=...) 传给每个 Google 请求;SDK 会应用随机指数退避。默认值 3 表示一次初始尝试加上最多三次重试。将其设置为 0 可禁用重试。

例如,在指定的受保护路径上授权并存储令牌:

GOOGLE_TOKEN_FILE=/secure/google/tasks-token.json \
uv run google-tasks-mcp-auth \
  --client-secret /secure/google/client_secret.json

将相同的 GOOGLE_TOKEN_FILE 值传递给 MCP 服务器。切勿提交 OAuth 客户端 JSON 或生成的令牌。

运行服务器

从开发检出目录:

uv run google-tasks-mcp

google-tasks-mcp 不接受任何命令行参数。授权辅助程序接受一个必需参数 --client-secret PATH;使用 google-tasks-mcp-auth --help 查看其生成的 CLI 帮助。

MCP 客户端通常会直接启动虚拟环境控制台脚本:

/absolute/path/google-task-mcp/.venv/bin/google-tasks-mcp

服务器始终通过 stdio 通信,不会打开网络端口。

MCP 客户端配置

使用绝对路径,并在更改配置后重启 MCP 客户端。

Codex

将服务器添加到 ~/.codex/config.toml 或受信任的项目 .codex/config.toml 中:

[mcp_servers.google_tasks]
command = "/absolute/path/google-task-mcp/.venv/bin/google-tasks-mcp"

[mcp_servers.google_tasks.env]
GOOGLE_TOKEN_FILE = "/Users/you/.config/google-tasks-mcp/token.json"
GOOGLE_API_NUM_RETRIES = "3"

有关当前客户端配置的详细信息,请参阅官方 Codex MCP 指南。

Hermes Agent

Hermes 从 ~/.hermes/config.yaml 读取 MCP 服务器:

mcp_servers:
  google_tasks:
    command: "/absolute/path/google-task-mcp/.venv/bin/google-tasks-mcp"
    args: []
    env:
      GOOGLE_TOKEN_FILE: "/Users/you/.config/google-tasks-mcp/token.json"
      GOOGLE_API_NUM_RETRIES: "3"
    timeout: 120
    connect_timeout: 30

在服务器的 env 映射中直接使用绝对令牌路径。不要为完整工具集启用 supports_parallel_tool_calls,因为它包含对共享任务列表的写入操作。请参阅官方 Hermes MCP 指南。

通用 MCP 客户端

对于使用 JSON 配置的客户端,等效的传输设置如下:

{
  "mcpServers": {
    "google_tasks": {
      "command": "/absolute/path/google-task-mcp/.venv/bin/google-tasks-mcp",
      "env": {
        "GOOGLE_TOKEN_FILE": "/secure/google/tasks-token.json",
        "GOOGLE_API_NUM_RETRIES": "3"
      }
    }
  }
}

配置语法因客户端而异;请使用客户端的原生 MCP 适配器,而不是假设每个客户端都接受相同的 JSON 结构。

用法和示例

一个典型的安全工作流程是:

  1. 调用 list_task_lists 将人类可读的列表名称解析为其 ID。

  2. 在修改现有任务之前,先调用 list_tasks 或 get_task。

  3. 使用写入工具,例如 create_task、update_task 或 move_task。

  4. 在调用 delete_task_list、delete_task 或 clear_completed_tasks 并设置 confirm: true 之前,先获得用户的明确确认。

Python 实现保留了之前 TypeScript 工具的名称、参数、分页默认值、安全注释、日期规范化和省略与 null 的更新行为。

没有本地任务数据库、缓存、索引、后台同步任务、webhook 或网络监听器。每次工具调用都通过官方 Python 客户端访问 Google Tasks API v1。此包管理的唯一持久性本地状态是 OAuth 授权用户令牌。

每次 MCP 工具调用都会构建一个新的 Google Tasks 服务,并在一个工作线程中执行完整操作。没有 googleapiclient 服务或 httplib2 传输在线程之间共享。这遵循了 Google 客户端库的线程安全指南,同时仍允许独立的 MCP 调用并发运行。该服务在每次调用后(包括请求执行失败时)都会在同一个工作线程中关闭,因此其底层套接字不会被保留。

故障排除

  • 身份验证错误: 再次运行 google-tasks-mcp-auth,并确认 MCP 子进程接收到相同的 GOOGLE_TOKEN_FILE 值。

  • 令牌路径看起来正确但未找到: 使用绝对路径 GOOGLE_TOKEN_FILE;相对路径是从 MCP 子进程的工作目录中解析的。

  • 重试配置错误: 将 GOOGLE_API_NUM_RETRIES 设置为 0 到 10 之间的整数。

  • 未返回刷新令牌: 撤销应用程序现有的 Google 账户授权,然后按照其错误消息的指示再次运行授权辅助程序。

  • 过期令牌没有刷新令牌: 再次运行授权辅助程序;服务器拒绝使用无法刷新的凭据构建服务。

  • 浏览器流程无法打开: 在可以完成已安装应用 OAuth 流程的桌面上进行授权,然后在需要时保护并传输生成的服务特定令牌。

  • 工具缺失: 重启 MCP 客户端并验证绝对命令路径。新的 MCP 客户端应恰好发现 14 个工具。

  • 到期时间缺失: Google Tasks 仅保留到期时间戳的日期部分。

  • 从 TypeScript 版本迁移: 保留受保护的令牌,单独安装 Python 包,将客户端指向 google-tasks-mcp,通过实时的读/写/清理检查验证所有 14 个工具,然后才移除旧的 Node.js 检出目录。

安全

根据安全策略私下报告漏洞。切勿在公开问题中包含凭据或真实任务数据。

  • 将 client_secret.json 和 OAuth 令牌置于源代码控制之外,并限制其文件系统权限。

  • 使用专用的令牌目录:授权会将其目录设置为模式 0700,并在 POSIX 系统上以模式 0600 原子地写入令牌。

  • 仅授予此服务使用的 Google Tasks 范围,并为其他 Google 服务保留单独的令牌。

  • 将创建、更新、移动、清除和删除操作视为写入操作。破坏性工具需要明确确认,但本地账户和 MCP 客户端仍控制对服务器的访问。

  • 对于单用户单工作站或 VPS,stdio 加上受保护的本地令牌是最简单的部署方式。多用户托管服务需要每个用户的 OAuth 会话、加密的服务器端令牌存储以及适当的网络传输;切勿在用户之间共享一个刷新令牌。

开发和贡献

在提交拉取请求之前,请阅读 CONTRIBUTING.md。参与受贡献者契约行为准则约束。

在提交更改之前,运行所有配置的检查:

uv run ruff format --check .
uv run ruff check .
uv run mypy
uv run pytest

回归测试套件针对一个模拟的 Google Tasks 客户端调度所有 14 个工具,验证破坏性确认,并测试省略与更新为 null 的行为。

对于非安全漏洞和功能请求,请使用仓库的结构化问题模板。

许可证

MIT

参考

Available Tools

14 tools
clear_completed_tasksA
Destructive

Hide all completed tasks in a list. Requires explicit confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true after the user explicitly confirms clearing completed tasks
task_list_idYesGoogle task list ID; obtain it from list_task_lists

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark destructiveHint=true, so the description is not burdened with that. It adds the safety-critical behavior that explicit confirmation is required, and clarifies the operation is a 'hide' rather than a per-task delete. No contradiction with annotations.

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 sentences, each earning its place: the first states the action and scope, the second states the confirmation requirement. No filler, front-loaded with the primary behavior.

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 two-parameter, destructive tool with full schema coverage and annotations, the description provides the essential action and confirmation requirement. It could mention reversibility or side effects of 'hide', but an agent has enough information to invoke the tool correctly.

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% with detailed descriptions for both confirm and task_list_id, so the description need not elaborate. The phrase 'Requires explicit confirmation' mostly mirrors the schema's confirm description and adds no extra parameter-level meaning. Baseline 3 is appropriate.

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?

Description uses a specific verb and resource: 'Hide all completed tasks in a list.' It clarifies the tool name's 'clear' as 'hide' and clearly distinguishes this from single-task siblings like complete_task and delete_task. The scope and action are 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?

Provides a clear context: use when you want to hide completed tasks in a list, and notes the confirmation prerequisite. It does not explicitly name alternatives or exclusions, but the purpose is specific enough for an agent to select it over single-task tools.

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

complete_taskC
DestructiveIdempotent

Mark a task completed.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesGoogle task ID; obtain it from list_tasks
task_list_idYesGoogle task list ID; obtain it from list_task_lists

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, and idempotentHint=true, so the safety and repeat-call profile is covered. The description adds nothing beyond that — it does not mention reversibility, that reopen_task can undo it, or auth requirements.

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?

A single front-loaded sentence with zero waste. It is efficient, though arguably terse enough to leave gaps the other dimensions penalize.

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 two-parameter mutation tool with annotations covering the safety profile and no output schema, the minimum is met. Still, no usage routing, no return behavior, and no mention of interactions with reopen_task/delete_task leaves the definition thin.

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% with two fully described parameters, so the schema carries the meaning. The description adds no format or sourcing detail beyond the schema's own notes.

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 (mark completed) and resource (task), so the operation is unambiguous. It does not distinguish itself from siblings like update_task, delete_task, or reopen_task, which occupy nearby semantic space.

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?

There is no statement of when to use this tool versus update_task (which can also alter status) or reopen_task, and no prerequisites called out beyond what the schema already says. Usage is only implied by the verb.

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

create_taskA

Create a task, optionally as a subtask or after a sibling.

ParametersJSON Schema
NameRequiredDescriptionDefault
dueNoDue date as YYYY-MM-DD or RFC 3339. Google Tasks stores only the date and discards the time.
notesNo
titleYes
task_list_idYesGoogle task list ID; obtain it from list_task_lists
parent_task_idNo
previous_task_idNo

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already indicate this is a write operation (readOnlyHint=false). The description adds context about subtask and sibling semantics, which goes beyond the schema, but it does not disclose return value, side effects, or potential constraints (e.g., parent_task_id must belong to the same list). This is modest additional transparency.

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 a single sentence that is front-loaded with the core action and then adds the optional placement behavior. It contains zero filler and is efficiently structured.

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?

The description is minimal: it covers placement but omits return value (no output schema present) and does not mention relationships between parent_task_id/previous_task_id and task_list_id. While the schema covers required fields, an agent might need more guidance on expected behavior or error cases. For a relatively simple create operation, the description is adequate but not rich.

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 schema description coverage at only 33%, the description compensates for the two most ambiguous parameters: parent_task_id is explained as creating a subtask, and previous_task_id as placing after a sibling. Other parameters are either self-explanatory or documented in the schema (due, task_list_id). This adds meaningful clarity.

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?

The description clearly states the action ('create') and resource ('a task'), and adds placement options ('as a subtask or after a sibling') that distinguish it from other create/update tools in the sibling list. There is no ambiguity about what this tool does.

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 description implies usage for creating tasks and mentions optional subtask/sibling placement, but does not explicitly contrast with alternatives like create_task_list or update_task. An agent can infer when to use it, but the description provides no explicit when-not or alternative routing.

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

create_task_listC

Create a Google task list.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes

TDQS

C2.9/5.0
Behavior2/5

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

The description discloses only that it creates a task list, which matches the readOnlyHint=false annotation, but adds no behavioral context beyond that. It does not mention permission requirements, side effects (despite openWorldHint=true), or what happens on success. The burden of disclosure falls entirely on the description since annotations are minimal, and it fails to provide any additional transparency.

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?

The description is a single, short sentence that is front-loaded and free of fluff. It efficiently states the tool's purpose, though it under-specifies other needed details; this is more a completeness issue than a conciseness one.

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

Completeness2/5

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

For a creation tool with no output schema, the description should at least indicate the expected output (e.g., the created list's ID) or any unique behavior. It does neither, leaving the agent without essential information about the outcome of the call.

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

Parameters2/5

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

Schema coverage is 0%, meaning the description must compensate for the lack of parameter documentation, but it does not explain the 'title' parameter at all. The parameter is self-explanatory from its name, but the description does not add any meaning beyond the schema's min/max constraints.

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?

The description clearly states the action ('Create') and the resource ('Google task list'), which unambiguously differentiates it from sibling tools like list_task_lists, get_task_list, update_task_list, and delete_task_list. The verb and object are specific enough that an agent would not confuse it with create_task (a task, not a list).

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?

There is no guidance on when to use this tool versus alternatives—no mention of distinguishing from create_task or any preconditions. The description only states what it does, not the context in which it should be chosen over siblings.

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

delete_taskA
Destructive

Permanently delete a task. Requires explicit confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true after the user explicitly confirms deletion
task_idYesGoogle task ID; obtain it from list_tasks
task_list_idYesGoogle task list ID; obtain it from list_task_lists

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate destructive=true, and the description adds that deletion is permanent and requires explicit confirmation. This provides useful safety context about irreversibility and user consent. No contradiction with annotations; readOnlyHint=false is consistent with the write operation.

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 with no filler. The core action is front-loaded, and the confirmation requirement is the only additional essential detail.

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 delete operation, the schema and annotations together cover the required IDs, the confirmation mechanism, and destructiveness. The description adds permanence and consent. There is no output schema, so omitting return-value details is acceptable. Minor gaps like behavior on nonexistent tasks are not critical.

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?

Input schema coverage is 100%, and each parameter is already well documented: task_id and task_list_id explain where to obtain them, and confirm explains the const=true requirement. The description adds no new parameter details beyond reinforcing the confirmation requirement, matching the baseline for high schema coverage.

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?

The description states a specific verb ('delete') and resource ('a task'), with 'Permanently' adding important scope. It is clearly distinguishable from sibling tools like complete_task, delete_task_list, and clear_completed_tasks, so an agent can select it correctly without opening schemas.

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 description gives a clear precondition: explicit confirmation is required before calling. However, it does not explicitly contrast with sibling operations (e.g., using complete_task instead of deletion, or delete_task_list for removing an entire list), so usage guidance is only implied rather than fully spelled out.

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

delete_task_listA
Destructive

Permanently delete a Google task list. Requires explicit confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true after the user explicitly confirms deletion
task_list_idYesGoogle task list ID; obtain it from list_task_lists

TDQS

A4/5.0
Behavior4/5

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

Annotations already mark the tool as destructive, non-read-only, and non-idempotent. The description adds context beyond the annotations by emphasizing that deletion is permanent and that explicit confirmation is a requirement. This is valuable extra behavioral disclosure.

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 sentences with the core action first and the safety prerequisite second. There is no redundancy or filler; every word contributes to the tool's usability.

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 destructive tool with two well-documented parameters and strong annotations, the description is nearly complete. It covers permanence and confirmation. The main gap is that it does not clarify whether deleting a task list also deletes its contained tasks, which is relevant given the sibling task tools.

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?

The input schema already provides complete descriptions for both parameters, including the source of task_list_id and the role of confirm. The description's confirmation requirement mirrors the schema but adds no new parameter-specific meaning, so the baseline of 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?

The description clearly identifies the action (permanently delete) and the resource (Google task list). This distinguishes it from siblings like delete_task, which targets a different resource, and makes the tool's purpose immediately obvious.

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 description states a clear prerequisite: explicit user confirmation is required. However, it does not explicitly explain when to use this tool versus alternatives such as update_task_list or delete_task, leaving the distinction to be inferred from the resource name.

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

get_taskA
Read-onlyIdempotent

Get one task by task-list ID and task ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesGoogle task ID; obtain it from list_tasks
task_list_idYesGoogle task list ID; obtain it from list_task_lists

TDQS

A3.8/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. The description adds a small behavioral constraint ('one task' as opposed to a list), which is consistent with the annotations and provides marginal value beyond them, but it does not disclose error behavior, return format, or prerequisites.

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?

A single, front-loaded sentence with zero filler. It conveys the operation, resource, and required identifiers in a directly usable format.

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 single-task retrieval with fully documented parameters and safety annotations, the description is sufficient to invoke correctly. Return shape and error handling are not described, but the absence of an output schema and the low tool complexity make this acceptable.

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 each parameter already documented as to how to obtain it. The description restates the parameter names but adds no extra semantic detail beyond what the schema provides, so the baseline of 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 ('Get'), a specific resource ('one task'), and the required identifiers ('task-list ID and task ID'). This clearly distinguishes it from list_tasks (returns multiple tasks) and get_task_list (returns a task list), even without naming 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 description implies usage when a single task is needed and both IDs are available, but it does not explicitly state when not to use this tool or name alternatives. The schema parameter descriptions partially compensate by directing the agent to list_tasks and list_task_lists for ID provenance.

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

get_task_listA
Read-onlyIdempotent

Get one Google task list by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_list_idYesGoogle task list ID; obtain it from list_task_lists

TDQS

A3.8/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, fully covering the safety profile. The description adds the scoping constraint "one ... by ID" but discloses no additional behavioral traits such as not-found behavior, rate limits, or response shape. No contradiction with annotations.

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 one short sentence with the verb front-loaded and zero filler. Every word contributes to the meaning. This is appropriately concise for a simple single-parameter retrieval tool.

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 one-parameter read-only tool with full schema coverage and safety annotations, the description plus schema is sufficient for an agent to invoke it correctly. The only minor gap is the lack of an explicit return-value statement, but "Get" strongly implies the task list object is returned. No output schema exists, so this is a small but acceptable omission.

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 parameter description already explains that task_list_id is the Google task list ID and where to obtain it. The description only says "by ID", which slightly reinforces the parameter's role but does not add meaning beyond what the schema already provides. 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?

The description "Get one Google task list by ID" has a specific verb (Get), a specific resource (Google task list), and the qualifier "one ... by ID" clearly distinguishes it from list_task_lists (which lists all) and task-level tools like get_task. The purpose is unambiguous even without referencing sibling names.

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 description itself gives no explicit when-to-use guidance or alternatives. However, the parameter description in the schema — "obtain it from list_task_lists" — implies a workflow of first listing task lists to get an ID, then calling this tool. This provides implied usage context but no explicit exclusions or alternative routing.

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

list_task_listsA
Read-onlyIdempotent

List the authenticated user's Google task lists.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_tokenNo
max_resultsNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint). The description adds useful context by specifying the operation is scoped to the authenticated user, but it does not disclose pagination behavior, return format, or default/limit semantics.

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?

A single sentence that is front-loaded and contains no filler. It communicates the tool's purpose clearly and efficiently.

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, optional-parameter read operation backed by strong annotations, the description is largely sufficient. It could add a note about pagination or maximum result behavior, but the schema already disambiguates the optional parameters with defaults and constraints.

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

Parameters1/5

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

Schema description coverage is 0%, so the description is expected to compensate for the two parameters. It does not mention page_token or max_results at all, leaving the agent to infer their meaning solely from schema titles and constraints.

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?

The description states a specific verb ('List'), a clear resource ('Google task lists'), and a scope ('authenticated user's'). The plural 'task lists' distinguishes it from the sibling get_task_list, which targets a single list, and from list_tasks, which targets tasks inside a list.

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 usage context is implied: use this tool when needing to enumerate the authenticated user's task lists. However, there is no explicit guidance about when to prefer this over siblings like list_tasks or get_task_list, and no exclusions or alternatives are named.

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

list_tasksA
Read-onlyIdempotent

List tasks in a Google task list with filters and pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
due_maxNo
due_minNo
page_tokenNo
max_resultsNo
show_hiddenNo
updated_minNo
show_deletedNo
task_list_idYesGoogle task list ID; obtain it from list_task_lists
completed_maxNo
completed_minNo
show_completedNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds only a generic 'filters and pagination' note, which is largely a restatement of the schema properties. It does not disclose return shape, default behaviors like show_completed=true, or rate-limit/auth details, but it is consistent with the annotations.

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 a single, tight sentence that front-loads the core action and scoping. Every word contributes meaning, with no filler or redundancy.

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

Completeness2/5

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

With 11 parameters, no output schema, and very low schema description coverage, the description is too thin. It does not explain what the returned task objects look like, how pagination should be used, or the semantics/interaction of the date filters. The read-only annotations reduce risk, but an agent still lacks enough context to call this tool confidently with non-trivial filters.

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

Parameters2/5

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

Schema description coverage is only 9%, with only task_list_id described. The description does not compensate by explaining the filter parameters (due_min, due_max, completed_min, completed_max, updated_min), date formats, or pagination mechanics. The parameter names are somewhat self-explanatory, but the description adds little semantic value beyond what the raw schema already shows.

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?

The description uses a specific verb ('List') and resource ('tasks in a Google task list'), and adds 'filters and pagination' to distinguish it from simply retrieving a task list. It is clearly distinguishable from siblings like list_task_lists, which lists task lists, and get_task, which retrieves a single task.

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 description implies this tool is for browsing/filtering tasks within a specific task list, but it does not explicitly state when to use it instead of alternatives like get_task for a single task or list_task_lists for task lists. There is no exclusions or when-not-to-use guidance, so usage is mostly implied.

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

move_taskB
Destructive

Reorder a task, change its parent, or move it to another task list.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesGoogle task ID; obtain it from list_tasks
task_list_idYesGoogle task list ID; obtain it from list_task_lists
parent_task_idNo
previous_task_idNo
destination_task_list_idNo

TDQS

B3/5.0
Behavior3/5

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

Annotations declare destructiveHint=true, idempotentHint=false, openWorldHint=true, readOnlyHint=false, so safety is covered. The description adds the useful scope of three move modes, but does not disclose what a move destroys (e.g., whether previous_task_id ordering is lost on list change), nor any permission or rate-limit context.

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?

One short sentence that front-loads the three capabilities. No padding, no repetition.

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

Completeness2/5

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

For a 5-param destructive mutation tool with no output schema and 60% of params undocumented, the description is too thin. It should explain how the optional params combine (parent vs previous vs destination) to produce the three advertised behaviors.

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

Parameters2/5

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

Schema coverage is only 40%. The three optional params (parent_task_id, previous_task_id, destination_task_list_id) have no schema descriptions, and the description does not explain their semantics or interactions - e.g., that previous_task_id controls ordering and destination_task_list_id triggers cross-list moves. The description's three verbs loosely map to these params but add no real clarification.

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 (move) and resource (task) and enumerates the three actions it performs: reorder, reparent, move lists. It distinguishes itself from sibling update_task by framing the operation as a move rather than a general field update, though it doesn't explicitly name that 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?

No when-to-use guidance, no mention of alternatives like update_task, and no exclusions. The agent must infer that reparenting/reordering belongs here rather than in update_task.

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

reopen_taskA
DestructiveIdempotent

Mark a completed task as needing action again.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesGoogle task ID; obtain it from list_tasks
task_list_idYesGoogle task list ID; obtain it from list_task_lists

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the description doesn't need to repeat those. It adds the specific state change (completed → needing action), which is useful, but doesn't disclose side effects like whether subtasks or completion dates are affected.

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?

A single, front-loaded sentence that conveys the core action without any redundant words.

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?

Given the simplicity of the operation, the description combined with annotations and schema is nearly complete. It could mention whether reopening resets any completion metadata, but for a basic status toggle it is sufficient.

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 the schema fully documents both parameters (task_id and task_list_id). The description adds no additional parameter-level meaning; baseline 3 is appropriate.

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 ('Mark') and the exact state transition ('completed task as needing action again'), clearly distinguishing it from siblings like complete_task and update_task. An agent can immediately understand the operation.

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 implies the task must already be completed ('a completed task'), providing clear context, but does not explicitly state exclusions or alternatives (e.g., use update_task for other changes).

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

update_taskB
DestructiveIdempotent

Patch a task's title, notes, due date, or status. Use null to clear notes or due.

ParametersJSON Schema
NameRequiredDescriptionDefault
dueNoUse null to clear the due date; otherwise use YYYY-MM-DD or RFC 3339.
notesNo
titleNo
statusNo
task_idYesGoogle task ID; obtain it from list_tasks
task_list_idYesGoogle task list ID; obtain it from list_task_lists

TDQS

B3.3/5.0
Behavior3/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 partly carried by structured fields. The description adds one behavioral detail (null clears notes or due), which is useful, but does not mention destructive effects, required permissions, or partial-update semantics beyond what the annotations imply.

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 sentences, zero waste, front-loaded with the action and the affected fields. Every sentence earns its place.

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?

With no output schema and half the parameters undocumented in the schema, the description should do more to cover update semantics, status enum behavior, and when to prefer dedicated tools like complete_task or reopen_task. It is adequate but leaves clear gaps for a mutation tool with sibling overlap.

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 50%, with due and the two ID fields documented in the schema but title, notes, and status lacking descriptions. The description adds meaning by stating which fields can be patched and that null clears notes/due, which compensates somewhat for the uncovered parameters, but it does not clarify status values or title constraints.

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 states a specific verb (Patch) and resource (task) and enumerates the mutable fields (title, notes, due date, status). It is clear what the tool does, though it does not differentiate itself from siblings like complete_task or reopen_task, which also touch status.

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?

No when-to-use or when-not-to-use guidance is given, and no alternatives are named. With siblings such as complete_task, reopen_task, and move_task, an agent could plausibly reach for update_task in cases where a dedicated tool is intended; the description leaves that ambiguity unresolved.

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

update_task_listB
DestructiveIdempotent

Rename a Google task list.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
task_list_idYesGoogle task list ID; obtain it from list_task_lists

TDQS

B3.2/5.0
Behavior3/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 does add one useful nuance: the tool only renames (overwrites the title) rather than performing a general field update, which clarifies the scope implied by the 'update_task_list' name.

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?

A single front-loaded sentence with zero filler, appropriately sized for a two-parameter mutation. It is arguably too terse to be maximally helpful, but nothing is wasted.

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 tool with no output schema, the description is minimally adequate. It omits the source of the task_list_id (partially covered by the schema), confirmation of return behavior, and any note that the change is idempotent.

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 50%: task_list_id is documented in the schema, while title is only named. The description's 'rename' wording implies title replaces the existing name, which adds marginal meaning, but no format or length guidance beyond the schema's min/maxLength.

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 ('rename') and resource ('Google task list'), so an agent can distinguish it from update_task, update_task_list's task-level siblings. It does not, however, explicitly differentiate itself from other list-level tools like create_task_list or delete_task_list.

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?

There is no guidance on when to use this tool versus alternatives, no prerequisites (e.g., needing an existing list ID), and no mention of what happens to the current title. The agent must infer all usage context.

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. 14 tool updatesv0.2.0
    • First observedclear_completed_tasks
    • First observedcomplete_task
    • First observedcreate_task
    • First observedcreate_task_list
    • First observeddelete_task
    • First observeddelete_task_list
    • First observedget_task
    • First observedget_task_list
    • First observedlist_task_lists
    • First observedlist_tasks
    • First observedmove_task
    • First observedreopen_task
    • First observedupdate_task
    • First observedupdate_task_list

TDQS

A3.7/5.0

Scored across 14 tools

Disambiguation4/5

Most tools target a distinct resource-action pair, but status transitions are split across complete_task, reopen_task, and update_task (which can set status), creating potential overlap. Descriptions help, so an agent can likely choose correctly.

Naming Consistency5/5

All tools use snake_case verb_noun form, with task-list tools consistently using *_task_list and task tools using *_task. No mixed conventions are present.

Tool Count5/5

14 tools are well-scoped for Google Tasks: five list operations and nine task operations, all justified by distinct lifecycle actions. No excessive or thin areas.

Completeness5/5

Covers CRUD for task lists and tasks, plus move, complete/reopen, and clear-completed, matching Google Tasks API lifecycle. No obvious dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers