POST to /crm/bulk/v8/read with a JSON body specifying the module, a fields array, and a criteria block for filtering
The criteria block accepts a group_operator (AND/OR) and a group array of conditions each with field_name, comparator, and value
The response returns a job id; poll GET /crm/bulk/v8/read/<jobId> until the state field equals COMPLETED
Download the result file by GET /crm/bulk/v8/read/<jobId>/result which returns a ZIP archive containing a CSV
Parse the CSV paying attention to the header row which lists field API names
Handle FAILED job state by inspecting the result object for an error_message indicating whether the failure was due to invalid criteria or a system error
Known gotchas
Zoho CRM data center routing is mandatory; the API base URL must match the user's data center (US, EU, IN, AU, JP); using the wrong base URL returns an INVALID_TOKEN error even with a valid token
The bulk read CSV uses field API names not display labels; map them using the Fields metadata API before presenting data to users
A maximum number of fields can be requested per job; requesting all fields on a wide module may exceed this cap and requires splitting into multiple jobs
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