Skip to main content
Glama
LokiMCPUniverse

Zoho CRM MCP Server

Zoho CRM MCP Server

A Model Context Protocol (MCP) server that exposes the Zoho CRM v6 REST API as structured tools for LLM agents. Built on FastMCP with async httpx, pydantic v2 configuration, and an OAuth2 refresh-token flow.

Features

  • OAuth2 refresh-token exchange with in-memory access-token caching (1 hour TTL)

  • Automatic retry once on HTTP 401 after forcing a token refresh

  • Typed errors (AuthenticationError, NotFoundError, RateLimitError, APIError)

  • Region-aware endpoints: com, eu, in, com.au, jp

  • Full CRUD for any CRM module, plus search, COQL, module metadata, user listing, and related-list traversal

Related MCP server: zoho-crm-mcp

Requirements

  • Python 3.10+

  • mcp>=1.27,<2

  • httpx>=0.27.1,<1.0.0

  • pydantic>=2.12, pydantic-settings>=2.5.2

Install

python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

Configuration

All settings use the ZOHO_ env prefix (or a .env file):

Variable

Default

Description

ZOHO_CLIENT_ID

-

OAuth2 client id

ZOHO_CLIENT_SECRET

-

OAuth2 client secret

ZOHO_REFRESH_TOKEN

-

OAuth2 refresh token

ZOHO_REGION

com

One of com, eu, in, com.au, jp

ZOHO_TIMEOUT

30

HTTP timeout in seconds

Run

zoho-crm-mcp

Or register it in an MCP-capable client with the stdio command above.

Tools

Tool

Zoho CRM endpoint

list_records

GET /crm/v6/{module}

get_record

GET /crm/v6/{module}/{id}

create_record

POST /crm/v6/{module}

update_record

PUT /crm/v6/{module}/{id}

delete_record

DELETE /crm/v6/{module}/{id}

search_records

GET /crm/v6/{module}/search

list_modules

GET /crm/v6/settings/modules

get_module

GET /crm/v6/settings/modules/{module}

list_users

GET /crm/v6/users

coql_query

POST /crm/v6/coql

list_related_records

GET /crm/v6/{module}/{id}/{related_list}

Test

pytest -x --tb=short

License

MIT

Available Tools

11 tools
coql_queryC

Run a COQL SELECT query against Zoho CRM.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

No annotations exist, so description carries full burden. It only mentions it runs a SELECT query, implying read-only, but omits behavioral traits like authentication needs, rate limits, or error handling for invalid queries.

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

Conciseness3/5

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

The description is concise (one sentence) but lacks structure and necessary details. It is front-loaded but not adequately informative for a query tool.

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 a single parameter and an output schema, the description should elaborate on return values, error cases, or query limitations. It remains minimal and incomplete.

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

Parameters1/5

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

With 0% schema description coverage, the description adds no meaning to the sole 'query' parameter beyond the schema. It does not specify expected format, syntax, or provide examples.

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

Purpose4/5

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

The description clearly states the tool 'Run a COQL SELECT query against Zoho CRM', specifying the action (query) and resource (Zoho CRM). It distinguishes from sibling tools like search_records by focusing on COQL, but does not explicitly contrast them.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as search_records or list_records. No context on query complexity or limitations.

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

create_recordC

Create one or more records in the given module.

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleYes
dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/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 traits, but it only states the basic function. It does not mention idempotency, error handling, or any side effects beyond creation.

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

Conciseness3/5

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

Single sentence, no redundancy, but overly terse. Lacks structure that would aid understanding.

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 an output schema, the description fails to detail return values or error scenarios. Missing essential context for a creation operation, especially given the free-form data parameter.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no meaning to the 'module' or 'data' parameters. The data parameter is a free-form object/array with no field hints, and output schema exists but does not explain input.

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 (create), object (records), and context (in the given module). It is specific and distinguishes from siblings like delete_record or update_record, though not explicitly differentiating.

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 update_record or search_records. No prerequisites or usage context provided.

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

delete_recordC

Delete a single record by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleYes
record_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

Description mentions deletion but lacks details on irreversibility, error handling (e.g., record not found), permissions, or side effects. With no annotations, this is insufficient.

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

Conciseness3/5

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

Very concise (one sentence) but at the cost of missing critical information. Could expand slightly without verbosity.

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 deletion tool with no annotations and an output schema, the description should cover behavior, return value, and parameter roles. It only covers the basic action.

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

Parameters1/5

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

Schema has 2 required params (module, record_id) with 0% coverage. Description only mentions 'id', omitting 'module' entirely. No additional meaning provided.

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

Purpose5/5

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

The description clearly states the action (delete), resource (record), and scope (single by id). It distinguishes from siblings like create_record, update_record, list_records.

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 like update_record or search_records. No mention of prerequisites or conditions.

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

get_moduleC

Fetch metadata for a single module.

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations exist, so the description carries the full burden of behavioral disclosure. It does not explain permissions, error handling, or whether the tool is read-only. The brief description leaves significant unknowns.

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

Conciseness3/5

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

The description is a single concise sentence, but it is too brief to be informative. It could be expanded to include usage context without losing 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?

Given the simplicity of the tool (one parameter, likely straightforward), the description falls short by omitting usage guidance and behavioral notes. It does not prepare the agent to make a confident selection or invocation.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not add meaning to the 'module' parameter beyond its name. No details on valid values or format are provided, leaving the agent to infer.

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 it fetches metadata for a single module, using a specific verb and resource. It is distinct from sibling tools like list_modules (which lists modules) and other tools for records.

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 when to prefer get_module over list_modules or other tools, nor any prerequisites or exclusions.

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

get_recordC

Fetch a single record by id from the given module.

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleYes
record_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/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 says 'Fetch', implying a read operation, but does not explicitly state that it is read-only, idempotent, or what happens on failure (e.g., record not found). It lacks behavioral details such as performance implications or authorization requirements.

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

Conciseness4/5

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

The description is a single sentence of 10 words, which is very concise. It front-loads the core purpose. However, it could be slightly expanded to include usage guidance without becoming verbose, but it is not overly brief.

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 there is an output schema (not shown), the description does not reference it or explain the return value. For a tool with two required parameters and no annotations, the description lacks completeness regarding behavior, error handling, and concrete interpretation of parameters.

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

Parameters2/5

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

With 0% schema description coverage, the description adds minimal context: only that the record is fetched 'by id from the given module'. It does not explain what 'module' represents (e.g., table, data source) or the expected format of 'record_id'. This adds little value beyond the parameter names.

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 'Fetch' and the resource 'single record', and identifies the key parameters 'id' and 'module'. It effectively distinguishes from sibling tools like list_records and search_records, as it is for fetching exactly one record by its ID.

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 search_records or list_records. It does not mention contexts such as 'when you have a record ID and need the full record' or edge cases like record not found.

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

list_modulesA

List every available module in the connected Zoho CRM org.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, and the description only states the action without disclosing behavioral traits like authentication requirements, rate limits, or impact on the system.

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 that conveys the purpose without any wasted words.

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?

The description suffices for a simple list operation without parameters, and the presence of an output schema likely covers return values, but it could be slightly more descriptive about what is returned.

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 description adds no extra meaning beyond the schema, but since there are no parameters, the baseline of 4 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 it lists every available module in the connected Zoho CRM org, specifying the verb 'list' and resource 'modules', and is distinct from sibling tools that operate on records.

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; it simply defines its function without context or exclusions.

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

list_recordsA

List records from a Zoho CRM module.

Args: module: API name of the module (e.g. Leads, Contacts). fields: Optional subset of API field names to return. page: Page number, 1-indexed. per_page: Page size (max 200 per Zoho CRM v6).

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleYes
fieldsNo
pageNo
per_pageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior2/5

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

No annotations provided, so description bears full burden. It mentions pagination and field selection but does not disclose error handling, rate limits, or behavior on invalid modules. Lacks richer behavioral context beyond the obvious list operation.

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

Conciseness4/5

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

Description is concise (3-line purpose + args), front-loaded, and each sentence adds value. Slightly improved by adding usage guidance, but currently efficient.

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 existence of output schema, description need not detail return values. It adequately covers parameters and basic behavior, but lacks completeness in distinguishing from sibling tools and handling edge cases.

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

Parameters5/5

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

Schema coverage is 0%, and description adds meaning to all 4 parameters: module with examples, fields as optional subset, page as 1-indexed, per_page with max limit of 200 from Zoho CRM v6, providing helpful context 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 'List records from a Zoho CRM module' using a specific verb and resource. It effectively distinguishes from siblings like 'get_record' (single record), 'search_records', and 'list_related_records'.

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 provides parameter guidance but lacks explicit when-to-use vs alternatives (e.g., vs 'search_records' for filtering). It describes pagination with page/per_page but no exclusions or prerequisites.

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

list_usersB

List users visible to the authenticated principal.

Args: type: Zoho user filter, e.g. AllUsers, ActiveUsers, DeactiveUsers, AdminUsers.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoAllUsers

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It mentions the visibility filter and implicitly requires authentication. However, it omits disclosure of read-only nature, potential rate limits, pagination, or other behavioral traits that an agent should know.

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

Conciseness5/5

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

The description is extremely concise with no wasted words. The Args section is well-structured and front-loaded. Every sentence serves a purpose.

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

Completeness3/5

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

For a simple list tool with one parameter and an output schema, the description covers the basic purpose and parameter. However, it lacks details on pagination, sorting, or error conditions, leaving some gaps for a complete understanding.

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 only provides type and default, with 0% description coverage. The description adds examples (AllUsers, ActiveUsers) but does not list all possible values or explain the default behavior. It adds some value but is not comprehensive.

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

Purpose4/5

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

The description clearly states the tool lists users visible to the authenticated principal. It is distinct from sibling tools like list_records, which list records of a specified module, and further distinguishes by specifying the visibility filter.

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 details for the 'type' parameter but offers no guidance on when to use this tool versus alternatives (e.g., list_records or search_records). No explicit context or prerequisites are mentioned.

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

search_recordsB

Search records by criteria, email, phone, or word.

Exactly one of the four search parameters must be supplied.

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleYes
criteriaNo
emailNo
phoneNo
wordNo
pageNo
per_pageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/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 burden. It does not disclose search behavior (e.g., exact vs. partial match, case sensitivity), pagination details, or error handling when multiple search parameters are supplied.

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, consisting of two sentences with no superfluous words. It front-loads the action and constraint efficiently.

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 7 parameters and an output schema, the description omits critical context like the required module, pagination parameters, and search behavior. It is insufficient for correct invocation.

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

Parameters2/5

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

With 0% schema description coverage, the description adds minimal semantic value. It lists parameter names but does not explain the meaning or difference between 'criteria' and 'word', nor does it describe 'module', 'page', or 'per_page'.

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

Purpose4/5

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

The description clearly states the tool searches records and lists the four search parameters. However, it does not mention the required 'module' parameter, which is a gap in clarity.

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 enforces that exactly one of the four search parameters must be supplied, providing a clear usage constraint. But it does not differentiate from sibling tools like 'list_records' or 'coql_query'.

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

update_recordC

Update a single record with a partial payload.

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleYes
record_idYes
dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/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 fully convey behavioral traits. It only says 'with a partial payload,' lacking details on idempotency, error behavior, return value, or permission requirements.

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

Conciseness3/5

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

The description is concise at one sentence, but it sacrifices necessary detail. It is front-loaded, yet under-specified for effective use.

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 an output schema being present, the description fails to provide essential context for a mutation tool, such as error scenarios, idempotency, or prerequisite conditions.

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

Parameters2/5

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

The input schema has 0% description coverage, and the description does not add meaning to the parameters 'module,' 'record_id,' or 'data.' The term 'partial payload' hints at 'data' but insufficiently.

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 'Update a single record with a partial payload,' which specifies the action, resource, and the nature of the update (partial). This distinguishes it from sibling tools like create_record, delete_record, and get_record.

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 offers no guidance on when to use this tool versus alternatives. It does not mention prerequisites, when not to use, or differentiate from create_record or delete_record.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updatesv0.1.0
    • First observedcoql_query
    • First observedcreate_record
    • First observeddelete_record
    • First observedget_module
    • First observedget_record
    • First observedlist_modules
    • First observedlist_records
    • First observedlist_related_records
    • First observedlist_users
    • First observedsearch_records
    • First observedupdate_record

TDQS

B3.4/5.0

Scored across 11 tools

Disambiguation5/5

Each tool targets a distinct operation (e.g., query vs. create vs. search vs. list), with no overlap. Even similar tools like list_records and search_records have clearly different parameters and purposes.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with snake_case (e.g., create_record, list_modules, coql_query). The acronym 'coql' is the only minor deviation but still readable.

Tool Count5/5

11 tools cover CRUD, listing, search, related records, users, and metadata. This is well-scoped for a CRM server—enough functionality without being overwhelming.

Completeness4/5

Full CRUD and search operations are present. Minor gaps include no bulk operations or advanced CRM workflows (e.g., lead conversion), but the core record management lifecycle is well covered.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with Zoho CRM data through secure OAuth authentication, supporting comprehensive CRM operations including record management, search, bulk operations, and lead conversion.
    3
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides live Zoho CRM data access via MCP tools, enabling queries on modules, records, fields, and related lists without syncing data.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Wraps the Zoho CRM API v6 to enable listing, retrieving, searching, and creating records in Zoho CRM modules.
    4 npm
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI models to interact with Zoho CRM via Model Context Protocol, supporting CRUD operations, COQL queries, search, and deal stage management.
    -