Zoho CRM + Books MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ZOHO_SCOPES | No | Zoho API Scopes (comma-separated) | ZohoCRM.modules.ALL,ZohoCRM.settings.ALL,ZohoBooks.fullaccess.all |
| ZOHO_CLIENT_ID | Yes | Zoho OAuth Client ID | |
| ZOHO_DATA_CENTER | Yes | Zoho Data Center (com, eu, in, com.au, jp) | |
| MULTI_CONFIG_PATH | No | Path to configuration file for multi-config mode | |
| ZOHO_REDIRECT_URI | Yes | Zoho OAuth Redirect URI (e.g., http://localhost:3000/callback) | |
| ZOHO_CLIENT_SECRET | Yes | Zoho OAuth Client Secret | |
| ZOHO_REFRESH_TOKEN | Yes | Zoho OAuth Refresh Token | |
| MULTI_CONFIG_ENABLED | No | Enable multi-configuration system (true/false) | |
| MULTI_CONFIG_ENVIRONMENT | No | Current environment to use in multi-config mode | |
| ZOHO_BOOKS_ORGANIZATION_ID | Yes | Zoho Books Organization ID (required for Books functionality) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_tool_categoriesA | Get organized list of all tool categories with descriptions. Perfect starting point for LLMs to understand available functionality. |
| list_tools_by_categoryA | Get all tools in a specific category with their descriptions and purposes. |
| sync_accounts_to_customersA | Sync CRM accounts to Books customers (CRM → Books direction). Creates or updates customer records in Books based on account data from CRM. Example: Sync 50 accounts {"source_module": "accounts", "target_module": "customers", "filters": {"limit": 50}} |
| sync_contacts_to_customersA | Sync CRM contacts to Books customers (CRM → Books direction). Creates or updates customer records in Books based on contact data from CRM. Workflow: Typically run after CRM data updates. Follow with books_get_customers to verify sync results |
| sync_customers_to_contactsA | Sync Books customers to CRM contacts (Books → CRM direction). Creates or updates contact records in CRM based on customer data from Books. |
| create_invoice_from_dealA | Create a Books invoice from a CRM deal. Automatically transfers deal information, products, and pricing to create a professional invoice. Workflow: CRM deal → Books invoice → books_send_invoice_email → books_create_payment (when paid) |
| search_recordsA | Search across CRM and Books records using flexible criteria. Use for finding specific records by name, email, phone, or other fields. Example: Search for contacts {"module": "contacts", "criteria": "john@example.com", "fields": ["id", "Full_Name", "Email"]} |
| books_get_customersA | Get customer list from Books with filtering and pagination. WORKFLOW STARTER for Books financial operations.\n\nPrerequisites: Books access with customer management permissions\n\nNext Steps:\n→ Use |
| books_get_customerA | Get detailed information for a specific customer from Books by ID. Returns complete customer profile including contact details, billing/shipping addresses, and account status. Related tools: books_get_customers (to find IDs), books_create_invoice (to bill customer), books_create_payment (to record payments) |
| books_create_customerC | Create a new customer in Books |
| books_update_customerC | Update an existing customer in Books |
| books_delete_customerB | Delete a customer from Books |
| books_get_itemsA | Get all items from Books including products and services available for billing. ESSENTIAL for invoice line items.\n\nPrerequisites: Books access with inventory management permissions\n\nNext Steps:\n→ Use item_id and details for |
| books_get_itemA | Get a specific item from Books by ID |
| books_create_itemA | Create a new product or service item in Books inventory. Use for adding products to sell, services to offer, or items to include in invoices. Example: Create service item {"name": "Consulting Services", "description": "Business consulting", "rate": 150, "unit": "hrs", "item_type": "sales"} |
| books_update_itemC | Update an existing item in Books |
| books_delete_itemC | Delete an item from Books |
| books_get_estimatesC | Get all estimates from Books |
| books_create_estimateC | Create a new estimate in Books |
| books_convert_estimate_to_invoiceC | Convert a Books estimate to an invoice |
| books_get_paymentsC | Get all payments from Books |
| books_create_paymentA | Create a payment in Books to apply against specific invoices. First use books_get_invoices to find invoice IDs and amounts, then create payment to apply against those invoices. Example workflow:
|
| books_get_invoicesA | Get invoices from Books with filtering and pagination. Use to find invoices for payments, get invoice details, or browse invoice history. Related tools: books_create_invoice (to create), books_create_payment (to pay), books_get_customer (customer details) |
| books_get_invoiceB | Get a specific invoice from Books by ID |
| books_create_invoiceA | Create a new invoice in Books for billing customers. KEY FINANCIAL OPERATION in the Books workflow.\n\nPrerequisites:\n→ Use |
| books_update_invoiceC | Update an existing invoice in Books |
| books_delete_invoiceB | Delete an invoice from Books |
| books_send_invoice_emailC | Send an invoice via email |
| books_get_invoice_pdfB | Get an invoice as PDF |
| books_get_sales_ordersA | Get all sales orders from Books with filtering and pagination\n\nPrerequisites: Books access with sales order read permissions\nNext Steps: Use books_create_invoice to convert sales orders to invoices\nWorkflow: Sales order management → invoice conversion → payment tracking\nError Recovery: If no sales orders found, verify Books access and search filters |
| books_get_credit_notesC | Get all credit notes from Books |
| books_get_credit_noteB | Get a specific credit note from Books by ID |
| books_create_credit_noteC | Create a new credit note in Books |
| books_update_credit_noteC | Update an existing credit note in Books |
| books_delete_credit_noteC | Delete a credit note from Books |
| books_convert_credit_note_to_openC | Convert a credit note to open status |
| books_void_credit_noteC | Void a credit note |
| books_email_credit_noteC | Email a credit note |
| books_get_credit_note_refundsC | Get refunds for a credit note |
| books_refund_credit_noteC | Create a refund for a credit note |
| books_apply_credit_note_to_invoiceD | Apply a credit note to an invoice |
| books_bulk_export_credit_notesC | Export credit notes in bulk |
| books_bulk_print_credit_notesC | Print credit notes in bulk |
| books_get_credit_note_commentsC | Get comments for a credit note |
| books_add_credit_note_commentC | Add a comment to a credit note |
| books_get_purchase_ordersC | Get all purchase orders from Books |
| books_get_purchase_orderA | Get a specific purchase order from Books by ID |
| books_create_purchase_orderC | Create a new purchase order in Books |
| books_update_purchase_orderC | Update an existing purchase order in Books |
| books_delete_purchase_orderC | Delete a purchase order from Books |
| books_mark_purchase_order_as_openC | Mark a purchase order as open |
| books_mark_purchase_order_as_billedB | Mark a purchase order as billed |
| books_cancel_purchase_orderC | Cancel a purchase order |
| books_email_purchase_orderC | Email a purchase order |
| books_submit_purchase_order_for_approvalC | Submit a purchase order for approval |
| books_approve_purchase_orderC | Approve a purchase order |
| books_bulk_export_purchase_ordersC | Export purchase orders in bulk |
| books_bulk_print_purchase_ordersC | Print purchase orders in bulk |
| books_get_billsC | Get all bills from Books |
| books_get_billA | Get a specific bill from Books by ID |
| books_create_billC | Create a new bill in Books |
| books_update_billC | Update an existing bill in Books |
| books_delete_billC | Delete a bill from Books |
| books_mark_bill_as_openC | Mark a bill as open |
| books_void_billC | Void a bill |
| books_mark_bill_as_paidC | Mark a bill as paid |
| books_record_bill_paymentC | Record a payment for a bill |
| books_get_bill_paymentsC | Get payments for a bill |
| books_bulk_export_billsD | Export bills in bulk |
| books_bulk_print_billsC | Print bills in bulk |
| crm_get_tasksC | Get all tasks from CRM |
| crm_create_taskA | Create a task in CRM linked to accounts, contacts, or deals. Tasks can have due dates, priorities, and reminders for follow-up activities. Example: Create follow-up task {"Subject": "Follow up on proposal", "Due_Date": "2024-12-31", "Priority": "High", "What_Id": "deal-123", "Who_Id": "contact-456"} |
| crm_get_eventsA | Get calendar events from CRM with filtering and pagination. Use for viewing meetings, appointments, and scheduled activities. Related tools: crm_create_event (to schedule), crm_create_task (for follow-ups), crm_get_notes (meeting notes) |
| crm_create_eventD | Create a new event in CRM |
| crm_get_notesC | Get notes for a specific CRM record |
| crm_create_noteC | Create a new note for a CRM record |
| crm_send_emailC | Send email for a CRM record |
| crm_get_attachmentsC | Get attachments for a CRM record |
| analyze_custom_moduleB | Analyze any CRM module with statistical breakdown by field values. Perfect for generating reports, understanding data distribution, and identifying patterns. Workflow: First use crm_get_all_modules to discover available modules, then get_custom_module_records to explore data, finally analyze_custom_module for insights |
| get_custom_module_recordsA | Get records from any custom module with flexible filtering |
| analyze_module_fieldC | Perform statistical analysis on any field in any module |
| crm_get_all_modulesA | Get all CRM modules with metadata\n\nWORKFLOW STARTER for CRM module discovery\n\nNext Steps: Use crm_get_fields for field discovery → crm_validate_criteria → crm_search_records\nPagination: Use page and per_page to limit response size and avoid token limits\nError Recovery: If response too large, use smaller per_page values (try 10-20) |
| crm_get_module_detailsC | Get detailed metadata for a specific module |
| crm_get_module_fieldsA | Get fields for a module with pagination and filtering to avoid large responses |
| crm_get_field_detailsA | Get detailed metadata for a specific field including data type, validation rules, picklist values, and dependencies.\n\nPrerequisites:\n→ Use |
| crm_get_timelineA | Get timeline history for a CRM record showing all field changes, activities, and audit trail\n\nPrerequisites: Use crm_search_records to find target record_id\nNext Steps: Use crm_analyze_activity_patterns for trend analysis → crm_get_field_changes for specific field tracking\nComplete Workflow: crm_search_records → crm_get_timeline → analysis\nError Recovery: If timeline empty, verify record_id exists and has activity history |
| crm_search_by_timelineA | Search records by timeline events - find records modified within date ranges\n\nPrerequisites: None - timeline-based discovery tool\nNext Steps: Use crm_get_timeline for detailed analysis → crm_get_field_changes for specific tracking\nUse Cases: Recent activity analysis, audit trails, change tracking\nError Recovery: If no results, try broader date range or different action types |
| crm_get_field_changesA | Track field change history for records - detailed audit of specific field modifications\n\nPrerequisites: Use crm_search_records or crm_search_by_timeline to find target records\nNext Steps: Use crm_analyze_activity_patterns for trend analysis → Generate change reports\nBusiness Value: Compliance tracking, change audit, data quality monitoring\nError Recovery: If no changes found, verify field names and date range |
| crm_analyze_activity_patternsA | Analyze activity patterns and trends in CRM data - business intelligence for user behavior\n\nPrerequisites: Use crm_search_by_timeline to identify activity periods\nNext Steps: Generate insights reports → Optimize workflows → User performance analysis\nBusiness Value: Team productivity analysis, workflow optimization, trend identification\nError Recovery: If insufficient data, try broader date range or different grouping |
| crm_get_picklist_fieldsA | Get only picklist fields for a specific module - optimized for finding disposition/status fields |
| crm_search_fieldsA | Search fields by name pattern - use to find specific fields like "disposition" or "status" |
| crm_semantic_field_searchC | Semantic field search - find fields related to a concept (e.g., "disposition", "status", "reason") |
| crm_smart_field_discoveryB | Smart field discovery - finds fields based on intent with optimized response format to reduce tokens and iterations |
| crm_extract_complete_picklist_hierarchyA | Extract complete picklist hierarchy with dependencies in one optimized call - reduces multiple API calls to single request |
| crm_get_global_set_valuesB | Get Global Set values by name - specifically for extracting complete disposition data |
| crm_get_complete_disposition_dataC | Get complete disposition data including all Global Set values and dependent fields |
| crm_get_layoutsA | Get all layouts for modules including page layouts, related lists, and section configurations.\n\nPrerequisites: Use |
| crm_get_layout_detailsA | Get detailed metadata for a specific layout including sections, fields, and display rules.\n\nPrerequisites:\n→ Use |
| crm_update_layoutC | Update layout configuration |
| crm_get_all_profilesA | Get all profiles in the organization Prerequisites: None - this is a discovery tool for organizational structure Next Steps: Use crm_get_user_details for users associated with specific profiles → crm_get_all_roles to understand role hierarchy → crm_update_profile for permission modifications Common Pattern: Profile discovery → User-profile analysis → Permission management workflow Error Recovery: If API fails, verify organization access permissions and try crm_get_organization_details first |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| CRM Modules | Available CRM modules and their configurations |
| Books Organizations | Available Books organizations |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Mgabr90/zoho-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server