Skip to main content
Glama
Mgabr90

Zoho CRM + Books MCP Server

by Mgabr90

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ZOHO_SCOPESNoZoho API Scopes (comma-separated)ZohoCRM.modules.ALL,ZohoCRM.settings.ALL,ZohoBooks.fullaccess.all
ZOHO_CLIENT_IDYesZoho OAuth Client ID
ZOHO_DATA_CENTERYesZoho Data Center (com, eu, in, com.au, jp)
MULTI_CONFIG_PATHNoPath to configuration file for multi-config mode
ZOHO_REDIRECT_URIYesZoho OAuth Redirect URI (e.g., http://localhost:3000/callback)
ZOHO_CLIENT_SECRETYesZoho OAuth Client Secret
ZOHO_REFRESH_TOKENYesZoho OAuth Refresh Token
MULTI_CONFIG_ENABLEDNoEnable multi-configuration system (true/false)
MULTI_CONFIG_ENVIRONMENTNoCurrent environment to use in multi-config mode
ZOHO_BOOKS_ORGANIZATION_IDYesZoho Books Organization ID (required for Books functionality)

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{}
resources
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
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_customer for detailed customer information\n→ Use customer_id in books_create_invoice for billing\n→ Use customer_id in books_create_payment for payment processing\n\nCommon Financial Workflow: books_get_customers → books_get_customer → books_create_invoice → books_create_payment\n\nExample: Find customers by name\n{"search_text": "John", "per_page": 10}\n\nError Recovery: If no customers found, verify search filters and Books access permissions

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_create_invoice line items\n→ Use books_get_item for detailed item information\n→ Use books_create_item to add new products/services\n\nInventory to Billing Workflow: books_get_items → books_create_invoice (with line items) → books_create_payment\n\nError Recovery: If no items found, verify Books inventory setup and permissions

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:

  1. books_get_invoices({customer_id: "123"}) // Find unpaid invoices

  2. books_create_payment({customer_id: "123", amount: 1000, invoices: [{invoice_id: "inv-456", amount_applied: 1000}]})

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_get_customers first to find target customer\n→ Use books_get_items to discover available products/services for line items\n→ Have valid customer_id from customer discovery\n\nNext Steps:\n→ Use books_create_payment to record payment against the invoice\n→ Use books_get_invoice to verify invoice creation\n→ Use invoice_id for payment tracking and reporting\n\nComplete Billing Workflow: books_get_customers → books_get_items → books_create_invoice → books_create_payment\n\nError Recovery: If creation fails, verify customer_id exists and line_items are properly formatted

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_fields or crm_get_module_fields first to discover available field names\n→ Have valid module_name and field_name from field discovery\n\nNext Steps:\n→ Use field details for crm_validate_criteria to ensure correct operators\n→ Use crm_get_dependent_fields to understand field relationships\n→ Use field information in crm_search_records criteria\n\nCommon Pattern: crm_get_fields → crm_get_field_details → crm_validate_criteria → crm_search_records\n\nError Recovery: If "Field not found" error, verify field_name with crm_get_fields

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_all_modules first to discover available modules\n\nNext Steps:\n→ Use crm_get_layout_details for specific layout configuration analysis\n→ Use layout information for UI customization workflows\n→ Use crm_update_layout if modifications are needed\n\nCommon Pattern: crm_get_all_modules → crm_get_layouts → crm_get_layout_details → crm_update_layout\n\nError Recovery: If no layouts found, check module permissions and layout availability

crm_get_layout_detailsA

Get detailed metadata for a specific layout including sections, fields, and display rules.\n\nPrerequisites:\n→ Use crm_get_layouts first to discover available layout IDs\n→ Have valid layout_id from layout discovery\n\nNext Steps:\n→ Use layout details for UI customization analysis\n→ Use crm_update_layout to modify layout configuration\n→ Use section information for field organization workflows\n\nCommon Pattern: crm_get_layouts → crm_get_layout_details → crm_update_layout\n\nError Recovery: If "Layout not found" error, verify layout_id with crm_get_layouts

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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
CRM ModulesAvailable CRM modules and their configurations
Books OrganizationsAvailable Books organizations

Latest Blog Posts

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