Write and save the custom function in Zoho CRM Setup > Automation > Functions, noting the API name (namespace) assigned to the function
Authenticate and obtain an access token with the ZohoCRM.functions.execute.READ scope (some function invocations also require WRITE scope depending on what the function does internally)
Execute the function via POST to /crm/v8/functions/<function_api_name>/actions/execute with a JSON body containing arguments as a key-value map matching the function's declared parameter names
Inspect the response: a 200 with a code field of SUCCESS indicates the function executed; the output key contains any value the Deluge script returned via the return statement
For functions that perform DML inside Zoho CRM, check the details object in the response for sub-operation success/failure rather than assuming the top-level 200 means all internal operations succeeded
Use Zoho CRM's function execution logs (Setup > Functions > Logs) to debug failures — runtime errors in Deluge do not always surface in the API response body with full stack traces
Known gotchas
Deluge functions that call external APIs from within Zoho CRM are subject to Zoho's outbound connection restrictions — the external host must be added to the Allowed Domains list in Setup before the callout will succeed
Function execution via API is synchronous and subject to a timeout; long-running Deluge scripts that iterate over thousands of records will time out, returning a partial or error response — break large operations into smaller scheduled function invocations
The function API name is case-sensitive and namespace-scoped; passing an incorrect casing returns a 404 that can be confused with an authorization error when the token is also being debugged simultaneously
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp