Skip to main content
Glama
Vizioz
by Vizioz

팀워크 MCP

npm 버전

Teamwork API에 연결되는 MCP 서버로, Teamwork 프로젝트 및 작업과 상호 작용하기 위한 간소화된 인터페이스를 제공합니다.

특징

  • Teamwork API에 연결

  • 프로젝트 및 작업 검색

  • 작업 생성, 업데이트 및 삭제

  • RESTful API 엔드포인트

  • 오류 처리 및 로깅

  • Cursor 및 기타 애플리케이션과 통합하기 위한 MCP 서버

Related MCP server: Teamwork

필수 조건

  • Node.js(v14.17 이상, 18세 이상 또는 최신 LTS 버전 권장)

  • npm 또는 yarn

  • API 액세스가 가능한 Teamwork 계정

사용 가능한 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 - Teamwork에서 작업 삭제

  • 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 - Teamwork에서 사람 삭제

  • updatePerson - 개인의 정보(시간대, 이름, 이메일 등)를 업데이트합니다.

  • getProjectsPeopleMetricsPerformance - 사람 지표 성과 가져오기

  • getProjectsPeopleUtilization - 사람 활용도 가져오기

  • getProjectPerson - 프로젝트에 참여하는 특정 인물을 가져옵니다.

보고 도구

  • getProjectsReportingUserTaskCompletion - 사용자 작업 완료 보고서 가져오기

  • getProjectsReportingUtilization - 다양한 형식의 CSV 및 HTML로 활용도 보고서 받기

시간 도구

  • getTime - 모든 시간 항목 가져오기

  • getProjectsAllocationsTime - 프로젝트 할당 시간 가져오기

  • getTimezones - Teamwork에서 사용 가능한 모든 시간대를 가져옵니다(사용자 시간대를 업데이트할 때 유용함)

설치

  1. 저장소를 복제합니다.

    지엑스피1

  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

이 간단한 구성 파일은 귀하의 솔루션을 특정 Teamwork 프로젝트와 연결하며, 나중에 더 자세한 내용을 저장하는 데 사용할 수 있습니다.

MCP를 구성하면 Teamwork 프로젝트를 찾아 현재 솔루션과 연결할 수 있으며, 작업 중인 솔루션과 관련된 프로젝트 및 작업을 가져오는 데 필요한 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

이렇게 하면 MCP 서버로 사용할 준비가 된 TypeScript 코드가 컴파일됩니다.

MCP 서버로 실행

사용자 이름, 비밀번호 및 URL에 .env 파일을 사용하거나 이를 환경 변수에 저장한 경우 Cursor 및 다른 애플리케이션과 통합하기 위한 MCP 서버로 실행하려면 다음을 수행합니다.

참고: 저장소를 저장한 위치에 따라 드라이브 및 경로 세부 정보를 변경하는 것을 잊지 마세요.

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

커서(및 기타 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의 커서 에이전트에서 사용할 수 있습니다.

특허

이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여되었습니다. 자세한 내용은 라이선스 파일을 참조하세요.

부인 성명

이 프로젝트는 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