Skip to main content
Glama
andrewcraigmorgan

Zoho Projects MCP Server

Zoho Projects MCP Server

An enhanced Model Context Protocol (MCP) server for Zoho Projects API integration. This server enables AI assistants to interact with Zoho Projects for managing projects, tasks, issues, milestones, comments, attachments, and more.

Note: This is an enhanced fork with additional features for task lookup by prefix, tasklist management, comments, attachments, and inline image handling. Based on qpiai/zoho-projects-mcp.

Features

Supported Operations

  • Portal Management

    • List all portals

    • Get portal details

  • Project Management

    • List projects

    • Get project details

    • Create new projects

    • Update existing projects

    • Delete projects (move to trash)

  • Task Management

    • List tasks (portal or project level)

    • Get task details

    • Find task by prefix/key (e.g., CA6-T282) ⭐

    • Create tasks

    • Update tasks (with status and tasklist support)

    • Delete tasks

  • Tasklist Management

    • Create tasklists

    • Move tasks between tasklists

    • Delete tasklists

  • Task Comments

    • List comments on a task

    • Add comments to tasks

    • Edit existing comments

  • Task Attachments

    • Upload file attachments to tasks

    • List task attachments

    • Download inline images from task descriptions

    • Extract image URLs from HTML descriptions

  • Issue Management

    • List issues (portal or project level)

    • Get issue details

    • Create issues

    • Update issues

  • Phase/Milestone Management

    • List phases

    • Create phases

  • Task Statuses

    • List available statuses for a project

  • Search

    • Search across portal or project

    • Filter by module (projects, tasks, issues, milestones, forums, events)

  • User Management

    • List users in portal or project

Additional Enhancements ⭐

  • Automatic OAuth token refresh - No more manual token management

  • Empty response handling - Properly handles 204 No Content responses

  • API parameter mapping - Correct handling of status_id and tasklist_id

Related MCP server: Todoist MCP Server

Prerequisites

  1. Node.js (v18 or higher)

  2. Zoho Projects Account with API access

  3. Zoho OAuth Credentials

Setup

1. Get Zoho OAuth Credentials (Detailed Guide)

Step 1: Create a Zoho Developer Application

  1. Go to Zoho API Console

  2. Click "Add Client" button

  3. Choose "Self Client" (recommended for personal use) or "Server-based Applications"

  4. Fill in the application details:

    • Client Name: e.g., "Zoho Projects MCP"

    • Homepage URL: Your website or http://localhost for testing

    • Authorized Redirect URIs: http://localhost:8080/callback (or your preferred redirect URL)

  5. Click "Create" and note down:

    • Client ID (e.g., 1000.XXXXXXXXXX)

    • Client Secret (keep this secure!)

Step 2: Generate Authorization Code

  1. Build the authorization URL with required scopes:

    https://accounts.zoho.{REGION}/oauth/v2/auth?
      scope=ZohoProjects.portals.ALL,ZohoProjects.projects.ALL,ZohoProjects.tasks.ALL,ZohoProjects.bugs.ALL,ZohoProjects.milestones.ALL,ZohoProjects.users.READ,ZohoSearch.securesearch.READ
      &client_id=YOUR_CLIENT_ID
      &response_type=code
      &access_type=offline
      &redirect_uri=YOUR_REDIRECT_URI

    Replace {REGION} with your region:

    • US: com

    • EU: eu

    • IN: in

    • AU: com.au

    • CN: com.cn

  2. Open this URL in your browser

  3. Log in to your Zoho account and authorize the application

  4. You'll be redirected to your redirect URI with a code parameter in the URL:

    http://localhost:8080/callback?code=1000.XXXXX.XXXXX&location=in&accounts-server=https://accounts.zoho.in
  5. Copy the code value (valid for ~2 minutes, use it immediately!)

Step 3: Exchange Code for Tokens

Use this curl command to get your access and refresh tokens:

curl -X POST https://accounts.zoho.{REGION}/oauth/v2/token \
  -d "code=YOUR_AUTHORIZATION_CODE" \
  -d "client_id=YOUR_CLIENT_ID" \
  -d "client_secret=YOUR_CLIENT_SECRET" \
  -d "redirect_uri=YOUR_REDIRECT_URI" \
  -d "grant_type=authorization_code"

Response will contain:

{
  "access_token": "1000.xxxx.yyyy",
  "refresh_token": "1000.zzzz.aaaa",
  "expires_in": 3600,
  "api_domain": "https://www.zohoapis.in",
  "token_type": "Bearer"
}

Important: Save both tokens:

  • access_token: Valid for 1 hour (auto-refreshed by the server)

  • refresh_token: Long-lived, used to get new access tokens

Step 4: Find Your Portal ID

Method 1: From URL

  1. Go to your Zoho Projects in browser

  2. Look at the URL: https://projects.zoho.{REGION}/portal/{PORTAL_ID}/...

  3. The number after /portal/ is your Portal ID (e.g., 60028147039)

Method 2: Using API

curl -X GET https://projectsapi.zoho.{REGION}/api/v3/portals \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN"

Response will list all your portals with their IDs.

Step 5: Verify Credentials

Test your setup with this API call:

curl -X GET https://projectsapi.zoho.{REGION}/api/v3/portal/YOUR_PORTAL_ID/projects \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN"

Expected: JSON response with your projects list If error: Check token, portal ID, and API domain match your region

Required Scopes Summary

Make sure your OAuth token has these scopes:

  • ZohoProjects.portals.ALL - Portal operations

  • ZohoProjects.projects.ALL - Project management

  • ZohoProjects.tasks.ALL - Task management

  • ZohoProjects.bugs.ALL - Issue/bug management

  • ZohoProjects.milestones.ALL - Milestone/phase management

  • ZohoProjects.users.READ - User information

  • ZohoSearch.securesearch.READ - Search functionality

2. Setup and Installation

Node.js Setup

Prerequisites:

  • Node.js (v18 or higher)

Steps:

  1. Clone and install:

git clone <repository-url>
cd zoho-mcp
npm install
npm run build
  1. Create .env file with your credentials (see Configuration section below)

  2. Run the server:

# Stdio server (for local MCP clients)
npm start

# HTTP server (for remote access)
npm run start:http

3. Configuration

Create a .env file in the project root with the following variables:

# OAuth credentials (required)
ZOHO_ACCESS_TOKEN=your_access_token_here
ZOHO_REFRESH_TOKEN=your_refresh_token_here
ZOHO_CLIENT_ID=your_client_id_here
ZOHO_CLIENT_SECRET=your_client_secret_here

# Portal configuration (required)
ZOHO_PORTAL_ID=your_portal_id_here

# API domain (optional, choose based on your region)
ZOHO_API_DOMAIN=https://projectsapi.zoho.com
ZOHO_ACCOUNTS_DOMAIN=https://accounts.zoho.com

# HTTP Server configuration (optional, for remote access)
HTTP_PORT=3001
ALLOWED_ORIGINS=http://localhost:3000
ALLOWED_HOSTS=127.0.0.1,localhost

Region-specific domains:

  • US: projectsapi.zoho.com / accounts.zoho.com

  • EU: projectsapi.zoho.eu / accounts.zoho.eu

  • IN: projectsapi.zoho.in / accounts.zoho.in

  • AU: projectsapi.zoho.com.au / accounts.zoho.com.au

  • CN: projectsapi.zoho.com.cn / accounts.zoho.com.cn

4. Configure Claude Desktop

Add to your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

For Node.js Setup:

{
  "mcpServers": {
    "zoho-projects": {
      "command": "node",
      "args": ["/absolute/path/to/zoho-mcp/dist/index.js"],
      "env": {
        "ZOHO_ACCESS_TOKEN": "your_access_token_here",
        "ZOHO_REFRESH_TOKEN": "your_refresh_token_here",
        "ZOHO_CLIENT_ID": "your_client_id_here",
        "ZOHO_CLIENT_SECRET": "your_client_secret_here",
        "ZOHO_PORTAL_ID": "your_portal_id_here",
        "ZOHO_API_DOMAIN": "https://projectsapi.zoho.in",
        "ZOHO_ACCOUNTS_DOMAIN": "https://accounts.zoho.in"
      }
    }
  }
}

Usage Examples

Once configured, you can use Claude to interact with Zoho Projects:

List Projects

Can you list all my Zoho Projects?

Create a New Project

Create a new project called "Website Redesign" with description "Redesign company website" starting on 2025-01-15 and ending on 2025-03-31

List Tasks

Show me all tasks in project ID 1234567890

Create a Task

Create a high priority task called "Design homepage mockup" in project 1234567890, due on 2025-02-15
Search for "bug fix" in all modules

List Issues

Show me all issues in project 1234567890

Find Task by Prefix ⭐

Get the task CA6-T282

Add a Comment to a Task ⭐

Add a comment "Work in progress - will complete by EOD" to task 12345 in project 1234567890

Upload an Attachment ⭐

Upload /path/to/screenshot.png to task 12345 in project 1234567890

Move Task to Different Tasklist ⭐

Move task 12345 to tasklist 67890 in project 1234567890

Download Task Images ⭐

Download all images from task CA6-T282 to /tmp/task-images/

Project Structure

zoho-projects-mcp/
├── src/
│   └── index.ts          # Main server implementation
├── dist/                  # Compiled JavaScript (generated)
├── package.json
├── tsconfig.json
├── FORMATTING.md         # Guide for Zoho HTML formatting
├── CLAUDE.md             # Instructions for Claude Code
└── README.md

Available Tools

The server provides the following MCP tools:

Portal & Project

Tool

Description

list_portals

Get all portals

get_portal

Get portal details

list_projects

List all projects

get_project

Get project details

create_project

Create a new project

update_project

Update a project

delete_project

Delete a project (move to trash)

Tasks

Tool

Description

list_tasks

List tasks (portal or project level)

get_task

Get task details by ID

get_task_by_prefix

Find task by prefix (e.g., CA6-T282) ⭐

create_task

Create a task

update_task

Update a task (supports status_id, tasklist_id)

delete_task

Delete a task

Tasklists ⭐

Tool

Description

create_tasklist

Create a new tasklist in a project

move_task

Move a task to a different tasklist

delete_tasklist

Delete a tasklist

Comments ⭐

Tool

Description

list_task_comments

List comments on a task

add_task_comment

Add a comment to a task

edit_task_comment

Edit an existing comment

Attachments & Images ⭐

Tool

Description

upload_task_attachment

Upload a file attachment to a task

list_task_attachments

List attachments on a task

download_inline_image

Download an inline image from task description

extract_inline_images

Extract image URLs from HTML

download_task_images

Download all images from a task description

Issues

Tool

Description

list_issues

List issues (portal or project level)

get_issue

Get issue details

create_issue

Create an issue

update_issue

Update an issue

Phases & Other

Tool

Description

list_phases

List phases/milestones

create_phase

Create a phase

list_statuses

List available task statuses for a project ⭐

search

Search portal or project

list_users

List users in portal or project

Troubleshooting

Authentication Issues

  • Ensure your access token is valid and not expired

  • Verify the token has the required scopes

  • Check that the portal ID is correct

API Errors

  • Check the Zoho API documentation for rate limits

  • Ensure you're using the correct API domain for your region

  • Verify that the user has appropriate permissions

Connection Issues

  • Restart Claude Desktop after configuration changes

  • Check the Claude Desktop logs for error messages

  • Verify the server path in the configuration

OAuth Token Management

Token Expiration

Access tokens expire after 1 hour (3600 seconds). This MCP server automatically refreshes tokens using the refresh token.

Manual Token Refresh

If you need to manually refresh your access token:

# For India region (accounts.zoho.in)
curl -X POST https://accounts.zoho.in/oauth/v2/token \
  -d "refresh_token=YOUR_REFRESH_TOKEN" \
  -d "client_id=YOUR_CLIENT_ID" \
  -d "client_secret=YOUR_CLIENT_SECRET" \
  -d "grant_type=refresh_token"

# For other regions, use the appropriate accounts domain:
# US: https://accounts.zoho.com/oauth/v2/token
# EU: https://accounts.zoho.eu/oauth/v2/token
# AU: https://accounts.zoho.com.au/oauth/v2/token
# CN: https://accounts.zoho.com.cn/oauth/v2/token

Response example:

{
  "access_token": "1000.xxx.yyy",
  "scope": "ZohoProjects.portals.ALL ZohoProjects.projects.ALL...",
  "api_domain": "https://www.zohoapis.in",
  "token_type": "Bearer",
  "expires_in": 3600
}

Automatic Token Refresh

The MCP server automatically handles token refresh. Configure the following environment variables:

ZOHO_REFRESH_TOKEN=your_refresh_token_here
ZOHO_CLIENT_ID=your_client_id_here
ZOHO_CLIENT_SECRET=your_client_secret_here
ZOHO_ACCOUNTS_DOMAIN=https://accounts.zoho.in  # Match your region

The server will automatically refresh the access token before it expires.

API Reference

For detailed API documentation, visit: https://projects.zoho.com/api-docs

License

MIT

Contributing

Contributions are welcome! Please feel free to submit issues or pull requests.

Support

For issues related to:

  • MCP Server: Open an issue in this repository

  • Zoho Projects API: Contact Zoho support or check their documentation

  • Claude Desktop: Check Anthropic's documentation

Available Tools

39 tools
add_task_commentB

Add a comment to a task

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesComment text content
task_idYesTask ID
project_idYesProject ID

TDQS

B3.3/5.0
Behavior2/5

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

Without annotations, the description must convey behavioral traits, but it only states the action without detailing effects, permissions, or return behavior. It does not disclose whether the comment is appended, whether notifications are triggered, or what a successful response looks like.

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 or repetition, making it highly concise and well-structured.

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

Completeness3/5

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

For a simple create operation with three clearly named parameters, the description is somewhat adequate, but it lacks any contextual details about return values or side effects given the absence of annotations and output schema. It is minimally complete but leaves room for enhancement.

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 covers 100% of parameters with basic descriptions for each, so the baseline is 3. The tool description adds no additional parameter semantics 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 'Add a comment to a task' uses a specific verb and resource, making the tool's purpose immediately clear. It is easily distinguished from sibling tools like edit_task_comment and delete_task_comment.

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, nor does it mention any prerequisites or exclusions. There is no mention of related tools or context in which this tool is preferred.

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

create_issueD

Create a new issue

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesIssue title
due_dateNoDue date (YYYY-MM-DD)
severityNoIssue severity
project_idYesProject ID
descriptionNoIssue description

TDQS

D1.9/5.0
Behavior1/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It fails to mention whether creating an issue requires an existing project, what side effects occur, what the response contains, or any permissions needed. For a mutating operation, this is a severe transparency gap.

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

Conciseness2/5

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

The description is extremely short, but this is under-specification rather than effective conciseness. It does not earn its place because it adds no information beyond the tool name, and it omits critical context.

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

Completeness1/5

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

Given the tool has 5 parameters, no annotations, and no output schema, the description is completely inadequate. It does not explain the significance of project_id and title, the severity enum, or what the outcome of a successful creation is, leaving an agent unable to correctly select and invoke 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?

The schema has 100% coverage with descriptions for all five parameters, so the baseline is 3. The description adds no parameter-specific meaning beyond what the schema already provides; it only says 'create a new issue' without elaborating on required fields.

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

Purpose2/5

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

The description 'Create a new issue' is a tautological restatement of the tool name 'create_issue'. It provides no additional scope or context that would distinguish it from sibling tools such as update_issue or list_issues beyond the verb already present in the name.

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

Usage Guidelines2/5

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

No guidance is given regarding when to use this tool versus alternatives. There is no mention of prerequisites like an existing project, relationship to other issue-related tools, or any exclusions.

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

create_phaseB

Create a new phase/milestone

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesPhase name
end_dateNoEnd date (YYYY-MM-DD)
owner_zuidNoOwner user ZUID (numeric ID from list_users)
project_idYesProject ID
start_dateNoStart date (YYYY-MM-DD)

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description must carry the full burden. 'Create a new phase/milestone' implies mutation but does not disclose permissions, idempotency, reversibility, or any side effects. For a create operation with zero annotation coverage, this is a significant behavioral gap.

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

Conciseness5/5

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

The description is a single, concise sentence with no filler words. It states the action and the resource efficiently, earning its place without redundancy. Perfectly sized for the simplicity of the operation.

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 a well-documented schema, the description lacks behavioral context. There is no output schema, so the description should explain what a successful creation returns or any special behavior, but it does not. With no annotations and 5 parameters, the description is minimally adequate but leaves critical gaps for an agent.

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 clear description. The tool description itself adds no additional parameter semantics beyond what the schema already provides, so the baseline score of 3 is appropriate. It does not explain relationships among parameters or any dependencies beyond required fields.

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 'Create a new phase/milestone' uses a specific verb (create) and resource (phase/milestone), clearly distinguishing it from sibling tools like create_task, create_project, and create_issue. Even though it is brief, it unambiguously states what the tool does.

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

Usage 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 update_phase or list_phases. There is no mention of prerequisites, typical use cases, or when not to use it. The description is purely declarative.

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

create_projectC

Create a new project

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesProject name
end_dateNoEnd date (YYYY-MM-DD)
is_publicNoIs project public
start_dateNoStart date (YYYY-MM-DD)
descriptionNoProject description

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action of creating a project, without mentioning side effects, permissions, reversibility, or any constraints. This is insufficient for a mutation tool.

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

Conciseness4/5

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

The description is a single, short sentence with no fluff or unnecessary words. However, it is redundant with the tool name and does not earn its place by adding unique information, slightly reducing the score.

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's complexity (5 parameters, no output schema, no annotations), the description is far too minimal. It lacks information about return values, edge cases, or behavioral context that would help an agent use 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 schema covers 100% of parameters with descriptions, so the baseline is 3. The description adds no additional semantic meaning beyond what the schema already provides, but it does not need to since the schema is thorough.

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

Purpose2/5

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

The description 'Create a new project' essentially restates the tool name 'create_project' with no additional detail. It is a tautology that provides no insight beyond the name itself, failing to add value or clarify the tool's unique 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?

The description gives no guidance on when to use this tool, what prerequisites exist, or how it relates to sibling tools like update_project or list_projects. There is no context for appropriate usage scenarios.

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

create_taskB

Create a new task in a project

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesTask name
durationNoEstimated work hours for the task (e.g., 2 for 2 hours, 1.5 for 1.5 hours)
end_dateNoEnd date (YYYY-MM-DD)
priorityNoTask priority
project_idYesProject ID
start_dateNoStart date (YYYY-MM-DD)
descriptionNoTask description. IMPORTANT: Use HTML formatting (not Markdown). Use <p>, <strong>, <ul>, <ol>, <li>, <code>, <pre> tags. Markdown will display as raw text.
tasklist_idNoTasklist ID to add the task to
assignee_zpuidNoAssignee user ZPUID

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are present, so the description carries full responsibility. It does not disclose side effects, permissions, validation behavior, or return values. The bare statement 'Create a new task' is insufficient for an agent to anticipate consequences.

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

Conciseness5/5

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

One short sentence, front-loaded with the action and target. Every word contributes; there is no filler or repetition.

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

Completeness2/5

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

With 9 parameters and no output schema, the description should explain return behavior or notable preconditions. It does neither, making the tool under-specified for a create operation that may have 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%, and each parameter has a descriptive entry (e.g., 'description' notes HTML formatting, 'duration' explains format). The description adds no additional parameter context beyond this, so the baseline of 3 applies.

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

Purpose5/5

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

The description uses a specific verb ('Create') and resource ('task') with context ('in a project'), clearly distinguishing it from sibling tools like create_project or create_issue. It is concise and unambiguous.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., update_task, create_issue). The description simply states the action without contextual hints or exclusions.

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

create_tasklistB

Create a new tasklist in a project

ParametersJSON Schema
NameRequiredDescriptionDefault
flagNoTasklist visibility flag
nameYesTasklist name
project_idYesProject ID
milestone_idNoMilestone ID to associate the tasklist with

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. It only states 'Create a new tasklist' without describing side effects, permissions required, duplicate handling, or what the response contains. For a mutation tool, this is a significant transparency gap.

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

Conciseness4/5

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

The description is a single, concise sentence that front-loads the action and resource. It wastes no words, though it is somewhat minimal. Still, it earns its place by clearly stating 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?

Given 4 parameters, no annotations, and no output schema, the description is incomplete. It does not explain the relationship between tasklist, project, and milestone, nor does it mention return values or any behavioral details. The schema documents parameters but the description adds no contextual richness.

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 all parameters are already documented in the schema. The description adds no extra meaning beyond implying the tasklist belongs to a project. Baseline of 3 is appropriate since the schema carries the heavy lifting.

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's function: 'Create a new tasklist in a project.' It uses a specific verb ('create') and resource ('tasklist'), and is distinct from sibling tools like create_task, which creates a task instead. This leaves no ambiguity about what the tool does.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., project must exist), when not to use it, or how it relates to create_task or delete_tasklist. No exclusion or alternative context is given.

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

delete_phaseB

Delete a phase/milestone from a project

ParametersJSON Schema
NameRequiredDescriptionDefault
phase_idYesPhase/Milestone ID to delete
project_idYesProject ID

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of disclosing behavioral implications. It states 'Delete' but does not mention whether the operation is permanent, whether it cascades to associated tasks, or whether any permissions are required. This is insufficient for a destructive tool.

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

Conciseness5/5

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

The description is a single, clear sentence with no wasted words. It is appropriately sized for a simple tool and front-loads the key action and resource.

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?

While the schema fully covers parameters, the description lacks critical behavioral context for a destructive operation, such as permanence or side effects. Given the absence of annotations and output schema, the description should provide more guidance to ensure correct usage.

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 both project_id and phase_id described. The description adds no additional parameter context beyond the schema, so the 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 action ('Delete') and the target resource ('a phase/milestone from a project'), distinguishing it from sibling tools like list_phases, create_phase, and update_phase. The verb 'Delete' is specific and unambiguous.

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

Usage Guidelines2/5

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

The description provides no context on when to use this tool versus alternatives, nor any prerequisites or exclusions. It only restates the action without mentioning scenarios where deletion might be inappropriate or alternatives should be considered.

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

delete_projectA

Delete a project (moves to trash)

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses that deletion is not permanent ('moves to trash'), which is a meaningful behavioral trait. However, it does not mention side effects on associated projects/tasks, permission requirements, or how restoration occurs, leaving notable gaps.

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, concise sentence that front-loads the action and adds a parenthetical clarification. Every word earns its place; no redundancy or fluff.

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 one-parameter delete tool, the description is minimally adequate but lacks details about return values, error conditions, whether the deletion is cascading, and what 'trash' means for recovery (especially since no restore_project sibling exists). These gaps are significant given the lack of an 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?

The input schema already provides a 100% description coverage for the single parameter (project_id: 'Project ID'). The tool description adds no further meaning or context to the parameter, so the baseline of 3 applies.

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

Purpose5/5

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

The description clearly states the action ('Delete a project') and the resource affected, plus the behavioral nuance 'moves to trash'. It distinguishes this from sibling tools like delete_task and delete_phase by naming the specific resource.

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 explicit guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. The context is limited to the action itself, so the agent must infer usage from the tool name.

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

delete_taskB

Delete a task

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID
project_idYesProject ID

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does not state whether deletion is permanent, if the task can be restored (despite the existence of restore_task), or any side effects such as cascading deletion or auth requirements.

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

Conciseness5/5

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

The description is a single, clear sentence with no wasted words. It is front-loaded and appropriately sized for a simple delete operation.

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 no annotations or output schema, the description is too sparse. It does not explain the consequence of the delete (e.g., whether it is soft or hard delete), what happens to associated data, or what the response indicates. This is incomplete for a destructive 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 covers 100% of parameters with basic descriptions, so the baseline is 3. The description adds no further meaning to task_id and project_id, but since the schema already documents them, no deduction is applied.

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 "Delete a task" uses a specific verb (delete) and resource (task), clearly stating what the tool does. It distinguishes from sibling delete tools by specifying the resource type, so there is no ambiguity about its 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?

The description provides no guidance on when to use this tool versus alternatives like delete_project or restore_task. There is no mention of prerequisites, constraints, or when deletion is appropriate.

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

delete_task_attachmentA

Delete an attachment from a task. For WorkDrive attachments, use the third_party_file_id as the attachment_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID
project_idYesProject ID
attachment_idYesAttachment ID (or third_party_file_id for WorkDrive files)

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It only states the delete action and the WorkDrive parameter mapping (which is redundant with the schema). It does not disclose whether deletion is permanent, any permission requirements, or what side effects occur (e.g., whether the underlying file is removed in WorkDrive). This is a significant gap for a destructive operation.

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

Conciseness5/5

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

The description is extremely concise: one main sentence and a short additional note. All text is front-loaded and directly on point. While the second sentence partially restates schema info, it is short and serves to emphasize a special case, so it does not feel wasteful. No filler or 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?

The tool is simple, and the schema covers all parameters. However, with no output schema and no annotations, the description should clarify what the response looks like or whether deletion is permanent. It is adequate as a minimum viable description but leaves out expected behavioral outcomes. For a delete operation, agents often need to know if the action is reversible or what confirmation is returned.

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 three parameters including the WorkDrive note. The description adds no new parameter semantics beyond what's already in the schema. It is a baseline 3: schema does the heavy lifting, description adds nothing extra.

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 a specific verb and resource: 'Delete an attachment from a task.' This unambiguously distinguishes it from sibling tools like upload_task_attachment or list_task_attachments. The scope is precise, and the WorkDrive note adds clarifying context without muddying the purpose.

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 makes it clear when to use this tool: when you need to delete an attachment. It doesn't explicitly mention alternatives, but the context is straightforward and no exclusions are stated. The WorkDrive instruction also provides a usage nuance. It could be improved by explicitly saying 'not for listing' but the operation is obvious.

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

delete_task_commentB

Delete a comment from a task

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID
comment_idYesComment ID to delete
project_idYesProject ID

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses the destructive action but omits critical traits like permanence, permission requirements, or cascading effects. The one-sentence description adds little beyond the tool name.

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 redundant or unnecessary information. It is extremely concise 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?

For a delete operation with no annotations and no output schema, the description is insufficient. It omits details about irreversibility, success/failure responses, or any prerequisite conditions. While the operation is simple, a complete description should at least note that the action is permanent.

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% because each parameter has a basic description (e.g., 'Comment ID to delete'). The tool description adds no additional meaning for parameters, so baseline 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 action ('Delete') and the resource ('a comment from a task'). It unambiguously distinguishes from sibling tools like add_task_comment, edit_task_comment, and delete_task_attachment.

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 is provided. There is no mention of context, prerequisites, or exclusions. The usage is implied only by the tool name and brief description.

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

delete_tasklistB

Delete a tasklist from a project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID
tasklist_idYesTasklist ID to delete

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose any side effects, such as whether tasks within the tasklist are also deleted, permission requirements, or reversibility of the operation. It offers only the bare action without 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 a single, concise sentence with no redundant words. It is appropriately sized for a simple tool and front-loaded with the primary action.

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 no annotations and no output schema, this description is incomplete. It does not mention potential consequences, such as what happens to tasks within the tasklist, or any prerequisites, making it insufficient for an agent to fully assess the impact of invoking this 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?

The input schema already provides descriptions for both parameters (project_id and tasklist_id) with 100% coverage. The description adds minimal value beyond confirming that the tasklist belongs to a project, which is already implicit 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 uses the specific verb 'Delete' with resource 'tasklist' and scope 'from a project', clearly distinguishing it from sibling tools like delete_task or delete_project. It is unambiguous and directly states the tool's intended function.

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 other deletion tools, nor are there any exclusions or alternative suggestions. The description only states what it does, leaving the agent to infer usage from the name alone.

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

download_inline_imageA

Download an inline image from a Zoho task description URL to a local file. Use this to download screenshots/images embedded in task descriptions.

ParametersJSON Schema
NameRequiredDescriptionDefault
image_urlYesThe Zoho inline image URL (e.g., https://projects.zoho.com/viewInlineAttachmentForApi/image?file=...)
output_pathYesAbsolute path where the image should be saved (e.g., /path/to/image.png)

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral details, but it only states the basic action. It does not mention whether existing files are overwritten, authentication requirements, or potential failure modes such as expired URLs. This leaves a significant transparency gap.

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 with no filler; the first sentence states the purpose and the second provides usage context. Every word earns its place.

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

Completeness4/5

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

For a two-parameter download tool, the description covers its purpose and usage context. However, with no annotations or output schema, it could be more explicit about expected behavior and relationship to sibling tools like extract_inline_images and download_task_images.

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%—both image_url and output_path have descriptive text, including an example for image_url. The description adds no additional parameter semantics beyond the schema.

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

Purpose4/5

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

The description clearly states the action ('Download an inline image') and specifies the source ('from a Zoho task description URL') and destination ('to a local file'). It also adds usage context ('screenshots/images embedded in task descriptions'), but does not explicitly distinguish from sibling tools like extract_inline_images or download_task_images.

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 line 'Use this to download screenshots/images embedded in task descriptions' provides clear context for when to use the tool, but it does not mention alternatives or exclusions, so it stops short of a full comparative guideline.

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

download_task_imagesA

Download all inline images from a task description to a local directory. Returns the mapping of original URLs to local file paths.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID
output_dirYesAbsolute path to directory where images should be saved
project_idYesProject ID

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the main behavior (downloads images, saves to a local directory, returns mapping) but omits potential side effects such as file overwriting, directory creation, or handling of missing images. It is transparent about the core action but not exhaustive.

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 concise sentences that state the action and the return value without any filler. Every word contributes meaning, and it is well-structured for quick scanning.

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 3 straightforward parameters and no output schema, the description adequately covers the purpose, input (task description), and return value (mapping). It lacks some edge-case context but is sufficient for basic selection and invocation. The presence of sibling tools suggests more detail on differentiation could enhance completeness, but it is not critical.

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

Parameters3/5

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

Schema description coverage is 100%, so each parameter already has a clear description. The tool description adds no additional parameter context beyond restating that images are saved to a local directory, which aligns with output_dir. It does not go 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 a specific verb ('Download') with a specific resource ('all inline images from a task description') and destination ('to a local directory'). It also distinguishes from sibling tools like 'download_inline_image' (singular) by specifying 'all inline images' and the return mapping.

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 the usage context (downloading all inline images from a task description) but does not explicitly mention when to use this tool over alternatives like 'download_inline_image' or 'extract_inline_images'. There is no direct comparison or exclusionary guidance.

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

edit_task_commentB

Edit an existing comment on a task

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesNew comment text content
task_idYesTask ID
comment_idYesComment ID to edit
project_idYesProject ID

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only states the basic edit action and does not disclose what happens to the original content, whether edits are partial or full replacements, or any error behavior for nonexistent comments.

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 concise sentence with no wasted words. It delivers the essential purpose immediately and is appropriately sized for a straightforward edit operation.

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 mutating tool with no annotations and no output schema, the description is minimal. It fails to explain key behavioral details such as idempotency, failure modes, or whether the content replaces the entire comment, leaving the agent without enough context to use the tool safely in edge cases.

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 provides complete descriptions for all four parameters (project_id, task_id, comment_id, content), achieving 100% coverage. The description adds little beyond the schema, but the schema already clearly documents what each parameter means.

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 'Edit an existing comment on a task' uses a specific verb ('Edit') and identifies the exact resource (existing comment on a task). It clearly distinguishes this tool from siblings like add_task_comment and delete_task_comment by implying the comment already exists.

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 phrase 'existing comment' implies this tool should be used when the target comment already exists, as opposed to adding or deleting. However, there is no explicit guidance about when to prefer this over alternatives or what conditions must be met before editing.

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

export_projectA

Export an entire Zoho project to a local directory. Creates a portable export with project.json containing all data and an images/ folder with downloaded attachments. Use this for importing projects into other systems.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_dirYesAbsolute path to directory where export should be saved. Will create project.json and images/ subfolder.
project_idYesZoho Project ID to export
include_imagesNoWhether to download inline images from task descriptions (default: true)

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the creation of project.json and an images/ folder with downloaded attachments, but does not mention potential side effects like overwriting existing files, required permissions, or rate limits. This is basic behavioral info but lacks depth.

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—two sentences—with the main action front-loaded. Every word earns its place, and there is no redundant or extraneous information.

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

Completeness4/5

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

For a tool with 3 parameters and no output schema, the description explains the core behavior, output artifacts, and a usage scenario. It lacks edge-case details like error handling or behavior when the output directory exists, but it is sufficient for typical use cases.

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

Parameters3/5

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

The schema covers 100% of parameters with descriptions. The description text adds some context by mentioning the output structure (project.json and images/ subfolder), but this largely repeats the schema's own description for output_dir. No new meaning is added 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's function with a specific verb and resource: 'Export an entire Zoho project to a local directory.' It also specifies the output format and contents (project.json and images/ folder), which distinguishes it from sibling tools like get_project or download_task_images.

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 explicitly states when to use this tool: 'Use this for importing projects into other systems.' This provides clear context, though it does not name specific alternative tools or exclusions, so it stops short of a full 5.

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

extract_inline_imagesA

Extract all inline image URLs from a task description HTML. Returns a list of Zoho image URLs that can be downloaded.

ParametersJSON Schema
NameRequiredDescriptionDefault
htmlYesThe task description HTML to extract image URLs from

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It indicates the output is a list of URLs 'that can be downloaded', implying this tool does not download them, but it does not explicitly state read-only behavior, side effects, or any prerequisites. Adequate but basic.

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 with no wasted words: the first states the action and input, the second states the output. Perfectly sized for the tool's simplicity.

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

Completeness4/5

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

For a one-parameter tool with no output schema, the description covers input, action, and output type. It lacks detail on the exact structure of the returned list and edge cases, but it is sufficient for a straightforward extraction task.

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 description 'The task description HTML to extract image URLs from' is clear. The tool description adds no extra parameter detail beyond the schema, so it meets the 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?

The description clearly states the verb 'Extract' and the resource 'inline image URLs from a task description HTML', and specifies the output as a list of Zoho image URLs. This distinguishes it from sibling tools like download_inline_image and download_task_images, which focus on downloading rather than extraction.

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

Usage Guidelines4/5

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

The description implies use when the agent needs to extract image URLs without downloading, and the sibling context shows download-specific tools. However, it does not explicitly mention alternatives or exclusions, so it stops short of a full 5.

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

get_issueB

Get details of a specific issue

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_idYesIssue ID
project_idYesProject ID

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are present, so the description carries the full burden. 'Get details' clearly implies a read-only operation, but it does not disclose error handling, authorization needs, or response format. This is adequate for a simple getter but minimal.

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, focused sentence with no redundant wording. It is front-loaded with the verb and resource, making it maximally 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?

For a low-complexity getter with fully documented parameters, the description is functional and sufficient for basic selection. However, the absence of annotations and output schema means a bit more context about expected return or use case would enhance completeness, though it is not critically lacking.

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 provides full descriptions for both parameters (project_id and issue_id), achieving 100% schema coverage. The description adds no parameter-level meaning beyond what the schema already states, 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 uses a specific verb ('Get') and resource ('specific issue'), clearly indicating a single-issue retrieval operation. It is unambiguous and inherently distinguishes from list_issues, though it doesn't explicitly name alternatives.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus list_issues or other get_* tools. The description states only what the tool does, not the context or conditions under which it should be selected.

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

get_portalB

Get details of a specific portal

ParametersJSON Schema
NameRequiredDescriptionDefault
portal_idYesPortal ID

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It only states 'Get details' without elaborating on the response structure, potential errors, or whether any permissions are required. This does not add meaningful context beyond the tool's name.

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

Conciseness5/5

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

A single, succinct sentence that is front-loaded with the key information. There is no redundant phrasing or extraneous content, making it highly concise and easy to parse.

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 tool is simple with one parameter and no output schema, so the description is minimally viable. However, it does not specify what 'details' include or how it relates to list_portals, leaving some ambiguity about the exact scope of information returned. Completeness 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 covers 100% of the parameter (portal_id) with a basic description 'Portal ID'. The description adds no further semantic detail, such as expected format or example values. Baseline score of 3 is appropriate given full schema coverage.

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

Purpose5/5

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

The description 'Get details of a specific portal' uses a clear verb-resource pair, precisely identifying the action and target. It is easily distinguished from sibling tools like list_portals or get_project, making the 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 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 such as list_portals (to discover portal IDs) or get_project. There is no mention of prerequisites or contexts where this tool is preferred, leaving the usage decision to the agent's inference.

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

get_projectA

Get details of a specific project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are available, so the description carries the full burden for behavioral disclosure. It only says 'Get details' and does not mention whether the operation is read-only, requires specific permissions, or how it handles a non-existent project ID. This leaves the agent uncertain about important behavioral traits.

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, front-loaded sentence with no redundant words. It efficiently conveys the core action and resource, making it appropriately concise for a simple get tool.

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

Completeness3/5

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

Given the tool's simplicity (one parameter, no output schema), the description is adequate but sparse. It does not describe the return format or error behavior, and with no annotations, contextual information is minimal. However, for a basic get operation, the description covers the essential purpose.

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 fully describes the only parameter (project_id) with clear meaning, achieving 100% schema description coverage. The tool description adds no additional parameter context, but since the schema already provides the necessary semantics, the 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 uses the verb 'Get' with a specific resource 'details of a specific project', clearly indicating a retrieval operation for one project. This distinguishes it from sibling tools like list_projects (which lists all) and mutation tools such as create_project or update_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?

The description implies this is used when a single project's details are needed, but it does not explicitly state when to use it versus alternatives like list_projects or get_task. No exclusions or alternative tool references are provided, so usage guidance is solely implicit.

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

get_taskC

Get details of a specific task

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID
project_idYesProject ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of disclosing behavioral traits. It only implies a read operation ('Get details') but omits information about authentication, response format, failure behavior, or whether the task must exist.

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 that front-loads the verb and avoids superfluous content. It is efficient but could include a brief note about required identifiers 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?

Given the tool's simplicity (two parameters, no nested objects), the description is minimally adequate, but it does not explain what 'details' entails or what the response looks like. The absence of an output schema makes this lack of return information more significant.

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?

Both parameters are already documented in the schema with descriptions ('Task ID', 'Project ID'), achieving 100% schema coverage. The description adds no additional meaning or context beyond what the schema provides, so the baseline 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?

The description clearly states the action ('Get') and the resource ('details of a specific task'), making it easy to understand the tool's core purpose. It distinguishes itself from list_tasks by focusing on a single task, though it does not explicitly call out alternatives like get_task_by_prefix.

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 such as list_tasks or get_task_by_prefix. It leaves the agent to infer usage context from the name and schema, which is insufficient.

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

get_task_by_prefixA

Find and get a task by its prefix/key (e.g., 'CA6-T282'). Searches through tasks to find a match.

ParametersJSON Schema
NameRequiredDescriptionDefault
prefixYesTask prefix/key (e.g., 'CA6-T282')
project_idNoProject ID (optional, searches portal-wide if not provided)

TDQS

A3.7/5.0
Behavior3/5

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

There are no annotations, so the description carries the full burden of behavioral disclosure. It states that the tool 'searches through tasks to find a match,' implying it returns a single match, but it does not describe behavior when multiple tasks share a prefix or when no match exists. This is minimal disclosure for a search-like operation.

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

Conciseness5/5

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

The description is two short sentences, immediately stating the search mechanism and providing a concrete example. There is no redundancy or filler, and every sentence earns its place.

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

Completeness3/5

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

With no output schema and no annotations, the description must clarify return behavior and limits. It explains the match criterion but omits how ambiguity is resolved, what happens on no match, and the shape of the returned task object. For a simple lookup, it is adequate but not fully 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 coverage is 100%: both parameters have clear descriptions, including 'project_id' being optional with portal-wide search. The description adds a useful format example for the prefix, but it largely repeats the schema's information and provides no additional semantics beyond the structured definitions.

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's action with a specific verb ('Find and get'), a resource ('task'), and a distinct mechanism ('by its prefix/key'). The concrete example 'CA6-T282' differentiates it from sibling tools like get_task or list_tasks, making its 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 implies a usage context: when a partial task key is known. However, it does not explicitly contrast this with get_task (exact ID) or search (full-text), and no when-not-to-use guidance is provided. The intended use is inferable but not openly stated.

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

list_issuesB

List issues from a project or portal

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
per_pageNoItems per page
project_idNoProject ID (optional for portal-level)

TDQS

B3.4/5.0
Behavior2/5

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

There are no annotations, so the description must disclose behavioral traits. It does not mention pagination (despite page/per_page parameters), nor clarify that project_id is optional and lists portal-level issues when omitted. This is a gap for a list tool.

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

Conciseness5/5

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

One short sentence that gets straight to the point. No redundant information.

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?

The tool has no output schema and no annotations; the description is too sparse. It should mention that it returns a paginated list of issues and how project_id scoping works, to fully guide the agent.

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 already described. The description's 'project or portal' phrase adds slight context aligning with project_id's description, but no new meaning about page/per_page.

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

Purpose5/5

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

The description uses a specific verb 'List' and resource 'issues', with scope 'from a project or portal'. This clearly conveys the operation and distinguishes it from sibling tools like get_issue and create_issue.

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 listing issues but provides no explicit guidance on when to prefer this over get_issue or how it relates to list_projects/list_portals. 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.

list_phasesB

List phases/milestones from a project

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
per_pageNoItems per page
project_idYesProject ID

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavior. It indicates a read operation ('List') but does not mention that results are paginated or that it only applies to a single project. It does not describe any side effects or requirements beyond what is in 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.

Conciseness4/5

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

The description is a single concise sentence with no wasted words. It is appropriately front-loaded but could arguably state a bit more without becoming verbose.

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

Completeness3/5

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

Given the simple nature of the tool and full schema coverage, the description is minimally adequate but leaves gaps: it does not mention pagination, that project_id is required, or what the response contains. Since there is no output schema, this 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?

The schema already provides descriptions for all three parameters (project_id, page, per_page). The description adds no additional parameter semantics beyond the phrase 'from a project', and does not elaborate on pagination or filtering behavior.

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 (List) and the resource (phases/milestones) and scopes it to a project, distinguishing it from sibling list tools like list_tasks or list_projects.

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 gives no explicit guidance on when to use this tool versus alternatives. It does not mention any exclusions or when not to use, leaving the agent to infer from the tool name and context.

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

list_portalsA

Retrieve all Zoho Projects portals

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It indicates a read-only operation ('Retrieve all'), but does not disclose potential pagination, response size, or authentication requirements. For a simple list-all with no parameters, this is adequate but not rich.

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, compact sentence with no redundant words. It front-loads the action and resource, achieving maximum conciseness.

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

Completeness4/5

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

Given the tool's simplicity (no params, no output schema), the description sufficiently communicates the action and scope. However, it does not describe the return structure or any pagination behavior, which would be a minor gap for richer 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 zero parameters and the schema is empty (100% coverage by default). The description implies no filtering is needed ('all portals'), aligning with the schema. Baseline for 0 params is 4, and the description adds slight semantic confirmation.

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 'Retrieve' and the resource 'all Zoho Projects portals', making it unambiguous. This distinguishes it from siblings like get_portal (single portal) and list_projects (different resource).

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 get_portal or list_projects. There are no explicit alternatives or exclusions, leaving the agent to infer usage context.

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

list_projectsB

List all projects in a portal

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
per_pageNoItems per page

TDQS

B3.4/5.0
Behavior2/5

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

The description says 'List all projects' but the schema includes pagination parameters (page, per_page), meaning a single call does not necessarily return all projects. The lack of annotations places the burden on the description, which fails to disclose pagination behavior, portal selection, or read-only guarantees.

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 that is easy to parse. However, it omits potentially relevant nuances like pagination and portal context, making it slightly under-specified rather than optimally concise.

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 list tool with two optional parameters, the description provides a basic understanding but lacks important context: it does not explain how the portal is selected (since no portal parameter exists), how pagination works to retrieve all projects, or what fields are returned. Given the absence of an output schema and annotations, more detail 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 description coverage is 100%, with both parameters (page, per_page) already documented in the input schema. The description adds no parameter-specific meaning, 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.

Purpose5/5

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

The description uses a specific verb ('list') and resource ('projects'), and clarifies scope ('in a portal'). It clearly distinguishes from siblings like list_portals and get_project, which are named differently and pertain to different resources or actions.

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 you need to list projects) but provides no explicit guidance on when to prefer this over alternatives like search or list_tasks. No exclusions or alternative tools are mentioned, leaving the agent to infer context.

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

list_statusesA

List available task statuses for a project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations available, the description carries the full burden. It clearly indicates a read operation ('List'), but does not disclose any additional behavior such as ordering, inclusion of custom statuses, or permission requirements. For a simple list tool this is adequate but minimal.

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

Conciseness5/5

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

One concise sentence with no wordiness. The key action ('List') leads, and the resource and scope are clear. Every word earns its place.

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 tool with one parameter and no output schema, the description is nearly complete. It adequately conveys the purpose and scope. It could have hinted at the return format, but the name 'list_statuses' and verb 'List' strongly imply a list return, so no significant gap exists.

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

Parameters3/5

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

The schema already describes 'project_id' as 'Project ID', providing 100% coverage. The description only restates that statuses are 'for a project', adding no new meaning about the parameter's format or constraints. The baseline 3 applies because schema coverage is complete.

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

Purpose5/5

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

The description uses a specific verb ('List') and resource ('task statuses') with a clear scope ('for a project'). It distinguishes itself from sibling listing tools like list_tasks and list_phases by naming the specific resource.

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 the tool (when needing statuses for a project) but provides no explicit guidance on alternatives or exclusions. It does not mention when not to use it or point to sibling tools, so it remains implied rather than stated.

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

list_task_attachmentsB

List attachments on a task

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID
project_idYesProject ID

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden. It does not disclose any behavioral traits beyond what 'List' implies, such as that it is read-only, requires specific permissions, or what it returns. The description is bare and adds no safety or side-effect 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 a single, front-loaded sentence with no wasted words. It is appropriately sized for the tool's simplicity.

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

Completeness3/5

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

Given the low complexity and full schema coverage, the description is minimally viable but lacks key context such as what kind of attachments are included, whether pagination applies, and what the response format looks like (no output schema). There are clear gaps but the basic purpose is clear.

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

Parameters3/5

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

The input schema has 100% description coverage for both parameters (task_id and project_id), and the description adds no further parameter meaning. The baseline of 3 applies because the schema already documents the parameters adequately.

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 'List attachments on a task' uses a clear verb ('List') and resource ('attachments'), and is distinct from sibling tools like upload/delete_task_attachment. It is specific enough, though it does not explicitly state scope (e.g., all attachments) or differentiate from download_task_images.

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 or when to prefer alternatives. The usage is only implied by the verb 'List', with no explicit exclusions or references to sibling tools.

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

list_task_commentsB

List comments on a task

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
task_idYesTask ID
per_pageNoItems per page
project_idYesProject ID

TDQS

B3.3/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden. The phrase 'List comments' implies a read-only operation, but no additional behavioral details are disclosed—such as whether results are ordered, whether deleted comments are included, or what the response structure is. The description is minimal and adds no transparency beyond the tool's name.

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, focused sentence with no redundancy or filler. It conveys exactly what the tool does in the fewest words possible, earning a high score for 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 list tool with a fully documented schema, the description is adequate but lacks any mention of the return format (e.g., array of comment objects) or additional context like whether pagination is mandatory. Since there is no output schema, a bit more detail about what the tool returns would improve completeness, but the current level is minimally viable.

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 all four parameters (project_id, task_id, page, per_page) already have descriptions. The tool description adds no extra parameter context, but it does not need to because the schema handles the semantics fully. 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 'List comments on a task' uses a specific verb (list) and resource (comments on a task), making it unambiguous. It clearly distinguishes from sibling tools like add_task_comment, edit_task_comment, and delete_task_comment by focusing on the read-only listing operation.

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. It does not mention any specific context, such as pagination behavior, filtering use cases, or that this is the appropriate tool for retrieving all comments on a task. The description leaves usage entirely to inference from the name.

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

list_tasksB

List tasks from a project or portal

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
per_pageNoItems per page
project_idNoProject ID (optional for portal-level)

TDQS

B3.3/5.0
Behavior2/5

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

There are no annotations, and the description only states 'List tasks' without disclosing behavior such as pagination defaults, ordering, permissions, or whether results are scoped by portal/project. It adds minimal value beyond the tool's name.

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

Conciseness5/5

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

One short sentence front-loaded with the main action, no filler words. Appropriate length and structure for a simple list operation.

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

Completeness3/5

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

Given the simple listing nature, the description is adequate but sparse. It lacks any mention of return format or additional filters beyond what the schema provides, and with no output schema, the agent must infer the response 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?

The input schema provides 100% parameter coverage (page, per_page, project_id), and the description offers no additional parameter context. The phrase 'from a project or portal' hints at project_id's optionality but the schema already states that.

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 the specific verb 'List' with the resource 'tasks' and clearly states scope ('from a project or portal'), distinguishing it from sibling tools like list_issues and list_projects.

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 search or get_task_by_prefix. It only states what it does, without clarifying exclusions or preferred use cases.

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

list_usersA

List users in a portal or project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoProject ID (optional for portal-level)

TDQS

A3.8/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only states 'List users', which implies read-only but does not mention potential pagination, required permissions, or any other side effects or return characteristics. The portal/project scoping is the only behavioral nuance disclosed.

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, front-loaded sentence with no redundant words. It communicates both the action and the scoping in an efficient manner.

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

Completeness4/5

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

Given the tool's simplicity (one optional parameter, no output schema), the description covers the core purpose and scope adequately. However, it lacks any mention of return value structure or pagination, which would be helpful for an agent, so it is not a perfect 5.

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 covers the project_id parameter fully, including its optionality for portal-level, and the tool description reinforces this by mentioning 'portal or project'. No additional parameter-level detail is added beyond the schema, so the 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 uses a specific verb+resource construction, 'List users in a portal or project', clearly identifying the resource and scope. This distinguishes it from sibling tools like list_portals and list_projects, which operate on different resources.

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 provides clear context that the tool can be used for portal-level or project-level user listing, and the optional project_id parameter aligns with this dual scope. However, it does not explicitly state when not to use it or mention alternatives, though no overlapping user-listing siblings exist.

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

move_taskB

Move a task to a different tasklist

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID
project_idYesProject ID
tasklist_idYesTarget tasklist ID to move the task to

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose side effects and behavioral traits. It merely states the action without explaining what happens to the task's old tasklist, whether the move is reversible, if permissions are required, or what the return value is. This is a significant gap for a mutation tool.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler words. It efficiently communicates the core intent without redundancy, earning a perfect score for 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?

While the schema fully documents the parameters, the description lacks essential context for a move operation, such as whether the task will be removed from its original list, any constraints on cross-project moves, or what is returned upon success. Given the absence of annotations and output schema, the description is incomplete for an AI agent that needs to understand the tool's 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?

The input schema already provides descriptions for all three required parameters, including 'Target tasklist ID to move the task to' for tasklist_id. The tool description adds no additional semantic nuance beyond the schema, so the baseline 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 uses the specific verb 'move' with a clear resource ('task') and destination ('different tasklist'). It unambiguously distinguishes from sibling tools like update_task or create_task because none of those describe relocating a task between lists. The tool name and description align perfectly.

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 explicit when-to-use guidance or comparison with alternatives, such as whether update_task could also change the tasklist or if there are prerequisites. It simply states the action, leaving the agent to infer when this tool is appropriate. There is no mention of exclusions or context.

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

restore_taskB

Restore a deleted task from trash

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID of the deleted task to restore
project_idYesProject ID

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It indicates a mutation ('restore') but does not disclose side effects, required permissions, or what happens if the task is not found or already restored. This lack of detail for a write operation is a significant gap.

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, succinct sentence that is front-loaded with the core purpose. It contains no unnecessary words and is easy to parse.

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 two-parameter operation with full schema coverage, the description is reasonably complete. It identifies the action and the target (trash). The lack of annotations and output schema is partially mitigated by the schema's full parameter descriptions, though some information about return values or error behavior is still missing.

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

Parameters3/5

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

The input schema fully describes both parameters (task_id and project_id) with clear descriptions, so the baseline is 3. The description adds the 'from trash' context but does not elaborate on parameter specifics 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 ('Restore') and the resource ('a deleted task from trash'), making it distinct from sibling tools like delete_task or get_task. No other tool in the sibling list provides this specific restore functionality.

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 does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. While it is implied that this tool is for tasks in the trash, there is no context about when restoration is appropriate or how it differs from other task-related operations.

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

update_issueD

Update an issue

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoIssue title
issue_idYesIssue ID
severityNoIssue severity
project_idYesProject ID
descriptionNoIssue description

TDQS

D1.9/5.0
Behavior1/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It fails to mention any side effects, permission requirements, updatable fields, or response behavior, leaving the agent with no insight into the tool's operational characteristics.

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

Conciseness2/5

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

The description is concise but under-specified. It repeats the tool name rather than adding useful context; it is not appropriately sized for a tool with 5 parameters and no other supporting documentation.

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

Completeness1/5

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

Given the tool's moderate complexity (5 parameters, required fields, enum) and the absence of annotations and output schema, the description is completely inadequate. It leaves the agent without essential context about the update operation's scope and 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 description coverage is 100%, so the baseline is 3. The description adds no extra parameter semantics beyond the schema, but the schema already documents all parameters adequately, so no penalty is warranted.

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

Purpose2/5

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

The description 'Update an issue' simply restates the tool name, offering no additional specificity about what updating an issue entails or how it differs from sibling update tools like update_task or update_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, no exclusions, and no context about prerequisites or typical use cases. It is a bare statement with zero usage direction.

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

update_phaseA

Update a phase/milestone. IMPORTANT: start_date and end_date are required by the Zoho REST API for updates.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoPhase name
statusNoPhase status
end_dateNoEnd date (YYYY-MM-DD)
phase_idYesPhase/Milestone ID
owner_zuidNoOwner user ZUID (numeric ID from list_users)
project_idYesProject ID
start_dateNoStart date (YYYY-MM-DD)

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of disclosing behavioral traits. It warns that start_date and end_date are required by the API, which is a non-obvious constraint not reflected in the schema (they are listed as optional properties). This adds valuable context about how the API behaves. It does not cover other aspects like response format or auth, but the key gotcha is addressed.

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 long and front-loaded with the purpose. The second sentence delivers a crucial warning without unnecessary elaboration. Every word earns its place, and it is easily scannable.

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 moderate complexity (7 parameters, no output schema, no annotations), the description adequately covers the essential context: what the tool does and a key prerequisite. It does not explain the response format, but for an update operation this is less critical. The main gap is the lack of explicit guidance on how to obtain IDs, but that is not a requirement for a basic description. Overall, the description is sufficient for an agent to understand how to use the tool correctly.

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

Parameters4/5

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

The schema already covers all parameters with descriptions, so the baseline is 3. The description adds extra semantic value by explicitly stating that start_date and end_date must be included in the update call, even though the schema marks them as optional. This is a significant clarification for correctly invoking the tool.

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's function: 'Update a phase/milestone.' This is a specific verb and resource, and it distinguishes the tool from sibling tools like create_phase, delete_phase, and list_phases. The purpose is immediately clear without ambiguity.

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 provides clear operational guidance by highlighting a critical API requirement: 'start_date and end_date are required by the Zoho REST API for updates.' This tells the user when they need to supply additional fields beyond the schema's required ones. However, it does not explicitly mention alternatives or when not to use the tool, so it lacks exclusionary guidance.

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

update_projectB

Update an existing project

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoProject name
statusNoProject status
end_dateNoEnd date (YYYY-MM-DD)
project_idYesProject ID
start_dateNoStart date (YYYY-MM-DD)
descriptionNoProject description

TDQS

B3/5.0
Behavior1/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It merely states 'update' without explaining mutation semantics, permission requirements, reversibility, or error behavior. This is insufficient for a write operation.

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

Conciseness5/5

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

The description is a single, concise sentence that gets straight to the point. It is front-loaded and contains no unnecessary words, making it highly 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?

For a mutation tool with no annotations and no output schema, a one-sentence description is insufficient. It fails to clarify whether this is a partial update or a full replacement, or what happens when the project doesn't exist. The schema helps but does not cover these behavioral aspects.

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

Parameters3/5

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

The schema covers 100% of parameters with descriptions, so the baseline is 3. The description adds no parameter-specific information, but the schema already documents each field adequately.

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 'Update an existing project' has a specific verb (update) and resource (project). It clearly distinguishes from sibling tools like create_project, delete_project, get_project, and list_projects by the action it performs.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or any context that would help an agent decide between update_project and other project-related tools.

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

update_taskD

Update a task

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoTask name
task_idYesTask ID
durationNoEstimated work hours for the task (e.g., 2 for 2 hours, 1.5 for 1.5 hours)
end_dateNoEnd date (YYYY-MM-DD)
priorityNoTask priority
status_idNoStatus ID to set for the task
project_idYesProject ID
start_dateNoStart date (YYYY-MM-DD)
descriptionNoTask description. IMPORTANT: Use HTML formatting (not Markdown). Use <p>, <strong>, <ul>, <ol>, <li>, <code>, <pre> tags. Markdown will display as raw text.
tasklist_idNoTasklist ID to move the task to
assignee_zpuidNoAssignee user ZPUID (from list_users)

TDQS

D1.9/5.0
Behavior1/5

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

With no annotations, the description carries the full burden of disclosing behavior, but it does not mention whether updates are partial or full, what side effects occur, whether permissions are required, or what the response format is. The word 'update' is already implicit in the tool name, so no additional transparency 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.

Conciseness2/5

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

The description is a single short sentence, which is concise in length but fails to earn its place because it merely duplicates the tool name. It does not front-load any useful information beyond what the name already conveys.

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

Completeness1/5

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

For a tool with 11 parameters, no output schema, and no annotations, the description is severely inadequate. It lacks any mention of update semantics, required fields beyond the schema, return values, or related business logic, making it insufficient for an agent to understand the tool's full 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 each parameter already documented (e.g., duration format, HTML for description). The description adds no parameter-level meaning, but since the schema already provides comprehensive semantics, the baseline score of 3 is appropriate.

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

Purpose2/5

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

The description 'Update a task' merely restates the tool name 'update_task' by expanding underscores to spaces. It states an action and resource but adds no detail about what specifically can be updated, making it a tautology rather than a distinct explanation.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives like move_task or update_issue. The description offers no context on prerequisites, typical scenarios, or exclusions, leaving the agent without direction for tool selection.

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

upload_task_attachmentB

Upload a file attachment to a task

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID
file_nameNoOptional: Override filename for the attachment
file_pathYesAbsolute path to file to upload
project_idYesProject ID

TDQS

B3/5.0
Behavior1/5

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

Since no annotations are provided, the description must convey behavioral context. It only states the action without mentioning required permissions, file size limits, overwrite behavior, or response format. This is a significant gap for a mutation tool.

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

Conciseness5/5

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

The description is a single, clear sentence with no wasted words. It is immediately understandable.

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?

The tool has four parameters and no output schema, yet the description only explains the core action. It omits return values, error handling, prerequisites (e.g., whether the file must exist), and any side effects. With no annotations to compensate, 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?

The input schema provides descriptions for all four parameters (e.g., 'Absolute path to file to upload'), achieving 100% coverage. The description does not add additional parameter information, 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 uses a specific verb ('Upload') and identifies the resource ('file attachment') and target ('task'), clearly distinguishing it from sibling tools like list_task_attachments and delete_task_attachment.

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 download_inline_image or extract_inline_images. The description merely states the action without context.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 39 tool updatesv1.0.0
    • First observedadd_task_comment
    • First observedcreate_issue
    • First observedcreate_phase
    • First observedcreate_project
    • First observedcreate_task
    • First observedcreate_tasklist
    • First observeddelete_phase
    • First observeddelete_project
    • First observeddelete_task
    • First observeddelete_task_attachment
    • First observeddelete_task_comment
    • First observeddelete_tasklist
    • First observeddownload_inline_image
    • First observeddownload_task_images
    • First observededit_task_comment
    • First observedexport_project
    • First observedextract_inline_images
    • First observedget_issue
    • First observedget_portal
    • First observedget_project
    • First observedget_task
    • First observedget_task_by_prefix
    • First observedlist_issues
    • First observedlist_phases
    • First observedlist_portals
    • First observedlist_projects
    • First observedlist_statuses
    • First observedlist_task_attachments
    • First observedlist_task_comments
    • First observedlist_tasks
    • First observedlist_users
    • First observedmove_task
    • First observedrestore_task
    • First observedsearch
    • First observedupdate_issue
    • First observedupdate_phase
    • First observedupdate_project
    • First observedupdate_task
    • First observedupload_task_attachment

TDQS

B3/5.0
Disambiguation5/5

Each tool targets a distinct resource and action: portals, projects, tasks, issues, phases, comments, attachments, images, and export. Even the image-related tools are clearly separated by single vs. bulk extraction/download, and get_task_by_prefix has a unique purpose. No two tools appear to do the same thing.

Naming Consistency4/5

The naming pattern is mostly verb_noun (list_projects, create_task, delete_phase) and very readable. Minor deviations exist: add_task_comment vs create_task, edit_task_comment vs update_task, and longer names like get_task_by_prefix, but these do not undermine the overall consistency.

Tool Count2/5

39 tools is a heavy surface for an MCP server, even for a broad platform like Zoho Projects. The count feels excessive, with granular operations for images and attachments that could be consolidated. It exceeds the 25+ threshold for a 'too many' rating.

Completeness4/5

The tool set covers core CRUD for projects, tasks, issues, and phases, plus comments, attachments, search, and export. Notable gaps include missing delete_issue, no update for tasklists, and no way to list or manage issue comments, but these are workable and the main workflows are well supported.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that integrates AI assistants with Zoho CRM, enabling contact and deal management operations through natural language.
    2
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    An MCP server that integrates with the Todoist REST API v2 to enable AI assistants to manage tasks, projects, sections, comments, and labels. It supports comprehensive operations including batch task creation, history tracking for completed tasks, and organized project management.
    33
    296
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for Zoho Books integration, enabling AI agents to perform bookkeeping operations like managing journals, expenses, bills, invoices, and file attachments.
    49
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/andrewcraigmorgan/zoho-projects-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server