# Zoho CRM Connector

## Links

- Product page URL: https://www.agentpmt.com/marketplace/zoho-crm-connector
- Product markdown URL: https://www.agentpmt.com/marketplace/zoho-crm-connector?format=agent-md
- Product JSON URL: https://www.agentpmt.com/marketplace/zoho-crm-connector?format=agent-json

## Overview

- Product ID: 6970eda4e496d843bd06cc2a
- Vendor: Apoth3osis
- Type: connector
- Unit type: request
- Price: 500 credits
- Categories: Project Management, Data Processing, Marketing, Sales, Sales Engagement & Outreach, Revenue & Commission Tracking, Marketing Automation, Task & Workflow Automation
- Generated at: 2026-05-30T20:25:27.751Z

### Page Description

The Zoho CRM Connector enables AI agents to seamlessly interact with Zoho CRM data, allowing businesses to automate customer relationship workflows without manual intervention. Agents can retrieve and search leads, contacts, accounts, and deals using flexible query options including COQL queries, email lookups, and criteria-based searches, while also accessing module schemas and field metadata to understand the CRM structure. The connector features a secure permission-gating system that explicitly controls write operations—agents can only create, update, or delete records when specifically authorized with add, edit, or delete permissions—ensuring that automated workflows respect data governance policies. This makes it ideal for building intelligent sales assistants that can look up customer information on demand, automated lead qualification systems that query and analyze prospect data, reporting agents that aggregate CRM metrics, and customer service bots that retrieve account history to provide personalized support.

### Agent Description

Zoho CRM: search and retrieve leads, contacts, accounts, deals. Permission-gated write operations (create, update, delete).

## Details

### Details

The Zoho CRM Connector enables AI agents to seamlessly interact with Zoho CRM data, allowing businesses to automate customer relationship workflows without manual intervention. Agents can retrieve and search leads, contacts, accounts, and deals using flexible query options including COQL queries, email lookups, and criteria-based searches, while also accessing module schemas and field metadata to understand the CRM structure. The connector features a secure permission-gating system that explicitly controls write operations—agents can only create, update, or delete records when specifically authorized with add, edit, or delete permissions—ensuring that automated workflows respect data governance policies. This makes it ideal for building intelligent sales assistants that can look up customer information on demand, automated lead qualification systems that query and analyze prospect data, reporting agents that aggregate CRM metrics, and customer service bots that retrieve account history to provide personalized support.

### Actions

- `list_records` (5 credits): Retrieve records from a CRM module with optional filtering, sorting, and pagination. Maximum 50 fields per request. Use page_token for records beyond page 2000.
- `get_record` (5 credits): Fetch a single CRM record by its ID.
- `search_records` (5 credits): Search for CRM records using exactly one search method: criteria, email, phone, or word.
- `query_records` (5 credits): Run a COQL (CRM Object Query Language) query for advanced record retrieval. Follows SQL-like syntax: select Field1, Field2 from Module where condition limit N.
- `create_records` (5 credits): Create one or more records in a CRM module. Provide either record (single) or records (batch, max 100). Requires 'add' permission.
- `update_records` (5 credits): Update one or more existing CRM records. Provide record or records (max 100). Use record_id for single-record updates. Requires 'edit' permission.
- `delete_records` (5 credits): Delete one or more CRM records. Provide exactly one of record_id (single) or record_ids (bulk, max 100). Requires 'delete' permission.
- `list_modules` (5 credits): List all available modules in the Zoho CRM account.
- `fields_metadata` (5 credits): Retrieve field definitions for a CRM module, or a single field by ID.
- `describe_action` (5 credits): Get the parameter schema for any action. Useful for discovering required and optional fields before calling an action.

### Use Cases

Automated lead qualification and scoring based on CRM data, Customer support agents retrieving account history and contact details, Sales pipeline reporting and deal stage analysis, Lead enrichment workflows that query and update prospect information, Customer onboarding automation with record creation and status updates, Duplicate contact detection and data cleanup operations, Intelligent meeting prep assistants that pull relevant customer context before calls

### Workflows Using This Tool

No public workflows currently reference this product.

### Related Content

No related content is currently linked to this product.

## Integration Details

### DynamicMCP

- Setup page URL: https://www.agentpmt.com/dynamic-mcp
- Claude setup guide: https://www.agentpmt.com/dynamic-mcp?platform=claude#videos
- ChatGPT setup guide: https://www.agentpmt.com/dynamic-mcp?platform=chatgpt#videos
- Cursor setup guide: https://www.agentpmt.com/dynamic-mcp?platform=cursor#videos
- Windsurf setup guide: https://www.agentpmt.com/dynamic-mcp?platform=windsurf#videos

Use the local router for command-based MCP clients. It forwards requests to `https://api.agentpmt.com/mcp` and does not execute tools locally.

```bash
npm install -g @agentpmt/mcp-router
agentpmt-setup
```

### REST API

The live page renders cURL, Python, JavaScript, and Node.js examples. Logged-in users see those examples prefilled with their own API and budget credentials.

- Purchase endpoint: https://api.agentpmt.com/products/purchase
- Authorization format: `Bearer <base64(apiKey:budgetKey)>`

```bash
curl -X POST "https://api.agentpmt.com/products/purchase" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer eW91ci1hcGkta2V5LWhlcmU6eW91ci1idWRnZXQta2V5LWhlcmU=" \
  -d '{
    "product_id": "6970eda4e496d843bd06cc2a",
    "parameters": {
      "action": "list_records",
      "module_api_name": "example_module_api_name"
    }
  }'
```

### Autonomous Agents

Autonomous agents can access this tool through AgentAddress credit balances or direct x402 payments. Use the Autonomous Agent API reference for endpoint shapes after choosing the access pattern below.

- Autonomous Agent API reference URL: https://www.agentpmt.com/docs/api-reference/autonomous-agents
- Autonomous Agent API reference markdown URL: https://www.agentpmt.com/docs/api-reference/autonomous-agents?format=agent-md
- Credit-Based Access Using AgentAddress: https://www.agentpmt.com/docs/autonomous-agents/credit-based-tool-usage-with-agentaddress
- AgentAddress is preferred for persistent file access, stored platform state, and maximum tool use ability across repeated calls.
- Direct x402 is for independent one-off tool calls that do not require shared files or stored platform state.
- Direct x402 public payments: USDC on Base, Arbitrum, Optimism, Polygon, and Avalanche.

### Schema

#### Credentials

These runtime credentials should be provided under `parameters._credentials` when required.

- Zoho OAuth (`zoho_oauth`, oauth_token, required)
  Connection ID: 6987b6f3da401d1af03b6f61
- CRUD permission scopes (`permissions`, other, required)
  Connection ID: 697170063617ba439ceedf25

#### Parameters

- Schema type: actions

```json
{
  "actions": {
    "list_records": {
      "description": "Retrieve records from a CRM module with optional filtering, sorting, and pagination. Maximum 50 fields per request. Use page_token for records beyond page 2000.",
      "properties": {
        "module_api_name": {
          "type": "string",
          "description": "Zoho CRM module API name (e.g., Leads, Contacts, Deals)",
          "required": true
        },
        "fields": {
          "type": "array",
          "description": "Fields to retrieve (max 50). Required unless ids is provided.",
          "required": false,
          "items": {
            "type": "string"
          }
        },
        "ids": {
          "type": "array",
          "description": "Specific record IDs to fetch",
          "required": false,
          "items": {
            "type": "string"
          }
        },
        "per_page": {
          "type": "integer",
          "description": "Records per page (1-200)",
          "required": false,
          "minimum": 1,
          "maximum": 200
        },
        "page": {
          "type": "integer",
          "description": "Page number (1-based). Cannot be used with page_token.",
          "required": false,
          "minimum": 1
        },
        "page_token": {
          "type": "string",
          "description": "Page token for records beyond page 2000. Cannot be used with page.",
          "required": false
        },
        "sort_by": {
          "type": "string",
          "description": "Field API name to sort by. Cannot be used with cvid.",
          "required": false
        },
        "sort_order": {
          "type": "string",
          "description": "Sort direction",
          "required": false,
          "enum": [
            "asc",
            "desc"
          ]
        },
        "cvid": {
          "type": "string",
          "description": "Custom view ID. Cannot be used with sort_by.",
          "required": false
        },
        "converted": {
          "type": "string",
          "description": "Filter by converted status",
          "required": false,
          "enum": [
            "true",
            "false",
            "both"
          ]
        },
        "territory_id": {
          "type": "string",
          "description": "Territory ID filter",
          "required": false
        },
        "include_child": {
          "type": "boolean",
          "description": "Include child territory records when territory_id is set",
          "required": false
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters to pass through",
          "required": false
        }
      }
    },
    "get_record": {
      "description": "Fetch a single CRM record by its ID.",
      "properties": {
        "module_api_name": {
          "type": "string",
          "description": "Zoho CRM module API name",
          "required": true
        },
        "record_id": {
          "type": "string",
          "description": "The record ID to fetch",
          "required": true
        },
        "fields": {
          "type": "array",
          "description": "Specific fields to retrieve",
          "required": false,
          "items": {
            "type": "string"
          }
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters to pass through",
          "required": false
        }
      }
    },
    "search_records": {
      "description": "Search for CRM records using exactly one search method: criteria, email, phone, or word.",
      "properties": {
        "module_api_name": {
          "type": "string",
          "description": "Zoho CRM module API name",
          "required": true
        },
        "criteria": {
          "type": "string",
          "description": "Search criteria string (e.g., ((Stage:equals:Closed Won)and(Amount:greater_than:10000)))",
          "required": false
        },
        "email": {
          "type": "string",
          "description": "Search by email address",
          "required": false
        },
        "phone": {
          "type": "string",
          "description": "Search by phone number",
          "required": false
        },
        "word": {
          "type": "string",
          "description": "Search by keyword across fields",
          "required": false
        },
        "fields": {
          "type": "array",
          "description": "Fields to retrieve (max 50)",
          "required": false,
          "items": {
            "type": "string"
          }
        },
        "per_page": {
          "type": "integer",
          "description": "Records per page (1-200)",
          "required": false,
          "minimum": 1,
          "maximum": 200
        },
        "page": {
          "type": "integer",
          "description": "Page number (1-based)",
          "required": false,
          "minimum": 1
        },
        "converted": {
          "type": "string",
          "description": "Filter by converted status",
          "required": false,
          "enum": [
            "true",
            "false",
            "both"
          ]
        },
        "approved": {
          "type": "string",
          "description": "Filter by approved status",
          "required": false,
          "enum": [
            "true",
            "false",
            "both"
          ]
        },
        "record_type": {
          "type": "string",
          "description": "Users module type filter (e.g., AllUsers, ActiveUsers)",
          "required": false
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters to pass through",
          "required": false
        }
      }
    },
    "query_records": {
      "description": "Run a COQL (CRM Object Query Language) query for advanced record retrieval. Follows SQL-like syntax: select Field1, Field2 from Module where condition limit N.",
      "properties": {
        "select_query": {
          "type": "string",
          "description": "COQL select query string",
          "required": true
        },
        "options": {
          "type": "object",
          "description": "Additional body parameters to pass through",
          "required": false
        }
      }
    },
    "create_records": {
      "description": "Create one or more records in a CRM module. Provide either record (single) or records (batch, max 100). Requires 'add' permission.",
      "properties": {
        "module_api_name": {
          "type": "string",
          "description": "Zoho CRM module API name",
          "required": true
        },
        "record": {
          "type": "object",
          "description": "Single record payload with field name/value pairs",
          "required": false
        },
        "records": {
          "type": "array",
          "description": "List of record payloads (max 100)",
          "required": false,
          "items": {
            "type": "object"
          }
        },
        "trigger": {
          "type": "array",
          "description": "Workflow/automation triggers to fire (e.g., workflow, approval)",
          "required": false,
          "items": {
            "type": "string"
          }
        },
        "lar_id": {
          "type": "string",
          "description": "Assignment rule ID",
          "required": false
        },
        "apply_feature_execution": {
          "type": "array",
          "description": "Feature execution keys to apply (e.g., layout_rules)",
          "required": false,
          "items": {
            "type": "string"
          }
        },
        "options": {
          "type": "object",
          "description": "Additional body parameters to pass through",
          "required": false
        }
      }
    },
    "update_records": {
      "description": "Update one or more existing CRM records. Provide record or records (max 100). Use record_id for single-record updates. Requires 'edit' permission.",
      "properties": {
        "module_api_name": {
          "type": "string",
          "description": "Zoho CRM module API name",
          "required": true
        },
        "record_id": {
          "type": "string",
          "description": "Record ID for single-record update. When provided, only one record is allowed.",
          "required": false
        },
        "record": {
          "type": "object",
          "description": "Single record payload with field name/value pairs",
          "required": false
        },
        "records": {
          "type": "array",
          "description": "List of record payloads (max 100). Each must include its 'id' for batch updates.",
          "required": false,
          "items": {
            "type": "object"
          }
        },
        "trigger": {
          "type": "array",
          "description": "Workflow/automation triggers to fire",
          "required": false,
          "items": {
            "type": "string"
          }
        },
        "lar_id": {
          "type": "string",
          "description": "Assignment rule ID",
          "required": false
        },
        "apply_feature_execution": {
          "type": "array",
          "description": "Feature execution keys to apply (e.g., layout_rules)",
          "required": false,
          "items": {
            "type": "string"
          }
        },
        "append_values": {
          "type": "object",
          "description": "Append values for multi-select picklist fields. Keys are field names, values are boolean true.",
          "required": false
        },
        "options": {
          "type": "object",
          "description": "Additional body parameters to pass through",
          "required": false
        }
      }
    },
    "delete_records": {
      "description": "Delete one or more CRM records. Provide exactly one of record_id (single) or record_ids (bulk, max 100). Requires 'delete' permission.",
      "properties": {
        "module_api_name": {
          "type": "string",
          "description": "Zoho CRM module API name",
          "required": true
        },
        "record_id": {
          "type": "string",
          "description": "Single record ID to delete",
          "required": false
        },
        "record_ids": {
          "type": "array",
          "description": "List of record IDs for bulk delete (max 100)",
          "required": false,
          "items": {
            "type": "string"
          }
        },
        "wf_trigger": {
          "type": "boolean",
          "description": "Whether to trigger workflows on delete (defaults to true in Zoho)",
          "required": false
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters to pass through",
          "required": false
        }
      }
    },
    "list_modules": {
      "description": "List all available modules in the Zoho CRM account.",
      "properties": {
        "options": {
          "type": "object",
          "description": "Additional query parameters to pass through",
          "required": false
        }
      }
    },
    "fields_metadata": {
      "description": "Retrieve field definitions for a CRM module, or a single field by ID.",
      "properties": {
        "module_api_name": {
          "type": "string",
          "description": "Zoho CRM module API name",
          "required": true
        },
        "field_id": {
          "type": "string",
          "description": "Specific field ID for metadata lookup. Omit to get all fields.",
          "required": false
        },
        "options": {
          "type": "object",
          "description": "Additional query parameters to pass through",
          "required": false
        }
      }
    },
    "describe_action": {
      "description": "Get the parameter schema for any action. Useful for discovering required and optional fields before calling an action.",
      "properties": {
        "action_to_describe": {
          "type": "string",
          "description": "The action name to describe. Omit to get schemas for all actions.",
          "required": false,
          "enum": [
            "list_records",
            "get_record",
            "search_records",
            "query_records",
            "create_records",
            "update_records",
            "delete_records",
            "list_modules",
            "fields_metadata"
          ]
        }
      }
    }
  },
  "properties": {
    "action": {
      "type": "string",
      "description": "Action to perform",
      "required": true,
      "default": "get_instructions",
      "enum": [
        "get_instructions",
        "list_records",
        "get_record",
        "search_records",
        "query_records",
        "create_records",
        "update_records",
        "delete_records",
        "list_modules",
        "fields_metadata"
      ]
    },
    "criteria": {
      "type": "string",
      "description": "Search criteria",
      "required": false
    },
    "cvid": {
      "type": "string",
      "description": "Custom view ID for list_records",
      "required": false
    },
    "email": {
      "type": "string",
      "description": "Search by email",
      "required": false
    },
    "field_id": {
      "type": "string",
      "description": "Field ID for metadata lookup",
      "required": false
    },
    "fields": {
      "type": "array",
      "description": "Fields to retrieve",
      "required": false,
      "items": {
        "type": "string"
      }
    },
    "module_api_name": {
      "type": "string",
      "description": "Zoho CRM module API name",
      "required": false
    },
    "options": {
      "type": "object",
      "description": "Additional query/body parameters to pass through",
      "required": false
    },
    "page": {
      "type": "integer",
      "description": "Page number",
      "required": false,
      "minimum": 1
    },
    "page_token": {
      "type": "string",
      "description": "Page token for records beyond 2000",
      "required": false
    },
    "per_page": {
      "type": "integer",
      "description": "Records per page",
      "required": false,
      "minimum": 1,
      "maximum": 200
    },
    "phone": {
      "type": "string",
      "description": "Search by phone",
      "required": false
    },
    "record": {
      "type": "object",
      "description": "Single record payload",
      "required": false
    },
    "record_id": {
      "type": "string",
      "description": "Record ID for single-record operations",
      "required": false
    },
    "record_ids": {
      "type": "array",
      "description": "Record IDs for bulk delete",
      "required": false,
      "items": {
        "type": "string"
      }
    },
    "records": {
      "type": "array",
      "description": "List of record payloads",
      "required": false,
      "items": {
        "type": "object"
      }
    },
    "select_query": {
      "type": "string",
      "description": "COQL select query",
      "required": false
    },
    "sort_by": {
      "type": "string",
      "description": "Field API name to sort by",
      "required": false
    },
    "sort_order": {
      "type": "string",
      "description": "Sort order: asc or desc",
      "required": false
    },
    "word": {
      "type": "string",
      "description": "Search by word",
      "required": false
    }
  }
}
```

### Usage Instructions

# Zoho CRM Connector

Manage records, search, query, and explore metadata in Zoho CRM.

## Permissions

- `permissions` is a multi-select array of exact scopes: `read`, `add`, `edit`, `delete`.
- Include every scope the agent is allowed to use.
- `list_records`, `get_record`, `search_records`, `query_records`, `list_modules`, and `fields_metadata` require `read`.
- `create_records` requires `add`.
- `update_records` requires `edit`.
- `delete_records` requires `delete`.
- If `permissions` is omitted, the tool allows read-only actions.

## Actions

### list_records
Retrieve records from a module with optional filtering, sorting, and pagination.

**Required:** `module_api_name`, `fields` (unless `ids` is provided)
**Optional:** `ids`, `per_page` (1-200), `page`, `page_token`, `sort_by`, `sort_order` (asc/desc), `cvid`, `converted` (true/false/both), `territory_id`, `include_child`

### get_record
Fetch a single record by its ID.

**Required:** `module_api_name`, `record_id`
**Optional:** `fields`

### search_records
Search for records using exactly one search method: `criteria`, `email`, `phone`, or `word`.

**Required:** `module_api_name`, and exactly one of: `criteria`, `email`, `phone`, `word`
**Optional:** `fields` (max 50), `per_page` (1-200), `page`, `converted` (true/false/both), `approved` (true/false/both), `type`

### query_records
Run a COQL query for advanced record retrieval.

**Required:** `select_query`

### create_records
Create one or more records in a module.

**Required:** `module_api_name`, and one of: `record`, `records`

### update_records
Update one or more existing records.

**Required:** `module_api_name`, and one of: `record`, `records`

### delete_records
Delete one or more records.

**Required:** `module_api_name`, and exactly one of: `record_id`, `record_ids`

### list_modules
List all available modules in the Zoho CRM account.

### fields_metadata
Retrieve field definitions for a module, or a single field by ID.

**Required:** `module_api_name`

### describe_action
Get the parameter schema for any action.

```json
{
  "action": "describe_action",
  "action_to_describe": "search_records"
}
```

### Frequently Asked Questions

#### How do I connect this tool to an external agent?

- Page URL: https://www.agentpmt.com/faq
- Markdown URL: https://www.agentpmt.com/faq?format=agent-md

You can install the local MCP server by opening a terminal and running:

```
npm install -g @agentpmt/mcp-router
agentpmt-setup
```

This will connect you to local agents like Claude Code, Windsurf, Grok Build, Cursor, etc.

Alternatively you can connect to the hosted version with this config block, no installation required:

```
{
  "mcpServers": {
    "agentpmt": {
      "type": "streamable-http",
      "url": "https://api.agentpmt.com/mcp",
      "headers": {
        "Authorization": "Bearer <AGENTPMT_BEARER_TOKEN>",
        "x-instance-metadata": "{\"client\":\"generic-mcp\",\"platform\":\"remote\"}"
      }
    }
  }
}
```

[View MCP Connection Instructions](/docs/mcp-reference/connection) for more details.

#### How does an external agent use this tool?

- Page URL: https://www.agentpmt.com/faq
- Markdown URL: https://www.agentpmt.com/faq?format=agent-md

After the external agent is connected to an Agent Group that can use this tool, paste this prompt into the agent:

> Call the AgentPMT-Tool-Search-and-Execution tool with action 'get\_schema' and tool\_id 6970eda4e496d843bd06cc2a ("Zoho CRM Connector"). Then call the same tool with action 'call\_tool', tool\_id 6970eda4e496d843bd06cc2a, and the parameters needed for my request.

The agent should fetch the tool schema first, collect the required parameters for your request, and then call the tool through AgentPMT.

### Dependencies

This product has no public dependency products.