Skip to main content
Glama
Vizioz
by Vizioz

团队合作 MCP

npm 版本

连接到 Teamwork API 的 MCP 服务器,提供与 Teamwork 项目和任务交互的简化界面。

特征

  • 连接到团队合作 API

  • 检索项目和任务

  • 创建、更新和删除任务

  • RESTful API 端点

  • 错误处理和日志记录

  • MCP 服务器用于与 Cursor 和其他应用程序集成

Related MCP server: Teamwork

先决条件

  • Node.js(v14.17 或更高版本,建议 18+ 或更好的最新 LTS 版本)

  • npm 或 yarn

  • 具有 API 访问权限的团队帐户

可用的 Teamwork MCP 工具

可通过 MCP 服务器使用以下工具:

项目工具

  • getProjects - 获取 Teamwork 中的所有项目

  • getCurrentProject - 获取当前项目的详细信息

  • createProject在 Teamwork 中创建新项目

任务工具

  • getTasks - 获取 Teamwork 中的所有任务

  • getTasksByProjectId - 获取 Teamwork 中特定项目的所有任务

  • getTaskListsByProjectId - 获取 Teamwork 中特定项目的所有任务列表

  • getTasksByTaskListId - 从 Teamwork 获取特定任务列表 ID 的所有任务

  • getTaskById - 从 Teamwork 中通过 ID 获取特定任务

  • createTask - 在 Teamwork 中创建新任务

  • createSubTask - 在 Teamwork 中的父任务下创建新的子任务

  • updateTask - 更新 Teamwork 中的现有任务

  • deleteTask从团队工作中删除任务

  • getTasksMetricsComplete - 获取 Teamwork 中已完成任务的总数

  • getTasksMetricsLate - 获取 Teamwork 中延迟任务的总数

  • getTaskSubtasks - 获取 Teamwork 中特定任务的所有子任务

  • getTaskComments - 从 Teamwork 获取特定任务的评论

评论工具

  • createComment - 创建与任务/消息/笔记本相关的评论

公司工具

  • getCompanies - 通过可选的筛选功能获取 Teamwork 中的所有公司

  • getCompanyById - 通过 ID 获取特定公司

  • createCompany - 在 Teamwork 中创建新公司

  • updateCompany - 更新现有公司的信息

  • deleteCompany从 Teamwork 中删除一家公司

人员工具

  • getPeople - 获取 Teamwork 中的所有人员

  • getPersonById - 从 Teamwork 中通过 ID 获取特定人员

  • getProjectPeople - 从 Teamwork 获取分配到特定项目的所有人员

  • addPeopleToProject - 在 Teamwork 中将人员添加到特定项目

  • deletePerson从团队中删除一个人

  • updatePerson - 更新个人信息(时区、姓名、电子邮件等)

  • getProjectsPeopleMetricsPerformance - 获取人员指标绩效

  • getProjectsPeopleUtilization - 获取人员利用率

  • getProjectPerson - 获取项目中的特定人员

报告工具

  • getProjectsReportingUserTaskCompletion - 获取用户任务完成情况报告

  • getProjectsReportingUtilization - 获取各种格式的利用率报告 CSV 和 HTML

时间工具

  • getTime - 获取所有时间条目

  • getProjectsAllocationsTime - 获取项目分配时间

  • getTimezones - 获取 Teamwork 中所有可用的时区(更新用户时区时有用)

安装

  1. 克隆存储库:

    git clone https://github.com/readingdancer/teamwork-mcp.git
    cd teamwork-mcp
  2. 依赖项:

    npm install
  3. 基于.env.example文件创建.env文件:

    cp .env.example .env
  4. 使用您的 Teamwork 凭证更新.env文件。

配置

编辑.env文件来配置应用程序:

  • PORT :服务器运行的端口(默认值:3000)

  • NODE_ENV :环境(开发、生产、测试)

  • LOG_LEVEL :日志级别(信息、错误、调试)

  • TEAMWORK_DOMAIN :您的 Teamwork 域名(例如, https://your-company.teamwork.com的域名为“your-company”)

  • TEAMWORK_USERNAME :您的 Teamwork 用户名(电子邮件)

  • TEAMWORK_PASSWORD :您的团队密码

设置凭证

您可以通过三种方式提供您的团队合作凭证:

  1. 环境变量:在您的环境中设置TEAMWORK_DOMAIN 、 TEAMWORK_USERNAME和TEAMWORK_PASSWORD 。

  2. .env 文件:创建一个包含所需变量的.env文件,如上所示。

  3. 命令行参数:运行应用程序时传递凭据:

   node build/index.js --teamwork-domain=your-company --teamwork-username=your-email@example.com --teamwork-password=your-password

或者使用缩写形式:

   node build/index.js --domain=your-company --user=your-email@example.com --pass=your-password

工具过滤

您可以使用以下命令行参数控制 MCP 服务器可用的工具:

  1. 允许列表:仅公开特定工具:

       node build/index.js --allow-tools=getProjects,getTasks,getTaskById

    或者使用缩写形式:

       node build/index.js --allow=getProjects,getTasks,getTaskById
  2. 拒绝列表:公开除指定工具之外的所有工具:

       node build/index.js --deny-tools=deleteTask,updateTask

    或者使用缩写形式:

       node build/index.js --deny=deleteTask,updateTask

使用组进行工具过滤

您现在可以指定工具组进行筛选,从而更灵活地控制 MCP 服务器可用的工具。可用的工具组包括:

  • 项目:包括所有与项目相关的工具。

  • 任务:包括所有与任务相关的工具。

  • 人员:包括所有与人员相关的工具。

  • 报告:包括所有与报告相关的工具。

  • 时间:包括所有与时间相关的工具。

  • 评论:包括特定的评论工具。

在工具过滤中使用组

您可以在允许列表或拒绝列表中指定这些组,以包含或排除组内的所有工具。例如:

  1. 允许组列表:仅公开特定组的工具:

    node build/index.js --allow-tools=Tasks,People

    或者使用缩写形式:

    node build/index.js --allow=Tasks,People
  2. 拒绝组列表:公开除指定组中的工具之外的所有工具:

    node build/index.js --deny-tools=Reporting,Time

    或者使用缩写形式:

    node build/index.js --deny=Reporting,Time

默认情况下,如果未提供允许列表或拒绝列表,则所有工具都会公开。如果同时提供允许列表和拒绝列表,则允许列表优先。

为了增强安全性,工具过滤在两个级别强制执行:

  1. 列出可用工具时(不在允许列表或拒绝列表中的工具将不可见)

  2. 执行工具调用时(尝试调用已过滤的工具将被拒绝并出现错误)

设置你的团队合作项目

要将当前解决方案与 Teamwork 项目关联,您可以使用以下方法:

使用配置文件

您可以在项目根目录中创建一个具有以下结构的.teamwork文件:

PROJECT_ID = YourTeamworkProjectID

这个简单的配置文件将您的解决方案与特定的团队合作项目关联起来,我们将来可能会使用它来存储更多详细信息。

配置完成后,MCP 将能够找到您的团队合作项目并将其与您当前的解决方案关联起来,从而减少获取与您正在处理的解决方案相关的项目和任务所需的 API 调用次数。

用法

使用 NPX(推荐)

使用 Teamwork MCP 最简单的方法是使用 npx:

npx teamwork-mcp

您还可以传递配置选项:

npx teamwork-mcp --domain=your-company --user=your-email@example.com --pass=your-password

构建应用程序

注意:如果您只想使用 MCP,则不需要这样做,请使用上面的 NPX 说明。

构建应用程序:

npm run build

这将编译 TypeScript 代码,以便将其用作 MCP 服务器

作为 MCP 服务器运行

要作为 MCP 服务器运行以便与 Cursor 和其他应用程序集成,如果您使用 .env 文件作为您的用户名、密码和 url,或者您已将它们保存在环境变量中:

注意:不要忘记根据保存存储库的位置更改驱动器和路径详细信息。

node C:/your-full-path/build/index.js

或者您可以使用行参数传递它们:

node C:/your-full-path/build/index.js --teamwork-domain=your-company --teamwork-username=your-email@example.com --teamwork-password=your-password

您也可以使用缩写形式:

node C:/your-full-path/build/index.js --domain=your-company --user=your-email@example.com --pass=your-password

使用 MCP 检查器

运行 MCP 检查器进行调试:

npm run inspector

添加到 Cursor(和其他 MCP 客户端)

要将此 MCP 服务器添加到 Cursor:

0.47 之前的版本

  1. 打开“光标设置”>“功能”>“MCP”

  2. 点击“+ 添加新的 MCP 服务器”

  3. 输入服务器的名称(例如“Teamwork API”)

  4. 选择“stdio”作为传输类型

  5. 输入运行服务器的命令: npx @vizioz/teamwork-mcp并添加如上所述的凭据和域命令行参数。

    • 您可以包含工具过滤选项: --allow=getProjects,getTasks或--deny=deleteTask

  6. 点击“添加”

0.47 之后的版本(手动编辑配置)

    "Teamwork": {
      "command": "npx",
      "args": [
        "-y",
        "@vizioz/teamwork-mcp",
        "--domain",
        "yourdomain",
        "--user",
        "youruser@yourdomain.com",
        "--pass",
        "yourPassword"
      ]
    }

如果您想添加上面提到的允许或拒绝参数,您只需像这样添加它们,您可以添加上面给出的任何示例,您还可以添加组和单个工具,如下所示:

    "Teamwork": {
      "command": "npx",
      "args": [
        "-y",
        "@vizioz/teamwork-mcp",
        "--domain",
        "yourdomain",
        "--user",
        "youruser@yourdomain.com",
        "--pass",
        "yourPassword",
        "--allow",
        "Tasks,Projects",
        "--deny",
        "getProjectsPeopleMetricsPerformance,getProjectsPeopleUtilization"
      ]

Teamwork MCP 工具现在可供 Composer 中的 Cursor Agent 使用。

执照

该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅LICENSE文件。

免责声明

该项目与 Teamwork.com 无任何关联,亦未获得其认可或赞助。软件包名称 (@vizioz/teamwork-mcp) 中使用“Teamwork”一词仅出于描述目的,以表明其与 Teamwork.com API 兼容。

Available Tools

36 tools
addPeopleToProjectB

Add people to a specific project in Teamwork

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesThe ID of the project to add people to
userIdsYesArray of user IDs to add to the project
checkTeamIdsNoOptional array of team IDs to check

TDQS

B3.1/5.0
Behavior3/5

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

The description aligns with annotations: it indicates a write operation (readOnlyHint=false) and non-destructive action (destructiveHint=false). However, it provides no additional behavioral context, such as whether adding people appends or replaces existing members, or any permission 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?

The description is a single, concise sentence without any wasted words. It is appropriately front-loaded with the action and resource. However, it could include slightly more detail without becoming verbose.

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 there is no output schema, the description should provide some indication of the result (e.g., success response, error conditions, or side effects). It does not, leaving the agent without expectations for the return value or state changes beyond the basic action.

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 documents all three parameters with clear descriptions (100% coverage). The description does not add any new meaning beyond what is in the schema, so the baseline score of 3 applies.

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

Purpose4/5

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

The description clearly states the tool adds people to a specific project. It uses a specific verb ('Add') and resource ('people to a specific project'), making the purpose understandable. However, it lacks differentiation from sibling tools like 'createProject' which might also involve adding people.

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 (e.g., using project creation to include members, or other assignment tools). There is no 'when not to use' or mention of prerequisites.

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

createCommentB

Creates a new comment for a specific resource (tasks, milestones, notebooks, links, fileversions) in Teamwork

ParametersJSON Schema
NameRequiredDescriptionDefault
resourceYesThe resource type (tasks, milestones, notebooks, links, fileversions)
resourceIdYesThe ID of the resource to add a comment to
bodyYesThe content of the comment
notifyNoWho to notify ('all' to notify all project users, 'true' to notify followers, specific user IDs, or empty for no notification)
isPrivateNoWhether the comment should be private
pendingFileAttachmentsNoComma-separated list of pending file references to attach to the comment
contentTypeNoContent type of the comment (html or plain text)plaintext
authorIdNoID of the user to post as (only for admins)

TDQS

B3.4/5.0
Behavior2/5

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

Annotations already indicate readOnlyHint=false and destructiveHint=false, so the description adds no behavioral context beyond what the schema provides. It does not explain side effects like whether the comment is posted immediately, if notifications trigger, or what happens on failure.

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

Conciseness5/5

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

The description is a single sentence with no wasted words, making it highly concise. It successfully conveys the core function without unnecessary elaboration.

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?

Despite having 8 parameters and no output schema, the description provides minimal context. It fails to explain the comment creation workflow, what the response contains, or how the notify/isPrivate parameters affect behavior. A richer description would improve completeness.

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 has 100% description coverage, so each parameter is already documented. The description does not add any meaning beyond the schema; it merely repeats the verb 'creates a comment'.

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 it creates a comment and lists the specific resource types (tasks, milestones, notebooks, links, fileversions). This clearly distinguishes it from sibling tools like createTask or createProject which create different entities.

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 use for adding comments to resources, but it does not explicitly state when to use this tool versus alternatives like updateTask or getTaskComments. No exclusion criteria or alternatives are mentioned.

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

createCompanyC

Create a new company. This tool allows you to create a company. The request requires a companyRequest object with various properties like addressOne, emailOne, name, and tags.

ParametersJSON Schema
NameRequiredDescriptionDefault
companyRequestYes
optionsNoAdditional options for the request

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already indicate it is not read-only (readOnlyHint: false) and not destructive (destructiveHint: false). The description adds that it creates a company, which is consistent, but does not disclose behavioral details like idempotency, duplicate handling, or side effects.

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 two sentences, but the second sentence largely repeats the first. It could be more concise without losing meaning, e.g., 'Create a company using a companyRequest object with properties like address, email, name, and tags.'

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 nested object structure and lack of output schema, the description fails to clarify that 'name' is required within the nested 'company' object, and does not describe the return value. It omits important context for selecting and invoking 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?

The input schema has detailed descriptions for many properties (90% coverage by my count), so the description's mention of a few properties adds little value. The schema already defines the companyRequest object structure, making the description's contribution marginal.

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 'Create a new company' with a specific verb and resource. It is distinct from siblings like updateCompany and deleteCompany, but the description is somewhat redundant and lacks additional specificity.

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 updateCompany or deleteCompany. There is no mention of prerequisites, error handling, or usage context.

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

createProjectB

Create a new project in Teamwork

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe name of the project (required)
descriptionNoThe description of the project
companyIdNoThe ID of the company the project belongs to
categoryIdNoThe ID of the category the project belongs to
startDateNoThe start date of the project (format: YYYYMMDD)
endDateNoThe end date of the project (format: YYYYMMDD)
statusNoThe status of the project

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=false and destructiveHint=false, so the agent knows it's a write operation. The description adds no extra behavioral context beyond what annotations provide.

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?

Single sentence, no wasted words, straight to the point. Front-loaded with the key action and resource.

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?

Description is minimal with no output schema. While schema covers parameters, the description does not explain return values or behavior like permission requirements. Adequate but not comprehensive.

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 has 100% description coverage for all 7 parameters. Tool description adds no additional meaning beyond the schema descriptions, so score is at baseline.

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?

Description clearly states verb 'create', resource 'project', and system 'Teamwork'. It distinguishes from siblings by name and title, but does not explicitly differentiate from other creation tools like createTask or createCompany.

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 on when to use this tool versus alternatives such as addPeopleToProject or createTask. No prerequisites or context provided for usage.

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

createSubTaskB

Creates a subtask. Create a new subtask under the provided parent task.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskRequestYesRequest body: taskRequest
taskIdYesPath parameter: taskId

TDQS

B3.3/5.0
Behavior2/5

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

Annotations indicate the tool is not read-only and not destructive, but the description adds no further behavioral context such as required permissions, side effects on parent task, or notification defaults. Minimal transparency beyond annotations.

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 concise (two sentences) but contains redundancy: 'Creates a subtask. Create a new subtask...' could be merged. Structurally fine but not maximally efficient.

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 of the schema (many nested objects and options) and no output schema, the description fails to provide sufficient context about how to use the tool effectively. Important details like identifying the parent task are left implicit.

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 has 100% description coverage, so the baseline is 3. The description does not add any additional meaning to parameters beyond what the schema already provides.

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 ('Creates a subtask') and distinguishes from sibling tools like createTask by specifying 'under the provided parent task'. This provides clear purpose and differentiation.

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 subtask needs to be created under a parent task, but it does not explicitly state when not to use it or suggest alternatives for top-level tasks. Usage context is implied but not articulated.

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

createTaskB

Creates a task. Create a new task in the provided task list.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskRequestYesRequest body: taskRequest
tasklistIdYesPath parameter: tasklistId

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=false and destructiveHint=false, so the write nature is clear. The description adds no additional behavioral context (e.g., side effects, auth needs). No contradiction, but no value beyond annotations.

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?

Two sentences, but the second is largely redundant with the first. Could be shortened to one sentence without loss. Adequate but not tight.

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 of the input schema (nested objects, many fields), the description is too minimal. No mention of return values, error handling, or required fields like tasklistId being mandatory. The output schema is missing, but annotations provide limited safety context.

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 inline descriptions for each parameter (e.g., 'Path parameter: tasklistId'). The tool description adds no parameter-specific information, so it relies entirely on the schema for semantics.

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 'Creates a task' and specifies 'Create a new task in the provided task list,' providing a specific verb and resource. It distinguishes from siblings like createSubTask and updateTask by focusing on top-level task creation.

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 on when to use this tool versus alternatives like createSubTask or updateTask. The description does not mention prerequisites (e.g., existing task list) or when not to use it. The agent must infer from the required parameter tasklistId.

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

deleteCompanyA
Destructive

This tool allows you to delete a company, be careful with this tool as it will delete the company and all associated data. It requires the following parameters: companyId.

ParametersJSON Schema
NameRequiredDescriptionDefault
companyIdYesPath parameter: companyId

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true, and the description adds that it deletes 'all associated data', providing useful context beyond the annotation.

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 sentence, but slightly wordy ('be careful with this tool as it will delete...'). Could be more concise.

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 deletion tool with no output schema and adequate annotations, the description is nearly complete. It could mention if the company must exist or error handling.

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 a description for companyId. The description repeats the parameter necessity but adds no new meaning beyond the schema.

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 (delete) and the resource (company). It distinguishes from sibling tools like deletePerson and deleteTask, as it specifically targets companies.

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 includes a warning about the irreversible nature of the deletion, but lacks explicit guidance on when to use this tool versus alternatives or conditions for safe usage.

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

deletePersonB
Destructive

Delete a person from Teamwork

ParametersJSON Schema
NameRequiredDescriptionDefault
personIdYesThe ID of the person to delete

TDQS

B3.3/5.0
Behavior2/5

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

The description merely repeats the destructive nature already indicated by destructiveHint=true. It adds no extra behavioral context, such as permanence, cascading effects, or permission requirements.

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?

Single sentence, front-loaded with key action and resource. No unnecessary words.

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 delete operation with annotations, the description is adequate but could mention permanence or that the deletion is irrevocable. Lacks detail about side effects.

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 the description of personId being clear. The tool description adds no additional meaning beyond what the schema provides.

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 (delete), resource (person), and system (Teamwork), making it easy to distinguish from sibling tools like deleteTask or deleteCompany.

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 on when to use this tool versus alternatives (e.g., updatePerson or getPersonById). No preconditions 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.

deleteTaskB
Destructive

Delete a task from Teamwork

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesThe ID of the task to delete

TDQS

B3.2/5.0
Behavior2/5

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

The description adds no behavioral context beyond the annotation destructiveHint: true. It does not clarify whether the deletion is permanent or any side effects.

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 direct sentence, concise and front-loaded. It is not verbose but could include more context without losing conciseness.

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 destructive tool with one parameter, the description is minimally adequate. It lacks detail on operation result or confirmation, but the annotations partially compensate.

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 parameter description 'The ID of the task to delete'. The tool description adds no extra meaning beyond the schema.

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 explicitly states 'Delete a task from Teamwork', providing a specific verb and resource. It clearly distinguishes from sibling tools like createTask or updateTask.

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 on when to use this tool or when not to. It does not mention alternatives or prerequisites, relying solely on the name and description.

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

getCompaniesB

Get a list of companies, retrieve all companies for the provided filters. This endpoint allows you to filter companies by various parameters including custom fields, tags, search terms, and more.

ParametersJSON Schema
NameRequiredDescriptionDefault
searchTermNoFilter by company name and description
pageNoPage number for pagination
pageSizeNoNumber of items per page
orderByNoField to order results by (e.g., name, dateadded, etc.)
orderModeNoSort order (asc or desc)
tagIdsNoFilter by tag IDs
includeCustomFieldsNoInclude custom fields in the response
fullProfileNoInclude full profile information
getStatsNoInclude stats of company tasks and projects

TDQS

B3.3/5.0
Behavior1/5

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

The description states 'Get' indicating a read-only operation, but annotations set readOnlyHint=false, contradicting the description. No additional behavioral context is provided beyond the 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?

Two concise sentences with no wasted words, front-loaded with the main purpose.

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 covers basic purpose and filtering but lacks details on pagination, ordering, and optionality of parameters. Adequate for a list endpoint but could be more complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the description adds minimal value. It highlights some filter types (custom fields, tags, search terms) but does not clarify behavior beyond schema.

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 specific verb 'Get' and resource 'companies', and mentions filtering capabilities. It clearly distinguishes from sibling getCompanyById by implying list vs single company.

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 when to use (when a filtered list of companies is needed) but does not explicitly state exclusions or alternatives like getCompanyById for single company retrieval.

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

getCompanyByIdB

Get a specific company by ID. Retrieves detailed information about a company identified by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
companyIdYesThe ID of the company to retrieve
includeCustomFieldsNoInclude custom fields in the response
fullProfileNoInclude full profile information
getStatsNoInclude stats of company tasks and projects

TDQS

B3.1/5.0
Behavior2/5

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

The description implies a read-only operation ('Retrieves'), but annotations set readOnlyHint to false, creating a contradiction. No additional behavioral traits disclosed (e.g., error handling, authentication needs).

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

Conciseness4/5

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

Two sentences, first is direct, second is slightly redundant. Could be more concise, but overall efficient and front-loaded.

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?

Missing output schema description and does not explain what 'detailed information' includes or how the boolean parameters affect the response. Incomplete for a 4-parameter retrieval tool.

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 parameters are well-documented there. The description adds no extra meaning to the parameters beyond what is in the schema.

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 verb 'Get' and the resource 'company by ID', distinguishing it from siblings like 'getCompanies' (list) and mutation tools such as 'createCompany' or 'updateCompany'. The title matches.

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 on when to use this tool vs alternatives (e.g., 'getCompanies' for a list, or 'getCurrentProject' for a different entity). No mention of prerequisites or context.

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

getCurrentProjectA

Get the current solution's Teamwork project, always check the .teamwork file in the root of the solution for the Teamwork project ID or ask the user which project they are working on.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesThe current Teamwork project ID associated with the solution.

TDQS

A3.6/5.0
Behavior4/5

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

The description adds behavioral context (checking a file, asking user) beyond annotations. No contradiction with annotations; readOnlyHint false is not clearly contradicted by 'get' since it may imply a mutation? Actually, 'get' suggests read-only, but annotation says false, so slight ambiguity. But description doesn't mention mutations, so no contradiction.

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 sentence but includes an imperative instruction. It is relatively concise and front-loaded with the purpose, though it could be more streamlined.

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?

Missing output schema and no description of what the tool returns. The tool likely returns a project object, but this is not specified. Given the complexity and sibling tools, more details would be beneficial.

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 a clear description for projectId (100% coverage). The tool description adds little additional meaning, just that the parameter can be obtained from a file or user.

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 it gets the Teamwork project for the current solution, using a specific resource and verb. It mentions checking a file or asking the user, which adds specificity but could be clearer about how it differs from getProjectById.

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 advises checking a file or asking the user, implying when to use it. However, it does not explicitly state when not to use it or contrast with sibling tools like getProjects or getProjectById.

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

getPeopleC

Get all people from Teamwork

ParametersJSON Schema
NameRequiredDescriptionDefault
userTypeNoFilter by user type
updatedAfterNoFilter by users updated after this date-time (format: ISO 8601)
searchTermNoFilter by name or email
orderModeNoOrder mode
orderByNoOrder by field
lastLoginAfterNoFilter by users who logged in after this date-time
pageSizeNoNumber of items per page
pageNoPage number
includeCollaboratorsNoInclude collaborator users
includeClientsNoInclude client users
teamIdsNoFilter by team IDs
projectIdsNoFilter by project IDs
companyIdsNoFilter by company IDs

TDQS

C2.9/5.0
Behavior2/5

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

Annotations are minimal (readOnlyHint: false, destructiveHint: false) and contradictory (readOnlyHint false for a read operation). Description adds no behavioral traits like pagination, auth requirements, or rate limits, providing little transparency beyond the bare 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 a single concise sentence with no waste. It is front-loaded with the action and resource, but could benefit from slight expansion for clarity without becoming verbose.

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?

Despite schema coverage, the description is incomplete for a tool with 13 parameters and no output schema. It omits details on pagination, filtering behavior, ordering, result format, and response structure, leaving significant gaps.

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 has full coverage (100%) with descriptions for all 13 parameters. The description does not add any additional semantics, examples, or context beyond the schema, so baseline 3 applies.

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

Purpose4/5

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

The description 'Get all people from Teamwork' clearly states the verb (Get) and resource (people), and specifies the source (Teamwork). It is not a tautology and distinguishes from siblings like getPersonById, though it could be more specific about what 'people' includes.

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 on when to use this tool versus alternatives such as getProjectPeople, getPersonById, or getProjectPerson. The description does not mention any context 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.

getPersonByIdB

Get a specific person by ID from Teamwork

ParametersJSON Schema
NameRequiredDescriptionDefault
personIdYesThe ID of the person to retrieve

TDQS

B3.1/5.0
Behavior1/5

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

The description indicates a read operation ('Get'), but the annotation 'readOnlyHint' is false, suggesting potential write behavior. This contradiction misleads the agent about the tool's safety profile.

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 unnecessary words, efficiently conveying the tool's purpose.

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 retrieval tool, the description covers the basic purpose but omits details about the return value or any additional behavior, which is adequate but not thorough.

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 has 100% description coverage for the single parameter 'personId', and the description adds no extra semantic value beyond the schema. 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?

The description 'Get a specific person by ID from Teamwork' clearly states the action (get) and resource (person by ID), distinguishing it from sibling tools like getPeople or deletePerson.

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 getPeople or other person-related tools, leaving the agent without context for selection.

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

getProjectPeopleB

Get all people assigned to a specific project from Teamwork

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesThe ID of the project to get people from
userTypeNoFilter by user type
searchTermNoFilter by name or email
orderModeNoOrder mode
orderByNoOrder by field
pageSizeNoNumber of items per page
pageNoPage number
includeObserversNoInclude project observers

TDQS

B3/5.0
Behavior1/5

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

The description says 'Get' which implies a read-only operation, but annotations set readOnlyHint to false, indicating potential side effects. This contradiction undermines trust. No additional behavioral context like authentication needs or rate limits is provided.

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?

Single sentence, front-loaded with the main action, no extraneous words. Ideal conciseness.

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?

No output schema is provided, and the description does not hint at return format or pagination. For a tool with 8 parameters including pagination and filters, the description lacks completeness.

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?

All parameters have clear descriptions in the schema, so the description adds no extra value. Baseline score of 3 is appropriate as schema coverage is 100%.

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 tool retrieves all people assigned to a specific project, using specific verb 'Get' and resource 'people' scoped to a project. It distinguishes from sibling tools like getPeople (all people) and getPersonById (single person).

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 on when to use this tool versus alternatives such as addPeopleToProject or getPeople. No context on prerequisites or limitations.

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

getProjectPersonB
Read-onlyIdempotent

Returns one or more people on a project. Retrieve a person(s) record.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesPath parameter: projectId
personIdYesPath parameter: personId
userTypeNouser type
updatedAfterNodate time
searchTermNofilter by comment content
orderModeNoorder mode
orderByNoorder by
lastLoginAfterNoQuery parameter: lastLoginAfter
pageSizeNonumber of items in a page (not used when generating reports)
pageNopage number (not used when generating reports)
skipCountsNoSkipCounts allows you to skip doing counts on a list API endpoint for performance reasons.
showDeletedNoinclude deleted items
searchUserJobRoleNoInclude user job role in search
orderPrioritiseCurrentUserNoForce to have the current/session user in the response
onlySiteOwnerNoQuery parameter: onlySiteOwner
onlyOwnerCompanyNoreturn people only from the owner company. This will replace any provided company ID.
inclusiveFilterNomake the filter inclusive for user ids, teamIds, companyIds
includeServiceAccountsNoinclude service accounts
includePlaceholdersNoinclude placeholder users
includeCollaboratorsNoexclude collaborators types, returning only account and contact.
includeClientsNoinclude clients
filterByNoCostRateNoReturns users who are missing cost rates(OCA only)
excludeContactsNoexclude contact types, returning only account and collaborator.
teamIdsNoteam ids
projectIdsNofilter by project ids
includeNoinclude (not used when generating reports)
idsNofilter by user ids
fieldsTeamsNoQuery parameter: fields[teams]
fieldsPersonNoQuery parameter: fields[person]
fieldsPeopleNoQuery parameter: fields[people]
fieldsCompaniesNoQuery parameter: fields[companies]
fieldsProjectPermissionsNoQuery parameter: fields[ProjectPermissions]
excludeProjectIdsNoexclude people assigned to certain project id
excludeIdsNoexclude certain user ids
companyIdsNocompany ids

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true and idempotentHint=true, so the agent knows it's safe. The description adds minimal behavioral context (returns one or more people, retrieves a record) but does not explain pagination, filtering behavior, or output format—leaving gaps despite good 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?

Description is very short (two sentences) and front-loaded with the purpose. However, it could be slightly more concise by removing redundancy ('Returns one or more people' and 'Retrieve a person(s) record' overlap).

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 high complexity (35 parameters) and no output schema, the description is insufficient. It does not explain how to use the many optional filters, pagination parameters, or what the response structure looks like. More detail is needed for the agent to effectively use the tool.

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 having a short description. The tool description adds 'Returns one or more people on a project. Retrieve a person(s) record.' which does not enhance parameter understanding beyond the schema. Baseline score of 3 is appropriate.

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?

Description clearly states it returns people on a project, using specific verb 'Returns' and resource 'people on a project'. However, it does not explicitly differentiate from sibling tools like getProjectPeople or getPeople, which could cause confusion.

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 on when to use this tool versus alternatives. No prerequisites, context, or exclusions mentioned. The description is generic and does not help the agent decide when to invoke this tool.

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

getProjectsC

Get all projects from Teamwork

ParametersJSON Schema
NameRequiredDescriptionDefault
updatedAfterNoFilter projects updated after this date-time (format: ISO 8601)
timeModeNoProfitability time mode
searchTermNoFilter by project name
reportTypeNoDefine the type of the report
reportTimezoneNoConfigure the report dates displayed in a timezone
reportFormatNoDefine the format of the report
projectTypeNoFilter by project type
orderModeNoOrder mode
orderByNoOrder by field
notCompletedBeforeNoFilter by projects that have not been completed before the given date (format: YYYY-MM-DD)
minLastActivityDateNoFilter by min last activity date (format: YYYY-MM-DD)
maxLastActivityDateNoFilter by max last activity date (format: YYYY-MM-DD)
userIdNoFilter by user id
pageSizeNoNumber of items in a page (not used when generating reports)
pageNoPage number (not used when generating reports)
orderByCustomFieldIdNoOrder by custom field id when orderBy is equal to customfield
minBudgetCapacityUsedPercentNoFilter by minimum budget capacity used
maxBudgetCapacityUsedPercentNoFilter by maximum budget capacity used
includeArchivedProjectsNoInclude archived projects
includeCompletedProjectsNoInclude completed projects
includeProjectOwnerNoInclude project owner
includeProjectCreatorNoInclude project creator
includeProjectCompanyNoInclude project company
includeProjectCategoryNoInclude project category
includeProjectTagsNoInclude project tags
includeProjectStatusNoInclude project status
includeProjectHealthNoInclude project health
includeProjectBudgetNoInclude project budget
includeProjectProfitabilityNoInclude project profitability
includeProjectCustomFieldsNoInclude project custom fields
includeProjectBillingMethodNoInclude project billing method
includeProjectRateCardsNoInclude project rate cards
includeProjectRateCardRatesNoInclude project rate card rates
includeProjectRateCardCurrenciesNoInclude project rate card currencies
includeProjectRateCardUsersNoInclude project rate card users
includeProjectRateCardUserRatesNoInclude project rate card user rates
includeProjectRateCardUserCurrenciesNoInclude project rate card user currencies
includeProjectRateCardTasksNoInclude project rate card tasks
includeProjectRateCardTaskRatesNoInclude project rate card task rates
includeProjectRateCardTaskCurrenciesNoInclude project rate card task currencies

TDQS

C2.7/5.0
Behavior1/5

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

Description states 'Get' implying a read-only operation, but annotations set readOnlyHint: false, indicating possible side effects. This contradiction confuses whether the tool modifies data. No additional behavioral details are provided.

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?

Single sentence is concise and front-loaded. However, it sacrifices essential details like behavior and usage context, but it remains non-redundant.

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 40 parameters, no output schema, and no usage guidance, the description is insufficient. It does not explain pagination, the effect of include booleans, or how filters interact with the 'all' claim. Agents need more context to invoke 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?

All 40 parameters have descriptions in the schema (100% coverage). The description adds no extra parameter information beyond what the schema already provides, so baseline 3 is appropriate.

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?

Description 'Get all projects from Teamwork' clearly specifies the action (get) and resource (projects). It distinguishes from sibling tools like 'getCurrentProject' which targets a single project. However, saying 'all' is slightly misleading because the schema includes many filters, implying it can return a subset.

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 on when to use this tool versus alternatives (e.g., getCurrentProject, createProject). An agent would need to infer the use case from the name and schema alone.

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

getProjectsAllocationsTimeB

Get time entries for a specific allocation. Return logged time entries for a specific allocation. Only the time entries that the logged-in user can access will be returned.

ParametersJSON Schema
NameRequiredDescriptionDefault
allocationIdYesfilter by allocation id
updatedAfterNofilter by updated after date
startDateNofilter by a starting date
endDateNofilter by an ending date
orderByNosort order
orderModeNoorder mode
pageNopage number
pageSizeNonumber of items in a page
includeTotalsNoinclude totals
includePermissionsNoinclude permissions

TDQS

B3.2/5.0
Behavior1/5

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

The description states 'Get time entries', which indicates a read-only operation, but the annotation readOnlyHint is false, suggesting the tool may modify state. This is a direct contradiction. The description also adds access control context but fails to resolve the inconsistency.

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 short (two sentences) but contains redundancy: the first two sentences essentially repeat the same information. It could be more concise by merging them.

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 mentions that only accessible time entries are returned, which is useful. However, it lacks details about the structure of the response, pagination behavior, or how parameters like page and pageSize work, especially since there is no output schema.

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 baseline is 3. The description does not add additional meaning beyond what the schema provides for each parameter, e.g., it does not explain the format of date strings or the effect of orderBy options.

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 that the tool retrieves time entries for a specific allocation, using the verb 'Get' and specifying the resource 'time entries for a specific allocation'. This distinguishes it from sibling tools like 'getTime' which likely retrieves all time entries.

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 retrieving time entries related to a specific allocation, but it does not explicitly state when to use this tool versus alternatives (e.g., getTime) or provide any exclusions or prerequisites.

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

getProjectsPeopleMetricsPerformanceA

Performance of users completing the most tasks. Count the number of completed tasks by user for the provided period. By default the user with the most completed tasks is shown first.

ParametersJSON Schema
NameRequiredDescriptionDefault
startDateNoStart date for the performance metrics period
endDateNoEnd date for the performance metrics period
orderModeNoOrder mode for sorting results

TDQS

A3.5/5.0
Behavior3/5

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

The description describes a read-like operation (counting/showing), but annotations have readOnlyHint=false, which is neutral—not a contradiction. The description does not disclose additional behaviors such as authentication requirements or side effects, but given the simple counting nature, this is acceptable.

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 two sentences, front-loading the main purpose. Every sentence adds value without 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?

For a tool with no output schema, the description lacks detail on the return format (e.g., list of users with counts). It is adequate for a simple tool but could be improved by specifying the output structure.

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 parameters are well-documented. The description adds minor value by stating the default sort order (most completed tasks first), which relates to the 'orderMode' parameter but does not explicitly tie it. This provides slight additional 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 it shows performance of users by counting completed tasks for a period, which is specific and actionable. However, it does not differentiate from the similarly named sibling tool 'getProjectsReportingUserTaskCompletion', leaving ambiguity.

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 viewing task completion performance and notes default ordering, but does not specify when to use this tool over alternatives like 'getProjectsPeopleUtilization' or 'getTasksMetricsComplete'. No explicit when-not or alternative suggestions.

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

getProjectsPeopleUtilizationC

Return the user utilization data. This endpoint provides detailed information about user utilization, including billable and non-billable time, availability, and various utilization metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
zoomNodetermine the type of zoom filter used to display on the report
startDateNofilter by start date
sortOrderNoorder mode
sortNosort by (deprecated, use orderBy)
searchTermNofilter by user first or last name
reportFormatNodefine the format of the report
orderModeNogroup by
orderByNosort by
groupByNogroup by
endDateNofilter by end date
pageSizeNonumber of items in a page
pageNopage number
skipCountsNoskip doing counts on a list API endpoint for performance reasons
legacyResponseNoreturn response without summary and its legacy body structure
isReportDownloadNogenerate a report document
isCustomDateRangeNodetermine if the query is for a custom date range
includeUtilizationsNoadds report rows for individual entities
includeTotalsNoadds report summary to response
includeCollaboratorsNoinclude collaborators
includeClientsNoinclude client users
includeArchivedProjectsNoinclude archived projects
IncludeCompletedTasksNoinclude completed tasks
userIdsNofilter by userIds
teamIdsNofilter by team ids
selectedColumnsNocustomise the report by selecting columns to be displayed
projectIdsNofilter by project ids
jobRoleIdsNofilter by jobrole ids
includeNoinclude additional data
fieldsUtilizationsNoQuery parameter: fields[utilizations] - specific utilization fields to include
fieldsUsersNoQuery parameter: fields[users] - specific user fields to include
companyIdsNofilter by company ids

TDQS

C2.9/5.0
Behavior2/5

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

The description only states it returns data, but annotations indicate readOnlyHint=false, which could be contradictory. No details on pagination, rate limits, or side effects. The description adds minimal behavioral context beyond what annotations provide.

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 concise sentences with no fluff. Front-loaded with the core action and immediately specifies what data is included.

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?

Despite 31 parameters and no output schema, the description is only two sentences. It lacks explanation of how parameters affect results, return structure, or behavior. For a complex reporting tool, this is insufficient.

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?

All 31 parameters have descriptions in the schema (100% coverage). The tool description summarizes output fields but does not add extra meaning to parameters. Baseline 3 is appropriate.

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 returns user utilization data, including billable and non-billable time, availability, and metrics. The verb 'Return' and resource 'user utilization data' are specific. However, it does not differentiate from sibling tools like getProjectsReportingUtilization, which may have overlapping purpose.

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 on when to use this tool versus alternatives or when to avoid it. The description lacks any usage context, prerequisites, or exclusions.

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

getProjectsReportingUserTaskCompletionC

Returns task completions for a given user. Retrieve a person record and its task completion stats.

ParametersJSON Schema
NameRequiredDescriptionDefault
userIdYesPath parameter: userId
userTypeNouser type
updatedAfterNodate time
startDateNostart date for task completion report
endDateNoend date for task completion report
searchTermNofilter by comment content
reportFormatNodefine the format of the report
orderModeNoorder mode
orderByNoorder by
lastLoginAfterNoQuery parameter: lastLoginAfter
pageSizeNonumber of items in a page (not used when generating reports)
pageNopage number (not used when generating reports)
skipCountsNoSkipCounts allows you to skip doing counts on a list API endpoint for performance reasons.
showDeletedNoinclude deleted items
searchUserJobRoleNoInclude user job role in search
orderPrioritiseCurrentUserNoForce to have the current/session user in the response
onlySiteOwnerNoQuery parameter: onlySiteOwner
onlyOwnerCompanyNoreturn people only from the owner company. This will replace any provided company ID.
isReportDownloadNogenerate a report document
inclusiveFilterNomake the filter inclusive for user ids, teamIds, companyIds
includeServiceAccountsNoinclude service accounts
includePlaceholdersNoinclude placeholder users
includeCollaboratorsNoexclude collaborators types, returning only account and contact.
includeClientsNoinclude clients
includeArchivedProjectsNoinclude archived projects in the report
filterByNoCostRateNoReturns users who are missing cost rates(OCA only)
excludeContactsNoexclude contact types, returning only account and collaborator.
teamIdsNoteam ids
selectedColumnsNocustomise the report by selecting columns
projectIdsNofilter by project ids
jobRoleIdsNofilter by job role ids
includeNoinclude (not used when generating reports)
idsNofilter by user ids
fieldsTeamsNoQuery parameter: fields[teams]
fieldsPersonNoQuery parameter: fields[person]
fieldsPeopleNoQuery parameter: fields[people]
fieldsCompaniesNoQuery parameter: fields[companies]
fieldsProjectPermissionsNoQuery parameter: fields[ProjectPermissions]
excludeProjectIdsNoexclude people assigned to certain project id
excludeIdsNoexclude certain user ids
companyIdsNocompany ids

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already provide readOnlyHint=false and destructiveHint=false, but the description adds no behavioral context beyond implying a read operation. It does not disclose any side effects, authentication needs, or data mutation possibilities, which is important given the readOnlyHint is false.

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 concise with two sentences, front-loading the core purpose. However, it could be slightly more informative without losing conciseness, such as mentioning that it supports reporting or filtering.

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 41 parameters, no output schema, and complex reporting capabilities, the description is severely incomplete. It doesn't explain pagination, report formats, filtering behavior, or how parameters like isReportDownload work. The agent would lack critical context for correct invocation.

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 covers 100% of parameters with descriptions, so the baseline is 3. The description adds minimal value beyond mentioning 'given user' and 'task completions', which map weakly to the many filter and pagination parameters. It does not enhance understanding of parameter usage.

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?

Description clearly states the tool returns task completions for a given user and retrieves a person record with stats. It uses specific verbs and resources, distinguishing it from sibling tools like getTasksMetricsComplete and getPersonById. However, it doesn't explicitly differentiate from all siblings, such as getProjectsReportingUtilization.

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 getTasksMetricsComplete or getPersonById. It lacks explicit usage context, exclusions, or prerequisites, leaving the agent to infer 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.

getProjectsReportingUtilizationA

Generate utilization report in various formats (CSV, HTML, PDF, XLSX). Generates a utilization report containing all people for the provided filters. Only the people that the logged-in user can access will be returned.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatYesThe format of the report
zoomNodetermine the type of zoom filter used to display on the report
startDateNofilter by start date
sortOrderNoorder mode
sortNosort by (deprecated, use orderBy)
searchTermNofilter by user first or last name
reportFormatNodefine the format of the report
orderModeNogroup by
orderByNosort by
groupByNogroup by
endDateNofilter by end date
pageSizeNonumber of items in a page
pageNopage number
skipCountsNoSkipCounts allows you to skip doing counts on a list API endpoint for performance reasons.
legacyResponseNoreturn response without summary and its legacy body structure
isReportDownloadNogenerate a report document
isCustomDateRangeNodetermine if the query is for a custom date range
includeUtilizationsNoadds report rows for individual entities
includeTotalsNoadds report summary to response
includeCollaboratorsNoinclude collaborators
includeClientsNoinclude client users
includeArchivedProjectsNoinclude archived projects
IncludeCompletedTasksNoinclude completed tasks
userIdsNofilter by userIds
teamIdsNofilter by team ids
selectedColumnsNocustomise the report by selecting columns to be displayed.
projectIdsNofilter by project ids
jobRoleIdsNofilter by jobrole ids
includeNoinclude
fieldsUtilizationsNoQuery parameter: fields[utilizations]
fieldsUsersNoQuery parameter: fields[users]
companyIdsNofilter by company ids

TDQS

A3.7/5.0
Behavior3/5

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

Annotations provide readOnlyHint=false and destructiveHint=false, and the description adds that only accessible people are returned. It does not disclose whether the report is generated server-side and stored, or just returned as a response. Since annotations already indicate non-read-only nature, the description adds 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.

Conciseness5/5

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

The description is two sentences, front-loaded with core purpose and formats, followed by details on scope and access. Every sentence adds value without 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?

With 32 parameters and no output schema, the description covers the general output (people data) but lacks details on how utilization is calculated, the meaning of various options like zoom, groupBy, etc. For a complex reporting tool, more context on typical usage scenarios would improve completeness.

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 has 100% coverage with descriptions for all 32 parameters. The description adds a high-level statement about filtering and output content. Given full schema coverage, the description does not need to elaborate on each parameter; it adds marginal value beyond the schema.

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 tool generates utilization reports in multiple formats (CSV, HTML, PDF, XLSX) and returns people data filtered by accessibility. This distinguishes it from sibling tools like getProjectsPeopleUtilization (likely raw data) and getProjectsReportingUserTaskCompletion (task completion focus). The verb 'generate report' and explicit formats make purpose unambiguous.

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 does not explicitly state when to use this tool over alternatives. It implies usage for report generation, but without comparing to siblings like getProjectsReportingUserTaskCompletion or getProjectsPeopleUtilization, an agent may not know the best tool for raw utilization data versus formatted reports. No when-not-to-use guidance.

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

getTaskByIdB

Get a specific task by ID from Teamwork

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesThe ID of the task to retrieve

TDQS

B3.3/5.0
Behavior1/5

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

Description says 'Get' implying a read-only operation, but annotations set readOnlyHint=false, contradicting the operation. No additional behavioral context is provided.

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?

Single sentence of 9 words, perfectly concise and front-loaded with the essential purpose.

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?

Fully adequate for a simple get-by-ID tool with one parameter, but the annotation contradiction undermines completeness.

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 clear description for taskId. Description adds no extra meaning beyond the schema, achieving baseline for high 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?

Description clearly states verb 'Get', resource 'a specific task by ID', and source 'from Teamwork', distinguishing it from sibling tools that list tasks or operate on other resources.

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?

No explicit when-to-use or alternatives provided, but context from siblings implies this is for retrieving a single task by ID, distinct from listing tools like getTasks.

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

getTaskCommentsA

Get comments for a specific task from Teamwork

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesThe ID of the task to retrieve comments for
pageNoPage number for pagination
pageSizeNoNumber of items per page
orderByNoOrder by field
orderModeNoOrder mode
searchTermNoFilter by comment content
updatedAfterNoFilter by updated after date (ISO 8601 format)
commentStatusNoFilter by comment status

TDQS

A3.5/5.0
Behavior3/5

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

Description is straightforward but does not disclose any behavioral traits beyond reading. Annotations indicate readOnlyHint=false and destructiveHint=false, but the tool is clearly read-only. No mention of pagination behavior or rate limits.

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?

Single concise sentence that is front-loaded with the action and resource. No wasted words.

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?

While the tool is simple, the description omits details about return format or pagination behavior. Given 8 parameters and lack of output schema, slightly more context would improve completeness.

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 descriptions for all 8 parameters. The description adds no extra meaning beyond what the schema already provides, so baseline score 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 states the action 'Get' and the resource 'comments for a specific task', distinguishing it from sibling tools like createComment and getTaskById.

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 on when to use this tool versus alternatives such as createComment or other getters. Lacks explicit context or exclusions.

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

getTaskListsByProjectIdB

Get all task lists by project ID

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesThe ID of the project to get task lists from

TDQS

B3.2/5.0
Behavior2/5

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

Annotations provide no safety hints (readOnlyHint=false, destructiveHint=false). Description simply restates the function without adding behavioral details like authentication, rate limits, or side effects.

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?

Single sentence with no fluff. Efficiently conveys the core purpose.

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?

No output schema, yet description does not explain return values or any additional context. Simple tool but missing completeness for expected results.

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 description adds no extra meaning. Baseline score of 3 is appropriate as the parameter is well-documented in the schema.

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 clearly states verb (Get), resource (task lists), and scope (by project ID). Distinguishes from sibling tool 'getTasksByProjectId' which returns tasks.

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 on when to use this tool versus alternatives. Lacks context about prerequisites or when not to use it.

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

getTasksA
Read-onlyIdempotent

Get tasks, Return multiple tasks according to the optional provided filter.

ParametersJSON Schema
NameRequiredDescriptionDefault
updatedBeforeNofilter by updated before date
updatedAfterNofilter by updated after date
todayNofilter by today
taskFilterNofilter by a taskFilter
startDateNofilter on start date
searchTermNofilter by search term
reportTypeNodefine the type of the report
reportFormatNodefine the format of the report
priorityNofilter by task priority
orderModeNoorder mode
orderByNoorder by
notCompletedBeforeNofilter by projects that have not been completed before the given date
endDateNofilter on end date
dueBeforeNofilter before a due date
dueAfterNofilter after a due date
deletedAfterNofilter on deleted after date
createdFilterNofilter by created filter
createdDateCodeNofilter by created date code
createdBeforeNofilter by created before date
createdAfterNofilter by created after date
completedBeforeNofilter by completed before date
completedAfterNofilter by completed after date
updatedByUserIdNofilter by updated user id
parentTaskIdNofilter by parent task ids
pageSizeNonumber of items in a page
pageNopage number
orderByCustomFieldIdNoorder by custom field id when orderBy is equal to custom field
includeTaskIdNoinclude task id
filterIdNoprovide a user saved filter ID
completedByUserIdNofilter by completed user id
useTaskDateRangeNouse date range logic from table when getting the tasks
useStartDatesForTodaysTasksNouse start dates for todays tasks
useFormulaFieldsNouse formula fields
useAllProjectsNofilter on all projects
sortActiveFirstNosort active tasks first
skipCountsNoSkip counts allows you to skip doing counts on a list API endpoint for performance reasons.
showDeletedNoinclude deleted items
showCompletedListsNoinclude tasks from completed lists
searchCompaniesTeamsNoinclude companies and teams in the search term
searchAssigneesNoinclude assignees in the search
onlyUntaggedTasksNoonly untagged tasks
onlyUnplannedNoonly return tasks that are unplanned. Not assigned, no due date or missing estimated time.
onlyTasksWithUnreadCommentsNofilter by only tasks with unread comments
onlyTasksWithTicketsNofilter by only tasks with tickets
onlyTasksWithEstimatedTimeNoonly return tasks with estimated time
onlyStarredProjectsNofilter by starred projects only
onlyAdminProjectsNoonly include tasks from projects where the user is strictly a project admin. site admins have visibility to all projects.
nestSubTasksNonest sub tasks
matchAllTagsNomatch all tags
matchAllProjectTagsNomatch all project tags
matchAllExcludedTagsNomatch all exclude tags
isReportDownloadNogenerate a report export.
includeUpdateNoinclude tasks latest update action
includeUntaggedTasksNoinclude untagged tasks
includeTomorrowNofilter by include tomorrow
includeTodayNofilter by include today
includeTeamUserIdsNoinclude members of the given teams
includeTasksWithoutDueDatesNoinclude tasks without due dates
includeTasksWithCardsNoinclude tasks with cards
includeTasksFromDeletedListsNoinclude tasks from deleted lists
includeTasksCountNoinclude total count of tasks for given filter
includeRelatedTasksNoinclude ids of active subtasks, dependencies, predecessors
includePrivateItemsNoinclude private items
includeOverdueTasksNoinclude overdue tasks
includeOriginalDueDateNoinclude original due date of a task
includeCustomFieldsNoinclude custom fields
includeCompletedTasksNoinclude completed tasks
includeCompletedPredecessorsNoinclude ids of completed predecessors. It must be provided with includeRelatedTasks flag or with the predecessors sideload.
includeCompanyUserIdsNoinclude members of the given companies
includeCommentStatsNoinclude number of unread and read comments for each task
includeBlockedNofilter by include blocked
includeAttachmentCommentStatsNoinclude number of unread and read comments for each file attachment
includeAssigneeTeamsNoinclude teams related to the responsible user ids
includeAssigneeCompaniesNoinclude companies related to the responsible user ids
includeArchivedProjectsNoinclude archived projects
includeAllCommentsNoinclude all comments
groupByTasklistNogroup by tasklist
groupByTaskgroupNogroup by taskgroup
getSubTasksNoget sub tasks
getFilesNoget files
fallbackToMilestoneDueDateNoset due date as milestone due date if due date is null and there's a related milestone
extractTemplateRoleNameNoFor tasks created in a project template it's possible to assign a role instead of people, companies or teams. This role is then stored with the task name as a prefix. When this flag is enabled it will extract the role name and return it inside a special field.
excludeAssigneeNotOnProjectTeamsNoexclude assignee not on project teams
completedOnlyNoonly completed tasks
checkForRemindersNocheck if task has reminders
allowAssigneesOutsideProjectNowhen filtering by assigned or unassigned tasks, include assignees that are not in the project.
tasksSelectedColumnsNocustomize the report by selecting columns to be displayed for tasks report
tasklistIdsNofilter by tasklist ids
taskgroupIdsNofilter by taskgroup ids
taskIncludedSetNofilter by task included set
tagsNofilter by tag values
tagIdsNofilter by tag ids
statusNofilter by list of task status
skipCRMDealIdsNoskip crm deal ids
selectedColumnsNocustomize the report by selecting columns to be displayed for planned vs actual.
responsiblePartyIdsNofilter by responsible party ids
projectTagIdsNofilter by project tag ids
projectStatusesNofilter by project status
projectOwnerIdsNofilter by project owner ids
projectIdsNofilter by project ids
projectHealthsNofilter by project healths 0: not set 1: bad 2: ok 3: good
projectFeaturesEnabledNofilter by projects that have features enabled
projectCompanyIdsNofilter by company ids
projectCategoryIdsNofilter by project category ids
includeCustomFieldIdsNoinclude specific custom fields
includeNoinclude
idsNofilter by task ids
followedByUserIdsNofilter by followed by user ids
filterBoardColumnIdsNofilter by board column ids
fieldsUsersNoQuery parameter: fields[users]
fieldsTimersNoQuery parameter: fields[timers]
fieldsTeamsNoQuery parameter: fields[teams]
fieldsTasksNoQuery parameter: fields[tasks]
fieldsTasklistsNoQuery parameter: fields[tasklists]
fieldsTaskgroupsNoQuery parameter: fields[taskgroups]
fieldsTaskSequencesNoQuery parameter: fields[taskSequences]
fieldsTagsNoQuery parameter: fields[tags]
fieldsProjectsNoQuery parameter: fields[projects]
fieldsMilestonesNoQuery parameter: fields[milestones]
fieldsLockdownsNoQuery parameter: fields[lockdowns]
fieldsGroupsNoQuery parameter: fields[groups]
fieldsFilesNoQuery parameter: fields[files]
fieldsCustomfieldsNoQuery parameter: fields[customfields]
fieldsCustomfieldTasksNoQuery parameter: fields[customfieldTasks]
fieldsCompaniesNoQuery parameter: fields[companies]
fieldsCommentsNoQuery parameter: fields[comments]
fieldsColumnsNoQuery parameter: fields[columns]
fieldsCardsNoQuery parameter: fields[cards]
fieldsProjectPermissionsNoQuery parameter: fields[ProjectPermissions]
expandedIdsNothe ids of the expanded tasks
excludeTagIdsNofilter by excluded tag ids
crmDealIdsNofilter by crm deal ids
createdByUserIdsNofilter by creator user ids
assigneeTeamIdsNofilter by assignee team ids
assigneeCompanyIdsNofilter by assignee company ids
CustomFieldsNofilter by custom fields

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds minimal context beyond 'Return multiple tasks.' It is consistent with annotations and does not contradict them, but does not elaborate on behavior like pagination or rate limits.

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?

Very concise: two sentences. The first sentence 'Get tasks' is somewhat redundant with the name, but the second sentence adds value. No wasted words, though it could be slightly more structured.

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 (136 parameters, no output schema, but relatively rich annotations), the description is too minimal. It does not summarize the extensive filtering capabilities, pagination, or common use cases. The schema descriptions compensate partially, but the overall tool description lacks completeness.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 136 parameters. The description only adds a generic statement about filtering, which does not add meaningful detail beyond what the schema provides. 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 clearly states 'Get tasks' and 'Return multiple tasks according to the optional provided filter.' The verb+resource is specific, and it distinguishes from sibling tools like getTaskById (single task) or getTasksByProjectId (scoped to a project).

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?

Description implies usage via 'optional provided filter' but does not explicitly state when to use this general tool versus more specific siblings like getTasksByProjectId or getTaskListsByProjectId. No alternatives 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.

getTasksByProjectIdB

Get all tasks from a specific project in Teamwork

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesThe ID of the project to get tasks from

TDQS

B3.4/5.0
Behavior2/5

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

The description implies a read operation ('Get'), but annotations set readOnlyHint to false, creating a contradiction. No additional behavioral traits (e.g., permissions, side effects) are disclosed beyond the implicit read action.

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 with no unnecessary words. It is front-loaded and 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 simple one-parameter structure and no output schema, the description is mostly complete. However, it lacks details about the return format or pagination, but this is acceptable for a straightforward retrieval.

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% and the parameter 'projectId' is described in the schema. The description adds no extra meaning beyond the schema, so baseline score 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 states 'Get all tasks from a specific project', using a specific verb and resource. Among sibling tools like getTasks and getTasksByTaskListId, this one is uniquely scoped to a project.

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 getTasks or getTasksByTaskListId. No exclusion criteria or context is given.

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

getTasksByTaskListIdC

Get all tasks from a specific task list in Teamwork

ParametersJSON Schema
NameRequiredDescriptionDefault
tasklistIdYesThe ID of the task list to get tasks from
pageNoPage number for pagination
pageSizeNoNumber of items per page
includeCompletedTasksNoInclude completed tasks in the results

TDQS

C2.9/5.0
Behavior1/5

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

Description implies a read operation ('Get all tasks'), but annotations set readOnlyHint=false, indicating possible side effects. This contradiction undermines transparency. No additional behavioral details are provided.

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?

Single sentence is concise and front-loaded with purpose. Could benefit from slight restructuring to include usage hints, but no wasted words.

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?

Lacks details on pagination, result set limits, or behavior of optional parameters like includeCompletedTasks. With no output schema, the description should provide more operational context.

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 baseline is 3. Description adds no extra meaning beyond the parameter descriptions already in the schema, e.g., does not clarify pagination or default behavior of includeCompletedTasks.

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 clearly states verb 'Get', resource 'tasks', and specifier 'from a specific task list'. It unambiguously differentiates from siblings like getTasksByProjectId or getTasks.

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 on when to use this tool versus alternatives such as getTasks or getTasksByProjectId. Agent cannot determine context for choosing this tool over siblings.

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

getTasksMetricsCompleteB

Get the total count of completed tasks in Teamwork

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior1/5

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

Description implies a read-only operation ('Get'), but annotations set readOnlyHint to false, creating a contradiction. No additional behavioral context beyond 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?

Single, concise sentence with no redundant information. Appropriate length for a simple 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 tool with no parameters and no output schema, the description sufficiently conveys its purpose. However, it could mention the return format (e.g., integer) for completeness.

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?

No parameters exist, so schema coverage is 100%. Description adds no parameter-specific info, but baseline 4 applies per rules.

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?

Description clearly states the action (Get) and resource (total count of completed tasks). It differentiates from siblings like getTasksMetricsLate but could be more explicit about its distinction from getTasks or other metric tools.

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 on when to use this tool versus alternatives (e.g., getTasksMetricsLate). No explicit when-not or alternative tools mentioned.

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

getTasksMetricsLateC

Get the total count of late tasks in Teamwork

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior1/5

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

The description claims to 'Get' data, implying a read-only operation, but the readOnlyHint annotation is false, indicating potential mutation. This is a direct contradiction. The description also fails to disclose any behavioral traits like authentication requirements or how 'late' is defined.

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 sentence without excess words. It is concise, but could be slightly more structured to include key details like the definition of 'late'.

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 count tool with no parameters and no output schema, the description is minimally adequate. However, it lacks context on what constitutes a late task and the expected output format, leaving some ambiguity.

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 input schema has no parameters, so schema coverage is 100%. The description does not need to add parameter semantics since none exist. Baseline score of 4 applies.

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

Purpose4/5

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

The description clearly states the tool retrieves the total count of late tasks. It uses a specific verb ('Get') and resource ('total count of late tasks'). However, it does not explicitly differentiate from similar sibling tools like getTasksMetricsComplete, which likely retrieves counts of completed tasks.

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 getTasksMetricsComplete or getTasks. There is no mention of context, prerequisites, or when not to use it.

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

getTaskSubtasksB

Get all subtasks for a specific task in Teamwork

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesThe ID of the task to get subtasks from
pageNoPage number for pagination
pageSizeNoNumber of items per page
includeCompletedTasksNoInclude completed tasks in the results

TDQS

B3.2/5.0
Behavior2/5

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

Annotations provide readOnlyHint=false (implying it's not read-only, though the operation is inherently read) and destructiveHint=false. The description adds no behavioral details (e.g., pagination behavior, error cases, output format).

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, well-formed sentence that is front-loaded with the core purpose. No extraneous words.

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 tool has pagination and filtering parameters and no output schema, the description provides no information about the return format, pagination defaults, or whether subtasks include nested ones. Incomplete for a moderate-complexity tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters. The description adds no additional meaning beyond what the schema provides.

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 verb 'Get' and the resource 'subtasks for a specific task', and it distinguishes from siblings like getTasks (which returns top-level tasks) and createSubTask.

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 on when to use this tool versus alternatives such as getTasks (which might include subtasks) or createSubTask. No prerequisites or exclusions mentioned.

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

getTimeB

Get all time entries. Return all logged time entries for all projects. Only the time entries that the logged-in user can access will be returned.

ParametersJSON Schema
NameRequiredDescriptionDefault
updatedAfterNofilter by updated after date
startDateNofilter by a starting date
reportFormatNodefine the format of the report
projectStatusNofilter by project status
orderModeNoorder mode
orderByNosort order
invoicedTypeNofilter by invoiced type
endDateNofilter by an ending date
billableTypeNofilter by billable type
updatedByNofilter by the user who updated the timelog
ticketIdNofilter by ticket id
tasklistIdNofilter by tasklist id
taskIdNofilter by task id (deprecated, use taskIds)
projectIdNofilter by project id (deprecated, use projectIds)
pageSizeNonumber of items in a page
pageNopage number
invoiceIdNofilter by invoice id
budgetIdNofilter by budget id
allocationIdNofilter by allocation id

TDQS

B3/5.0
Behavior1/5

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

The description indicates a read operation ('Return all logged time entries'), but the annotation readOnlyHint is false, suggesting potential mutation. This contradiction undermines transparency. Additionally, no behavioral details like pagination or rate limits are provided.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose, no fluff. Efficiently conveys core functionality.

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 tool with 19 parameters and no output schema, the description is minimal. It does not explain return format, pagination, filtering behavior, or how parameters interact. More context is needed for effective use.

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 baseline is 3. The description adds no parameter semantics beyond what the schema already provides. No examples or usage patterns are given.

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 'Get all time entries' and specifies that it returns all logged time entries for all projects accessible to the user. This is specific and distinguishes from sibling tools like getTasks or getProjects.

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 on when to use this tool vs alternatives. The description does not provide any context about when to choose getTime over other tools like getTasks or getProjects, nor does it mention any prerequisites or exclusions.

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

getTimezonesA

Get all timezones available in Teamwork. This is useful when you need to update a user's timezone and need to know the available options.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior1/5

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

The description implies a read-only operation ('Get all timezones'), but the annotation 'readOnlyHint' is set to false, contradicting the description. No additional behavioral details (e.g., side effects, data freshness) are provided. This contradiction severely undermines 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 consists of two concise sentences that front-load the primary purpose and then add a usage context. Every word adds value, with no redundancy or filler.

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 explains the purpose and use case but lacks detail on the output format (e.g., list of timezone names, codes). Since there is no output schema, the agent is left guessing the return structure. Additionally, no information about authentication or caching is given, though it may be considered standard 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?

The tool has no parameters, so the description adds no parameter-level information beyond the schema. According to guidelines, 0 parameters baseline is 4, and the description does not require parameter details.

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 explicitly states 'Get all timezones available in Teamwork', clearly identifying the verb (get) and resource (timezones). No sibling tool deals with timezones, so it is well-differentiated.

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 specifies a use case: 'when you need to update a user's timezone and need to know the available options.' This provides clear context, though it does not mention when to avoid using the tool or list alternatives, which are unnecessary given the unique functionality.

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

updateCompanyC

This tool allows you to update a company. It requires parameters: companyId and companyRequest.

ParametersJSON Schema
NameRequiredDescriptionDefault
companyIdYesPath parameter: companyId
companyRequestYes
optionsNoAdditional options for the request

TDQS

C2.9/5.0
Behavior2/5

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

Annotations indicate readOnlyHint=false and destructiveHint=false, but description adds no additional behavioral details beyond 'update', such as whether it's a partial update or what side effects occur.

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?

Single sentence is concise, but structure is not optimized; listing parameters in prose is less clear than a structured format.

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 mutation tool with nested input and no output schema, the description lacks detail on the update behavior, typical use cases, and differentiation from sibling 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 provides descriptions for most parameters, but description only repeats parameter names, adding no new semantic value beyond what the schema already offers.

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 updates a company, but does not differentiate from siblings like createCompany, deleteCompany, or other update tools.

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 on when to use this tool versus alternatives like createCompany or deleteCompany. No prerequisites or constraints mentioned.

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

updatePersonB

Update a person in Teamwork. This endpoint allows you to modify user information like timezone, name, email, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
personIdYesThe ID of the person to update
first-nameNoFirst name of the person
last-nameNoLast name of the person
email-addressNoEmail address of the person
titleNoJob title or position of the person
phone-number-officeNoOffice phone number
timezoneIdNoTimezone ID for the person
administratorNoMake this person an administrator
user-typeNoUser type (account, collaborator, contact)
company-idNoID of the company the person belongs to

TDQS

B3.3/5.0
Behavior3/5

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

Annotations indicate the tool is not read-only and not destructive, which is consistent with an update operation. The description adds that it modifies user information but does not elaborate on side effects, error scenarios, or permission requirements. With annotations providing basic safety info, the description adds 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.

Conciseness5/5

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

The description is two short sentences with no extraneous information. Every word serves a purpose, making it highly concise and 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 10 parameters with full schema descriptions and annotations, the description is adequate but lacks context on expected return value (e.g., updated object or success message) and any limitations (e.g., immutable fields). It covers the basics but could be improved.

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?

All 10 parameters have schema descriptions, so the description's mention of 'timezone, name, email, etc.' adds little beyond enumeration. The description does not clarify any parameter-specific constraints (e.g., valid formats, interdependent fields). Baseline 3 is appropriate given high schema coverage.

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 updates a person in Teamwork and lists examples of modifiable fields. However, it does not differentiate from sibling update tools (updateCompany, updateTask), which is acceptable as the resource is distinct.

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 on when to use this tool vs alternatives, or under what conditions (e.g., required permissions, prerequisites). The description only states what it does, not when to use it.

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

updateTaskB

Update an existing task. Modify the properties of an existing task.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesThe ID of the task to update
taskRequestYesThe task data to update

TDQS

B3/5.0
Behavior2/5

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

Annotations indicate readOnlyHint=false and destructiveHint=false, but the description adds no extra behavioral context such as side effects, permissions required, or notification behavior. For a mutation tool, more transparency is expected.

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 short but contains redundant sentences ('Update an existing task' and 'Modify the properties of an existing task' say nearly the same thing). It is concise but could be more efficient.

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?

Despite the tool's complexity (nested objects, many properties in taskRequest), the description is minimal and does not cover return values, partial updates, or typical use cases. Output schema is absent, increasing the need for description detail.

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 descriptions for both parameters. The description does not add additional meaning beyond what is in the schema, so a baseline score of 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?

The description clearly states the purpose: 'Update an existing task. Modify the properties of an existing task.' It specifies the verb (update) and resource (task), and distinguishes from sibling tools like createTask or deleteTask.

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 usage guidelines are provided. The description does not indicate when to use this tool versus alternatives (e.g., when to update vs create), nor does it mention any prerequisites or context for using it.

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. 1 tool updatev1.0.0
    • ChangedgetProjectsPeopleUtilization4 fields changed
      • addedInput schema / properties / fieldsUsers
        Added value: +{
        +  "description": "Query parameter: fields[users] - specific user fields to include",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / fieldsUtilizations
        Added value: +{
        +  "description": "Query parameter: fields[utilizations] - specific utilization fields to include",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • removedInput schema / properties / fields[users]
        Removed value: -{
        -  "description": "specific user fields to include",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / properties / fields[utilizations]
        Removed value: -{
        -  "description": "specific utilization fields to include",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
  2. 36 tool updates
    • First observedaddPeopleToProject
    • First observedcreateComment
    • First observedcreateCompany
    • First observedcreateProject
    • First observedcreateSubTask
    • First observedcreateTask
    • First observeddeleteCompany
    • First observeddeletePerson
    • First observeddeleteTask
    • First observedgetCompanies
    • First observedgetCompanyById
    • First observedgetCurrentProject
    • First observedgetPeople
    • First observedgetPersonById
    • First observedgetProjectPeople
    • First observedgetProjectPerson
    • First observedgetProjects
    • First observedgetProjectsAllocationsTime
    • First observedgetProjectsPeopleMetricsPerformance
    • First observedgetProjectsPeopleUtilization
    • First observedgetProjectsReportingUserTaskCompletion
    • First observedgetProjectsReportingUtilization
    • First observedgetTaskById
    • First observedgetTaskComments
    • First observedgetTaskListsByProjectId
    • First observedgetTasks
    • First observedgetTasksByProjectId
    • First observedgetTasksByTaskListId
    • First observedgetTasksMetricsComplete
    • First observedgetTasksMetricsLate
    • First observedgetTaskSubtasks
    • First observedgetTime
    • First observedgetTimezones
    • First observedupdateCompany
    • First observedupdatePerson
    • First observedupdateTask

TDQS

B3.1/5.0

Scored across 36 tools

Disambiguation3/5

Tool purposes are mostly clear, but several overlap: getProjectPerson/getProjectPeople/getPersonById, getTasks/getTasksByProjectId/getTasksByTaskListId, and the reporting tools (getProjectsPeopleMetricsPerformance, getProjectsReportingUserTaskCompletion, getProjectsPeopleUtilization) have similar names and data targets. Users need to read descriptions carefully to choose the right one.

Naming Consistency4/5

The get/create/update/delete verb pattern is consistent across projects, tasks, people, and companies. Some names are awkward or verbose (getProjectPerson, getTasksMetricsComplete, getProjectsReportingUserTaskCompletion), but the overall convention is predictable and readable.

Tool Count3/5

36 tools is on the heavy sidecka, and several retrieval/reporting endpoints overlap and could be consolidated. However, the server spans multiple related domains (projects, tasks, people, companies, time, reports), so the large count is somewhat justified by the broad scope.

Completeness3/5

Tasks and companies have solid CRUD coverage, but there are notable gaps: no project update/delete, no task list management, no person creation, and time entries can be retrieved but not created or modified. Common workflows are covered, but agents will hit dead ends for lifecycle operations.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers