zoho-crm
Purpose
Given any use case, this skill:
- Selects the right primitive, loads the relevant DOU nodes / reference docs
- Produces the solution (via MCP tools if connected, or as exact payloads) and validates the output
When to Use
| Use case |
Subskill |
| Read, create, update, delete CRM records via HTTP |
API |
| Write server-side automation / custom functions |
Functions / Deluge |
| Add UI logic to record pages / list views |
ClientScript |
| Build embedded UI components |
Widgets |
| Build a saved query bound to a Canvas view, Kiosk, or Custom Related List (UI-authored in Workbench) |
Queries |
| Query CRM data using COQL (CRM Object Query Language) |
COQL |
| Connect to external services via OAuth |
Connections |
Step-by-Step Reasoning Flow
Step 1 — Understand the Goal
| Dimension |
Extract |
Examples |
| Action |
What should happen? |
fetch, create, update, trigger, display, query |
| Entity |
Which CRM module or object? |
Leads, Contacts, Deals, custom modules |
| Context |
Where does this run? |
server-side, UI page, scheduled, event-triggered |
Gate: If any dimension above cannot be unambiguously inferred from a single reasonable interpretation — stop and ask before proceeding to Step 2. Ask only what is necessary; omit optional parameters with clear defaults.
Step 2 — Select the Right Primitive
Use the decision matrix below as the primary routing source. If the use case doesn't match any row, apply the layer rule: server-side (no browser access needed) → Function / REST API / COQL / Queries; browser-side → Widget / Client Script.
Decision matrix — need → use
Server-side
| Need |
Use |
| Run Deluge backend code in CRM — process records, perform CRUD operations, call Zoho CRM APIs, send emails/SMS, or execute any server-side business logic |
Function — trigger via Workflow Rule, Blueprint, Schedule, Button, Validation Rule, or Serverless Endpoint |
| Call an external (non-Zoho) API and write the result to CRM |
Function via Workflow Rule or Button (use a named Connection for auth) |
| Expose custom Deluge logic as REST API for external systems |
Function via Serverless Endpoint |
| Run a cron job inside CRM |
Function via Scheduled Function |
| Convert a Custom Related List to a Function |
Function via related_list.* category — the only category that renders data directly on a record detail page; do not clarify unless a different trigger type (button, workflow, API endpoint) is explicitly stated |
| Read / create / update / delete CRM records, or any CRM-specific operation, from an external system or script |
REST API |
| Fetch CRM data programmatically from Deluge, external API callers, or ad-hoc code |
COQL |
| Display query-driven data in a Canvas, Kiosk, or Custom Related List |
Queries (build in Workbench UI — Setup → Developer Hub → Queries) |
| Authenticate to an external OAuth service from a Function or ClientScript |
Connections (create in Setup → Developer Hub → Connections; reference by link name in invokeurl or ZDK.Apps.CRM.Connection.invoke) |
Browser-side
| Need |
Use |
| Render or embed custom HTML or a third-party UI component inside CRM |
Widget |
| Hide a field based on another field's value, or any other web UI customization on a record page |
Client Script |
| Validate field input before saving a record in CRM web UI |
Client Script (instant UI feedback) or Function via Validation Rule (server-side enforcement) — default to Client Script unless the user explicitly requires server-side enforcement |
| Show a confirmation dialog before a button action in web UI |
Client Script (dialog) + Function (backend action) |
Tiebreaker: Default to the first listed option; override only if the user's context explicitly favors the second.
Check: Confirm the selected primitive matches Action + Entity + Context from Step 1. If not — re-check the matrix or loop back to clarification.
Universal constraint: Use API names for all module and field references — never display labels.
Authoritative Sources Hierarchy
When in doubt about syntax, signatures, or limits, consult sources in this order (not by preference or recollection):
- DOU Nodes (
assets/) — Current method signatures, parameters, return types, and critical failure modes. Use this first for code generation.
- Official Zoho Public Docs (zoho.com/deluge/help/, zoho.com/crm/api/) — When a DOU node is partial or missing.
- Reference files + inline examples (api.md, functions.md, etc.) — Curated summaries; may lag behind DOU or official docs.
- Recalled knowledge — Lowest trust; always cross-check against DOU.
Critical Rule: Reference files are curated summaries, not authoritative. DOU nodes are the ground truth. If a reference file example conflicts with a DOU node, the DOU node wins.
Step 3 — Load the Reference for the Selected Primitive
Open the reference file for the primitive matched in the "When to Use" table above and follow its Execution Instructions. (Special case: if the primitive is Queries with source type COQL, also open references/coql.md.)
If a reference file is inaccessible, inform the user, state which file is missing, and do not generate code that depends on its contents.
Steps 4–5 — Execute and Validate
Follow the Execution Instructions in the reference file from Step 3. After presenting the solution, run its Validation Checklist; surface errors with plain-language explanations and suggest follow-up steps if the goal is only partially met.
Auth & Scope Reference
Always derive scopes from the OAS spec file (per api.md Step 6, security field at operation level). For all standard scopes, use the OAS spec — the table below covers the non-obvious cases only.
| Scope |
Note |
ZohoCRM.coql.READ and ZohoCRM.modules.{module}.READ |
COQL queries — two separate scopes required; coql.READ alone → OAUTH_SCOPE_MISMATCH |
Base URL: https://www.zohoapis.com/crm/v8/
1---2name: zoho-crm3description: Zoho CRM v8.0 orchestration layer — primitive selection, code generation, and validation across all CRM developer tools: REST API, Deluge Functions, ClientScript, Widgets, COQL, Queries Workbench, and Connections. Works whether or not MCP tools are connected. Trigger on "Zoho CRM", "Deluge script", "ClientScript", "COQL", "CRM widget", "zoho.crm.*", "invokeurl", "CRM automation", "CRM integration", "CRM query", "Queries Workbench", "Blueprint", "Workflow Rule", or any CRM module operation. Do NOT use for Catalyst, Zoho Creator, or other Zoho products — use the appropriate product skill instead.4---56# zoho-crm78## Purpose910Given any use case, this skill:111. Selects the right primitive, loads the relevant DOU nodes / reference docs122. Produces the solution (via MCP tools if connected, or as exact payloads) and validates the output1314## When to Use1516| Use case | Subskill |17|----------|----------|18| Read, create, update, delete CRM records via HTTP | [API](./references/api.md) |19| Write server-side automation / custom functions | [Functions / Deluge](./references/functions.md) |20| Add UI logic to record pages / list views | [ClientScript](./references/clientscript.md) |21| Build embedded UI components | [Widgets](./references/widgets.md) |22| Build a saved query bound to a Canvas view, Kiosk, or Custom Related List (UI-authored in Workbench) | [Queries](./references/queries.md) |23| Query CRM data using COQL (CRM Object Query Language) | [COQL](./references/coql.md) |24| Connect to external services via OAuth | [Connections](./references/connections.md) |2526## Step-by-Step Reasoning Flow2728### Step 1 — Understand the Goal2930| Dimension | Extract | Examples |31|---|---|---|32| Action | What should happen? | fetch, create, update, trigger, display, query |33| Entity | Which CRM module or object? | Leads, Contacts, Deals, custom modules |34| Context | Where does this run? | server-side, UI page, scheduled, event-triggered |3536> **Gate**: If any dimension above cannot be unambiguously inferred from a single reasonable interpretation — stop and ask before proceeding to Step 2. Ask only what is necessary; omit optional parameters with clear defaults.3738### Step 2 — Select the Right Primitive3940Use the **decision matrix** below as the primary routing source. If the use case doesn't match any row, apply the layer rule: **server-side** (no browser access needed) → Function / REST API / COQL / Queries; **browser-side** → Widget / Client Script.4142#### Decision matrix — need → use4344**Server-side**4546| Need | Use |47|---|---|48| Run Deluge backend code in CRM — process records, perform CRUD operations, call Zoho CRM APIs, send emails/SMS, or execute any server-side business logic | **Function** — trigger via Workflow Rule, Blueprint, Schedule, Button, Validation Rule, or Serverless Endpoint |49| Call an external (non-Zoho) API and write the result to CRM | **Function** via Workflow Rule or Button (use a named Connection for auth) |50| Expose custom Deluge logic as REST API for external systems | **Function** via Serverless Endpoint |51| Run a cron job inside CRM | **Function** via Scheduled Function |52| Convert a Custom Related List to a Function | **Function** via `related_list.*` category — the only category that renders data directly on a record detail page; do not clarify unless a different trigger type (button, workflow, API endpoint) is explicitly stated |53| Read / create / update / delete CRM records, or any CRM-specific operation, from an external system or script | **REST API** |54| Fetch CRM data programmatically from Deluge, external API callers, or ad-hoc code | **COQL** |55| Display query-driven data in a Canvas, Kiosk, or Custom Related List | **Queries** (build in Workbench UI — `Setup → Developer Hub → Queries`) |56| Authenticate to an external OAuth service from a Function or ClientScript | **Connections** (create in `Setup → Developer Hub → Connections`; reference by link name in `invokeurl` or `ZDK.Apps.CRM.Connection.invoke`) |5758**Browser-side**5960| Need | Use |61|---|---|62| Render or embed custom HTML or a third-party UI component inside CRM | **Widget** |63| Hide a field based on another field's value, or any other web UI customization on a record page | **Client Script** |64| Validate field input before saving a record in CRM web UI | **Client Script** (instant UI feedback) or **Function** via Validation Rule (server-side enforcement) — default to **Client Script** unless the user explicitly requires server-side enforcement |65| Show a confirmation dialog before a button action in web UI | **Client Script** (dialog) + **Function** (backend action) |6667> **Tiebreaker**: Default to the first listed option; override only if the user's context explicitly favors the second.6869> **Check**: Confirm the selected primitive matches Action + Entity + Context from Step 1. If not — re-check the matrix or loop back to clarification.7071> **Universal constraint**: Use API names for all module and field references — never display labels.7273## Authoritative Sources Hierarchy7475**When in doubt about syntax, signatures, or limits, consult sources in this order** (not by preference or recollection):76771. **DOU Nodes** (`assets/`) — Current method signatures, parameters, return types, and critical failure modes. **Use this first for code generation.**782. **Official Zoho Public Docs** (zoho.com/deluge/help/, zoho.com/crm/api/) — When a DOU node is partial or missing.793. **Reference files + inline examples** (api.md, functions.md, etc.) — Curated summaries; may lag behind DOU or official docs.804. **Recalled knowledge** — Lowest trust; always cross-check against DOU.8182> **Critical Rule**: Reference files are curated summaries, not authoritative. DOU nodes are the ground truth. If a reference file example conflicts with a DOU node, the DOU node wins.8384### Step 3 — Load the Reference for the Selected Primitive8586Open the reference file for the primitive matched in the "When to Use" table above and follow its **Execution Instructions**. (Special case: if the primitive is **Queries** with source type COQL, also open [references/coql.md](./references/coql.md).)8788> If a reference file is inaccessible, inform the user, state which file is missing, and do not generate code that depends on its contents.8990### Steps 4–5 — Execute and Validate9192Follow the **Execution Instructions** in the reference file from Step 3. After presenting the solution, run its **Validation Checklist**; surface errors with plain-language explanations and suggest follow-up steps if the goal is only partially met.9394## Auth & Scope Reference9596**Always derive scopes from the OAS spec file** (per [api.md](./references/api.md) Step 6, `security` field at operation level). For all standard scopes, use the OAS spec — the table below covers the non-obvious cases only.9798| Scope | Note |99|-------|------|100| `ZohoCRM.coql.READ` and `ZohoCRM.modules.{module}.READ` | COQL queries — **two separate scopes required**; `coql.READ` alone → `OAUTH_SCOPE_MISMATCH` |101102Base URL: `https://www.zohoapis.com/crm/v8/`