Skip to content

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.

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
  • 227actionsin one signed file
  • 107readlook, never change
  • 92writecreate and update
  • 28wait for a yesdestructive, 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_tokenAccess token from one sign-in with your own OAuth app
    • refresh_tokenRefresh token from the same sign-in; the access token is renewed from it
    • client_idZoho client id
    • client_secretZoho client secret
    • api_domainWhere 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 callcheck { 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_tokenrefresh_tokenclient_idclient_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 2026zoho.com
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.

  • 107readlook, never change
  • 92writecreate and update
  • 28destructivewait 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.

ActionWhat it doesEffectSame name in
zoho_crm.contacts.listList Zoho CRM contactsList contact records from the Contacts module.readcrm.contact.list177 connectors
zoho_crm.accounts.listList Zoho CRM accountsList account records from the Accounts module.readcrm.company.list162 connectors
zoho_crm.deals.listList Zoho CRM dealsList deal records from the Deals module.readcrm.deal.list43 connectors
zoho_crm.users.listList Zoho CRM usersList the org's CRM users, optionally narrowed to active, admin or deactivated.readidentity.user.list474 connectors
zoho_crm.notes.listList Zoho CRM notesList notes across every module, newest first.readcrm.contact_note.list29 connectors
zoho_crm.leads.listList Zoho CRM leadsList lead records from the Leads module.readcrm.lead.list28 connectors
zoho_crm.vendors.listList Zoho CRM vendorsList vendor records from the Vendors module.readcrm.company.list162 connectors
zoho_crm.contacts.createCreate a Zoho CRM contactInsert one contact into the Contacts module with its named fields.writecrm.contact.create161 connectors
zoho_crm.invoices.listList Zoho CRM invoicesList invoice records from the Invoices module.readfinance.invoice.list101 connectors
zoho_crm.vendors.createCreate a Zoho CRM vendorInsert one vendor into the Vendors module with its named fields.writecrm.company.create142 connectors
zoho_crm.accounts.createCreate a Zoho CRM accountInsert one account into the Accounts module with its named fields.writecrm.company.create142 connectors
zoho_crm.contacts.deleteDelete a Zoho CRM contactMove one Contacts record to the recycle bin.destructivecrm.contact.delete147 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. Readread

    Which Zoho CRM invoices are more than 30 days overdue? Group them by customer with the total owed.

    callszoho_crm.invoices.list

  2. Planread

    Audit the org's CRM configuration in Zoho CRM.

    callszoho_crm.org.getzoho_crm.modules.listzoho_crm.users.listzoho_crm.profiles.listzoho_crm.roles.list+3 more

  3. Planwrite

    Escalate a support case and record why in Zoho CRM. Ask me before anything is sent or changed.

    callszoho_crm.cases.getzoho_crm.record_notes.listzoho_crm.users.getzoho_crm.cases.updatezoho_crm.record_notes.create+1 more

  4. Writewrite

    Create a Zoho CRM contact in Zoho CRM. Show me exactly what you will send before you save it.

    callszoho_crm.contacts.create

  5. Across systemsread

    For each customer, how many invoices are in Zoho CRM and how many tickets in ConnectWise PSA?

    callszoho_crm.invoices.listconnectwise_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

  • 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

Also mapped by other connectorsidentity.user 517crm.company 227crm.contact 192commerce.product 109work.task 105finance.invoice 91commerce.order 86service.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 decidesConvert 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 decidesEscalate 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 decidesRaise 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 decidesDelete 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 contactzoho_crm.contacts.delete
  • Delete a Zoho CRM vendorzoho_crm.vendors.delete
  • Delete a Zoho CRM accountzoho_crm.accounts.delete
  • Delete a Zoho CRM dealzoho_crm.deals.delete
  • Delete a Zoho CRM notezoho_crm.notes.delete
  • Delete a Zoho CRM leadzoho_crm.leads.delete
  • Delete a Zoho CRM invoicezoho_crm.invoices.delete
  • Delete a Zoho CRM quotezoho_crm.quotes.delete
  • Delete a Zoho CRM taskzoho_crm.tasks.delete
  • Delete a Zoho CRM purchase orderzoho_crm.purchase_orders.delete
  • Delete a Zoho CRM productzoho_crm.products.delete
  • Delete a Zoho CRM eventzoho_crm.events.delete
  • Delete a Zoho CRM casezoho_crm.cases.delete
  • Delete a Zoho CRM userzoho_crm.users.delete
  • Delete a Zoho CRM sales orderzoho_crm.sales_orders.delete
  • Delete a Zoho CRM solutionzoho_crm.solutions.delete
  • Delete a Zoho CRM callzoho_crm.calls.delete
  • Unlink a Zoho CRM related recordzoho_crm.related_records.delete
  • Delete a Zoho CRM tagzoho_crm.tags.delete
  • Delete a Zoho CRM campaignzoho_crm.campaigns.delete
  • Delete a Zoho CRM price bookzoho_crm.price_books.delete
  • Unsubscribe from Zoho CRM notificationszoho_crm.notification_channels.delete
  • Delete a Zoho CRM attachmentzoho_crm.attachments.delete
  • Delete a record from any Zoho CRM modulezoho_crm.records.delete
  • Merge two Zoho CRM tagszoho_crm.tags.merge
  • Mass delete Zoho CRM recordszoho_crm.records.mass_delete
  • Untag Zoho CRM recordszoho_crm.tags.remove_from_records
  • Unlock a Zoho CRM recordzoho_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.

dozoho_crm.contacts.deleteconfirm_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: "[email protected]" },    { match: "zoho_crm.vendors.delete", approver: "[email protected]" },    { match: "zoho_crm.accounts.delete", approver: "[email protected]" }  ]}
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.

  • 1upstream call per actionall 227 Zoho CRM actions
  • 227actions pageeach page of a long list is one call
  • 107reads can be cacheda cache hit costs nothing
  • 100,000calls a month, freepaid plans from US$49 a month for 250,000

See pricing

Action index

Every Zoho CRM action.

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

CRM227
  • zoho_crm.accounts.createCreate a Zoho CRM accountwrite
  • zoho_crm.accounts.create_rawCreate a Zoho CRM account with arbitrary fieldswrite
  • zoho_crm.accounts.deleteDelete a Zoho CRM accountdestructive
  • zoho_crm.accounts.getGet a Zoho CRM accountread
  • zoho_crm.accounts.listList Zoho CRM accountsread
  • zoho_crm.accounts.searchSearch Zoho CRM accountsread
  • zoho_crm.accounts.updateUpdate a Zoho CRM accountwrite
  • zoho_crm.accounts.update_rawUpdate a Zoho CRM account with arbitrary fieldswrite
  • zoho_crm.assignment_rules.getGet a Zoho CRM assignment ruleread
  • zoho_crm.assignment_rules.listList Zoho CRM assignment rulesread
  • zoho_crm.attachments.createAttach a link to a Zoho CRM recordwrite
  • zoho_crm.attachments.deleteDelete a Zoho CRM attachmentdestructive
  • zoho_crm.attachments.downloadDownload a Zoho CRM attachmentread
  • zoho_crm.attachments.listList a Zoho CRM record's attachmentsread
  • zoho_crm.blueprint.getGet a Zoho CRM record's blueprintread
  • zoho_crm.blueprint.updateAdvance a Zoho CRM record's blueprintwrite
  • zoho_crm.bulk_read.createCreate a Zoho CRM bulk read jobwrite
  • zoho_crm.bulk_read.downloadDownload a Zoho CRM bulk read resultread
  • zoho_crm.bulk_read.getGet a Zoho CRM bulk read job's statusread
  • zoho_crm.bulk_write.createCreate a Zoho CRM bulk write jobwrite
  • zoho_crm.bulk_write.getGet a Zoho CRM bulk write job's statusread
  • zoho_crm.bulk_write.upload_fileUpload a CSV for a Zoho CRM bulk writewrite
  • zoho_crm.calls.createCreate a Zoho CRM callwrite
  • zoho_crm.calls.create_rawCreate a Zoho CRM call with arbitrary fieldswrite
  • zoho_crm.calls.deleteDelete a Zoho CRM calldestructive
  • zoho_crm.calls.getGet a Zoho CRM callread
  • zoho_crm.calls.listList Zoho CRM callsread
  • zoho_crm.calls.searchSearch Zoho CRM callsread
  • zoho_crm.calls.updateUpdate a Zoho CRM callwrite
  • zoho_crm.calls.update_rawUpdate a Zoho CRM call with arbitrary fieldswrite
  • zoho_crm.campaigns.createCreate a Zoho CRM campaignwrite
  • zoho_crm.campaigns.create_rawCreate a Zoho CRM campaign with arbitrary fieldswrite
  • zoho_crm.campaigns.deleteDelete a Zoho CRM campaigndestructive
  • zoho_crm.campaigns.getGet a Zoho CRM campaignread
  • zoho_crm.campaigns.listList Zoho CRM campaignsread
  • zoho_crm.campaigns.searchSearch Zoho CRM campaignsread
  • zoho_crm.campaigns.updateUpdate a Zoho CRM campaignwrite
  • zoho_crm.campaigns.update_rawUpdate a Zoho CRM campaign with arbitrary fieldswrite
  • zoho_crm.cases.createCreate a Zoho CRM casewrite
  • zoho_crm.cases.create_rawCreate a Zoho CRM case with arbitrary fieldswrite
  • zoho_crm.cases.deleteDelete a Zoho CRM casedestructive
  • zoho_crm.cases.getGet a Zoho CRM caseread
  • zoho_crm.cases.listList Zoho CRM casesread
  • zoho_crm.cases.searchSearch Zoho CRM casesread
  • zoho_crm.cases.updateUpdate a Zoho CRM casewrite
  • zoho_crm.cases.update_rawUpdate a Zoho CRM case with arbitrary fieldswrite
  • zoho_crm.contacts.createCreate a Zoho CRM contactwrite
  • zoho_crm.contacts.create_rawCreate a Zoho CRM contact with arbitrary fieldswrite
  • zoho_crm.contacts.deleteDelete a Zoho CRM contactdestructive
  • zoho_crm.contacts.getGet a Zoho CRM contactread
  • zoho_crm.contacts.listList Zoho CRM contactsread
  • zoho_crm.contacts.searchSearch Zoho CRM contactsread
  • zoho_crm.contacts.updateUpdate a Zoho CRM contactwrite
  • zoho_crm.contacts.update_rawUpdate a Zoho CRM contact with arbitrary fieldswrite
  • zoho_crm.coql.queryRun a Zoho CRM COQL queryread
  • zoho_crm.currencies.getGet a Zoho CRM currencyread
  • zoho_crm.currencies.listList Zoho CRM currenciesread
  • zoho_crm.custom_views.getGet a Zoho CRM custom viewread
  • zoho_crm.custom_views.listList a Zoho CRM module's custom viewsread
  • zoho_crm.deals.createCreate a Zoho CRM dealwrite
  • zoho_crm.deals.create_rawCreate a Zoho CRM deal with arbitrary fieldswrite
  • zoho_crm.deals.deleteDelete a Zoho CRM dealdestructive
  • zoho_crm.deals.getGet a Zoho CRM dealread
  • zoho_crm.deals.listList Zoho CRM dealsread
  • zoho_crm.deals.searchSearch Zoho CRM dealsread
  • zoho_crm.deals.updateUpdate a Zoho CRM dealwrite
  • zoho_crm.deals.update_rawUpdate a Zoho CRM deal with arbitrary fieldswrite
  • zoho_crm.events.createCreate a Zoho CRM eventwrite
  • zoho_crm.events.create_rawCreate a Zoho CRM event with arbitrary fieldswrite
  • zoho_crm.events.deleteDelete a Zoho CRM eventdestructive
  • zoho_crm.events.getGet a Zoho CRM eventread
  • zoho_crm.events.listList Zoho CRM eventsread
  • zoho_crm.events.searchSearch Zoho CRM eventsread
  • zoho_crm.events.updateUpdate a Zoho CRM eventwrite
  • zoho_crm.events.update_rawUpdate a Zoho CRM event with arbitrary fieldswrite
  • zoho_crm.features.listList Zoho CRM featuresread
  • zoho_crm.fields.getGet a Zoho CRM field's metadataread
  • zoho_crm.fields.listList a Zoho CRM module's fieldsread
  • zoho_crm.files.downloadDownload a Zoho CRM fileread
  • zoho_crm.files.uploadUpload a file to Zoho CRMwrite
  • zoho_crm.invoices.createCreate a Zoho CRM invoicewrite
  • zoho_crm.invoices.create_rawCreate a Zoho CRM invoice with arbitrary fieldswrite
  • zoho_crm.invoices.deleteDelete a Zoho CRM invoicedestructive
  • zoho_crm.invoices.getGet a Zoho CRM invoiceread
  • zoho_crm.invoices.listList Zoho CRM invoicesread
  • zoho_crm.invoices.searchSearch Zoho CRM invoicesread
  • zoho_crm.invoices.updateUpdate a Zoho CRM invoicewrite
  • zoho_crm.invoices.update_rawUpdate a Zoho CRM invoice with arbitrary fieldswrite
  • zoho_crm.layouts.getGet a Zoho CRM layoutread
  • zoho_crm.layouts.listList a Zoho CRM module's layoutsread
  • zoho_crm.leads.createCreate a Zoho CRM leadwrite
  • zoho_crm.leads.create_rawCreate a Zoho CRM lead with arbitrary fieldswrite
  • zoho_crm.leads.deleteDelete a Zoho CRM leaddestructive
  • zoho_crm.leads.getGet a Zoho CRM leadread
  • zoho_crm.leads.listList Zoho CRM leadsread
  • zoho_crm.leads.searchSearch Zoho CRM leadsread
  • zoho_crm.leads.updateUpdate a Zoho CRM leadwrite
  • zoho_crm.leads.update_rawUpdate a Zoho CRM lead with arbitrary fieldswrite
  • zoho_crm.modules.getGet a Zoho CRM module's metadataread
  • zoho_crm.modules.listList Zoho CRM modulesread
  • zoho_crm.notes.createCreate a Zoho CRM notewrite
  • zoho_crm.notes.deleteDelete a Zoho CRM notedestructive
  • zoho_crm.notes.getGet a Zoho CRM noteread
  • zoho_crm.notes.listList Zoho CRM notesread
  • zoho_crm.notes.updateUpdate a Zoho CRM notewrite
  • zoho_crm.notification_channels.createSubscribe to Zoho CRM change notificationswrite
  • zoho_crm.notification_channels.deleteUnsubscribe from Zoho CRM notificationsdestructive
  • zoho_crm.notification_channels.listList Zoho CRM notification subscriptionsread
  • zoho_crm.notification_channels.updateUpdate a Zoho CRM notification subscriptionwrite
  • zoho_crm.org.getGet the Zoho CRM organisationread
  • zoho_crm.pipelines.getGet a Zoho CRM pipelineread
  • zoho_crm.pipelines.listList Zoho CRM deal pipelinesread
  • zoho_crm.price_books.createCreate a Zoho CRM price bookwrite
  • zoho_crm.price_books.create_rawCreate a Zoho CRM price book with arbitrary fieldswrite
  • zoho_crm.price_books.deleteDelete a Zoho CRM price bookdestructive
  • zoho_crm.price_books.getGet a Zoho CRM price bookread
  • zoho_crm.price_books.listList Zoho CRM price booksread
  • zoho_crm.price_books.searchSearch Zoho CRM price booksread
  • zoho_crm.price_books.updateUpdate a Zoho CRM price bookwrite
  • zoho_crm.price_books.update_rawUpdate a Zoho CRM price book with arbitrary fieldswrite
  • zoho_crm.products.createCreate a Zoho CRM productwrite
  • zoho_crm.products.create_rawCreate a Zoho CRM product with arbitrary fieldswrite
  • zoho_crm.products.deleteDelete a Zoho CRM productdestructive
  • zoho_crm.products.getGet a Zoho CRM productread
  • zoho_crm.products.listList Zoho CRM productsread
  • zoho_crm.products.searchSearch Zoho CRM productsread
  • zoho_crm.products.updateUpdate a Zoho CRM productwrite
  • zoho_crm.products.update_rawUpdate a Zoho CRM product with arbitrary fieldswrite
  • zoho_crm.profiles.getGet a Zoho CRM profileread
  • zoho_crm.profiles.listList Zoho CRM profilesread
  • zoho_crm.purchase_orders.createCreate a Zoho CRM purchase orderwrite
  • zoho_crm.purchase_orders.create_rawCreate a Zoho CRM purchase order with arbitrary fieldswrite
  • zoho_crm.purchase_orders.deleteDelete a Zoho CRM purchase orderdestructive
  • zoho_crm.purchase_orders.getGet a Zoho CRM purchase orderread
  • zoho_crm.purchase_orders.listList Zoho CRM purchase ordersread
  • zoho_crm.purchase_orders.searchSearch Zoho CRM purchase ordersread
  • zoho_crm.purchase_orders.updateUpdate a Zoho CRM purchase orderwrite
  • zoho_crm.purchase_orders.update_rawUpdate a Zoho CRM purchase order with arbitrary fieldswrite
  • zoho_crm.quotes.createCreate a Zoho CRM quotewrite
  • zoho_crm.quotes.create_rawCreate a Zoho CRM quote with arbitrary fieldswrite
  • zoho_crm.quotes.deleteDelete a Zoho CRM quotedestructive
  • zoho_crm.quotes.getGet a Zoho CRM quoteread
  • zoho_crm.quotes.listList Zoho CRM quotesread
  • zoho_crm.quotes.searchSearch Zoho CRM quotesread
  • zoho_crm.quotes.updateUpdate a Zoho CRM quotewrite
  • zoho_crm.quotes.update_rawUpdate a Zoho CRM quote with arbitrary fieldswrite
  • zoho_crm.record_locks.createLock a Zoho CRM recordwrite
  • zoho_crm.record_locks.deleteUnlock a Zoho CRM recorddestructive
  • zoho_crm.record_locks.getGet a Zoho CRM record's lock stateread
  • zoho_crm.record_notes.createAdd a note to a Zoho CRM recordwrite
  • zoho_crm.record_notes.listList a Zoho CRM record's notesread
  • zoho_crm.records.convert_leadConvert a Zoho CRM leadwrite
  • zoho_crm.records.countCount records in a Zoho CRM moduleread
  • zoho_crm.records.createCreate records in any Zoho CRM modulewrite
  • zoho_crm.records.deleteDelete a record from any Zoho CRM moduledestructive
  • zoho_crm.records.getGet one record from any Zoho CRM moduleread
  • zoho_crm.records.get_mass_convert_statusGet a Zoho CRM mass-convert job's statusread
  • zoho_crm.records.get_mass_delete_statusGet a Zoho CRM mass-delete job's statusread
  • zoho_crm.records.get_mass_update_statusGet a Zoho CRM mass-update job's statusread
  • zoho_crm.records.get_rich_textGet a Zoho CRM record's rich-text fieldsread
  • zoho_crm.records.get_timelineList a Zoho CRM record's timelineread
  • zoho_crm.records.listList records in any Zoho CRM moduleread
  • zoho_crm.records.list_deletedList deleted Zoho CRM recordsread
  • zoho_crm.records.mass_convert_leadsMass convert Zoho CRM leadswrite
  • zoho_crm.records.mass_deleteMass delete Zoho CRM recordsdestructive
  • zoho_crm.records.mass_updateMass update a Zoho CRM fieldwrite
  • zoho_crm.records.searchSearch records in any Zoho CRM moduleread
  • zoho_crm.records.updateUpdate records in any Zoho CRM modulewrite
  • zoho_crm.records.upsertUpsert records in any Zoho CRM modulewrite
  • zoho_crm.related_lists.listList a Zoho CRM module's related listsread
  • zoho_crm.related_records.deleteUnlink a Zoho CRM related recorddestructive
  • zoho_crm.related_records.listList a Zoho CRM record's related recordsread
  • zoho_crm.related_records.updateLink Zoho CRM records through a related listwrite
  • zoho_crm.roles.getGet a Zoho CRM roleread
  • zoho_crm.roles.listList Zoho CRM rolesread
  • zoho_crm.sales_orders.createCreate a Zoho CRM sales orderwrite
  • zoho_crm.sales_orders.create_rawCreate a Zoho CRM sales order with arbitrary fieldswrite
  • zoho_crm.sales_orders.deleteDelete a Zoho CRM sales orderdestructive
  • zoho_crm.sales_orders.getGet a Zoho CRM sales orderread
  • zoho_crm.sales_orders.listList Zoho CRM sales ordersread
  • zoho_crm.sales_orders.searchSearch Zoho CRM sales ordersread
  • zoho_crm.sales_orders.updateUpdate a Zoho CRM sales orderwrite
  • zoho_crm.sales_orders.update_rawUpdate a Zoho CRM sales order with arbitrary fieldswrite
  • zoho_crm.solutions.createCreate a Zoho CRM solutionwrite
  • zoho_crm.solutions.create_rawCreate a Zoho CRM solution with arbitrary fieldswrite
  • zoho_crm.solutions.deleteDelete a Zoho CRM solutiondestructive
  • zoho_crm.solutions.getGet a Zoho CRM solutionread
  • zoho_crm.solutions.listList Zoho CRM solutionsread
  • zoho_crm.solutions.searchSearch Zoho CRM solutionsread
  • zoho_crm.solutions.updateUpdate a Zoho CRM solutionwrite
  • zoho_crm.solutions.update_rawUpdate a Zoho CRM solution with arbitrary fieldswrite
  • zoho_crm.tags.add_to_recordsTag Zoho CRM recordswrite
  • zoho_crm.tags.createCreate Zoho CRM tagswrite
  • zoho_crm.tags.deleteDelete a Zoho CRM tagdestructive
  • zoho_crm.tags.listList Zoho CRM tagsread
  • zoho_crm.tags.mergeMerge two Zoho CRM tagsdestructive
  • zoho_crm.tags.record_countCount records carrying a Zoho CRM tagread
  • zoho_crm.tags.remove_from_recordsUntag Zoho CRM recordsdestructive
  • zoho_crm.tags.updateRename a Zoho CRM tagwrite
  • zoho_crm.tasks.createCreate a Zoho CRM taskwrite
  • zoho_crm.tasks.create_rawCreate a Zoho CRM task with arbitrary fieldswrite
  • zoho_crm.tasks.deleteDelete a Zoho CRM taskdestructive
  • zoho_crm.tasks.getGet a Zoho CRM taskread
  • zoho_crm.tasks.listList Zoho CRM tasksread
  • zoho_crm.tasks.searchSearch Zoho CRM tasksread
  • zoho_crm.tasks.updateUpdate a Zoho CRM taskwrite
  • zoho_crm.tasks.update_rawUpdate a Zoho CRM task with arbitrary fieldswrite
  • zoho_crm.taxes.getGet a Zoho CRM taxread
  • zoho_crm.taxes.listList Zoho CRM taxesread
  • zoho_crm.territories.getGet a Zoho CRM territoryread
  • zoho_crm.territories.listList Zoho CRM territoriesread
  • zoho_crm.users.createCreate a Zoho CRM userwrite
  • zoho_crm.users.deleteDelete a Zoho CRM userdestructive
  • zoho_crm.users.getGet a Zoho CRM userread
  • zoho_crm.users.listList Zoho CRM usersread
  • zoho_crm.users.updateUpdate a Zoho CRM userwrite
  • zoho_crm.variable_groups.listList Zoho CRM variable groupsread
  • zoho_crm.variables.getGet a Zoho CRM variableread
  • zoho_crm.variables.listList Zoho CRM variablesread
  • zoho_crm.vendors.createCreate a Zoho CRM vendorwrite
  • zoho_crm.vendors.create_rawCreate a Zoho CRM vendor with arbitrary fieldswrite
  • zoho_crm.vendors.deleteDelete a Zoho CRM vendordestructive
  • zoho_crm.vendors.getGet a Zoho CRM vendorread
  • zoho_crm.vendors.listList Zoho CRM vendorsread
  • zoho_crm.vendors.searchSearch Zoho CRM vendorsread
  • zoho_crm.vendors.updateUpdate a Zoho CRM vendorwrite
  • zoho_crm.vendors.update_rawUpdate a Zoho CRM vendor with arbitrary fieldswrite

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.

Give your agent Zoho CRM today.

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