Skip to main content
Glama
hald

Things MCP Server

by hald

Things MCP 服务器

此模型上下文协议 (MCP)服务器允许您使用 Claude Desktop 与Things 应用程序中的任务管理数据进行交互。您可以要求 Claude 创建任务、分析项目、帮助管理优先级等等。

该服务器利用Things.py库和Things URL Scheme 。

特征

  • 访问所有主要事物列表(收件箱、今日、即将发生等)

  • 项目和区域管理

  • 标签操作

  • 高级搜索功能

  • 最近项目追踪

  • 详细的物品信息,包括清单

  • 支持嵌套数据(区域内的项目、项目内的待办事项)

Related MCP server: Things MCP

安装(适用于 Claude Desktop)

  1. 先决条件

  • Python 3.12+

  • 克劳德桌面

  • Things 3(必须在“设置”->“通用”中打开“启用 Things URL”)

  1. 如果尚未安装 uv,请安装:

curl -LsSf https://astral.sh/uv/install.sh | sh

然后重新启动您的终端。

  1. 克隆此存储库:

git clone https://github.com/hald/things-mcp
  1. 安装所需的 Python 包:

cd things-mcp
uv venv
uv pip install -r pyproject.toml
  1. 编辑Claude桌面配置文件:

code ~/Library/Application\ Support/Claude/claude_desktop_config.json

将 Things 服务器添加到配置文件的 mcpServers 键中(确保更新安装这些文件的文件夹的路径):

{
    "mcpServers": {
        "things": {
            "command": "uv",
            "args": [
                "--directory",
                "/ABSOLUTE/PATH/TO/PARENT/FOLDER/things-mcp",
                "run",
                "things_server.py"
            ]
        }
    }
}

重新启动 Claude 桌面应用程序。

Claude Desktop 的使用示例

  • “我今天的待办事项清单上有什么?”

  • “为下周的海滩度假制定一份打包清单,包括打包清单。”

  • “使用艾森豪威尔矩阵评估我当前的待办事项。”

  • “帮助我使用 Things 进行 GTD 风格的每周回顾。”

尖端

  • 在 Claude 中创建一个项目,其中包含自定义说明,解释如何使用 Things 以及组织区域、项目、标签等。告诉 Claude 创建新任务时您希望包含哪些信息(例如,要求它在任务描述中包含相关详细信息可能会有所帮助)。

  • 尝试添加另一个允许 Claude 访问您日历的 MCP 服务器。这样您就可以让 Claude 在日历上为特定任务预留时间,根据即将发生的日历事件(例如会议准备)创建待办事项等等。

可用工具

列表视图

  • get-inbox - 从收件箱获取待办事项

  • get-today - 获取今天到期的待办事项

  • get-upcoming - 获取即将发生的待办事项

  • get-anytime - 从 Anytime 列表中获取待办事项

  • get-someday - 从 Someday 列表中获取待办事项

  • get-logbook - 获取已完成的待办事项

  • get-trash - 获取已删除的待办事项

基本操作

  • get-todos - 获取待办事项,可选择按项目进行过滤

  • get-projects - 获取所有项目

  • get-areas - 获取所有区域

标签操作

  • get-tags获取所有标签

  • get-tagged-items - 获取带有特定标签的项目

搜索行动

  • search-todos - 按标题/注释进行简单搜索

  • search-advanced - 具有多个过滤器的高级搜索

基于时间的操作

  • get-recent - 获取最近创建的项目

工具参数

待办事项

  • project_uuid (可选)- 按项目过滤待办事项

  • include_items (可选,默认值:true)- 包含清单项目

获取项目/获取区域/获取标签

  • include_items (可选,默认值:false)- 包含所含项目

高级搜索

  • status - 按状态过滤(未完成/已完成/已取消)

  • start_date - 按开始日期过滤 (YYYY-MM-DD)

  • deadline - 按截止日期过滤(YYYY-MM-DD)

  • tag - 按标签过滤

  • area - 按区域 UUID 过滤

  • type - 按项目类型过滤(待办事项/项目/标题)

获取最近

  • period - 时间段(例如,“3d”、“1w”、“2m”、“1y”)

故障排除

服务器包括以下错误处理:

  • 无效的 UUID

  • 缺少必需参数

  • 事物数据库访问错误

  • 数据格式错误

所有错误都会被记录下来并返回描述性消息。要从 Claude Desktop 查看 MCP 日志,请在终端中运行以下命令:

# Follow logs in real-time
tail -n 20 -f ~/Library/Logs/Claude/mcp*.log

Available Tools

22 tools
add_projectB

Create a new project in Things

Args: title: Title of the project notes: Notes for the project when: When to schedule the project deadline: Deadline for the project tags: Tags to apply to the project area_id: ID of area to add to area_title: Title of area to add to todos: Initial todos to create in the project

ParametersJSON Schema
NameRequiredDescriptionDefault
area_idNo
area_titleNo
deadlineNo
notesNo
tagsNo
titleYes
todosNo
whenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the basic creation action. It doesn't disclose behavioral traits like whether creation requires specific permissions, what happens on duplicate titles, if the project appears in specific views (e.g., Today/Upcoming), or error conditions. The description is minimal beyond the core function.

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 appropriately sized and front-loaded with the core purpose in the first sentence. The parameter list is organized but could be more concise (e.g., merging 'area_id' and 'area_title' explanations). Every sentence adds value, though the 'Args:' section is somewhat verbose.

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?

Given 8 parameters with 0% schema coverage and no annotations, the description provides basic parameter semantics but lacks behavioral context for a creation tool. The presence of an output schema reduces the need to explain return values, but gaps remain in usage guidelines and transparency (e.g., no mention of default behaviors or error handling).

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 description coverage is 0%, so the description must compensate. It provides a clear list of all 8 parameters with brief explanations of each (e.g., 'Title of the project', 'ID of area to add to'), adding meaningful semantics beyond the schema's basic titles. However, it lacks format details (e.g., date formats for 'when'/'deadline', whether 'area_id' and 'area_title' are mutually exclusive).

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 specific action ('Create a new project') and resource ('in Things'), distinguishing it from sibling tools like 'update_project' which modifies existing projects or 'get_projects' which retrieves them. The verb+resource combination is precise and unambiguous.

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 description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., whether an area must exist first), when to use 'add_todo' instead for single tasks, or how it differs from 'update_project' for modifying existing projects. Usage context is implied but not explicit.

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

add_todoB

Create a new todo in Things

Args: title: Title of the todo notes: Notes for the todo when: When to schedule the todo (today, tomorrow, evening, anytime, someday, or YYYY-MM-DD) deadline: Deadline for the todo (YYYY-MM-DD) tags: Tags to apply to the todo checklist_items: Checklist items to add list_id: ID of project/area to add to list_title: Title of project/area to add to heading: Heading title to add under heading_id: Heading ID to add under (takes precedence over heading)

ParametersJSON Schema
NameRequiredDescriptionDefault
checklist_itemsNo
deadlineNo
headingNo
heading_idNo
list_idNo
list_titleNo
notesNo
tagsNo
titleYes
whenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Create' implies a write operation, it doesn't specify permissions needed, whether todos are immediately saved or require confirmation, what happens on duplicate titles, or error conditions. The description mentions parameter precedence ('heading_id takes precedence over heading') which adds some behavioral context, but overall leaves significant gaps for a mutation tool.

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

Conciseness3/5

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

The description is appropriately sized but not optimally structured. The initial sentence clearly states the purpose, but the parameter documentation could be better organized. While each parameter explanation is concise, the list format is functional but not particularly elegant. Every sentence earns its place, but the structure could be more front-loaded with critical information.

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?

Given the tool's complexity (10 parameters, mutation operation) and the presence of an output schema (which handles return values), the description is moderately complete. It excels at parameter documentation but lacks behavioral context for a mutation tool with no annotations. The combination of good parameter semantics but missing behavioral guidance results in an incomplete picture for proper tool invocation.

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 0% schema description coverage, the description provides excellent parameter semantics that fully compensate. It explains all 10 parameters with clear meanings, including special formats for 'when' (today, tomorrow, evening, anytime, someday, or YYYY-MM-DD) and 'deadline' (YYYY-MM-DD), plus important behavioral details like precedence rules for heading_id vs heading. This goes well beyond what the bare schema provides.

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 clearly states the verb ('Create') and resource ('new todo in Things'), making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'add_project' or 'update_todo', which would require mentioning this is specifically for todos (not projects) and creates new items (not updates existing ones).

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 description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose 'add_todo' over 'add_project' for different item types, or when to use 'update_todo' instead for modifying existing todos. There's also no mention of prerequisites or contextual constraints for creating todos.

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

get_anytimeC

Get todos from Anytime list

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure but only states the action ('Get todos') without details on permissions, rate limits, or what 'Anytime list' entails (e.g., is it a filtered view, does it include all todos?). It lacks critical behavioral context for a tool with output schema.

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, efficient sentence with no wasted words. It is appropriately sized and front-loaded, making it easy to parse quickly.

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?

Given the complexity implied by multiple sibling tools (e.g., 'get_todos', 'get_today') and no annotations, the description is incomplete. It fails to explain what 'Anytime list' is or how it differs from other todo-fetching tools, leaving gaps in understanding despite the presence of an output schema.

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?

The tool has 0 parameters with 100% schema description coverage, so no parameter information is needed. The description does not add param semantics, but this is acceptable given the absence of parameters, aligning with the baseline for 0 params.

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

Purpose2/5

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

The description 'Get todos from Anytime list' restates the tool name 'get_anytime' in slightly different wording (tautology), failing to clearly differentiate what 'Anytime list' means or how it differs from sibling tools like 'get_todos', 'get_today', or 'get_upcoming'. It provides minimal specificity beyond the name.

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

Usage Guidelines1/5

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

No guidance is provided on when to use this tool versus alternatives such as 'get_todos', 'get_today', or 'get_upcoming'. The description lacks context, exclusions, or explicit comparisons, leaving the agent with no usage direction.

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

get_areasC

Get all areas from Things

Args: include_items: Include projects and tasks within areas

ParametersJSON Schema
NameRequiredDescriptionDefault
include_itemsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states this is a 'Get' operation, implying read-only behavior, but doesn't disclose any behavioral traits like whether it requires authentication, has rate limits, returns paginated results, or what the output format is. The description is minimal and lacks essential context for safe invocation.

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 appropriately sized with two sentences: one stating the purpose and another explaining the parameter. It's front-loaded with the main purpose first. There's no wasted text, though the 'Args:' formatting is slightly redundant but not excessive.

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?

Given the tool has an output schema (which handles return values) and only one parameter with good semantic coverage in the description, the description is minimally adequate. However, for a retrieval tool with no annotations, it should ideally mention more about behavior (e.g., read-only, potential errors). The presence of an output schema raises the baseline, but gaps remain in behavioral transparency.

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?

The description adds meaningful semantics for the single parameter 'include_items' by explaining it controls whether to 'Include projects and tasks within areas'. With 0% schema description coverage (the schema only has a title 'Include Items'), this compensates well by clarifying what 'items' refers to in this context. For a tool with only one parameter, this is sufficient.

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

Purpose3/5

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

The description states 'Get all areas from Things' which provides a clear verb ('Get') and resource ('areas'), but it doesn't distinguish this tool from sibling tools like 'get_projects', 'get_todos', or 'get_headings' that also retrieve specific Things resources. The purpose is understandable but lacks sibling differentiation.

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 guidance is provided on when to use this tool versus alternatives. With many sibling tools like 'get_projects', 'get_todos', 'get_inbox', etc., the description doesn't indicate what makes 'areas' distinct or when an agent should choose this over other retrieval tools. Usage is implied only by the tool name.

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

get_headingsC

Get headings from Things

Args: project_uuid: Optional UUID of a specific project to get headings from

ParametersJSON Schema
NameRequiredDescriptionDefault
project_uuidNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it 'gets' data, implying a read-only operation, but lacks details on permissions, rate limits, return format, or any side effects. This is inadequate for a tool with no annotation coverage.

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 appropriately sized with two sentences: one stating the purpose and another explaining the parameter. It's front-loaded with the main action, though the 'Args:' section could be integrated more smoothly, but overall it's efficient with minimal waste.

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?

Given the tool has an output schema (which handles return values) and low complexity with one optional parameter, the description is somewhat complete but lacks behavioral context due to no annotations. It covers the basic purpose and parameter semantics but misses usage guidelines and transparency details, making it minimally adequate.

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 0%, so the description must compensate. It adds meaning by explaining that 'project_uuid' is optional and specifies it's for 'a specific project to get headings from', clarifying the parameter's purpose beyond the schema's basic type. However, it doesn't detail format (e.g., UUID structure) or default behavior when omitted, leaving some gaps.

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 clearly states the verb 'Get' and resource 'headings from Things', which is specific and actionable. However, it doesn't differentiate from sibling tools like 'get_projects' or 'get_todos' that also retrieve data from the same system, missing explicit distinction.

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 guidance is provided on when to use this tool versus alternatives such as 'get_projects' or 'search_items'. The description only mentions an optional parameter without context on appropriate use cases or exclusions, leaving the agent to infer usage.

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

get_inboxC

Get todos from Inbox

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it 'gets' data, implying a read-only operation, but doesn't mention permissions, rate limits, pagination, or what happens on failure. It lacks critical context for safe and effective use.

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 very concise with just three words, making it easy to parse. However, it's arguably too brief, potentially under-specifying the tool's purpose. It front-loads the key action but could benefit from slightly more detail to improve clarity.

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?

Given the tool has 0 parameters, 100% schema coverage, and an output schema exists, the description is minimally adequate. However, it lacks context about the Inbox concept, how it differs from other todo-related tools, and behavioral traits, making it incomplete for optimal agent use without additional inference.

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?

The tool has 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description doesn't add parameter details, but that's appropriate here. A baseline of 4 is given as it adequately handles the lack of parameters without introducing confusion.

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

Purpose3/5

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

The description 'Get todos from Inbox' clearly states the action (get) and resource (todos from Inbox), but it's vague about scope and doesn't differentiate from siblings like 'get_todos' or 'get_today'. It specifies the source (Inbox) but lacks detail on what 'Inbox' means in this context.

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 guidance is provided on when to use this tool versus alternatives like 'get_todos' or 'get_today'. The description implies it's for retrieving todos from a specific location (Inbox), but it doesn't clarify if this is a filtered view, default location, or how it relates to other sibling tools.

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

get_logbookA

Get completed todos from Logbook, defaults to last 7 days

Args: period: Time period to look back (e.g., '3d', '1w', '2m', '1y'). Defaults to '7d' limit: Maximum number of entries to return. Defaults to 50

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
periodNo7d

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds useful context about default time periods and limits, which helps understand the tool's behavior beyond basic functionality. However, it doesn't cover aspects like authentication needs, rate limits, error handling, or what 'completed' entails (e.g., status criteria). The description compensates partially but leaves gaps for a read operation.

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 appropriately sized and front-loaded, with the core purpose stated first ('Get completed todos from Logbook, defaults to last 7 days'), followed by a structured 'Args:' section. Every sentence adds value, and there's no redundant information. It could be slightly more concise by integrating the defaults into the initial sentence, but overall it's efficient.

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 tool's low complexity (2 parameters, no annotations, but has an output schema), the description is reasonably complete. It explains the purpose, parameters, and defaults, which covers the essentials for a read operation. The presence of an output schema means the description doesn't need to explain return values, and the parameter documentation compensates for the 0% schema coverage. Minor gaps remain in behavioral details.

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?

The schema description coverage is 0%, so the description must fully document parameters. It successfully adds meaning by explaining both parameters: 'period' as a time period with examples (e.g., '3d', '1w') and defaults, and 'limit' as maximum entries with defaults. This covers all 2 parameters adequately, though it could provide more detail on format constraints (e.g., valid period strings).

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 clearly states the tool's purpose: 'Get completed todos from Logbook'. It specifies the resource (completed todos) and the source (Logbook), making the verb+resource combination explicit. However, it doesn't explicitly differentiate from sibling tools like 'get_todos' or 'get_recent', which likely also retrieve todo-related data, leaving some ambiguity about uniqueness.

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 by stating it 'defaults to last 7 days', suggesting it's for retrieving recent completed todos. However, it provides no explicit guidance on when to use this tool versus alternatives like 'get_todos' or 'get_recent', nor does it mention any exclusions or prerequisites. The context is clear but lacks sibling differentiation.

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

get_projectsC

Get all projects from Things

Args: include_items: Include tasks within projects

ParametersJSON Schema
NameRequiredDescriptionDefault
include_itemsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions 'Get all projects' but doesn't disclose behavioral traits like whether this is paginated, rate-limited, requires authentication, returns all projects at once, or what format the output takes. The description is minimal and lacks essential operational context.

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

Conciseness3/5

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

The description is brief but structured with a main statement and an 'Args:' section. However, the formatting is somewhat informal and could be more polished. It's concise but not optimally front-loaded or professionally 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?

Given 1 parameter with 0% schema coverage and an output schema exists, the description compensates somewhat for parameters but lacks behavioral context. For a simple retrieval tool, it's minimally adequate but doesn't provide enough guidance on usage or operational details to be fully helpful.

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 0% schema description coverage and 1 parameter, the description adds meaningful context by explaining that 'include_items' controls whether tasks within projects are included. This clarifies the parameter's purpose beyond the schema's basic boolean type and title, though it doesn't detail default behavior or implications.

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

Purpose3/5

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

The description states 'Get all projects from Things' which provides a clear verb ('Get') and resource ('projects'), but it doesn't distinguish this from sibling tools like 'get_areas', 'get_tags', or 'get_todos' that also retrieve different Things resources. The purpose is clear but lacks sibling differentiation.

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 guidance is provided about when to use this tool versus alternatives like 'search_advanced', 'search_items', or 'search_todos' for filtered queries, or 'get_today'/'get_upcoming' for time-based retrieval. The description only states what the tool does, not when it's appropriate.

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

get_recentC

Get recently created items

Args: period: Time period (e.g., '3d', '1w', '2m', '1y')

ParametersJSON Schema
NameRequiredDescriptionDefault
periodYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. It states the tool retrieves items but doesn't specify what 'items' refers to (e.g., projects, todos, areas), whether it requires authentication, what the output format is, or if there are rate limits. The description is minimal and leaves critical behavioral aspects unspecified.

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 brief and front-loaded with the main purpose, followed by parameter details. Both sentences earn their place by stating what the tool does and explaining the parameter. There's no unnecessary verbiage, though it could be slightly more structured (e.g., separating purpose and args more clearly).

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?

Given the tool has one parameter with no schema descriptions but an output schema exists, the description provides adequate basics but lacks context. It explains the parameter well but doesn't clarify what 'items' are or how 'recently created' is defined (e.g., relative to now?). The output schema will handle return values, but the description could better integrate with sibling tools and item types.

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?

The description adds significant value beyond the input schema, which has 0% description coverage. It explains that 'period' is a 'Time period' and provides examples of valid values ('3d', '1w', '2m', '1y'), clarifying the parameter's purpose and format. This compensates well for the schema's lack of documentation, though it doesn't cover all possible edge cases.

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

Purpose3/5

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

The description states the tool's purpose as 'Get recently created items', which is a clear verb+resource combination. However, it doesn't distinguish this from sibling tools like 'get_today', 'get_upcoming', or 'get_anytime' that also retrieve items with different temporal filters. The purpose is understandable but lacks sibling differentiation.

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 description provides no guidance on when to use this tool versus alternatives. With many sibling tools that retrieve items (e.g., 'get_today', 'get_upcoming', 'get_anytime', 'get_tagged_items'), there's no indication of when 'recently created' is appropriate versus other temporal or categorical filters. The user must infer usage from the name alone.

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

get_somedayB

Get todos from Someday list

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states a read operation ('Get'), implying it's likely non-destructive, but doesn't disclose any behavioral traits such as permissions needed, rate limits, or what the output contains. This leaves significant gaps for an agent to understand how to interact with it effectively.

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, clear sentence with no wasted words. It's front-loaded with the core action and resource, making it efficient and easy to parse for an agent.

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?

Given the tool has 0 parameters, 100% schema coverage, and an output schema exists, the description is minimally adequate. However, with no annotations and multiple sibling tools, it lacks context on usage and behavioral aspects, making it incomplete for optimal agent selection in a crowded toolset.

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?

The tool has 0 parameters with 100% schema coverage, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate, but it could hint at implicit filtering (e.g., by list type), though not required. Baseline is 4 for zero 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?

The description clearly states the action ('Get') and resource ('todos from Someday list'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get_today', 'get_upcoming', or 'get_todos' which likely retrieve similar items from different contexts, so it misses full sibling distinction.

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 guidance is provided on when to use this tool versus alternatives. With siblings like 'get_today', 'get_upcoming', and 'get_todos', the description lacks context on what makes the 'Someday list' unique or when it's appropriate to use this specific retrieval method.

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

get_tagged_itemsC

Get items with a specific tag

Args: tag: Tag title to filter by

ParametersJSON Schema
NameRequiredDescriptionDefault
tagYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states it 'Get items' but doesn't clarify if this is a read-only operation, what permissions are needed, how results are returned (e.g., pagination), or error handling. For a tool with no annotation coverage, this leaves significant gaps in understanding its behavior.

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 brief and front-loaded with the main purpose, followed by a clear 'Args' section. It avoids unnecessary words, but the lack of additional context or examples slightly reduces its efficiency in fully informing the agent.

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?

Given the tool has an output schema (which handles return values), the description doesn't need to explain outputs. However, with no annotations and low schema coverage, the description should compensate more by detailing behavioral aspects and usage context, which it only partially does. It's minimally adequate but leaves room for improvement.

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 0%, so the schema provides no parameter descriptions. The description adds value by explaining that 'tag' is a 'Tag title to filter by', which clarifies its purpose beyond the schema's basic type. However, it doesn't detail format constraints or examples, leaving some ambiguity.

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 clearly states the verb 'Get' and the resource 'items with a specific tag', making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'search_items' or 'search_todos' that might also filter by tags, so it's not fully distinguished from alternatives.

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 description provides no guidance on when to use this tool versus alternatives like 'search_items' or 'get_tags', nor does it mention prerequisites or exclusions. The agent must infer usage from the name and context alone.

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

get_tagsC

Get all tags

Args: include_items: Include items tagged with each tag

ParametersJSON Schema
NameRequiredDescriptionDefault
include_itemsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. 'Get all tags' implies a read operation, but there's no information about permissions needed, rate limits, pagination, or what 'all' means in practice (complete list or limited). The description adds minimal behavioral context beyond the basic operation.

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 appropriately brief with two sentences that directly address the tool's purpose and its single parameter. The 'Args:' section is clearly separated, though the formatting could be more polished. There's no wasted verbiage, and information is front-loaded effectively.

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?

Given the simple tool with 1 parameter and an output schema (which handles return values), the description is minimally adequate. However, for a retrieval tool with no annotations, it should ideally mention whether this returns all tags at once or uses pagination, and clarify the relationship with 'get_tagged_items'. The presence of an output schema reduces but doesn't eliminate the need for more context.

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 0% schema description coverage and only 1 parameter, the description compensates well by explaining the 'include_items' parameter's purpose: 'Include items tagged with each tag.' This adds meaningful semantic context that the schema's boolean type alone doesn't provide, though it could specify what format these included items take.

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

Purpose3/5

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

The description states 'Get all tags' which clearly indicates the verb (get) and resource (tags). However, it doesn't distinguish this from sibling tools like 'get_tagged_items' or explain how this differs from other retrieval tools in the system. The purpose is clear but lacks sibling differentiation.

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 guidance is provided about when to use this tool versus alternatives. With sibling tools like 'get_tagged_items' and 'search_items' available, the description doesn't indicate whether this retrieves tag metadata versus tagged content, or when to prefer one approach over another. The single sentence offers no usage context.

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

get_todayB

Get todos due today

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. While 'Get' implies a read operation, it doesn't specify whether this returns all todos due today or only incomplete ones, how results are sorted, if there's pagination, or what authentication might be required. The description is too minimal for a tool with no annotation support.

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 extremely concise at just three words, front-loading the essential information with zero wasted language. Every word earns its place by specifying the action, resource, and temporal filter in minimal form.

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?

Given the tool has zero parameters and an output schema exists, the description doesn't need to explain parameters or return values. However, for a read operation with no annotations, it should provide more behavioral context about what 'todos due today' means operationally. The description is complete enough for basic understanding but lacks depth about implementation details.

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?

The tool has zero parameters with 100% schema description coverage, so the schema already fully documents the parameter situation. The description doesn't need to compensate for any parameter gaps, and it correctly implies no input is required beyond the implicit 'today' filter. This meets the baseline expectation for zero-parameter tools.

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 clearly states the tool's purpose with a specific verb ('Get') and resource ('todos due today'), making it immediately understandable. However, it doesn't explicitly distinguish this tool from similar siblings like 'get_todos' or 'get_upcoming', which might also retrieve todo items with different filters.

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 description provides no guidance on when to use this tool versus alternatives. With siblings like 'get_todos', 'get_upcoming', 'get_recent', and 'get_anytime', there's no indication of when this specific 'today' filter is appropriate or what distinguishes it from other date-based queries.

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

get_todosB

Get todos from Things, optionally filtered by project

Args: project_uuid: Optional UUID of a specific project to get todos from include_items: Include checklist items

ParametersJSON Schema
NameRequiredDescriptionDefault
include_itemsNo
project_uuidNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral context. It mentions optional project filtering and checklist inclusion, but doesn't describe what 'Get todos' actually returns (list format, pagination, sorting), authentication requirements, rate limits, or whether this is a read-only operation (though implied by 'Get').

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?

Extremely concise with zero wasted words. The purpose is stated in the first sentence, followed by clear parameter explanations. Every sentence earns its place, and the structure (purpose then args) is logical and front-loaded.

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?

Given the tool has an output schema (which handles return values), 2 parameters with 0% schema coverage, and no annotations, the description is minimally adequate. It covers the basic purpose and parameters but lacks behavioral context and sibling differentiation that would be helpful given the many similar get_* 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?

Schema description coverage is 0%, so the description must compensate. It provides basic semantic meaning for both parameters ('Optional UUID of a specific project' and 'Include checklist items'), which adds value beyond the bare schema. However, it doesn't explain format details (what a valid UUID looks like) or the implications of including/excluding items.

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 clearly states the verb 'Get' and resource 'todos from Things', making the purpose immediately understandable. It distinguishes from some siblings like 'add_todo' or 'update_todo', but doesn't explicitly differentiate from other get_* tools like 'get_today' or 'get_inbox' that also retrieve todos with different filters.

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 description mentions optional filtering by project, but provides no guidance on when to use this tool versus the many sibling get_* tools (get_today, get_inbox, get_upcoming, etc.) that appear to retrieve todos with different scopes. No alternatives, prerequisites, or exclusions are mentioned.

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

get_trashB

Get trashed todos

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. 'Get trashed todos' implies a read-only operation that retrieves deleted items, but it doesn't specify whether this requires special permissions, what format the output takes, whether there are pagination limits, or if the trash has retention policies. The description adds minimal behavioral context beyond the basic 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 a perfectly concise three-word phrase that communicates the essential action and target. Every word earns its place: 'Get' specifies the action, 'trashed' distinguishes the state, and 'todos' identifies the resource. There's zero waste or redundancy.

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?

Given the tool's simplicity (0 parameters, output schema exists), the description is adequate but minimal. The output schema will document return values, so the description doesn't need to explain those. However, for a tool that presumably accesses deleted/sensitive data, more context about permissions, scope, or limitations would be helpful despite the structured fields.

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?

The tool has 0 parameters with 100% schema description coverage, so the schema already fully documents the lack of inputs. The description doesn't need to explain parameters, and it correctly doesn't mention any. The baseline for zero parameters with complete schema coverage is 4, as there's nothing to compensate for.

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 clearly states the verb 'Get' and resource 'trashed todos', making the purpose immediately understandable. It distinguishes this from sibling tools like get_todos, get_today, etc. by specifying the 'trashed' state. However, it doesn't explicitly contrast with other trash-related operations that might exist (though none are listed among siblings).

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 description provides no guidance on when to use this tool versus alternatives. It doesn't mention when you might need trashed todos versus active ones (get_todos), or how this relates to other retrieval tools like get_inbox or get_tagged_items. There's no context about prerequisites, permissions, or typical use cases.

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

get_upcomingB

Get upcoming todos

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure but offers minimal information. It implies a read operation but doesn't specify whether it returns all upcoming todos, paginated results, or any filtering/sorting behavior. No details on permissions, rate limits, or error conditions are included.

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 extremely concise with just three words, front-loading the essential information ('Get upcoming todos') without any wasted text. It efficiently communicates the core purpose in a minimal format.

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?

Given the tool has 0 parameters, 100% schema coverage, and an output schema exists, the description is adequate as a basic read operation. However, it lacks context about what 'upcoming' entails (e.g., definition, scope) and behavioral details, making it minimally viable but with gaps in usage clarity.

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?

The tool has 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description doesn't add parameter details, but this is appropriate given the lack of inputs, justifying a baseline score of 4 for clarity in a parameterless context.

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 clearly states the action ('Get') and resource ('upcoming todos'), making the purpose immediately understandable. It distinguishes this tool from siblings like 'get_today' or 'get_someday' by specifying 'upcoming' as the time frame, though it doesn't explicitly contrast with all similar tools like 'get_recent'.

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 description provides no guidance on when to use this tool versus alternatives like 'get_today', 'get_someday', or 'get_recent'. It lacks context about what 'upcoming' means (e.g., time range, priority) or any prerequisites, leaving the agent to infer usage from the name alone.

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

search_advancedB

Advanced todo search with multiple filters

Args: status: Filter by todo status (incomplete, completed, canceled) start_date: Filter by start date (YYYY-MM-DD) deadline: Filter by deadline (YYYY-MM-DD) tag: Filter by tag area: Filter by area UUID type: Filter by item type (to-do, project, heading)

ParametersJSON Schema
NameRequiredDescriptionDefault
areaNo
deadlineNo
start_dateNo
statusNo
tagNo
typeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states that it performs a search with filters, lacking information on permissions needed, rate limits, pagination, response format, or whether it's read-only. This is inadequate for a search tool with 6 parameters and no annotation coverage.

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 appropriately sized and front-loaded, with the main purpose stated first followed by a structured list of parameters. Each sentence earns its place, though the parameter explanations could be slightly more concise (e.g., repeating 'Filter by' for each).

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?

Given the tool's complexity (6 parameters, no annotations, but with output schema), the description is partially complete. It covers parameter semantics well but lacks behavioral context and usage guidelines. The presence of an output schema means return values are documented elsewhere, reducing the burden on the description.

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 description coverage is 0%, so the description must compensate. It provides clear semantics for all 6 parameters, explaining what each filters by (e.g., 'status: Filter by todo status', 'area: Filter by area UUID'), including specific values for 'status' and 'type'. This adds significant meaning beyond the bare schema.

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 clearly states the tool's purpose as 'Advanced todo search with multiple filters', specifying the verb ('search') and resource ('todo'). It distinguishes from basic search tools by emphasizing 'advanced' with multiple filters, though it doesn't explicitly differentiate from sibling tools like 'search_items' or 'search_todos'.

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 description provides no guidance on when to use this tool versus alternatives. It doesn't mention when this advanced search is preferable over simpler sibling tools like 'get_todos', 'search_todos', or 'search_items', nor does it specify prerequisites or exclusions for usage.

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

search_itemsC

Search for items in Things

Args: query: Search query

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It only states the basic function without mentioning important behavioral aspects like whether this is a read-only operation, what kind of items are returned, how results are formatted/paginated, or any limitations/constraints. For a search tool with zero annotation coverage, this is insufficient.

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 extremely concise with just two sentences. The first states the purpose, the second documents the single parameter. There's no wasted text, though the structure with 'Args:' heading is slightly informal but clear.

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?

Given there's an output schema (which handles return values), the description focuses on the search function and parameter. However, for a tool with 1 parameter but 0% schema description coverage and no annotations, the description should provide more context about what 'items' means in this system versus the many sibling tools, and how this search differs from other search options.

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 schema description coverage is 0%, so the description must compensate. It does provide the parameter name 'query' and indicates it's a search query, which adds basic semantic meaning beyond the schema's bare type information. However, it doesn't explain query syntax, supported operators, or examples - just the minimal parameter identification.

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

Purpose3/5

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

The description states 'Search for items in Things' which clearly indicates the verb (search) and resource (items in Things). However, it doesn't differentiate from sibling tools like 'search_todos' or 'search_advanced' - it's unclear what 'items' encompasses versus 'todos' or what makes the advanced search different.

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 guidance is provided about when to use this tool versus alternatives like 'search_todos', 'search_advanced', or the various 'get_' tools. The description only states what the tool does, not when it's appropriate versus other search or retrieval options available.

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

search_todosC

Search todos by title or notes

Args: query: Search term to look for in todo titles and notes

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. It mentions what fields are searched (title/notes) but doesn't cover important aspects like search behavior (exact match, partial, case sensitivity), result format, pagination, or error conditions. This leaves significant gaps for a search operation.

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 appropriately brief with two sentences that directly address purpose and parameter meaning. The 'Args:' section is slightly redundant but adds clarity. No wasted words, though it could be more front-loaded by integrating the parameter explanation into the main sentence.

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?

Given the tool has an output schema (which handles return values), the description's main gaps are in behavioral transparency and usage guidelines. For a search tool with no annotations and multiple similar siblings, it should provide more context about search behavior and differentiation, making it minimally adequate but incomplete.

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 description adds meaningful context for the single parameter: it explains that 'query' searches in 'todo titles and notes'. With 0% schema description coverage, this compensates somewhat, but doesn't provide details on query syntax, length limits, or special characters. The baseline is appropriate given the single parameter.

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 clearly states the tool's purpose: 'Search todos by title or notes' specifies the verb (search), resource (todos), and scope (title/notes). However, it doesn't explicitly distinguish this tool from sibling search tools like 'search_advanced' or 'search_items', which prevents a perfect score.

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 description provides no guidance on when to use this tool versus alternatives. With multiple search-related siblings ('search_advanced', 'search_items'), there's no indication of what differentiates this tool or when it's preferred, leaving the agent to guess.

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

show_itemB

Show a specific item or list in Things

Args: id: ID of item to show, or one of: inbox, today, upcoming, anytime, someday, logbook query: Optional query to filter by filter_tags: Optional tags to filter by

ParametersJSON Schema
NameRequiredDescriptionDefault
filter_tagsNo
idYes
queryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions showing items or lists but doesn't describe the output format, whether it's read-only, if it requires authentication, or any rate limits. For a tool with no annotation coverage, this is a significant gap in 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 appropriately sized and front-loaded with the core purpose, followed by parameter explanations in a clear 'Args:' section. It avoids unnecessary words, though the structure could be slightly more polished by integrating the parameter details more seamlessly.

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?

Given the tool has an output schema, the description doesn't need to explain return values, which helps. However, with no annotations, 3 parameters (one required), and many sibling tools, the description lacks context on behavior and usage guidelines, making it only minimally adequate.

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?

The description adds meaningful context beyond the input schema, which has 0% description coverage. It explains that 'id' can be an item ID or predefined list names (e.g., 'inbox', 'today'), and clarifies that 'query' and 'filter_tags' are optional filters. This compensates well for the schema's lack of descriptions.

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 clearly states the verb 'show' and resource 'specific item or list in Things', making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_inbox', 'get_today', etc., which appear to serve similar list-retrieval functions, so it falls short of a perfect score.

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 description provides no guidance on when to use this tool versus alternatives. With many sibling tools like 'get_inbox', 'get_today', and 'search_items' that likely overlap in functionality, there's no indication of when this tool is preferred or what distinguishes it, leaving usage unclear.

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

update_projectB

Update an existing project in Things

Args: id: ID of the project to update title: New title notes: New notes when: New schedule deadline: New deadline tags: New tags completed: Mark as completed canceled: Mark as canceled

ParametersJSON Schema
NameRequiredDescriptionDefault
canceledNo
completedNo
deadlineNo
idYes
notesNo
tagsNo
titleNo
whenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Update' implies a mutation operation, the description doesn't specify what happens to fields not mentioned (partial vs full updates), whether changes are reversible, what permissions are required, or what the response format looks like. It provides basic parameter mapping but minimal behavioral context.

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

Conciseness3/5

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

The description is reasonably concise with a clear purpose statement followed by parameter explanations. However, the parameter list format ('Args:') is somewhat redundant with the schema and could be more integrated. The structure is functional but not optimally front-loaded.

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 an update tool with 8 parameters, no annotations, but with an output schema, the description provides adequate parameter semantics but lacks behavioral context. The presence of an output schema reduces the need to describe return values, but the description should still address mutation behavior, partial updates, and usage context given the sibling tools available.

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 0% schema description coverage, the description provides essential semantic information for all 8 parameters, mapping each to specific project attributes. It clarifies that 'id' identifies which project to update, 'completed' marks as completed, 'canceled' marks as canceled, etc. This significantly compensates for the lack of schema descriptions.

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 clearly states the action ('Update') and resource ('an existing project in Things'), making the purpose immediately understandable. However, it doesn't explicitly differentiate this from sibling tools like 'update_todo' or 'add_project' beyond the different resource type.

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 description provides no guidance on when to use this tool versus alternatives like 'add_project' (for creating new projects) or 'update_todo' (for updating todos instead of projects). It also doesn't mention prerequisites or constraints for using this update operation.

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

update_todoB

Update an existing todo in Things

Args: id: ID of the todo to update title: New title notes: New notes when: New schedule deadline: New deadline tags: New tags completed: Mark as completed canceled: Mark as canceled list: The title of a project or area to move the to-do into list_id: The ID of a project or area to move the to-do into (takes precedence over list) heading: The heading title to move the to-do under heading_id: The heading ID to move the to-do under (takes precedence over heading)

ParametersJSON Schema
NameRequiredDescriptionDefault
canceledNo
completedNo
deadlineNo
headingNo
heading_idNo
idYes
listNo
list_idNo
notesNo
tagsNo
titleNo
whenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While 'update' implies mutation, it doesn't describe permission requirements, whether partial updates are supported, what happens when moving todos between lists/headings, or error conditions. The description only lists parameters without explaining the tool's behavior.

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

Conciseness3/5

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

The description is front-loaded with the purpose statement, but the parameter documentation is lengthy (12 items). While each parameter explanation is concise, the overall structure could be improved by grouping related parameters or providing more conceptual guidance before the detailed list.

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 mutation tool with 12 parameters, no annotations, and 0% schema description coverage, the description does well on parameter semantics but lacks behavioral context. The presence of an output schema reduces the need to describe return values, but important aspects like error handling, partial update behavior, and permission requirements remain undocumented.

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?

The description provides clear semantic explanations for all 12 parameters beyond their titles in the schema (which has 0% description coverage). It clarifies precedence rules ('takes precedence over list/heading'), explains what each field controls, and distinguishes between title-based and ID-based parameters. This significantly compensates for the schema's lack of descriptions.

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 clearly states 'Update an existing todo in Things' which specifies the verb (update), resource (todo), and system (Things). However, it doesn't differentiate from sibling 'update_project' or explain how this differs from other update operations in the system.

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 description provides no guidance on when to use this tool versus alternatives like 'update_project' or when to use it versus creating new todos with 'add_todo'. There's no mention of prerequisites, constraints, or typical use cases for updating versus other operations.

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. 22 tool updatesv1.0.0
    • First observedadd_project
    • First observedadd_todo
    • First observedget_anytime
    • First observedget_areas
    • First observedget_headings
    • First observedget_inbox
    • First observedget_logbook
    • First observedget_projects
    • First observedget_recent
    • First observedget_someday
    • First observedget_tagged_items
    • First observedget_tags
    • First observedget_today
    • First observedget_todos
    • First observedget_trash
    • First observedget_upcoming
    • First observedsearch_advanced
    • First observedsearch_items
    • First observedsearch_todos
    • First observedshow_item
    • First observedupdate_project
    • First observedupdate_todo

TDQS

B3.2/5.0

Scored across 22 tools

Disambiguation4/5

Most tools have distinct purposes targeting specific resources like projects, todos, areas, or lists, with clear separation between creation, retrieval, and update operations. However, there is some overlap between search_items, search_todos, and search_advanced, which could cause confusion about which to use for different search scenarios.

Naming Consistency5/5

Tool names follow a highly consistent verb_noun pattern throughout, with verbs like add, get, update, and search paired with specific nouns (e.g., add_project, get_areas, update_todo, search_items). All names use snake_case uniformly, making the set predictable and easy to navigate.

Tool Count3/5

With 22 tools, the count is on the higher side for a task management server, bordering on heavy. While many tools serve distinct functions, the number might feel overwhelming compared to a more streamlined set, though it's not extreme given the domain's complexity.

Completeness5/5

The tool set provides comprehensive coverage for task management, including full CRUD operations for projects and todos, retrieval of various lists (e.g., inbox, today, upcoming), search capabilities, and management of related entities like areas, tags, and headings. No obvious gaps exist for core workflows.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers