Server has 12 tools with complete input schemas and descriptions. Naming follows verb_noun convention (list_, get_, create_, update_, delete_). However, descriptions are minimal (10-50 chars, well below the 50-200 char baseline for A+ tools). Parameter descriptions exist but lack detail on constraints, formats, and dependencies. Output schemas are not documented. Error handling is present but generic. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. Missing guidance on pagination limits and response field documentation.
Create a new project
Create a new task in a project
Delete a project (moves to trash)
Delete a task
Get details of a specific portal
Get details of a specific project
Get details of a specific task
Tool descriptions are too brief (10-50 chars vs. 50-200 char baseline). LLMs cannot determine when to select tools or what they return. E.g., 'Retrieve all Zoho Projects portals' lacks context on use cases, prerequisites, or return structure.
Output schemas are not documented. LLMs cannot plan downstream tool calls or extract required fields (e.g., project_id for chaining). Responses from list_projects should document returned fields and pagination structure.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. delete_project and delete_task are marked DESTRUCTIVE but lack annotation. Agents cannot distinguish safe from dangerous operations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Retrieve all Zoho Projects portals
List all projects in a portal
List tasks from a project or portal
Update an existing project
Update an existing task
Parameter descriptions lack constraint details. E.g., 'Page number' does not specify min/max bounds. 'Items per page' defaults to 10 but no limit stated. 'Start date (YYYY-MM-DD)' is format-only; missing whether past dates are allowed or if start_date < end_date is enforced.
Error handling is generic ('Zoho API error: {status} - {text}'). Does not guide LLM on recovery. Missing actionable errors like 'Project not found. Try list_projects() to find valid project IDs.' or retry classification (retryable vs. user-fixable).