---
title: "Zoho CRM MCP server for AI agents - actionlake"
description: "Give Claude 227 Zoho CRM actions through one MCP server: contacts, accounts, deals, users. Your agent never holds the credential. 100,000 calls a month free."
canonical: https://actionlake.com/connectors/zoho-crm
updated: 2026-09-24
---

Connectors · CRM & sales

# Zoho CRM MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Zoho CRM and the rest of your systems. It gives your agent 227 Zoho CRM actions (107 reads, 92 writes and 28 that wait for a confirmation) and holds the Zoho CRM credential itself, so the agent never does. It paces Zoho CRM's limits and records every call. Connecting Zoho CRM needs your own Zoho CRM OAuth app and one admin sign-in.

[Connect Zoho CRM free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.

`claude mcp add --transport http actionlake https://connect.actionlake.com/mcp`

the first call

```
do {
  action: "zoho_crm.org.get",
  intent: "check which Zoho CRM account is connected"
}
# Get the Zoho CRM organisation · read · 1 upstream call
```

- 227 actions in one signed file
- 107 read look, never change
- 92 write create and update
- 28 wait for a yes destructive, confirmed first

Set up

## Connect Zoho CRM in three steps.

1. 01
   ### Add actionlake to Claude.
   Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.
   `https://connect.actionlake.com/mcp`
2. 02
   ### Connect Zoho CRM.
   OAuth 2.0, authorization code with PKCE. You register your own OAuth app with Zoho CRM, an admin signs in once, and you paste the app's client id and secret and the tokens from that sign-in; actionlake renews the access token from then on. actionlake stores what you paste write-only, sealed under your tenant's key.
   Before the first sign-in, Zoho CRM needs an OAuth app of your own, registered in its developer portal. actionlake has no Zoho CRM app to lend you.
   - `access_token` Access token from one sign-in with your own OAuth app
   - `refresh_token` Refresh token from the same sign-in; the access token is renewed from it
   - `client_id` Zoho client id
   - `client_secret` Zoho client secret
   - `api_domain` Where your Zoho CRM lives: your api domain
   Found for you at connect: api base.
   ```
   account { op: "connections.requirements", service: "zoho_crm" }
   # free: exactly what to paste, and what is found for you
   ```
3. 03
   ### Make the first call. Check before a write.
   Ask in plain words; Claude picks the action. Before anything changes, `check` validates the call and prices it, for free.
   ```
   do    { action: "zoho_crm.org.get" }
   # get the zoho crm organisation · read · 1 upstream call
   check { action: "zoho_crm.contacts.create", input: { … } }
   # free: inputs, permissions, cost and confirmations, nothing sent
   ```

Zoho CRM at a glance

**Sign-in**

OAuth 2.0, authorization code with PKCE. You register your own OAuth app with Zoho CRM, an admin signs in once, and you paste the app's client id and secret and the tokens from that sign-in; actionlake renews the access token from then on.

**You provide**

`access_token` `refresh_token` `client_id` `client_secret`

**Setup fields**

`api_domain`

**Found for you**

api base

**Limits we pace to**

100 calls a minute, per connection

**API covered**

Zoho CRM API 7, at your Zoho CRM instance's API base URL, which you enter when connecting (path /crm)

**Built from**

Zoho CRM's documentation, read 15 September 2026[zoho.com](https://www.zoho.com/crm/developer/docs/api/v7/)

**Service file**

Version 1.0.0, signed (Ed25519)

**Cached reads**

107 of 107 reads, for up to an hour; a write clears what it affects

**Ready-made plans**

9 in the store

**Shared entities**

16, so ask can line Zoho CRM up with your other systems

**Data**

Processed and stored in Sydney, Australia. No US region yet

Capabilities

## What an AI agent can do in Zoho CRM.

227 actions in 1 area. Every one carries its effect, so a key can allow the reads and hold the rest.

- **107** read look, never change
- **92** write create and update
- **28** destructive wait for a confirmation

1. ### CRM
   227
   107 read · 92 write · 28 destructive
   List Zoho CRM contacts · List Zoho CRM accounts · List Zoho CRM deals · List Zoho CRM users

Top actions

## The Zoho CRM API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 170 of Zoho CRM's 174 action names are shared with at least one other connector, so an agent learns them once.

| Action | What it does | Effect | Same name in |
| --- | --- | --- | --- |
| `zoho_crm.contacts.list` List Zoho CRM contacts | List contact records from the Contacts module. | read | `crm.contact.list` 177 connectors |
| `zoho_crm.accounts.list` List Zoho CRM accounts | List account records from the Accounts module. | read | `crm.company.list` 162 connectors |
| `zoho_crm.deals.list` List Zoho CRM deals | List deal records from the Deals module. | read | `crm.deal.list` 43 connectors |
| `zoho_crm.users.list` List Zoho CRM users | List the org's CRM users, optionally narrowed to active, admin or deactivated. | read | `identity.user.list` 474 connectors |
| `zoho_crm.notes.list` List Zoho CRM notes | List notes across every module, newest first. | read | `crm.contact_note.list` 29 connectors |
| `zoho_crm.leads.list` List Zoho CRM leads | List lead records from the Leads module. | read | `crm.lead.list` 28 connectors |
| `zoho_crm.vendors.list` List Zoho CRM vendors | List vendor records from the Vendors module. | read | `crm.company.list` 162 connectors |
| `zoho_crm.contacts.create` Create a Zoho CRM contact | Insert one contact into the Contacts module with its named fields. | write | `crm.contact.create` 161 connectors |
| `zoho_crm.invoices.list` List Zoho CRM invoices | List invoice records from the Invoices module. | read | `finance.invoice.list` 101 connectors |
| `zoho_crm.vendors.create` Create a Zoho CRM vendor | Insert one vendor into the Vendors module with its named fields. | write | `crm.company.create` 142 connectors |
| `zoho_crm.accounts.create` Create a Zoho CRM account | Insert one account into the Accounts module with its named fields. | write | `crm.company.create` 142 connectors |
| `zoho_crm.contacts.delete` Delete a Zoho CRM contact | Move one Contacts record to the recycle bin. | destructive | `crm.contact.delete` 147 connectors |

Try it

## Prompts to paste into Claude.

Each one names the Zoho CRM actions it will call, so you know what it reads and what it changes before you send it.

1. Read read
   Which Zoho CRM invoices are more than 30 days overdue? Group them by customer with the total owed.
   calls `zoho_crm.invoices.list`
2. Plan read
   Audit the org's CRM configuration in Zoho CRM.
   calls `zoho_crm.org.get` `zoho_crm.modules.list` `zoho_crm.users.list` `zoho_crm.profiles.list` `zoho_crm.roles.list` +3 more
3. Plan write
   Escalate a support case and record why in Zoho CRM. Ask me before anything is sent or changed.
   calls `zoho_crm.cases.get` `zoho_crm.record_notes.list` `zoho_crm.users.get` `zoho_crm.cases.update` `zoho_crm.record_notes.create` +1 more
4. Write write
   Create a Zoho CRM contact in Zoho CRM. Show me exactly what you will send before you save it.
   calls `zoho_crm.contacts.create`
5. Across systems read
   For each customer, how many invoices are in Zoho CRM and how many tickets in ConnectWise PSA?
   calls `zoho_crm.invoices.list` `connectwise_manage.tickets.list`

Across your systems

## Zoho CRM, joined to the rest of your business.

One `ask` fetches from Zoho CRM and another system, joins the rows on the same customer on our side, and hands your agent the answer, not every row.

- For each customer, how many invoices are in Zoho CRM and how many tickets in ConnectWise PSA?
  `zoho_crm.invoices.list` + `connectwise_manage.tickets.list`, on `crm.company` · [ConnectWise PSA](https://actionlake.com/connectors/connectwise-psa)
- For each customer, how many invoices are in Zoho CRM and how many tickets in ServiceNow?
  `zoho_crm.invoices.list` + `servicenow_table.incidents.list`, on `crm.company` · [ServiceNow](https://actionlake.com/connectors/servicenow)

Also mapped by other connectors `identity.user` **517** `crm.company` **227** `crm.contact` **192** `commerce.product` **109** `work.task` **105** `finance.invoice` **91** `commerce.order` **86** `service.ticket` **62**

ask

```
ask {
  intent: "for each customer, how many invoices are in Zoho CRM and how many tickets in ConnectWise PSA",
  steps: [
    { action: "zoho_crm.invoices.list", as: "inv", input: {}, limit: 100, max_pages: 5 },
    { action: "connectwise_manage.tickets.list", as: "tix", input: {}, limit: 100, max_pages: 5 },
    { join: {
        left: "inv",
        right: "tix",
        on: "crm.company",
        group_by: "inv.company_name",
        select: ["inv.company_name", "count(inv.id) as invoices", "count(tix.id) as tickets"]
    } }
  ]
}
```

Example. Run it through check first: it validates the steps and prices them, and it is free.

The plan store

## Ready-made plans for Zoho CRM.

9 plans in the store. Install one and your agent runs it by name; the reply says which connections are still missing. A schedule can run a plan on a timetable. There are no triggers or webhooks, by design.

1. ### Build a dossier for one account
   Use it when Someone needs a complete picture of one account before a call, renewal or escalation.
   **Effect**
   read
   **Steps**
   6
   **Needs**
   account id
   **Install**
   `zoho_crm-account-contact-dossier`
2. ### Audit the org's CRM configuration
   Use it when Someone needs to understand how this Zoho tenant is configured before building on it or changing it.
   **Effect**
   read
   **Steps**
   8
   **Needs**
   module
   **Install**
   `zoho_crm-crm-config-audit`
3. ### Review open deals in a stage and note the stale ones
   Use it when Someone wants a stage of the pipeline reviewed and each deal stamped with a review note.
   **Effect**
   write
   **Steps**
   3 · loops
   **Needs**
   select query and note content
   **Install**
   `zoho_crm-deal-stage-review`
4. ### Export a module with a bulk read job and wait for it
   Use it when A full module needs exporting out of Zoho rather than paging through it record by record.
   **Effect**
   write
   **Steps**
   4
   **Needs**
   module
   **Install**
   `zoho_crm-bulk-read-export`
5. ### Triage new leads and tag them for follow up
   Use it when A batch of leads needs to be reviewed and marked with a routing tag before anyone works them.
   **Effect**
   write
   **Steps**
   4 · loops
   **Needs**
   criteria and tag name
   **Install**
   `zoho_crm-lead-triage-and-assign`
6. ### Convert a qualified lead into an account, contact and deal
   Use it when A lead has been qualified and should become an account, contact and deal.
   A person decides Convert lead _lead id_ for _company name_ — _duplicate count_ existing account(s) match that name.
   **Effect**
   write
   **Steps**
   6
   **Needs**
   lead id and company name
   **Install**
   `zoho_crm-convert-qualified-lead`
7. ### Escalate a support case and record why
   Use it when A support case needs to be handed to someone more senior with the reason recorded.
   A person decides Escalate case _case id_ to _owner user id_: _reason_
   **Effect**
   write
   **Steps**
   7
   **Needs**
   case id, owner user id and reason
   **Install**
   `zoho_crm-case-escalation`
8. ### Turn an accepted quote into a sales order
   Use it when A customer has accepted a quote and the matching sales order should be raised.
   A person decides Raise a sales order '_subject_' for account _account id_ from quote _quote id_.
   **Effect**
   write
   **Steps**
   7
   **Needs**
   quote id, deal id, account id and subject
   **Install**
   `zoho_crm-quote-to-sales-order`
9. ### Find duplicate contacts on an email and delete the extras
   Use it when The same person exists twice in Contacts and one of the records must be removed.
   A person decides Delete contact _remove contact id_ as a duplicate of _email_ (_match count_ records share that address).
   **Effect**
   destructive
   **Steps**
   6 · loops
   **Needs**
   email and remove contact id
   **Install**
   `zoho_crm-duplicate-contact-cleanup`

install a plan

```
account { op: "plans.install", slug: "zoho_crm-account-contact-dossier" }
# then ask for it by name; a schedule can run it on a timetable
```

Governance for Zoho CRM

## Destructive actions wait for a yes.

28 Zoho CRM actions are destructive. These are all of them:

- Delete a Zoho CRM contact `zoho_crm.contacts.delete`
- Delete a Zoho CRM vendor `zoho_crm.vendors.delete`
- Delete a Zoho CRM account `zoho_crm.accounts.delete`
- Delete a Zoho CRM deal `zoho_crm.deals.delete`
- Delete a Zoho CRM note `zoho_crm.notes.delete`
- Delete a Zoho CRM lead `zoho_crm.leads.delete`
- Delete a Zoho CRM invoice `zoho_crm.invoices.delete`
- Delete a Zoho CRM quote `zoho_crm.quotes.delete`
- Delete a Zoho CRM task `zoho_crm.tasks.delete`
- Delete a Zoho CRM purchase order `zoho_crm.purchase_orders.delete`
- Delete a Zoho CRM product `zoho_crm.products.delete`
- Delete a Zoho CRM event `zoho_crm.events.delete`
- Delete a Zoho CRM case `zoho_crm.cases.delete`
- Delete a Zoho CRM user `zoho_crm.users.delete`
- Delete a Zoho CRM sales order `zoho_crm.sales_orders.delete`
- Delete a Zoho CRM solution `zoho_crm.solutions.delete`
- Delete a Zoho CRM call `zoho_crm.calls.delete`
- Unlink a Zoho CRM related record `zoho_crm.related_records.delete`
- Delete a Zoho CRM tag `zoho_crm.tags.delete`
- Delete a Zoho CRM campaign `zoho_crm.campaigns.delete`
- Delete a Zoho CRM price book `zoho_crm.price_books.delete`
- Unsubscribe from Zoho CRM notifications `zoho_crm.notification_channels.delete`
- Delete a Zoho CRM attachment `zoho_crm.attachments.delete`
- Delete a record from any Zoho CRM module `zoho_crm.records.delete`
- Merge two Zoho CRM tags `zoho_crm.tags.merge`
- Mass delete Zoho CRM records `zoho_crm.records.mass_delete`
- Untag Zoho CRM records `zoho_crm.tags.remove_from_records`
- Unlock a Zoho CRM record `zoho_crm.record_locks.delete`

A destructive action runs only with `confirm: true`. Under the `human` policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.

do zoho_crm.contacts.delete confirm_policy: **human**

Delete a Zoho CRM contact?

**intent:** the user asked me to delete a Zoho CRM contact

run suspended · waiting for a named person · key _zoho-crm-agent_ cannot confirm itself

In the console, or from an emailed signed link.

a key for this connector

```
account {
  op: "keys.create", name: "zoho-crm-agent",
  allowed_actions: ["zoho_crm.*"], cap_calls: 2000,
  confirm_policy: "human_for_writes",
  approval_rules: [
    { match: "zoho_crm.contacts.delete", approver: "lead@example.com" },
    { match: "zoho_crm.vendors.delete", approver: "lead@example.com" },
    { match: "zoho_crm.accounts.delete", approver: "lead@example.com" }
  ]
}
```

Illustrative. Scoped to Zoho CRM only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

## What Zoho CRM costs on actionlake.

Every Zoho CRM action is one upstream call, the only thing actionlake bills. Searching, `check`, `cost`, `account` and any call Zoho CRM refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

- 1 upstream call per action all 227 Zoho CRM actions
- 227 actions page each page of a long list is one call
- 107 reads can be cached a cache hit costs nothing
- 100,000 calls a month, free paid plans from US$49 a month for 250,000

[See pricing](https://actionlake.com/pricing)

Action index

## Every Zoho CRM action.

227 actions by area: the id your agent calls, what it does, and its effect.

**CRM 227**

- `zoho_crm.accounts.create` Create a Zoho CRM account write
- `zoho_crm.accounts.create_raw` Create a Zoho CRM account with arbitrary fields write
- `zoho_crm.accounts.delete` Delete a Zoho CRM account destructive
- `zoho_crm.accounts.get` Get a Zoho CRM account read
- `zoho_crm.accounts.list` List Zoho CRM accounts read
- `zoho_crm.accounts.search` Search Zoho CRM accounts read
- `zoho_crm.accounts.update` Update a Zoho CRM account write
- `zoho_crm.accounts.update_raw` Update a Zoho CRM account with arbitrary fields write
- `zoho_crm.assignment_rules.get` Get a Zoho CRM assignment rule read
- `zoho_crm.assignment_rules.list` List Zoho CRM assignment rules read
- `zoho_crm.attachments.create` Attach a link to a Zoho CRM record write
- `zoho_crm.attachments.delete` Delete a Zoho CRM attachment destructive
- `zoho_crm.attachments.download` Download a Zoho CRM attachment read
- `zoho_crm.attachments.list` List a Zoho CRM record's attachments read
- `zoho_crm.blueprint.get` Get a Zoho CRM record's blueprint read
- `zoho_crm.blueprint.update` Advance a Zoho CRM record's blueprint write
- `zoho_crm.bulk_read.create` Create a Zoho CRM bulk read job write
- `zoho_crm.bulk_read.download` Download a Zoho CRM bulk read result read
- `zoho_crm.bulk_read.get` Get a Zoho CRM bulk read job's status read
- `zoho_crm.bulk_write.create` Create a Zoho CRM bulk write job write
- `zoho_crm.bulk_write.get` Get a Zoho CRM bulk write job's status read
- `zoho_crm.bulk_write.upload_file` Upload a CSV for a Zoho CRM bulk write write
- `zoho_crm.calls.create` Create a Zoho CRM call write
- `zoho_crm.calls.create_raw` Create a Zoho CRM call with arbitrary fields write
- `zoho_crm.calls.delete` Delete a Zoho CRM call destructive
- `zoho_crm.calls.get` Get a Zoho CRM call read
- `zoho_crm.calls.list` List Zoho CRM calls read
- `zoho_crm.calls.search` Search Zoho CRM calls read
- `zoho_crm.calls.update` Update a Zoho CRM call write
- `zoho_crm.calls.update_raw` Update a Zoho CRM call with arbitrary fields write
- `zoho_crm.campaigns.create` Create a Zoho CRM campaign write
- `zoho_crm.campaigns.create_raw` Create a Zoho CRM campaign with arbitrary fields write
- `zoho_crm.campaigns.delete` Delete a Zoho CRM campaign destructive
- `zoho_crm.campaigns.get` Get a Zoho CRM campaign read
- `zoho_crm.campaigns.list` List Zoho CRM campaigns read
- `zoho_crm.campaigns.search` Search Zoho CRM campaigns read
- `zoho_crm.campaigns.update` Update a Zoho CRM campaign write
- `zoho_crm.campaigns.update_raw` Update a Zoho CRM campaign with arbitrary fields write
- `zoho_crm.cases.create` Create a Zoho CRM case write
- `zoho_crm.cases.create_raw` Create a Zoho CRM case with arbitrary fields write
- `zoho_crm.cases.delete` Delete a Zoho CRM case destructive
- `zoho_crm.cases.get` Get a Zoho CRM case read
- `zoho_crm.cases.list` List Zoho CRM cases read
- `zoho_crm.cases.search` Search Zoho CRM cases read
- `zoho_crm.cases.update` Update a Zoho CRM case write
- `zoho_crm.cases.update_raw` Update a Zoho CRM case with arbitrary fields write
- `zoho_crm.contacts.create` Create a Zoho CRM contact write
- `zoho_crm.contacts.create_raw` Create a Zoho CRM contact with arbitrary fields write
- `zoho_crm.contacts.delete` Delete a Zoho CRM contact destructive
- `zoho_crm.contacts.get` Get a Zoho CRM contact read
- `zoho_crm.contacts.list` List Zoho CRM contacts read
- `zoho_crm.contacts.search` Search Zoho CRM contacts read
- `zoho_crm.contacts.update` Update a Zoho CRM contact write
- `zoho_crm.contacts.update_raw` Update a Zoho CRM contact with arbitrary fields write
- `zoho_crm.coql.query` Run a Zoho CRM COQL query read
- `zoho_crm.currencies.get` Get a Zoho CRM currency read
- `zoho_crm.currencies.list` List Zoho CRM currencies read
- `zoho_crm.custom_views.get` Get a Zoho CRM custom view read
- `zoho_crm.custom_views.list` List a Zoho CRM module's custom views read
- `zoho_crm.deals.create` Create a Zoho CRM deal write
- `zoho_crm.deals.create_raw` Create a Zoho CRM deal with arbitrary fields write
- `zoho_crm.deals.delete` Delete a Zoho CRM deal destructive
- `zoho_crm.deals.get` Get a Zoho CRM deal read
- `zoho_crm.deals.list` List Zoho CRM deals read
- `zoho_crm.deals.search` Search Zoho CRM deals read
- `zoho_crm.deals.update` Update a Zoho CRM deal write
- `zoho_crm.deals.update_raw` Update a Zoho CRM deal with arbitrary fields write
- `zoho_crm.events.create` Create a Zoho CRM event write
- `zoho_crm.events.create_raw` Create a Zoho CRM event with arbitrary fields write
- `zoho_crm.events.delete` Delete a Zoho CRM event destructive
- `zoho_crm.events.get` Get a Zoho CRM event read
- `zoho_crm.events.list` List Zoho CRM events read
- `zoho_crm.events.search` Search Zoho CRM events read
- `zoho_crm.events.update` Update a Zoho CRM event write
- `zoho_crm.events.update_raw` Update a Zoho CRM event with arbitrary fields write
- `zoho_crm.features.list` List Zoho CRM features read
- `zoho_crm.fields.get` Get a Zoho CRM field's metadata read
- `zoho_crm.fields.list` List a Zoho CRM module's fields read
- `zoho_crm.files.download` Download a Zoho CRM file read
- `zoho_crm.files.upload` Upload a file to Zoho CRM write
- `zoho_crm.invoices.create` Create a Zoho CRM invoice write
- `zoho_crm.invoices.create_raw` Create a Zoho CRM invoice with arbitrary fields write
- `zoho_crm.invoices.delete` Delete a Zoho CRM invoice destructive
- `zoho_crm.invoices.get` Get a Zoho CRM invoice read
- `zoho_crm.invoices.list` List Zoho CRM invoices read
- `zoho_crm.invoices.search` Search Zoho CRM invoices read
- `zoho_crm.invoices.update` Update a Zoho CRM invoice write
- `zoho_crm.invoices.update_raw` Update a Zoho CRM invoice with arbitrary fields write
- `zoho_crm.layouts.get` Get a Zoho CRM layout read
- `zoho_crm.layouts.list` List a Zoho CRM module's layouts read
- `zoho_crm.leads.create` Create a Zoho CRM lead write
- `zoho_crm.leads.create_raw` Create a Zoho CRM lead with arbitrary fields write
- `zoho_crm.leads.delete` Delete a Zoho CRM lead destructive
- `zoho_crm.leads.get` Get a Zoho CRM lead read
- `zoho_crm.leads.list` List Zoho CRM leads read
- `zoho_crm.leads.search` Search Zoho CRM leads read
- `zoho_crm.leads.update` Update a Zoho CRM lead write
- `zoho_crm.leads.update_raw` Update a Zoho CRM lead with arbitrary fields write
- `zoho_crm.modules.get` Get a Zoho CRM module's metadata read
- `zoho_crm.modules.list` List Zoho CRM modules read
- `zoho_crm.notes.create` Create a Zoho CRM note write
- `zoho_crm.notes.delete` Delete a Zoho CRM note destructive
- `zoho_crm.notes.get` Get a Zoho CRM note read
- `zoho_crm.notes.list` List Zoho CRM notes read
- `zoho_crm.notes.update` Update a Zoho CRM note write
- `zoho_crm.notification_channels.create` Subscribe to Zoho CRM change notifications write
- `zoho_crm.notification_channels.delete` Unsubscribe from Zoho CRM notifications destructive
- `zoho_crm.notification_channels.list` List Zoho CRM notification subscriptions read
- `zoho_crm.notification_channels.update` Update a Zoho CRM notification subscription write
- `zoho_crm.org.get` Get the Zoho CRM organisation read
- `zoho_crm.pipelines.get` Get a Zoho CRM pipeline read
- `zoho_crm.pipelines.list` List Zoho CRM deal pipelines read
- `zoho_crm.price_books.create` Create a Zoho CRM price book write
- `zoho_crm.price_books.create_raw` Create a Zoho CRM price book with arbitrary fields write
- `zoho_crm.price_books.delete` Delete a Zoho CRM price book destructive
- `zoho_crm.price_books.get` Get a Zoho CRM price book read
- `zoho_crm.price_books.list` List Zoho CRM price books read
- `zoho_crm.price_books.search` Search Zoho CRM price books read
- `zoho_crm.price_books.update` Update a Zoho CRM price book write
- `zoho_crm.price_books.update_raw` Update a Zoho CRM price book with arbitrary fields write
- `zoho_crm.products.create` Create a Zoho CRM product write
- `zoho_crm.products.create_raw` Create a Zoho CRM product with arbitrary fields write
- `zoho_crm.products.delete` Delete a Zoho CRM product destructive
- `zoho_crm.products.get` Get a Zoho CRM product read
- `zoho_crm.products.list` List Zoho CRM products read
- `zoho_crm.products.search` Search Zoho CRM products read
- `zoho_crm.products.update` Update a Zoho CRM product write
- `zoho_crm.products.update_raw` Update a Zoho CRM product with arbitrary fields write
- `zoho_crm.profiles.get` Get a Zoho CRM profile read
- `zoho_crm.profiles.list` List Zoho CRM profiles read
- `zoho_crm.purchase_orders.create` Create a Zoho CRM purchase order write
- `zoho_crm.purchase_orders.create_raw` Create a Zoho CRM purchase order with arbitrary fields write
- `zoho_crm.purchase_orders.delete` Delete a Zoho CRM purchase order destructive
- `zoho_crm.purchase_orders.get` Get a Zoho CRM purchase order read
- `zoho_crm.purchase_orders.list` List Zoho CRM purchase orders read
- `zoho_crm.purchase_orders.search` Search Zoho CRM purchase orders read
- `zoho_crm.purchase_orders.update` Update a Zoho CRM purchase order write
- `zoho_crm.purchase_orders.update_raw` Update a Zoho CRM purchase order with arbitrary fields write
- `zoho_crm.quotes.create` Create a Zoho CRM quote write
- `zoho_crm.quotes.create_raw` Create a Zoho CRM quote with arbitrary fields write
- `zoho_crm.quotes.delete` Delete a Zoho CRM quote destructive
- `zoho_crm.quotes.get` Get a Zoho CRM quote read
- `zoho_crm.quotes.list` List Zoho CRM quotes read
- `zoho_crm.quotes.search` Search Zoho CRM quotes read
- `zoho_crm.quotes.update` Update a Zoho CRM quote write
- `zoho_crm.quotes.update_raw` Update a Zoho CRM quote with arbitrary fields write
- `zoho_crm.record_locks.create` Lock a Zoho CRM record write
- `zoho_crm.record_locks.delete` Unlock a Zoho CRM record destructive
- `zoho_crm.record_locks.get` Get a Zoho CRM record's lock state read
- `zoho_crm.record_notes.create` Add a note to a Zoho CRM record write
- `zoho_crm.record_notes.list` List a Zoho CRM record's notes read
- `zoho_crm.records.convert_lead` Convert a Zoho CRM lead write
- `zoho_crm.records.count` Count records in a Zoho CRM module read
- `zoho_crm.records.create` Create records in any Zoho CRM module write
- `zoho_crm.records.delete` Delete a record from any Zoho CRM module destructive
- `zoho_crm.records.get` Get one record from any Zoho CRM module read
- `zoho_crm.records.get_mass_convert_status` Get a Zoho CRM mass-convert job's status read
- `zoho_crm.records.get_mass_delete_status` Get a Zoho CRM mass-delete job's status read
- `zoho_crm.records.get_mass_update_status` Get a Zoho CRM mass-update job's status read
- `zoho_crm.records.get_rich_text` Get a Zoho CRM record's rich-text fields read
- `zoho_crm.records.get_timeline` List a Zoho CRM record's timeline read
- `zoho_crm.records.list` List records in any Zoho CRM module read
- `zoho_crm.records.list_deleted` List deleted Zoho CRM records read
- `zoho_crm.records.mass_convert_leads` Mass convert Zoho CRM leads write
- `zoho_crm.records.mass_delete` Mass delete Zoho CRM records destructive
- `zoho_crm.records.mass_update` Mass update a Zoho CRM field write
- `zoho_crm.records.search` Search records in any Zoho CRM module read
- `zoho_crm.records.update` Update records in any Zoho CRM module write
- `zoho_crm.records.upsert` Upsert records in any Zoho CRM module write
- `zoho_crm.related_lists.list` List a Zoho CRM module's related lists read
- `zoho_crm.related_records.delete` Unlink a Zoho CRM related record destructive
- `zoho_crm.related_records.list` List a Zoho CRM record's related records read
- `zoho_crm.related_records.update` Link Zoho CRM records through a related list write
- `zoho_crm.roles.get` Get a Zoho CRM role read
- `zoho_crm.roles.list` List Zoho CRM roles read
- `zoho_crm.sales_orders.create` Create a Zoho CRM sales order write
- `zoho_crm.sales_orders.create_raw` Create a Zoho CRM sales order with arbitrary fields write
- `zoho_crm.sales_orders.delete` Delete a Zoho CRM sales order destructive
- `zoho_crm.sales_orders.get` Get a Zoho CRM sales order read
- `zoho_crm.sales_orders.list` List Zoho CRM sales orders read
- `zoho_crm.sales_orders.search` Search Zoho CRM sales orders read
- `zoho_crm.sales_orders.update` Update a Zoho CRM sales order write
- `zoho_crm.sales_orders.update_raw` Update a Zoho CRM sales order with arbitrary fields write
- `zoho_crm.solutions.create` Create a Zoho CRM solution write
- `zoho_crm.solutions.create_raw` Create a Zoho CRM solution with arbitrary fields write
- `zoho_crm.solutions.delete` Delete a Zoho CRM solution destructive
- `zoho_crm.solutions.get` Get a Zoho CRM solution read
- `zoho_crm.solutions.list` List Zoho CRM solutions read
- `zoho_crm.solutions.search` Search Zoho CRM solutions read
- `zoho_crm.solutions.update` Update a Zoho CRM solution write
- `zoho_crm.solutions.update_raw` Update a Zoho CRM solution with arbitrary fields write
- `zoho_crm.tags.add_to_records` Tag Zoho CRM records write
- `zoho_crm.tags.create` Create Zoho CRM tags write
- `zoho_crm.tags.delete` Delete a Zoho CRM tag destructive
- `zoho_crm.tags.list` List Zoho CRM tags read
- `zoho_crm.tags.merge` Merge two Zoho CRM tags destructive
- `zoho_crm.tags.record_count` Count records carrying a Zoho CRM tag read
- `zoho_crm.tags.remove_from_records` Untag Zoho CRM records destructive
- `zoho_crm.tags.update` Rename a Zoho CRM tag write
- `zoho_crm.tasks.create` Create a Zoho CRM task write
- `zoho_crm.tasks.create_raw` Create a Zoho CRM task with arbitrary fields write
- `zoho_crm.tasks.delete` Delete a Zoho CRM task destructive
- `zoho_crm.tasks.get` Get a Zoho CRM task read
- `zoho_crm.tasks.list` List Zoho CRM tasks read
- `zoho_crm.tasks.search` Search Zoho CRM tasks read
- `zoho_crm.tasks.update` Update a Zoho CRM task write
- `zoho_crm.tasks.update_raw` Update a Zoho CRM task with arbitrary fields write
- `zoho_crm.taxes.get` Get a Zoho CRM tax read
- `zoho_crm.taxes.list` List Zoho CRM taxes read
- `zoho_crm.territories.get` Get a Zoho CRM territory read
- `zoho_crm.territories.list` List Zoho CRM territories read
- `zoho_crm.users.create` Create a Zoho CRM user write
- `zoho_crm.users.delete` Delete a Zoho CRM user destructive
- `zoho_crm.users.get` Get a Zoho CRM user read
- `zoho_crm.users.list` List Zoho CRM users read
- `zoho_crm.users.update` Update a Zoho CRM user write
- `zoho_crm.variable_groups.list` List Zoho CRM variable groups read
- `zoho_crm.variables.get` Get a Zoho CRM variable read
- `zoho_crm.variables.list` List Zoho CRM variables read
- `zoho_crm.vendors.create` Create a Zoho CRM vendor write
- `zoho_crm.vendors.create_raw` Create a Zoho CRM vendor with arbitrary fields write
- `zoho_crm.vendors.delete` Delete a Zoho CRM vendor destructive
- `zoho_crm.vendors.get` Get a Zoho CRM vendor read
- `zoho_crm.vendors.list` List Zoho CRM vendors read
- `zoho_crm.vendors.search` Search Zoho CRM vendors read
- `zoho_crm.vendors.update` Update a Zoho CRM vendor write
- `zoho_crm.vendors.update_raw` Update a Zoho CRM vendor with arbitrary fields write

Questions

## The Zoho CRM MCP server, answered.

**Is there a Zoho CRM MCP server for Claude?**

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 227 Zoho CRM actions, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Zoho CRM.

**What do I need to connect Zoho CRM?**

Your own Zoho CRM OAuth app, registered with Zoho CRM (its client id and client secret), and the access and refresh tokens from one admin sign-in. actionlake has no Zoho CRM app of its own, so this is not a one-step consent. actionlake renews the access token as it expires. Plus your api domain. actionlake finds api base for you when you connect. The free call account { op: "connections.requirements", service: "zoho_crm" } lists exactly what to paste.

**Can an AI agent delete or change things in Zoho CRM?**

Only if its key allows it, and only with an explicit confirmation. 28 Zoho CRM actions are destructive, including delete a Zoho CRM contact, delete a Zoho CRM vendor and delete a Zoho CRM account. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.

**Will an AI agent use up my Zoho CRM API limit?**

actionlake paces every call to the limits in the Zoho CRM service file: 100 calls a minute per connection. Repeated reads are answered from cache (107 Zoho CRM actions can be), which never reaches Zoho CRM.

**What does a Zoho CRM action cost?**

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (227 Zoho CRM actions page). Cache hits, searches, dry runs and calls Zoho CRM refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

**Which Zoho CRM API does it cover?**

The Zoho CRM API 7 at your Zoho CRM instance's API base URL, which you enter when connecting (path /crm). It is built from Zoho CRM's documentation as read on 15 September 2026. 227 actions in 1 area, each one in the signed service file (version 1.0.0).

**Can I combine Zoho CRM with my other systems?**

Yes. ask joins Zoho CRM to ConnectWise PSA or ServiceNow on the same customer and returns the answer rather than every row. Zoho CRM maps crm.company, which 227 other connectors also map.

**Does actionlake keep my Zoho CRM data, and where?**

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to an hour, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Zoho CRM credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.

**Which AI clients can use it?**

Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.

## More connectors like Zoho CRM

Shares the most action names with

- [Microsoft Dynamics 365 118](https://actionlake.com/connectors/microsoft-dynamics-365)
- [HubSpot CRM 105](https://actionlake.com/connectors/hubspot-crm)
- [Salesforce Sales Cloud 71](https://actionlake.com/connectors/salesforce-sales-cloud)
- [Insightly CRM 62](https://actionlake.com/connectors/insightly-crm)
- [Follow Up Boss 52](https://actionlake.com/connectors/follow-up-boss)
- [Recruit CRM 48](https://actionlake.com/connectors/recruit-crm)

Joins with, on shared entities

- [ERPNext (Frappe) 13](https://actionlake.com/connectors/erpnext-frappe)
- [HaloPSA 12](https://actionlake.com/connectors/halopsa)
- [Odoo 11](https://actionlake.com/connectors/odoo)
- [Acumatica Cloud ERP 10](https://actionlake.com/connectors/acumatica-cloud-erp)
- [Syncro 10](https://actionlake.com/connectors/syncro)
- [RepairShopr 10](https://actionlake.com/connectors/repairshopr)

Browse

- [All CRM & sales connectors](https://actionlake.com/connectors/category/crm-and-sales)
- [All connectors](https://actionlake.com/connectors)
- [How actionlake compares](https://actionlake.com/compare)

actionlake is independent. It is not made or endorsed by Zoho CRM; the name is the vendor's own. Counts are from the Zoho CRM service file, version 1.0.0.

## Give your agent Zoho CRM today.

[Connect Zoho CRM free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.

---

Source: https://actionlake.com/connectors/zoho-crm
More: https://actionlake.com/llms.txt
