A Model Context Protocol server that provides tools for interacting with Zoho CRM. Uses Nango for authentication and provides comprehensive CRM operations.
Zoho CRM MCP has well-structured tool definitions with consistent naming (verb_noun pattern) and complete input schemas. However, descriptions are generic and lack LLM-optimization guidance. Parameter descriptions are minimal (often single phrases). Output schemas are not documented. Error handling is present but does not guide recovery. No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels. Composition is sound, each tool has one responsibility and chains via IDs. Security: credentials injected via Nango (good), but no per-tool permission declarations or audit logging.
Create a new record in Zoho CRM
Delete a record from Zoho CRM
Get field metadata for a Zoho CRM module
Get list of available modules in Zoho CRM
Get organization information from Zoho CRM
Get a specific record by ID from Zoho CRM
Get records from a Zoho CRM module (Leads, Contacts, Accounts, etc.)
Output schemas not documented. LLMs cannot plan downstream tool calls or extract required fields (e.g., record_id from create_crm_record response). Baseline: 100% of A+ tools document return types.
Tool descriptions lack LLM-optimization guidance. Descriptions are 10-30 chars (e.g., 'Get records from a Zoho CRM module'). Baseline: A+ tools average 194 chars and answer WHAT, WHEN, and WHAT IT RETURNS. Current descriptions omit WHEN to use this tool vs similar ones and prerequisites.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | <=2025-11-25 | v2 |
Get list of users in Zoho CRM
Search records in a Zoho CRM module using search criteria
Update an existing record in Zoho CRM
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Risk levels are declared in metadata but not in tool definitions. delete_crm_record and update_crm_record should carry destructiveHint/idempotentHint annotations to guide agent retry logic.
Parameter descriptions are minimal (1-5 words). E.g., 'module' → 'CRM module name' lacks format guidance. Baseline: A+ tools average 72 chars per param description. Should include: expected format, valid values, constraints, and examples (as enum/pattern, not prose).
Error handling does not guide recovery. ZohoCRMError exceptions are caught and logged but responses do not classify errors as retryable/user-fixable/fatal or suggest next steps. E.g., 'API request failed (400): Invalid module' should suggest 'Call get_crm_modules() to see available modules.'